Use compatible map and update map/reduce task docs

Instead of using the map() function (which depending
on the python version may return a list or an iterator
prefer to use the six.moves provided one and convert
that one to a list; this avoids creating extra lists
on versions of python where map() itself returns a
list).

This also adjusts some of the docstring to match the
style and format of other docstrings.

Change-Id: I29212016da95da6ca2bc6b3f103d03f7fcabf032
This commit is contained in:
Joshua Harlow 2015-03-13 21:11:27 -07:00
parent 0a2928f810
commit ac2b1be981

View File

@ -21,6 +21,7 @@ import copy
from oslo_utils import reflection from oslo_utils import reflection
import six import six
from six.moves import map as compat_map
from six.moves import reduce as compat_reduce from six.moves import reduce as compat_reduce
from taskflow import atom from taskflow import atom
@ -239,13 +240,13 @@ class FunctorTask(BaseTask):
class ReduceFunctorTask(BaseTask): class ReduceFunctorTask(BaseTask):
"""General purpose Task to reduce a list by applying a function """General purpose Task to reduce a list by applying a function.
This Task mimics the behavior of Python's built-in reduce function. The This Task mimics the behavior of Python's built-in ``reduce`` function. The
Task takes a functor (lambda or otherwise) and a list. The list is Task takes a functor (lambda or otherwise) and a list. The list is
specified using the requires argument of the Task. When executed, this specified using the ``requires`` argument of the Task. When executed, this
task calls reduce with the functor and list as arguments. The resulting task calls ``reduce`` with the functor and list as arguments. The resulting
value from the call to reduce is then returned after execution. value from the call to ``reduce`` is then returned after execution.
""" """
def __init__(self, functor, requires, name=None, provides=None, def __init__(self, functor, requires, name=None, provides=None,
auto_extract=True, rebind=None, inject=None): auto_extract=True, rebind=None, inject=None):
@ -282,16 +283,16 @@ class ReduceFunctorTask(BaseTask):
class MapFunctorTask(BaseTask): class MapFunctorTask(BaseTask):
"""General purpose Task to map a function to a list """General purpose Task to map a function to a list.
This Task mimics the behavior of Python's built-in map function. The Task This Task mimics the behavior of Python's built-in ``map`` function. The
takes a functor (lambda or otherwise) and a list. The list is specified Task takes a functor (lambda or otherwise) and a list. The list is
using the requires argument of the Task. When executed, this task calls specified using the ``requires`` argument of the Task. When executed, this
map with the functor and list as arguments. The resulting list from the task calls ``map`` with the functor and list as arguments. The resulting
call to map is then returned after execution. list from the call to ``map`` is then returned after execution.
Each value of the returned list can be bound to individual names using Each value of the returned list can be bound to individual names using
the provides argument, following taskflow standard behavior. Order is the ``provides`` argument, following taskflow standard behavior. Order is
preserved in the returned list. preserved in the returned list.
""" """
@ -322,4 +323,4 @@ class MapFunctorTask(BaseTask):
def execute(self, *args, **kwargs): def execute(self, *args, **kwargs):
l = [kwargs[r] for r in self.requires] l = [kwargs[r] for r in self.requires]
return list(map(self._functor, l)) return list(compat_map(self._functor, l))