Merge "Add more comments to flow/task"

This commit is contained in:
Jenkins
2013-10-14 18:14:07 +00:00
committed by Gerrit Code Review
2 changed files with 27 additions and 5 deletions

View File

@@ -27,12 +27,22 @@ from taskflow.utils import reflection
class Flow(six.with_metaclass(abc.ABCMeta)):
"""The base abstract class of all flow implementations.
It provides a name and an identifier (uuid or other) to the flow so that
it can be uniquely identifed among many flows.
It provides a name and an identifier (uuid) to the flow so that it can be
uniquely identifed among many flows while executing or while referencing
the results (or other metadata) of this flow in storage.
Flows are expected to provide the following methods:
NOTE(harlowja): if a flow is placed in another flow as a subflow, a desired
way to compose flows together, then it is valid and permissible that during
execution the subflow & parent flow may be flattened into a new flow. Since
a flow is just a 'structuring' concept this is typically a behavior that
should not be worried about (as it is not visible to the user), but it is
worth mentioning here.
Flows are expected to provide the following methods/properties:
- add
- __len__
- requires
- provides
"""
def __init__(self, name, uuid=None):
@@ -49,6 +59,7 @@ class Flow(six.with_metaclass(abc.ABCMeta)):
@property
def uuid(self):
"""A unique identifier for this flow"""
return self._id
@abc.abstractmethod
@@ -69,8 +80,8 @@ class Flow(six.with_metaclass(abc.ABCMeta)):
@abc.abstractproperty
def requires(self):
"""Browse flow requirements."""
"""Browse argument requirement names this flow requires to run."""
@abc.abstractproperty
def provides(self):
"""Browse values provided by the flow."""
"""Browse argument names provided by the flow."""

View File

@@ -59,6 +59,12 @@ def _save_as_to_mapping(save_as):
def _build_rebind_dict(args, rebind_args):
"""Build a argument remapping/rebinding dictionary.
This dictionary allows a task to declare that it will take a needed
requirement bound to a given name with another name instead (mapping the
new name onto the required name).
"""
if rebind_args is None:
return {}
elif isinstance(rebind_args, (list, tuple)):
@@ -86,6 +92,11 @@ def _check_args_mapping(task_name, rebind, args, accepts_kwargs):
def _build_arg_mapping(task_name, reqs, rebind_args, function, do_infer):
"""Given a function, its requirements and a rebind mapping this helper
function will build the correct argument mapping for the given function as
well as verify that the final argument mapping does not have missing or
extra arguments (where applicable).
"""
task_args = reflection.get_required_callable_args(function)
accepts_kwargs = reflection.accepts_kwargs(function)
result = {}