CHANGES¶
Bump pylint
Skip functional tests for doc update
reno: Update master for unmaintained/2023.1
5.10.0¶
Add note about requirements lower bounds
Remove Python 3.8 support
Declare Python 3.12 support
Remove unused usage of pkg_resources
Drop SQLALCHEMY_WARN_20
Update master for stable/2024.2
5.9.1¶
5.9.0¶
Follow-up of “Add Etcd backend for jobboard”
Add functional test with etcd
Add Etcd backend for jobboard
5.8.0¶
Python3.12: disable process_executor, which depends on asyncore
Fix REVERT_ALL with Retries in unordered Flows
Remove SQLAlchemy tips jobs
Remove old excludes
Remove assertRaisesRegex
Replace deprecated Engine.execute
5.7.0¶
Add functional job with redis enabled
db: Don’t rely on branched connections
Fix broken unit tests for redis jobboard driver
Fix update-states target
Revert “Use consistent credential for Redis and Redis Sentinel”
Update master for stable/2024.1
reno: Update master for unmaintained/victoria
5.5.0¶
Prevent potential ReDoS attack
redis: Support fallback servers
Use consistent credential for Redis and Redis Sentinel
redis: Enable SSL for sentinel
redis: Add username
Bump hacking
Replace deprecated perl-style regex
Cleanup setup.py and requirements
Update python classifier in setup.cfg
coveragerc: Remove non-existent path
Fix python shebang
Avoid endless backtraces on StorageFailure
Fix incorrect handling of storage exceptions
bindep: Use new mysql-* package names
Update master for stable/2023.2
5.4.0¶
Update redis dep to >=3.0.0
5.3.0¶
Add job to test with SQLAlchemy master (2.x)
db: Don’t rely on autocommit behavior
tests: Enable SQLAlchemy 2.0 deprecation warnings
tests: Use valid IPv6 address
5.2.0¶
Revert “Moves supported python runtimes from version 3.8 to 3.10”
Moves supported python runtimes from version 3.8 to 3.10
Upgrade development status
Fix doc building with Sphinx 6.0
Prepare taskflow for sqlalchemy2
Update master for stable/2023.1
Fix parsing of zookeeper jobboard backend options
5.1.0¶
Fix test_while_is_not with python 3.11
Change StrictRedis usage to Redis
remove unicode prefix from code
Adapt to new jsonschema versions
Replace abc.abstractproperty with property and abc.abstractmethod
5.0.0¶
Quote string representations
Fix formattiing of release list
Remove six
Drop python3.6/3.7 support in testing runtime
Delete the job from backend if it cannot be consumed
4.7.0¶
Update CI to use unversioned jobs template
Fix atomdetails failure column size
Fix unit tests
4.6.4¶
Handle invalid redis entries in RedisJobBoard
Fix minor typo in ActionEngine exception message
Use LOG.warning instead of deprecated LOG.warn
4.6.3¶
4.6.2¶
Replace deprecated import of ABCs from collections
Use custom JSONType columns
4.6.1¶
Updating for OFTC IRC network
Fix flowdetails meta size
Use unittest.mock instead of mock
setup.cfg: Replace dashes with underscores
Move flake8 as a pre-commit local target
Remove lower-constraints remnants
4.6.0¶
Fix deprecated Alembic function args
Dropping lower constraints testing
Use TOX_CONSTRAINTS_FILE
Use py3 as the default runtime for tox
Add Python3 wallaby unit tests
Update master for stable/victoria
ignore reno generated artifacts
Adding pre-commit
4.5.0¶
[goal] Migrate testing to ubuntu focal
4.4.0¶
Avoid endless loop on StorageFailure
Add sentinel redis support
Switch from unittest2 compat methods to Python 3.x methods
4.3.1¶
Make test-setup.sh compatible with mysql8
4.3.0¶
Stop to use the __future__ module
4.2.0¶
Switch to newer openstackdocstheme and reno versions
Cap jsonschema 3.2.0 as the minimal version
Import modules, not classes
Bump default tox env from py37 to py38
Add py38 package metadata
Add release notes links to doc index
Drop use of deprecated collections classes
Add Python3 victoria unit tests
Update master for stable/ussuri
4.1.0¶
Zookeeper backend SSL support
4.0.0¶
[ussuri][goal] Drop python 2.7 support and testing
3.8.0¶
Switch to Ussuri jobs
Update TaskFlow for networkx 2.x
Update master for stable/train
Fix python3.8 hmac compatibility
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