CHANGES

  • Update TOX/UPPER_CONSTRAINTS_FILE for stable/train

  • Update .gitreview for stable/train

3.7.1

  • Use mysql LONGTEXT for atomdetails results

  • Add Python 3 Train unit tests

  • Add local bindep.txt

  • Remove unused tools/tox_install.sh

3.7.0

  • update git.openstack.org to opendev

  • Dropping the py35 testing

  • Remove debtcollector requirement

  • Update Sphinx requirement

3.6.0

  • Remove unsused tools/tox_install.sh

  • Handle collections.abc deprecations

  • Uncap jsonschema

  • OpenDev Migration Patch

  • Update master for stable/stein

  • add python 3.7 unit test job

3.4.0

  • Move test requirements out of runtime requirements

  • Change openstack-dev to openstack-discuss

3.3.1

  • Update doc/conf.py to avoid warnings with sphinx 1.8

  • Use templates for cover and lower-constraints

  • Remove the duplicated word

  • Fix a symbol error

  • Create KazooClient with taskflow logger

  • add lib-forward-testing-python3 test job

  • add python 3.6 unit test job

  • add proper pydot3 dependency

  • import zuul job settings from project-config

  • Switch to use stestr for unit test

  • Add pydot test dependency

  • Remove PyPI downloads

  • Update reno for stable/rocky

  • Update various links in docs

3.2.0

  • Remove unused link target

  • Fix code to support networkx > 1.0

  • add release notes to README.rst

  • replace http with https

  • Update links in README

  • fix tox python3 overrides

  • Drop py34 target in tox.ini

  • Uncap networkx

  • give pep8 and docs environments all of the dependencies they need

  • Trivial: update pypi url to new url

  • Fix doc build

  • Trivial: Update pypi url to new url

  • stop using tox_install.sh

  • only run doc8 as part of pep8 test job

  • standardize indentation in tox.ini

  • set default python to python3

  • don’t let tox_install.sh error if there is nothing to do

  • Updated from global requirements

  • add lower-constraints job

  • Updated from global requirements

  • Fix invalid json unit test

  • Update reno for stable/queens

  • Updated from global requirements

  • Updated from global requirements

  • Updated from global requirements

  • Updated from global requirements

3.1.0

  • Updated from global requirements

  • Add doc8 to pep8 environment

  • Use doc/requirements.txt

3.0.1

3.0.0

  • Remove setting of version/release from releasenotes

  • Updated from global requirements

  • Updated from global requirements

  • Updated from global requirements

  • Remove class StopWatch from timing

2.17.0

2.16.0

  • Updated from global requirements

  • Updated from global requirements

  • Update “indentify” to “identify” in comments

2.15.0

  • Updated from global requirements

  • Remove method blather in log adapter

  • Remove kwarg timeout in executor conductor

  • Updated from global requirements

  • Avoid log warning when closing is underway (on purpose)

  • Update reno for stable/pike

  • Updated from global requirements

2.14.0

  • Updated from global requirements

  • Update URLs in documents according to document migration

  • Updated from global requirements

  • Fix process based executor task proxying-back events

  • turn on warning-is-error in doc build

  • switch from oslosphinx to openstackdocstheme

  • rearrange existing documentation into the new standard layout

  • Updated from global requirements

2.13.0

  • Updated from global requirements

  • Fix html_last_updated_fmt for Python3

  • Replace assertRaisesRegexp with assertRaisesRegex

2.12.0

  • Updated from global requirements

  • Updated from global requirements

  • do not allow redis job reclaim by same owner

2.11.0

  • Fix py35 test failure

  • Stop using oslotest.mockpatch

  • Updated from global requirements

  • python3.0 has deprecated LOG.warn

2.10.0

  • Updated from global requirements

  • Updated from global requirements

  • Updated from global requirements

  • Prepare for using standard python tests

  • Use https instead of http for git.openstack.org

  • Updated from global requirements

  • Update reno for stable/ocata

  • Protect storage better against external concurrent access

2.9.0

  • Remove dep on monotonic

  • Rename engine analyzer to be named selector

  • Update author and author-email

  • Updated from global requirements

  • Updated from global requirements

  • Add Constraints support

  • Show team and repo badges on README

2.8.0

  • Replaces uuid.uuid4 with uuidutils.generate_uuid()

  • Updated from global requirements

  • Remove vim header from source files

  • Fix release notes gate job failure

  • Updated from global requirements

  • Use assertIs(Not)None to check for None

  • Fix typo in tox.ini

  • Fix broken link

  • Replace retrying with tenacity

  • Updated from global requirements

  • Add reno for release notes management

  • Updated from global requirements

2.7.0

  • Changed the home-page link

  • Using assertIsNone() instead of assertIs(None, ..)

  • Updated from global requirements

  • Fix a typo in documentation

  • Fix typo: remove redundant ‘that’

  • Updated from global requirements

  • Fix a typo in logging.py

  • Use method ensure_tree from oslo.utils

  • Make failure formatter configurable for DynamicLoggingListener

  • Updated from global requirements

  • Some classes not define __ne__() built-in function

2.6.0

2.5.0

  • Updated from global requirements

  • Add logging around metadata, ignore tallying + history

2.4.0

  • Updated from global requirements

  • Start to add a location for contributed useful tasks/flows/more

  • Change dependency to use flavors

  • Updated from global requirements

  • Remove white space between print and ()

  • Updated from global requirements

  • Add Python 3.5 classifier and venv

  • Replace assertEqual(None, *) with assertIsNone in tests

2.3.0

  • Updated from global requirements

  • remove unused LOG

  • Fixes: typo error in comments

  • Updated from global requirements

  • Fix some misspellings in the function name and descriptions

  • Updated from global requirements

2.2.0

  • Don’t use deprecated method timeutils.isotime

  • Add tests to verify kwargs behavior on revert validation

  • Make tests less dependent on transient state

2.1.0

  • Updated from global requirements

  • Ensure the fetching jobs does not fetch anything when in bad state

  • Updated from global requirements

  • Use the full ‘get_execute_failures’ vs the shortname

  • Split revert/execute missing args messages

  • Updated from global requirements

  • Instead of a multiprocessing queue use sockets via asyncore

  • Add a simple sanity test for pydot outputting

2.0.0

  • Updated from global requirements

  • Fix documentation related to missing BaseTask class

  • Remove deprecated things for 2.0 release

  • Always used the library packaged mock

1.32.0

  • Attempt to cancel active futures when suspending is underway

  • Allow for specifying green threaded to parallel engine

  • Make conductor.stop stop the running engine gracefully

1.31.0

  • Updated from global requirements

  • Don’t set html_last_updated_fmt without git

  • Updated from global requirements

  • Add the ability to skip resolving from activating

  • Fix export_to_dot for networkx package changes

  • Ensure upgrade for sqlalchemy is protected by a lock

  • Add periodic jobboard refreshing (incase of sync issues)

  • Fallback if git is absent

  • Allow for revert to have a different argument list from execute

1.30.0

  • Updated from global requirements

  • Use a automaton machine for WBE request state machine

  • Sqlalchemy-utils double entry (already in test-requirements.txt)

1.29.0

  • Updated from global requirements

  • Refactor Atom/BaseTask/Task/Retry class hierarchy

  • Add missing direct dependency for sqlalchemy-utils

1.28.0

  • Add WBE worker expiry

  • Some WBE protocol/executor cleanups

  • Remove need for separate notify thread

  • Updated from global requirements

  • Don’t bother scanning for workers if no new messages arrived

  • Updated from global requirements

  • Updated from global requirements

  • Updated from global requirements

  • Allow cachedproperty to avoid locking

  • Spice up WBE banner and add simple worker __main__ entrypoint

1.27.0

  • Updated from global requirements

  • Fix for WBE sporadic timeout of tasks

  • Add some basic/initial engine statistics

  • Handle cases where exc_args can’t be serialized as JSON in the WBE

  • Enable OS_LOG_CAPTURE so that logs can be seen (on error)

  • Retrieve the store from flowdetails as well, if it exists

  • Disable oslotest LOG capturing

  • Updated from global requirements

  • Updated from global requirements

  • Use helper function for post-atom-completion work

  • Ensure that the engine finishes up even under sent-in failures

  • 99 bottles example trace logging was not being output

  • Add useful/helpful comment to retry scheduler

  • Updated from global requirements

  • Updated from global requirements

  • Replace clear zookeeper python with clear zookeeper bash

  • Remove stray LOG.blather

1.26.0

  • Some additional engine logging

  • Replace deprecated library function os.popen() with subprocess

  • Add comment as to why we continue when tallying edge decider nay voters

  • Add rundimentary and/or non-optimized job priorities

  • Allow for alterations in decider ‘area of influence’

  • Fix wrong usage of iter_utils.unique_seen

  • Updated from global requirements

  • Updated from global requirements

  • Updated from global requirements

  • Use the retrying lib. to do basic sqlalchemy engine validation

  • For taskflow patterns don’t show taskflow.patterns prefix

  • Rename ‘_emit’ -> ‘_try_emit’ since it is best-effort (not ensured)

  • Cache atom name -> actions and provide accessor function

  • Quote/standardize atom name output

  • Use shared util helper for driver name + config extraction

  • Fix currently broken and inactive mysql tests

  • Trap and expose exception any ‘args’

  • Revert “Remove failure version number”

  • Move all internal blather usage/calls to trace usage/calls

  • Start rename of BLATHER -> TRACE

  • Add ability of job poster/job iterator to wait for jobs to complete

  • Updated from global requirements

  • Use ‘match_type’ utility function instead of staticmethod

  • Remove failure version number

  • Translate kazoo exceptions into job equivalents if register_entity fails

  • Change name of misc.ensure_dict to misc.safe_copy_dict

  • Avoid recreating notify details for each dispatch iteration

  • fix doc change caused by the change of tooz

  • Deprecated tox -downloadcache option removed

  • Updated from global requirements

  • Add some useful commentary on rebinding processes

  • Use small helper routine to fetch atom metadata entries

  • Remove ‘MANIFEST.in’

  • Pass through run timeout in engine run()

  • Change engine ‘self._check’ into a decorator

1.25.0

  • Move validation of compiled unit out of compiler

  • Allow provided flow to be empty

  • Move engine options extraction to __init__ methods

  • Updated from global requirements

  • Updated from global requirements

  • Convert executor proxied engine options into their correct type

  • Enable conversion of the tree nodes into a digraph

  • Use the misc.ensure_dict helper in conductor engine options saving

  • Add optional ‘defer_reverts’ behavior

  • Add public property from storage to flowdetail.meta

  • Adding notification points for job completion

  • Remove python 2.6 and cleanup tox.ini

  • Correctly apply deciders across flow boundaries

  • Move ‘convert_to_timeout’ to timing type as a helper function

  • Use conductor entity class constant instead of raw string

  • Add a executor backed conductor and have existing impl. use it

  • Add flow durations to DurationListener

  • Update docstrings on entity type

  • Move ‘fill_iter’ to ‘iter_utils.fill’

1.24.0

  • Updated from global requirements

  • Updated from global requirements

  • Register conductor information on jobboard

  • Add atom priority ability

  • Add validation of base exception type(s) in failure type

  • Fix order of assertEqual for unit.test_*

  • Fix order of assertEqual for unit.worker_based

  • Fix order of assertEqual for unit.persistence

  • Fix order of assertEqual for unit.patterns

  • Fix order of assertEqual for unit.jobs

  • Fix order of assertEqual for unit.action_engine

1.23.0

  • Updated from global requirements

  • feat: add max_dispatches arg to conductor’s run

  • Ensure node ‘remove’ and ‘disassociate’ can not be called when frozen

  • Add in-memory backend delete() in recursive/non-recursive modes

  • Use batch ‘get_atoms_states’ where we can

  • Use automaton’s converters/pydot

  • Make more of the WBE logging and ‘__repr__’ message more useful

  • Fix bad sphinx module reference

  • Relabel internal engine ‘event’ -> ‘outcome’

  • No need for Oslo Incubator Sync

  • Use the node built-in ‘dfs_iter’ instead of recursion

1.22.0

  • Simplify flow action engine compilation

  • Fix ‘dependened upon’ spelling error

  • docs - Set pbr warnerrors option for doc build

  • Rename ‘history’ -> ‘Release notes’

  • Remove dummy/placeholder ‘ChangeLog’ as its not needed

  • Remove ./taskflow/openstack/common as it no longer exists

  • Remove quotes from subshell call in bash script

  • Refactor common parts of ‘get_maybe_ready_for’ methods

  • Fix the sphinx build path in .gitignore file

  • Change ignore-errors to ignore_errors

  • Use graphs as the underlying structure of patterns

  • Updated from global requirements

  • Fix ‘_cache_get’ multiple keyword argument name overlap

  • Use the sqlalchemy-utils json type instead of our own

1.21.0

  • Updated from global requirements

  • Fix how the dir persistence backend was not listing logbooks

  • Explain that jobs arch. diagram is only for zookeeper

1.20.0

  • Updated from global requirements

  • iter_nodes method added to flows

  • Updated from global requirements

  • Use ‘iter_utils.count’ to determine how many unfinished nodes left

  • Fix flow states link

  • Avoid running this example if zookeeper is not found

  • Updated from global requirements

  • Have the storage class provide a ‘change_flow_state’ method

1.19.0

  • Updated from global requirements

  • Updated from global requirements

  • Add nicely made task structural diagram

  • Updated from global requirements

  • Remove some temporary variables not needed

  • Only remove all ‘next_nodes’ that were done

  • Fix busted stevedore doc(s) link

  • Extend and improve failure logging

  • Improve docstrings in graph flow to denote exceptions raised

  • Enable testr OS_DEBUG to be TRACE(blather) by default

  • Updated from global requirements

  • Show intermediary compilation(s) when BLATHER is enabled

1.18.0

  • Give the GC more of a break with regard to cycles

  • Base class for deciders

  • Remove extra runner layer and just use use machine in engine

  • Updated from global requirements

  • .gitignore update

  • Avoid adding 1 to a failure (if it gets triggered)

  • Replace the tree ‘pformat()’ recursion with non-recursive variant

  • Fix seven typos and one readability on taskflow documentation

1.17.0

  • Bump futurist and remove waiting code in taskflow

  • Use the action engine ‘_check’ helper method

  • Modify listeners to handle the results now possible from revert()

  • Remove no longer used ‘_was_failure’ static method

  • Remove legacy py2.6 backwards logging compat. code

  • Updated from global requirements

  • Fix lack of space between functions

  • Create and use a serial retry executor

  • Just link to the worker engine docs instead of including a TOC inline

  • Link to run() method in engines doc

  • Add ability to reset an engine via a `reset` method

1.16.0

  • Updated from global requirements

  • Use ‘addCleanup’ instead of ‘tearDown’ in engine(s) test

  • Update ‘make_client’ kazoo docs and link to them

  • Remove **most** usage of taskflow.utils in examples

  • Move doc8 to being a normal test requirement in test-requirements.txt

  • Updated from global requirements

  • Found another removal_version=? that should be removal_version=2.0

  • Add deprecated module(s) for prior FSM/table code-base

  • Replace internal fsm + table with automaton library

  • Remove direct usage of timeutils overrides and use fixture

1.15.0

  • Provide a deprecated alias for the now removed stop watch class

  • Update all removal_version from being ? to being 2.0

  • Add deprecated and only alias modules for the moved types

  • Unify the zookeeper/redis jobboard iterators

  • Updated from global requirements

  • Run the ‘99_bottles.py’ demo at a fast rate when activated

  • Use io.open vs raw open

  • Retain atom ‘revert’ result (or failure)

  • Update the version on the old/deprecated logbook module

  • Add docs for u, v, decider on graph flow link method

  • Fix mock calls

  • Remove setup.cfg ‘requires-python’ incorrect entry

  • Compile lists of retry/task atoms at runtime compile time

  • Integrate futurist (and **remove** taskflow originating code)

  • Allow the 99_bottles.py demo to run in BLATHER mode

  • Make currently implemented jobs use @functools.total_ordering

  • Add more useful `__str__` to redis job

  • Show job posted and goodbye in 99_bottles.py example

  • Rename logbook module -> models module

  • Notify on the individual engine steps

1.14.0

  • Expose strategies so doc generation can easily pick them up

  • Denote mail subject should be ‘[Oslo][TaskFlow]’

  • Add support for conditional execution

  • Use encodeutils for exception -> string function

  • Updated from global requirements

  • Build-out + test a redis backed jobboard

0.13.0

  • Just make the compiler object at __init__ time

  • Remove kazoo hack/fix for issue no longer needed

  • Add history.rst that uses generated ‘ChangeLog’ file

  • Add docstrings on runtime objects methods and link to them in docs

0.12.0

  • Updated from global requirements

  • Update states comment to refer to task section

  • Updated from global requirements

  • Remove 2.6 classifier + 2.6 compatibility code

  • Remove reference to ‘requirements-pyN.txt’ files

  • Add smarter/better/faster impl. of `ensure_atoms`

  • Add bulk `ensure_atoms` method to storage

  • Make it possible to see the queries executed (in BLATHER mode)

  • Add doc warning to engine components

  • Perform a few optimizations to decrease persistence interactions

  • Handle conductor ctrl-c more appropriately

  • Cache the individual atom schedulers at compile time

  • Split-off the additional retry states from the task states

  • Use the `excutils.raise_with_cause` after doing our type check

  • Updated from global requirements

  • Use monotonic lib. to avoid finding monotonic time function

  • Document more of the retry subclasses special keyword arguments

0.11.0

  • Address concurrent mutation of sqlalchemy backend

  • Add indestructible 99 bottles of beer example

  • Use alembic upgrade function/command directly

  • Updated from global requirements

  • Remove usage of deprecated ‘task_notifier’ property in build_car example

  • Add `simple_linear_listening` example to generated docs

  • Handy access to INFO level

  • Switch badges from ‘pypip.in’ to ‘shields.io’

  • Adding a revert_all option to retry controllers

  • A few jobboard documentation tweaks

  • Use sphinx deprecated docstring markup

  • Use a class constant for the default path based backend path

  • Updated from global requirements

  • Remove example not tested

  • Make the default file encoding a class constant with a docstring

  • Use a lru cache to limit the size of the internal file cache

  • Updated from global requirements

  • Use hash path lookup vs path finding

  • Remove all ‘lock_utils’ now that fasteners provides equivalents

  • Add a new `ls_r` method

  • Updated from global requirements

  • Refactor machine builder + runner into single unit

  • Replace lock_utils lock(s) with fasteners package

  • Updated from global requirements

  • Use shared ‘_check’ function to check engine stages

  • Remove a couple more useless ‘pass’ keywords found

  • Add a test that checks for task result visibility

  • Remove testing using persistence sqlalchemy backend with ‘mysqldb’

  • Remove customized pyX.Y tox requirements

  • Updated from global requirements

  • Allow same deps for requires and provides in task

  • Remove ‘pass’ usage not needed

  • Only show state transitions to logging when in BLATHER mode

  • Fix updated_at column of sqlalchemy tables

  • Remove script already nuked from oslo-incubator

  • Ensure path_based abstract base class is included in docs

  • Beef up docs on the logbook/flow detail/atom details models

  • Remove custom py26/py27 tox venvs no longer used

  • Executors come in via options config, not keyword arguments

  • Use newer versions of futures that adds exception tracebacks

  • Ensure empty paths raise a value error

  • Remove listener stack and replace with exit stack

  • Expose action engine no reraising states constants

  • Chain a few more exception raises that were previously missed

  • Expose in memory backend split staticmethod

  • Updated from global requirements

  • Remove tox py33 environment no longer used

  • Avoid creating temporary removal lists

0.10.1

  • Avoid trying to copy tasks results when cloning/copying

  • Avoid re-normalizing paths when following links

  • Add a profiling context manager that can be easily enabled

  • Updated from global requirements

0.10.0

  • Remove validation of state on state read property access

  • Make the default path a constant and tweak class docstring

  • Avoid duplicating exception message

  • Add speed-test tools script

  • Speed up memory backend via a path -> node reverse mapping

  • Updated from global requirements

  • Fix a typo in taskflow docs

  • Small refactoring of ‘merge_uri’ utility function

  • Fix post coverage job option not recognized

  • Refactor/reduce shared ‘ensure(task/retry)’ code

  • Move implementations into there own sub-sections

  • Remove run_cross_tests.sh

  • Move zookeeper jobboard constants to class level

  • Retain chain of missing dependencies

  • Expose fake filesystem ‘join’ and ‘normpath’

  • Add + use diagram explaining retry controller area of influence

  • Add openclipart.org conductor image to conductor docs

  • Use oslo_utils eventletutils to warn about eventlet patching

  • Test more engine types in argument passing unit test

  • Add a conductor running example

  • Replace more instance(s) of exception chaining with helper

  • Avoid attribute error by checking executor for being non-none

0.9.0

  • Validate correct exception subclass in ‘raise_with_cause’

  • Remove link to kazoo eventlet handler

  • Add states generating venv and use pydot2

  • Add strict job state transition checking

  • Uncap library requirements for liberty

  • Have reset state handlers go through a shared list

  • Add job states in docs + states in python

  • Expose r/o listener callback + details filter callback

  • Expose listener notification type + docs

  • Ensure listener args are always a tuple/immutable

  • Include the ‘dump_memory_backend’ example in the docs

  • Make resolution/retry strategies more clear and better

  • Rename notifier ‘listeners’ to ‘topics’

  • Mention link to states doc in notify state transitions

  • Ensure we don’t get stuck in formatting loops

  • Add note about thread safety of fake filesystem

  • Have the notification/listener docs match other sections

  • Put semantics preservation section into note block

  • Note that the traditional mode also avoids this truncation issue

  • Avoid going into causes of non-taskflow exceptions

  • Use the ability to chain exceptions correctly

  • Add a example showing how to share an executor

  • Shrink the bookshelf description

  • Remove link about implementing job garbage binning

  • Make the storage layer more resilent to failures

  • Put the examples/misc/considerations under a new section

  • Add a suspension engine section

0.8.1

  • Switch back to maxdepth 2

  • Allow ls() to list recursively (using breadth-first)

  • Make an attempt at having taskflow exceptions print causes better

  • fix renamed class to call super correctly

  • Turn ‘check_who’ into a decorator

  • Use ‘node’ terminology instead of ‘item’ terminology

  • Remove 11635 bug reference

  • Allow providing a node stringify function to tree pformat

  • Add in memory filesystem clearing

  • Just unify having a single requirements.txt file

  • Fix a couple of spelling and grammar errors

  • Add memory backend get() support

  • Make the graph ‘_unsatisfied_requires’ be a staticmethod

  • Add more comments to fake in-memory filesystem

  • Add a set of tests to the in memory fake filesystem

0.8.0

  • Adding test to improve CaptureListener coverage

  • Prefer posixpath to os.path

  • By default use a in memory backend (when none is provided)

  • Allow using shallow copy instead of deep copy

  • Move to the newer debtcollector provided functions

  • Move to using the oslo.utils stop watch

  • Updated from global requirements

  • Ensure thread-safety of persistence dir backend

  • Ensure we are really setup before being connected

  • Ensure docstring on storage properties

  • Expose the storage backend being used

  • Use iteration instead of list(s) when extracting scopes

  • Use binary/encode decode helper routines in dir backend

  • Rename memory backend filesystem -> fake filesystem

  • Just let the future executors handle the max workers

  • Always return scope walker instances from `fetch_scopes_for`

  • Give the GC a break

  • Use the class name instead of the TYPE property in __str__

  • Just use the class name instead of TYPE constant

  • Ensure we have a ‘coverage-package-name’

  • Attempt to extract traceback from exception

  • Use compatible map and update map/reduce task docs

  • Update engine docs with new validation stage

  • Ensure we register & deregister conductor listeners

  • Rename attribute ‘_graph’ to ‘_execution_graph’

  • Add a log statement pre-validation that dumps graph info

  • Have this example exit non-zero if incorrect results

  • Use a collections.namedtuple for the request work unit

  • Some small wbe engine doc tweaks

  • Add newline to avoid sphinx warning

  • Allow passing ‘many_handler’ to fetch_all function

  • Ensure event time listener is in listeners docs

  • Add a in-memory backend dumping example

  • Added a map and a reduce task

  • Restructure the in-memory node usage

  • Switch to non-namespaced module imports

  • Allow the storage unit to use the right scoping strategy

  • Just use the local conf variable

  • Put underscore in-front of alchemist helper

  • lazy loading for logbooks and flowdetails

  • Allow backend connection config (via fetch) to be a string

  • Add + use failure json schema validation

  • Use ordered[set/dict] to retain ordering

  • Allow injected atom args to be persisted

  • add _listeners_from_job method to Conductor base

  • update uses of TimingListener to DurationListener

  • Added EventTimeListner to record when events occur

  • added update_flow_metadata method to Storage class

  • Retain nested causes where/when we can

  • Denote issue 17911 has been merged/accepted

  • Persistence backend refactor

  • Remove support for 3.3

  • Writers can now claim a read lock in ReaderWriterLock

  • Add another probabilistic rw-lock test

  • Add + use read/write lock decorators

  • Add no double writers thread test

  • Use condition context manager instead of acquire/release

  • Remove condition acquiring for read-only ops

  • Set a no-op functor when none is provided

  • Ensure needed locks is used when reading/setting intention

  • Specialize checking for overlaps

  • Use links instead of raw block quotes

  • Rename the timing listeners to duration listeners

  • Add a bookshelf developer section

  • Ensure the thread bundle stops in last to first order

  • Add warning about transient arguments and worker-based-engines

  • Ensure ordered set is pickleable

  • Add node removal/disassociate functions

  • Add a fully functional orderedset

  • Make the worker banner template part of the worker class

  • Use compilation helper objects

  • Allow node finding to not do a deep search

  • Add a frozen checking decorator

  • Tweak functor used to find flatteners/storage routines

  • Add specific scoping documentation

  • add jobboard trash method

  • Provide more contextual information about invalid periodics

  • Fix lookup scoping multi-match ordering

  • Stick to one space after a period

  • Refactor parts of the periodic worker

  • Use oslo.utils encodeutils for encode/decode functions

  • Bring over pretty_tox.sh from nova/heat/others

  • Tweak some of the types thread safety docstrings

  • Add pypi link badges

  • Switch the note about process pool executor to warning

  • Chain exceptions correctly on py3.x

  • Updated from global requirements

  • Remove WBE experimental documentation note

  • Use the enum library for the retry strategy enumerations

  • Use debtcollector library to replace internal utility

  • add get_flow_details and get_atom_details to all backends

  • Tweaks to atom documentation

  • Update Flow::__str__

  • Add todo note for kombu pull request

  • Move ‘provides’ and ‘name’ to instance attributes

  • Allow loading conductors via entrypoints

0.7.1

  • Revert “Add retries to fetching the zookeeper server version”

  • Allow turning off the version check

  • adding check for str/unicode type in requires

  • Make the dispatcher handler be an actual type

  • Add retries to fetching the zookeeper server version

  • Remove duplicate ‘the’ and link to worker engine section

  • Remove delayed decorator and replace with nicer method

  • Fix log statement

  • Make the atom class an abstract class

  • Improve multilock class and its associated unit test

  • Mark conductor ‘stop’ method deprecation kwarg with versions

  • Move to hacking 0.10

  • catch NotFound errors when consuming or abandoning

  • Use the new table length constants

  • Improve upon/adjust/move around new optional example

  • Clarify documentation related to inputs

  • Docstrings should document parameters return values

  • Let the multi-lock convert the provided value to a tuple

  • Map optional arguments as well as required arguments

  • Add a BFS tree iterator

  • DFS in right order when not starting at the provided node

  • Rework the sqlalchemy backend

  • Modify stop and add wait on conductor to prevent lockups

  • Default to using a thread-safe storage unit

  • Add warning to sqlalchemy backend size limit docs

  • Updated from global requirements

  • Use a thread-identifier that can’t easily be recycled

  • Use a notifier instead of a direct property assignment

  • Tweak the WBE diagram (and present it as an svg)

  • Remove duplicate code

  • Improved diagram for Taskflow

  • Bump up the env_builder.sh to 2.7.9

  • Add a capturing listener (for test or other usage)

  • Add + use a staticmethod to fetch the immediate callables

  • Just directly access the callback attributes

  • Use class constants during pformatting a tree node

0.7.0

  • Abstract out the worker finding from the WBE engine

  • Add and use a nicer kombu message formatter

  • Remove duplicated ‘do’ in types documentation

  • Use the class defined constant instead of raw strings

  • Use kombu socket.timeout alias instead of socket.timeout

  • Stopwatch usage cleanup/tweak

  • Add note about publicly consumable types

  • Add docstring to wbe proxy to denote not for public use

  • Use monotonic time when/if available

  • Updated from global requirements

  • Link WBE docs together better (especially around arguments)

  • Emit a warning when no routing keys provided on publish()

  • Center SVG state diagrams

  • Use importutils.try_import for optional eventlet imports

  • Shrink the WBE request transition SVG image size

  • Add a thread bundle helper utility + tests

  • Make all/most usage of type errors follow a similar pattern

  • Leave use-cases out of WBE developer documentation

  • Allow just specifying ‘workers’ for WBE entrypoint

  • Add comments to runner state machine reaction functions

  • Fix coverage environment

  • Use explicit WBE worker object arguments (instead of kwargs)

  • WBE documentation tweaks/adjustments

  • Add a WBE request state diagram + explanation

  • Tidy up the WBE cache (now WBE types) module

  • Fix leftover/remaining ‘oslo.utils’ usage

  • Show the failure discarded (and the future intention)

  • Use a class provided logger before falling back to module

  • Use explicit WBE object arguments (instead of kwargs)

  • Fix persistence doc inheritance hierarchy

  • The gathered runtime is for failures/not failures

  • add clarification re parallel engine

  • Increase robustness of WBE producer/consumers

  • Move implementation(s) to there own sections

  • Move the jobboard/job bases to a jobboard/base module

  • Have the serial task executor shutdown/restart its executor

  • Mirror the task executor methods in the retry action

  • Add back a ‘eventlet_utils’ helper utility module

  • Use constants for runner state machine event names

  • Remove ‘SaveOrderTask’ and test state in class variables

  • Provide the stopwatch elapsed method a maximum

  • Fix unused and conflicting variables

  • Switch to using ‘oslo_serialization’ vs ‘oslo.serialization’

  • Switch to using ‘oslo_utils’ vs ‘oslo.utils’

  • Add executor statistics

  • Use oslo.utils reflection for class name

  • Add split time capturing to the stop watch

  • Use platform neutral line separator(s)

  • Create and use a multiprocessing sync manager subclass

  • Use a single sender

  • Updated from global requirements

  • Include the ‘old_state’ in all currently provided listeners

  • Update the README.rst with accurate requirements

  • Include docstrings for parallel engine types/strings supported

  • The taskflow logger module does not provide a logging adapter

  • Send in the prior atom state on notification of a state change

  • Pass a string as executor in the example instead of an executor

  • Updated from global requirements

  • Fix for job consumption example using wrong object

0.6.1

  • Remove need to inherit/adjust netutils split

  • Allow specifying the engine ‘executor’ as a string

  • Disallowing starting the executor when worker running

  • Use a single shared queue for an executors lifecycle

  • Avoid creating a temporary list(s) for tree type

  • Update statement around stopwatch thread safety

  • Register with ‘ANY’ in the cloned process

  • Add edge labels for engine states

  • Remove less than useful action_engine __str__

  • Ensure manager started/shutdown/joined and reset

  • Return the same namedtuple that the future module returns

  • Add a simplistic hello world example

  • Get event/notification sending working correctly

  • Move the engine scoping test to its engines test folder

  • Get the basics of a process executor working

  • Move the persistence base to the parent directory

  • Correctly trigger ‘on_exit’ of starting/initial state

0.6.0

  • Add an example which shows how to send events out from tasks

  • Move over to using oslo.utils [reflection, uuidutils]

  • Rework the in-memory backend

  • Updated from global requirements

  • Add a basic map/reduce example to show how this can be done

  • Add a parallel table mutation example

  • Add a ‘can_be_registered’ method that checks before notifying

  • Base task executor should provide ‘wait_for_any’

  • Replace autobind with a notifier module helper function

  • Cleanup some doc warnings/bad/broken links

  • Use the notifier type in the task class/module directly

  • Use a tiny clamp helper to clamp the ‘on_progress’ value

  • Retain the existence of a ‘EngineBase’ until 0.7 or later

  • Remove the base postfix from the internal task executor

  • Remove usage of listener base postfix

  • Add a moved_inheritable_class deprecation helper

  • Avoid holding the lock while scanning for existing jobs

  • Remove the base postfix for engine abstract base class

  • Avoid popping while another entity is iterating

  • Updated from global requirements

  • Use explict ‘attr_dict’ when adding provider->consumer edge

  • Properly handle and skip empty intermediary flows

  • Ensure message gets processed correctly

  • Just assign a empty collection instead of copy/clear

  • Remove rtype from task clone() doc

  • Add and use a new simple helper logging module

  • Have the sphinx copyright date be dynamic

  • Add appropriate links into README.rst

  • Use condition variables using ‘with’

  • Use an appropriate ``extract_traceback`` limit

  • Allow all deprecation helpers to take a stacklevel

  • Correctly identify stack level in ``_extract_engine``

  • Stop returning atoms from execute/revert methods

  • Have tasks be able to provide copy() methods

  • Allow stopwatches to be restarted

  • Ensure that failures can be pickled

  • Rework pieces of the task callback capability

  • Just use 4 spaces for classifier indents

  • Move atom action handlers to there own subfolder/submodule

  • Workflow documentation is now in infra-manual

  • Ensure frozen attribute is set in fsm clones/copies

  • Fix split on “+” for connection strings that specify dialects

  • Update listeners to ensure they correctly handle all atoms

  • Allow for the notifier to provide a ‘details_filter’

  • Be explicit about publish keyword arguments

  • Some package additions and adjustments to the env_builder.sh

  • Cache immutable visible scopes in the runtime component

  • Raise value errors instead of asserts

  • Add a claims listener that connects job claims to engines

  • Split the scheduler into sub-schedulers

  • Use a module level constant to provide the DEFAULT_LISTEN_FOR

  • Move the _pformat() method to be a classmethod

  • Add link to issue 17911

  • Avoid deepcopying exception values

  • Include documentation of the utility modules

  • Use a metaclass to dynamically add testcases to example runner

  • Remove default setting of ‘mysql_traditional_mode’

  • Move scheduler and completer classes to there own modules

  • Ensure that the zookeeper backend creates missing atoms

  • Use the deprecation utility module instead of warnings

  • Tweaks to setup.cfg

  • Add a jobboard high level architecture diagram

  • Mark ‘task_notifier’ as renamed to ‘atom_notifier’

  • Revert wrapt usage until further notice

  • Updated from global requirements

  • Add a history retry object, makes retry histories easier to use

  • Format failures via a static method

  • When creating daemon threads use the bundled threading_utils

  • Ensure failure types contain only immutable items

  • Mark ‘task_notifier’ as renamed to ‘atom_notifier’

  • Use wrapt to provide the deprecated class proxy

  • Updated from global requirements

  • Updated from global requirements

  • Updated from global requirements

  • Reduce the worker-engine joint testing time

  • Link bug in requirements so people understand why pbr is listed

  • Updated from global requirements

  • Use standard threading locks in the cache types

  • Handle the case where ‘_exc_type_names’ is empty

  • Add pbr to installation requirements

  • Updated from global requirements

  • Remove direct usage of the deprecated failure location

  • Fix the example ‘default_provides’

  • Use constants for retry automatically provided kwargs

  • Remove direct usage of the deprecated notifier location

  • Remove attrdict and just use existing types

  • Use the mock that finds a working implementation

  • Add a futures type that can unify our future functionality

  • Bump the deprecation version number

  • Use and verify event and latch wait() return using timeouts

  • Deprecate `engine_conf` and prefer `engine` instead

  • Use constants for link metadata keys

  • Bump up the sqlalchemy version for py26

  • Hoist the notifier to its own module

  • Move failure to its own type specific module

  • Use constants for revert automatically provided kwargs

  • Improve some of the task docstrings

  • We can now use PyMySQL in py3.x tests

  • Updated from global requirements

  • Add the database schema to the sqlalchemy docs

  • Change messaging from handler connection timeouts -> operation timeouts

  • Switch to a custom NotImplementedError derivative

  • Allow the worker banner to be written to an arbitrary location

  • Update engine class names to better reflect there usage

0.5.0

  • Avoid usage of six.moves in local functions

  • Refactor parts of the job lock/job condition zookeeper usage

  • Make it so that the import works for older versions of kombu

  • Rework the state documentation

  • Updated from global requirements

  • Add a more dynamic/useful logging listener

  • Use timeutils functions instead of misc.wallclock

  • Expose only `ensure_atom` from storage

  • Adjust docs+venv tox environments requirements/dependencies

  • Increase robustness of WBE message and request processing

  • Adjust the WBE log levels

  • Use the features that the oslotest mock base class provides

  • Use oslotest to provide our base test case class

  • Jobboard example that show jobs + workers + producers

  • Adjust on_job_posting to not hold the lock while investigating

  • Bring in a newer optional eventlet

  • Move some of the custom requirements out of tox.ini

  • Document more function/class/method params

  • Stop using intersphinx

  • Expand toctree to three levels

  • Documentation cleanups and tweaks

  • Fix multilock concurrency when shared by > 1 threads

  • Increase/adjust the logging of the WBE response/send activities

  • Color some of the states depending on there meaning

  • Switch to using oslo.utils and oslo.serialization

  • Typos “searchs”

  • Update the requirements-py2.txt file

  • Remove no longer needed r/w lock interface base class

  • Updated from global requirements

  • Better handle the tree freeze method

  • Ensure state machine can be frozen

  • Link a few of the classes to implemented features/bugs in python

  • Add a timing listener that also prints the results

  • Remove useless __exit__ return

  • Example which shows how to move values from one task to another

  • Mention issue with more than one thread and reduce workers

  • Add a mandelbrot parallel calculation WBE example

  • Add existing types to generated documentation

  • Remove the dependency on prettytable

  • Work toward Python 3.4 support and testing

  • Add a state machine copy() method

  • Update the state graph builder to use state machine type

  • Add a docs virtualenv

  • Reduce unused tox environments

0.4.0

  • Add a couple of scope shadowing test cases

  • Relax the graph flow symbol constraints

  • Relax the unordered flow symbol constraints

  • Relax the linear flow symbol constraints

  • Revamp the symbol lookup mechanism

  • Be smarter about required flow symbols

  • Update oslo-incubator to 32e7f0b56f52742754

  • Translate the engine runner into a well defined state-machine

  • Raise a runtime error when mixed green/non-green futures

  • Ensure the cachedproperty creation/setting is thread-safe

  • warn against sorting requirements

  • Updated from global requirements

  • Update transitioning function name to be more understandable

  • Move parts of action engine tests to a subdirectory

  • Tweak engine iteration ‘close-up shop’ runtime path

  • Use explicit WBE request state transitions

  • Reject WBE messages if they can’t be put in an ack state

  • Make version.py handle pbr not being installed

  • Cleanup WBE example to be simpler to understand

  • Use __qualname__ where appropriate

  • Updated from global requirements

  • Updated from global requirements

  • Make the WBE worker banner information more meaningful

  • Have the dispatch_job function return a future

  • Expand documention on failures and wrapped failures types

  • Allow worker count to be specified when no executor provided

  • Remove sphinx examples emphasize-lines

  • Split requirements into py2 and py3 files

  • Update oslo-incubator to 037dee004c3e2239

  • Remove db locks and use random db names for tests

  • Allow WBE request transition timeout to be dynamic

  • Avoid naming time type module the same as a builtin

  • LOG which requeue filter callback failed

  • Add a pformat() failure method and use it in the conductor

  • add pre/post execute/retry callbacks to tasks

  • Use checked_commit() around consume() and abandon()

  • Use a check + create transaction when claiming a job

  • Improve WBE testing coverage

  • Add basic WBE validation sanity tests

  • WBE request message validation

  • WBE response message validation

  • WBE notification message validation

  • Allow handlers to provide validation callables

  • Use a common message dispatcher

  • Use checked commit when committing kazoo transactions

  • Enable hacking checks H305 and H307 in tox.ini template

  • Fixes unsorted dicts and sets in doctests

  • README.rst: Avoid using non-ascii character

  • Updated from global requirements

  • Add a sample script that can be used to build a test environment

  • Enabled hacking checks H305 and H307

  • Bump hacking to version 0.9.2

  • Allow a jobs posted book to be none by default

  • Cleanup some of the example code & docs

  • Make greenexecutor not keep greenthreads active

  • Add the arch/big picture omnigraffle diagram

  • Remove pbr as a runtime dependency

  • Use the `state_graph.py` for all states diagrams

  • Make the examples documentation more relevant

  • Raise NotImplementedError instead of NotImplemented

  • Move the stopwatch tests to test_types

  • Remove need to do special exception catching in parse_uri

  • Update oslo incubator code to commit 0b02fc0f36814968

  • Fix the section name in CONTRIBUTING.rst

  • Add a conductor considerations section

  • Make the expiring cache a top level cache type

  • Use `flow_uuid` and `flow_name` from storage

  • Fix traces left in zookeeper

  • Clarify locked decorator is for instance methods

  • Extract the state changes from the ensure storage method

  • Create a top level time type

  • Simplify identity transition handling for tasks and retries

  • Remove check_doc.py and use doc8

  • Remove functions created for pre-six 1.7.0

  • Add a tree type

  • Make intentions a tuple (to denote immutability)

  • Updated from global requirements

  • Add example for pseudo-scoping

  • Fix E265 hacking warnings

  • Fix doc which should state fetch() usage

  • Adjust sphinx requirement

  • Upgrade hacking version and fix some of the issues

  • Denote that other projects can use this library

  • Remove misc.as_bool as oslo provides an equivalent

  • Update zake to requirements version

0.3.21

  • Rename additional to general/higher-level

  • Sync our version of the interprocess lock

  • Increase usefulness of the retry component compile errors

  • Switch to a restructuredtext README file

  • Create a considerations section

  • Include the function name on internal errors

  • Add in default transaction isolation levels

  • Allow the mysql mode to be more than just TRADITIONAL

  • Make the runner a runtime provided property

  • Rename inject_task_args to inject_atom_args

  • Rename the graph analyzer to analyzer

  • Provide the compilation object instead of just a part of it

  • Ensure cachedproperty descriptor picks up docstrings

0.3

  • Warn about internal helper/utility usage

  • Rename to atom from task

  • Invert the conductor stop() returned result

  • Move flattening to the action engine compiler

  • Increase the level of usefulness of the dispatching logging

  • Avoid forcing engine_conf to a dict

  • Allow for two ways to find a flow detail in a job for a conductor

  • Add docs related to the new conductor feature

  • Add docstring describing the inject instance variable

  • Finish factoring apart the graph_action module

  • Update sphinx pin from global requirements

  • Fix docstring list format

  • Allow indent text to be passed in

  • Factor out the on_failure to a mixin type

  • Use a name property setter instead of a set_name method

  • Adds a single threaded flow conductor

  • add the ability to inject arguments into tasks at task creation

  • Synced jsonutils from oslo-incubator

  • Remove wording issue (track does not make sense here)

  • Fix case of taskflow in docs

  • Put the job external wiki link in a note section

  • Rework atom documentation

  • Add doc link to examples

  • Rework the overview of the notification mechanism

  • Standardize on the same capitalization pattern

  • Regenerate engine-state sequence diagram

  • Add source of engine-state sequence diagram

  • Add kwarg check_pending argument to fake lock

  • Add a example which uses the run_iter function in a for loop

  • Fix error string interpolation

  • Rename t_storage to atom_storage

  • Create and use a new compilation module

  • Add engine state diagram

  • Add tests for the misc.cachedproperty descriptor

  • Complete the cachedproperty descriptor protocol

  • Don’t create fake LogBook when we can not fetch one

  • Use futures wait() when possible

  • Use /taskflow/flush-test in the flush function

  • Add a reset nodes function

  • Default the impl_memory conf to none

  • Fix spelling mistake

  • Add a helper tool which clears zookeeper test dirs

  • Add a zookeeper jobboard integration test

  • Cleanup zookeeper integration testing

  • Use a more stable flush method

  • Remove the _clear method and do not reset the job_watcher

  • Allow command and connection retry configuration

  • Check documentation for simple style requirements

  • Add an example which uses the run iteration functionality

  • Implement run iterations

  • Put provides and requires code to basic Flow

  • Allow the watcher to re-register if the session is lost

  • Add a new wait() method that waits for jobs to arrive

  • Add a cachedproperty descriptor

  • Add an example for the job board feature

  • Engine _cls postfix is not correct

  • Pass executor via kwargs instead of config

  • Allow the WBE to use a preexisting executor

  • Tweaks to object hiearchy diagrams

  • Adjust doc linking

  • Medium-level docs on engines

  • Add docs for the worker based engine (WBE)

  • Updated from global requirements

  • Move from generator to iterator for iterjobs

  • Add a jobboard fetching context manager

  • Wrap the failure to load in the not found exception

  • Update jobboard docs

  • Synced jsonutils from oslo-incubator

  • Remove persistence wiki page link

  • Load engines with defined args and provided kwargs

  • Integrate urlparse for configuration augmentation

  • Fix “occured” -> “occurred”

  • Documentation tune-ups

  • Fix spelling error

  • Add a resumption strategy doc

  • Docs and cleanups for test_examples runner

  • Skip loading (and failing to load) lock files

  • Add a persistence backend fetching context manager

  • Add a example that activates a future when a result is ready

  • Fix documentation spelling errors

  • Add a job consideration doc

  • Add last_modified & created_on attributes to jobs

  • Allow jobboard event notification

  • Use sequencing when posting jobs

  • Add a directed graph type (new types module)

  • Add persistence docs + adjustments

  • Updated from global requirements

  • Stings -> Strings

  • Be better at failure tolerance

  • Ensure example abandons job when it fails

  • Add docs for jobs and jobboards

  • Get persistence backend via kwargs instead of conf

  • Allow fetching jobboard implementations

  • Reuse already defined variable

  • More keywords & classifier topics

  • Allow transient values to be stored in storage

  • Doc adjustments

  • Move the daemon thread helper function

  • Create a periodic worker helper class

  • Fix not found being raised when iterating

  • Allow for only iterating over the most ‘fresh’ jobs

  • Updated from global requirements

  • Update oslo-incubator to 46f2b697b6aacc67

  • import run_cross_tests.sh from incubator

  • Exception in worker queue thread

  • Avoid holding the state lock while notifying

0.2

  • Allow atoms to save their own state/result

  • Use correct exception in the timing listener

  • Add a engine preparation stage

  • Decrease extraneous logging

  • Handle retry last_results/last_failure better

  • Improve documentation for engines

  • Worker executor adjustments

  • Revert “Move taskflow.utils.misc.Failure to its own module”

  • Move taskflow.utils.misc.Failure to its own module

  • Leave the execution_graph as none until compiled

  • Move state link to developer docs

  • Raise error if atom asked to schedule with unknown intention

  • Removed unused TIMED_OUT state

  • Rework documentation of notifications

  • Test retry fails on revert

  • Exception when scheduling task with invalid state

  • Fix race in worker-based executor result processing

  • Set logbook/flowdetail/atomdetail meta to empty dict

  • Move ‘inputs and outputs’ to developers docs

  • tests: Discover absence of zookeeper faster

  • Fix spelling mistake

  • Should be greater or equal to zero and not greater than

  • Persistence cleanup part one

  • Run worker-based engine tests faster

  • SQLAlchemy requirements put in order

  • Add timeout to WaitForOneFromTask

  • Use same code to reset flow and parts of it

  • Optimize dependency links in flattening

  • Adjust the exception hierachy

  • docs: Links to methods on arguments and results page

  • Add __repr__ method to Atom

  • Flattening improvements

  • tests: Fix WaitForOneFromTask constructor parameter introspection

  • Rework graph flow unit tests

  • Rewrite assertion for same elements in sequences

  • Unit tests for unordered flow

  • Linear flow: mark links and rework unit tests

  • Drop indexing operator from linear flow

  • Drop obsolete test_unordered_flow

  • Iteration over links in flow interface

  • Add a timeout object that can be interrupted

  • Avoid shutting down of a passed executor

  • Add more tests for resumption with retry

  • Improve logging for proxy publish

  • Small documentation fix

  • Improve proxy publish method

  • Add Retry to developers documentation

  • Move flow states to developers documentation

  • Remove extraneous vim configuration comments

  • Make schedule a proper method of GraphAction

  • Simplify graph analyzer interface

  • Test storage with memory and sqlite backends

  • Fix few minor spelling errors

  • Fix executor requests publishing bug

  • Flow smart revert with retry controller

  • Add atom intentions for tasks and retries

  • [WBE] Collect information from workers

  • Add tox environment for pypy

  • docs: Add inheritance diagram to exceptions documentation

  • Adjust logging levels and usage to follow standards

  • Introduce message types for WBE protocol

  • Add retry action to execute retries

  • Extend logbook and storage to work with retry

  • Add retry to execution graph

  • Add retry to Flow patterns

  • Add base class for Retry

  • Update request `expired` property docsting

  • docs: Add page describing atom arguments and results

  • docs: Improve BaseTask method docstrings

  • Remove extra quote symbol

  • docs: Relative links improvements

  • docs: Ingore ‘taskflow.’ prefix when sorting module index

  • Update comment + six.text_type instead of str for name

  • Avoid calling callbacks while holding locks

  • Rename remote task to request

  • Rework proxy publish functionality

  • Updated from global requirements

  • Use message.requeue instead of message.reject

  • Lock test tweaks

  • Move endpoint subclass finding to reflection util

  • Correct LOG.warning in persistence utils

  • Introduce remote tasks cache for worker-executor

  • Worker-based engine clean-ups

  • A few worker-engine cleanups

  • Add a delay before releasing the lock

  • Allow connection string to be just backend name

  • Get rid of openstack.common.py3kcompat

  • Clean-up several comments in reflection.py

  • Fix try_clean not getting the job_path

  • Updated from global requirements

  • Rename uuid to topic

  • Fixups for threads_count usage and logging

  • Use the stop watch utility instead of custom timing

  • Unify usage of storage error exception type

  • Add zookeeper job/jobboard impl

  • Updated from global requirements

  • Removed copyright from empty files

  • Remove extraneous vim configuration comments

  • Use six.text_type() instead of str() in sqlalchemy backend

  • Fix dummy lock missing pending_writers method

  • Move some common/to be shared kazoo utils to kazoo_utils

  • Switch to using the type checking decode_json

  • Fix few spelling and grammar errors

  • Fixed spelling error

  • Run action-engine tests with worker-based engine

  • Message-oriented worker-based flow with kombu

  • Check atom doesn’t provide and return same values

  • Fix command for pylint tox env

  • Remove locale overrides form tox template

  • Reduce test and optional requirements to global requirements

  • Rework sphinx documentation

  • Remove extraneous vim configuration comments

  • Sync with global requirements

  • Instead of doing set diffing just partition when state checking

  • Add ZooKeeper backend to examples

  • Storage protects lower level backend against thread safety

  • Remove tox locale overrides

  • Update .gitreview after repo rename

  • Small storage tests clean-up

  • Support building wheels (PEP-427)

0.1.3

  • Add validate() base method

  • Fix deadlock on waiting for pending_writers to be empty

  • Rename self._zk to self._client

  • Use listener instead of AutoSuspendTask in test_suspend_flow

  • Use test utils in test_suspend_flow

  • Use reader/writer locks in storage

  • Allow the usage of a passed in sqlalchemy engine

  • Be really careful with non-ascii data in exceptions/failures

  • Run zookeeper tests if localhost has a compat. zookeeper server

  • Add optional-requirements.txt

  • Move kazoo to testenv requirements

  • Unpin testtools version and bump subunit to >=0.0.18

  • Remove use of str() in utils.misc.Failure

  • Be more resilent around import/detection/setup errors

  • Some zookeeper persistence improvements/adjustments

  • Add a validate method to dir and memory backends

  • Update oslo copy to oslo commit 39e1c5c5f39204

  • Update oslo.lock from incubator commit 3c125e66d183

  • Refactor task/flow flattening

  • Engine tests refactoring

  • Tests: don’t pass ‘values’ to task constructor

  • Test fetching backends via entry points

  • Pin testtools to 0.9.34 in test requirements

  • Ensure we register the new zookeeper backend as an entrypoint

  • Implement ZooKeeper as persistence storage backend

  • Use addCleanup instead of tearDown in test_sql_persistence

  • Retain the same api for all helpers

  • Update execute/revert comments

  • Added more unit tests for Task and FunctorTask

  • Doc strings and comments clean-up

  • List examples function doesn’t accept arguments

  • Tests: Persistence test mixin fix

  • Test using mysql + postgres if available

  • Clean-up and improve async-utils tests

  • Use already defined PENDING variable

  • Add utilities for working with binary data

  • Cleanup engine base class

  • Engine cleanups

  • Update atom comments

  • Put full set of requirements to py26, py27 and py33 envs

  • Add base class Atom for all flow units

  • Add more requirements to cover tox environment

  • Put SQLAlchemy requirements on single line

  • Proper exception raised from check_task_transition

  • Fix function name typo in persistence utils

  • Use the same way of assert isinstance in all tests

  • Minor cleanup in test_examples

  • Add possibility to create Failure from exception

  • Exceptions cleanup

  • Alter is_locked() helper comment

  • Add a setup.cfg keywords to describe taskflow

  • Use the released toxgen tool instead of our copy

0.1.2

  • Move autobinding to task base class

  • Assert functor task revert/execute are callable

  • Use the six callback checker

  • Add envs for different sqlalchemy versions

  • Refactor task handler binding

  • Move six to the right location

  • Use constants for the execution event strings

  • Added htmlcov folder to .gitignore

  • Reduce visibility of task_action

  • Change internal data store of LogBook from list to dict

  • Misc minor fixes to taskflow/examples

  • Add connection_proxy param

  • Ignore doc build files

  • Fix spelling errors

  • Switch to just using tox

  • Enable H202 warning for flake8

  • Check tasks should not provide same values

  • Allow max_backoff and use count instead of attempts

  • Skip invariant checking and adding when nothing provided

  • Avoid not_done naming conflict

  • Add stronger checking of backend configuration

  • Raise type error instead of silencing it

  • Move the container fetcher function to utils

  • Explicitly list the valid transitions to RESUMING state

  • Name the graph property the same as in engine

  • Bind outside of the try block

  • Graph action refactoring

  • Add make_completed_future to async_utils

  • Update oslo-incubator copy to oslo-incubator commit 8b2b0b743

  • Ensure that mysql traditional mode is enabled

  • Move async utils to own file

  • Update requirements from opentack/requirements

  • Code cleanup for eventlet_utils.wait_fo_any

  • Refactor engine internals

  • Add wait_for_any method to eventlet utils

  • Introduce TaskExecutor

  • Run some engine tests with eventlet if it’s available

  • Do not create TaskAction for each task

  • Storage: use names instead of uuids in interface

  • Add tests for metadata updates

  • Fix sqlalchemy 0.8 issues

  • Fix minor python3 incompatibility

  • Speed up FlowDetail.find

  • Fix misspellings

  • Raise exception when trying to run empty flow

  • Use update_task_metadata in set_task_progress

  • Capture task duration

  • Fix another instance of callback comparison

  • Don’t forget to return self

  • Fixes how instances methods are not deregistered

  • Targeted graph flow pattern

  • All classes should explicitly inherit object class

  • Initial commit of sphinx related files

  • Improve is_valid_attribute_name utility function

  • Coverage calculation improvements

  • Fix up python 3.3 incompatabilities

0.1.1

  • Pass flow failures to task’s revert method

  • Storage: add methods to get all flow failures

  • Pbr requirement went missing

  • Update code to comply with hacking 0.8.0

  • Don’t reset tasks to PENDING state while reverting

  • Let pbr determine version automatically

  • Be more careful when passing result to revert()

0.1

  • Support for optional task arguments

  • Do not erase task progress details

  • Storage: restore injected data on resumption

  • Inherit the greenpool default size

  • Add debug logging showing what is flattened

  • Remove incorrect comment

  • Unit tests refactoring

  • Use py3kcompat.urlutils from oslo instead of six.urllib_parse

  • Update oslo and bring py3kcompat in

  • Support several output formats in state_graph tool

  • Remove task_action state checks

  • Wrapped exception doc/intro comment updates

  • Doc/intro updates for simple_linear_listening

  • Add docs/intro to simple_linear example

  • Update intro/comments for reverting_linear example

  • Add docs explaining what/how resume_volume_create works

  • A few resuming from backend comment adjustments

  • Add an introduction to explain resume_many example

  • Increase persistence example comments

  • Boost graph flow example comments

  • Also allow “_” to be valid identifier

  • Remove uuid from taskflow.flow.Flow

  • A few additional example boot_vm comments + tweaks

  • Add a resuming booting vm example

  • Add task state verification

  • Beef up storage comments

  • Removed unused utilities

  • Helpers to save flow factory in metadata

  • Storage: add flow name and uuid properties

  • Create logbook if not provided for create_flow_details

  • Prepare for 0.1 release

  • Comment additions for exponential backoff

  • Beef up the action engine comments

  • Pattern comment additions/adjustments

  • Add more comments to flow/task

  • Save with the same connection

  • Add a persistence util logbook formatting function

  • Rename get_graph() -> execution_graph

  • Continue adding docs to examples

  • Add more comments that explain example & usage

  • Add more comments that explain example & usage

  • Add more comments that explain example & usage

  • Add more comments that explain example & usage

  • Fix several python3 incompatibilities

  • Python3 compatibility for utils.reflection

  • No module name for builtin type and exception names

  • Fix python3 compatibility issues in examples

  • Fix print statements for python 2/3

  • Add a mini-cinder volume create with resumption

  • Update oslo copy and bring over versionutils

  • Move toward python 3/2 compatible metaclass

  • Add a secondary booting vm example

  • Resumption from backend for action engine

  • A few wording/spelling adjustments

  • Create a green executor & green future

  • Add a simple mini-billing stack example

  • Add a example which uses a sqlite persistence layer

  • Add state to dot->svg tool

  • Add a set of useful listeners

  • Remove decorators and move to utils

  • Add reasons as to why the edges were created

  • Fix entrypoints being updated/created by update.py

  • Validate each flow state change

  • Update state sequence for failed flows

  • Flow utils and adding comments

  • Bump requirements to the latest

  • Add a inspect sanity check and note about bound methods

  • Some small exception cleanups

  • Check for duplicate task names on flattening

  • Correctly save task versions

  • Allow access by index

  • Fix importing of module files

  • Wrapping and serializing failures

  • Simpler API to load flows into engines

  • Avoid setting object variables

  • A few adjustments to the progress code

  • Cleanup unused states

  • Remove d2to dependency

  • Warn if multiple providers found

  • Memory persistence backend improvements

  • Create database from models for SQLite

  • Don’t allow mutating operations on the underlying graph

  • Add graph density

  • Suspend single and multi threaded engines

  • Remove old tests for unexisted flow types

  • Boot fake vm example fixed

  • Export graph to dot util

  • Remove unused utility classes

  • Remove black list of graph flow

  • Task decorator was removed and examples updated

  • Remove weakref usage

  • Add basic sanity tests for unordered flow

  • Clean up job/jobboard code

  • Add a directory/filesystem based persistence layer

  • Remove the older (not used) resumption mechanism

  • Reintegrate parallel action

  • Add a flow flattening util

  • Allow to specify default provides at task definition

  • Graph flow, sequential graph action

  • Task progress

  • Verify provides and requires

  • Remap the emails of the committers

  • Use executors instead of pools

  • Fix linked exception forming

  • Remove threaded and distributed flows

  • Add check that task provides all results it should

  • Use six string types instead of basestring

  • Remove usage of oslo.db and oslo.config

  • Move toward using a backend+connection model

  • Add provides and requires properties to Flow

  • Fixed crash when running the engine

  • Remove the common config since its not needed

  • Allow the lock decorator to take a list

  • Allow provides to be a set and results to be a dictionary

  • Allow engines to be copied + blacklist broken flows

  • Add link to why we have to make this factory due to late binding

  • Use the lock decorator and close/join the thread pool

  • Engine, task, linear_flow unification

  • Combine multiple exceptions into a linked one

  • Converted some examples to use patterns/engines

  • MultiThreaded engine and parallel action

  • State management for engines

  • Action engine: save task results

  • Initial implementation of action-based engine

  • Further updates to update.py

  • Split utils module

  • Rename Task.__call__ to Task.execute

  • Reader/writer no longer used

  • Rename “revert_with” => “revert” and “execute_with” to “execute”

  • Notify on task reversion

  • Have runner keep the exception

  • Use distutil version classes

  • Add features to task.Task

  • Add get_required_callable_args utility function

  • Add get_callable_name utility function

  • Require uuid + move functor_task to task.py

  • Check examples when running tests

  • Use the same root test class

  • LazyPluggable is no longer used

  • Add a locally running threaded flow

  • Change namings in functor_task and add docs to its __init__

  • Rework the persistence layer

  • Do not have the runner modify the uuid

  • Refactor decorators

  • Nicer way to make task out of any callable

  • Use oslo’s sqlalchemy layer

  • File movements

  • Added Backend API Database Implementation

  • Added Memory Persistence API and Generic Datatypes

  • Resync the latest oslo code

  • Remove openstack.common.exception usage

  • Forgot to move this one to the right folder

  • Add a new simple calculator example

  • Quiet the provider linking

  • Deep-copy not always possible

  • Add a example which simulates booting a vm

  • Add a more complicated graph example

  • Move examples under the source tree

  • Adjust a bunch of hacking violations

  • Fix typos in test_linear_flow.py and simple_linear_listening.py

  • Fix minor code style

  • Fix two minor bugs in docs/examples

  • Show file modifications and fix dirpath based on config file

  • Add a way to use taskflow until library stabilized

  • Provide the length of the flows

  • Parents should be frozen after creation

  • Allow graph dependencies to be manually provided

  • Add helper reset internals function

  • Move to using pbr

  • Unify creation/usage of uuids

  • Use the runner interface as the best task lookup

  • Ensure we document and complete correct removal

  • Pass runners instead of task objects/uuids

  • Move how resuming is done to be disconnected from jobs/flows

  • Clear out before connecting

  • Make connection/validation of tasks be after they are added

  • Add helper to do notification

  • Store results by add() uuid instead of in array format

  • Integrate better locking and a runner helper class

  • Cleaning up various components

  • Move some of the ordered flow helper classes to utils

  • Allow instance methods to be wrapped and unwrapped correctly

  • Add a start of a few simple examples

  • Update readme to point to links

  • Fix most of the hacking rules

  • Fix all flake8 E* and F* errors

  • Fix the current flake8 errors

  • Don’t keep the state/version in the task name

  • Dinky change to trigger jenkins so I can cleanup

  • Add the task to the accumulator before running

  • Add .settings and .venv into .gitignore

  • Fix tests for python 2.6

  • Add the ability to soft_reset a workflow

  • Add a .gitreview file so that git-review works

  • Ensure we have an exception and capture the exc_info

  • Update how graph results are fetched when they are optional

  • Allow for optional task requirements

  • We were not notifying when errors occured so fix that

  • Bring over the nova get_wrapped_function helper and use it

  • Allow for passing in the metadata when creating a task detail entry

  • Update how the version task functor attribute is found

  • Remove more tabs incidents

  • Removed test noise and formatted for pep8

  • Continue work on decorator usage

  • Ensure we pickup the packages

  • Fixed pep8 formatting… Finally

  • Add flow disassociation and adjust the assocate path

  • Add a setup.cfg and populate it with a default set of nosetests options

  • Fix spacing

  • Add a better task name algorithm

  • Add a major/minor version

  • Add a get many attr/s and join helper functions

  • Reduce test noise

  • Fix a few unit tests due to changes

  • Ensure we handle functor names and resetting correctly

  • Remove safe_attr

  • Modifying db tests

  • Removing .pyc

  • Fixing .py in .gitignore

  • Update db api test

  • DB api test cases and revisions

  • Allow for turning off auto-extract and add a test

  • Use a function to filter args and add comments

  • Use update instead of overwrite

  • Move decorators to new file and update to use better wraps()

  • Continue work with decorator usage

  • Update with adding a provides and requires decorator for standalone function usage

  • Instead of apply use __call__

  • Add comment to why we accumulate before notifying task listeners

  • Use a default sqlite backing using a taskflow file

  • Add a basic rollback accumlator test

  • Use rollback accumulator and remove requires()/provides() from being functions

  • Allow (or disallow) multiple providers of items

  • Clean the lines in a seperate function

  • Resync with oslo-incubator

  • Remove uuid since we are now using uuidutils

  • Remove error code not found in strict version of pylint

  • Include more dev testing packages + matching versions

  • Update dependencies for new db/distributed backends

  • Move some of the functions to use there openstack/common counterparts

  • More import fixups

  • Patch up the imports

  • Fix syntax error

  • Rename cause -> exception and make exception optional

  • Allow any of the previous tasks to satisfy requirements

  • Ensure we change the self and parents states correctly

  • Always have a name provided

  • Cleaning up files/extraneous files/fixing relations

  • More pylint cleanups

  • Make more tests for linear and shuffle test utils to common file

  • Only do differences on set objects

  • Ensure we fetch the appropriate inputs for the running task

  • Have the linear workflow verify the tasks inputs

  • Specify that task provides/requires must be an immutable set

  • Clean Up for DB changes

  • db api defined

  • Fleshing out sqlalchemy api

  • Almost done with sqlalchemy api

  • Fix state check

  • Fix flow exception wording

  • Ensure job is pending before we associate and run

  • More pylint cleanups

  • Ensure we associate with parent flows as well

  • Add a nice run() method to the job class that will run a flow

  • Massive pylint cleanup

  • deleting .swp files

  • deleting .swp files

  • cleaning for initial pull request

  • Add a few more graph ordering test cases

  • Update automatic naming and arg checks

  • Update order calls and connect call

  • Move flow failure to flow file and correctly catch ordering failure

  • Just kidding - really fixing relations this time

  • Fixing table relations

  • Allow job id to be passed in

  • Check who is being connected to and ensure > 0 connectors

  • Move the await function to utils

  • Graph tests and adjustments releated to

  • Add graph flow tests

  • Fix name changes missed

  • Enable extraction of what a functor requires from its args

  • Called flow now, not workflow

  • Second pass at models

  • More tests

  • Simplify existence checks

  • More pythonic functions and workflow -> flow renaming

  • Added more utils, added model for workflow

  • Spelling errors and stuff

  • adding parentheses to read method

  • Implemented basic sqlalchemy session class

  • Setting up Configs and SQLAlchemy/DB backend

  • Fix the import

  • Use a different logger method if tolerant vs not tolerant

  • More function comments

  • Add a bunch of linear workflow tests

  • Allow resuming stage to be interrupted

  • Fix the missing context variable

  • Moving over celery/distributed workflows

  • Update description wording

  • Pep fix

  • Instead of using notify member functions, just use functors

  • More wording fixes

  • Add the ability to alter the task failure reconcilation

  • Correctly run the tasks after partial resumption

  • Another wording fix

  • Spelling fix

  • Allow the functor task to take a name and provide it a default

  • Updated functor task comments

  • Move some of the useful helpers and functions to other files

  • Add the ability to associate a workflow with a job

  • Move the useful functor wrapping task from test to wrappers file

  • Add a thread posting/claiming example and rework tests to use it

  • After adding reposting/unclaiming reflect those changes here

  • Add a nicer string name that shows what the class name is

  • Adjust some of the states jobs and workflows could be in

  • Add a more useful name that shows this is a task

  • Remove impl of erasing which doesn’t do much and allow for job reposting

  • Various reworkings

  • Rename logbook contents

  • Get a memory test example working

  • Add a pylintrc file to be used with pylint

  • Rework the logbook to be chapter/page based

  • Move ordered workflow to its own file

  • Increase the number of comments

  • Start adding in a more generic DAG based workflow

  • Remove dict_provider dependency

  • Rework due to code comments

  • Begin adding testing functionality

  • Fill in the majority of the memory job

  • Rework how we should be using lists instead of ordereddicts for optimal usage

  • Add a context manager to the useful read/writer lock

  • Ensure that the task has a name

  • Add a running state which can be used to know when a workflow is running

  • Rename the date created field

  • Add some search functionality and adjust the await() function params

  • Remove and add a few new exceptions

  • Shrink down the exposed methods

  • Remove the promise object for now

  • Add RESUMING

  • Fix spelling

  • Continue on getting ready for the memory impl. to be useful

  • On python <= 2.6 we need to import ordereddict

  • Remove a few other references to nova

  • Add in openstack common and remove patch references

  • Move simplification over

  • Continue moving here

  • Update README.md

  • Update readme

  • Move the code over for now

  • Initial commit