diff options
author | Hervé Cauwelier <herve.cauwelier@polyconseil.fr> | 2016-02-12 17:31:04 +0100 |
---|---|---|
committer | Hervé Cauwelier <herve.cauwelier@polyconseil.fr> | 2016-02-12 17:31:04 +0100 |
commit | f2c075c40fd331b7d26a9db72aad249b2165eac4 (patch) | |
tree | 9a9de1a7c1a608b40b2ec18610edad361be28602 /factory | |
parent | 38f4a69db8f71cb52b9e7fd8d6e20e7d052a5b8d (diff) | |
download | factory-boy-f2c075c40fd331b7d26a9db72aad249b2165eac4.tar factory-boy-f2c075c40fd331b7d26a9db72aad249b2165eac4.tar.gz |
factory: LazyFunction to just call a function in the simplest case
No need to wrap it in a lambda to strip the object argument from LazyAttribute or the sequence argument from Sequence.
Diffstat (limited to 'factory')
-rw-r--r-- | factory/__init__.py | 1 | ||||
-rw-r--r-- | factory/declarations.py | 17 |
2 files changed, 18 insertions, 0 deletions
diff --git a/factory/__init__.py b/factory/__init__.py index c8bc396..1fa581b 100644 --- a/factory/__init__.py +++ b/factory/__init__.py @@ -43,6 +43,7 @@ from .base import ( from .faker import Faker from .declarations import ( + LazyFunction, LazyAttribute, Iterator, Sequence, diff --git a/factory/declarations.py b/factory/declarations.py index f0dbfe5..9ab7462 100644 --- a/factory/declarations.py +++ b/factory/declarations.py @@ -57,6 +57,23 @@ class OrderedDeclaration(object): raise NotImplementedError('This is an abstract method') +class LazyFunction(OrderedDeclaration): + """Simplest OrderedDeclaration computed by calling the given function. + + Attributes: + function (function): a function without arguments and + returning the computed value. + """ + + def __init__(self, function, *args, **kwargs): + super(LazyFunction, self).__init__(*args, **kwargs) + self.function = function + + def evaluate(self, sequence, obj, create, extra=None, containers=()): + logger.debug("LazyFunction: Evaluating %r on %r", self.function, obj) + return self.function() + + class LazyAttribute(OrderedDeclaration): """Specific OrderedDeclaration computed using a lambda. |