0.16.0
======

Additions
---------

- Add ``and_finally`` option to the Group (and derived) nodes. This provides a way
  to execute nodes to clean up after a workflow has completed successfully or
  an exception was raised.

Changes
-------

- testing.call_node now accepts a workflow context. This allows for inspection
  of the context if an exception is raised.
- Fix the inheritance of exceptions. All RunTime exceptions are now based off
  of ``WorkflowRuntimeError``.
- ``TryExcept`` now resolves nodes called after an exception taking subclasses
  into account. This matches the behaviour of Python itself.

0.15.0
======

Additions
---------

- Add TryExcept node to handle errors in a workflow.

Changes
-------

- ForEach node now shows each loop and allows for custom labels
  for each loop.
- Improve indentation of workflow output.



0.14.0
======

Additions
---------

- Add FeatureEnabled node to enable/disable a feature based on a
  PyApp feature-flag.


0.13.0
======

Additions
---------

- Add Group. A group is a set of nodes that are executed but do not
  get placed in a new variable scope. Useful for building blocks of
  nodes.
- Group also includes an option to change the log_level for the duration
  of the group being executed.
- Fatal step has been added to trigger a fatal exception to stop the
  workflow.

Changes
-------

- Nodes now inherits from Group and includes the log_level option.


0.12.0
======

Additions
---------

- Add TryUntil node for trying multiple nodes until one succeeds.

Changes
-------

- Add log-level helpers
- Include that flowfile.py is located on in the workflow context.
- Use var name to reference workflow from CLI.
- Fetch version from package info.
- Added tracing support to aid in debugging workflows.
- Add flowfile.py support for execution of workflows in a repository.


0.11.0
======

Changes
-------

- Format output of Workflow name to format from the context.
- Added a skip_step function, that allows a step to be skipped. This is based
  off an exception that is handled by the Step class wrapping the function.


0.10.0
======

Changes
-------

- Support pyApp constructs


0.9.0
=====

Changes
-------

- Define a `Node` protocol
- `CaptureErrors` node can now specify specific exception types
- Early version of parallel nodes (using multiprocessing), this version has some
  caveats relating to what can be passed into a parallel execution.


0.8.0
=====

Changes
-------

- `WorkflowContext.state` variables can now be accessed as attributes
- Add `Navigable` ABC to all workflow items to aid in documentation

Sphinx Extension
----------------

- Workflow documentor can now generate the workflow node tree


0.7.0
=====

Changes
-------

- `SetVar` can be passed a callable that accepts a context

Sphinx Extension
----------------

- Step autodoc will now:

  - Add ``noname`` option to stop name being included in step and workflow
  - Hide input section if there are no inputs
  - Hide output section if there are no outputs
  - Only pluralise output if there are multiple outputs


0.6.0
=====

This release brings the library rapidly toward a 1.0 release solidifying the API
and approach to the API design.


Breaking Changes
----------------

- Simplified API and removed most snake case aliases, removed aliases from
  Workflow object.
- Removed init arguments from all Nodes in favour of fluent style methods.

Changes
-------

- Add Sphinx extension for documentation workflow (this is only partial does not
  document steps yet)
- More tests
- Reference documentation


0.5.0
=====

Changes
-------

- Fix bug where local args are being included in step input kwargs
- Add Sphinx extension for documentation steps


0.1.0
=====

Initial alpha release
