From 7462b6e33b26830e92f50cb7f170055d442ac5ce Mon Sep 17 00:00:00 2001 From: Romain Dorgueil Date: Tue, 14 Aug 2018 16:46:54 +0200 Subject: [PATCH] Adds simple partial() function adding a .using(...) method to regular functools.partial object. --- bonobo/_api.py | 2 +- bonobo/config/__init__.py | 3 ++- bonobo/config/functools.py | 11 +++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/bonobo/_api.py b/bonobo/_api.py index 78576aa..ccd2724 100644 --- a/bonobo/_api.py +++ b/bonobo/_api.py @@ -6,7 +6,6 @@ All objects in this module are considered very safe to use, and backward compati to another is maximal. """ - from bonobo.execution.strategies import create_strategy from bonobo.nodes import * from bonobo.nodes import __all__ as _all_nodes @@ -196,3 +195,4 @@ def open_examples_fs(*pathsegments): api.register_group(get_argument_parser, parse_args) + diff --git a/bonobo/config/__init__.py b/bonobo/config/__init__.py index 344b608..3e2f3bf 100644 --- a/bonobo/config/__init__.py +++ b/bonobo/config/__init__.py @@ -5,7 +5,7 @@ configurable transformations, either class-based or function-based. """ from bonobo.config.configurables import Configurable -from bonobo.config.functools import transformation_factory +from bonobo.config.functools import transformation_factory, partial from bonobo.config.options import Method, Option from bonobo.config.processors import ContextProcessor, use_context, use_context_processor, use_raw_input, use_no_input from bonobo.config.services import Container, Exclusive, Service, use, create_container @@ -23,6 +23,7 @@ __all__ = [ "Option", "Service", "create_container", + "partial", "requires", "transformation_factory", "use", diff --git a/bonobo/config/functools.py b/bonobo/config/functools.py index 5b5a674..e391aef 100644 --- a/bonobo/config/functools.py +++ b/bonobo/config/functools.py @@ -1,6 +1,9 @@ import functools import itertools +from bonobo.config.services import use +from bonobo.util import get_name + def transformation_factory(f): @functools.wraps(f) @@ -14,3 +17,11 @@ def transformation_factory(f): _transformation_factory._partial = True return _transformation_factory + + +class partial(functools.partial): + @property + def __name__(self): + return get_name(self.func) + def using(self, *service_names): + return use(*service_names)(self)