0.9 (WIP)
Improvements
- Add support for setting task priorities. Thanks @paulcollinsiii for PR. #9
API Changes
- Remove
botoflow.retry
module in favor of@retry_activity
decorator which is much more extensible and is based onretrying
library. WorkflowStarter
is nowworkflow_starter
as context managers should be snake case and it's better to do this now, before 1.0 release.- Renamed
botoflow.workflow_types
module tobotoflow.flow_types
package. - Removed
botoflow.types
alias. Usebotoflow.flow_types
. @async
is now@coroutine
to closer align withasyncio
naming. See #1 for details.
Bugfixes
- Fix a critical bug in decider history event ordering, which could affect any workflows that execute activities/child workflows concurrently.
@activities
decorator was ignoringdata_converter
option. Thanks @glharding.- Better wrapping of errors from SWF. Thanks @glharding.
Miscellaneous
- It's open sourced!
doc
directory renamed todocs
.- Various package naming fixes.
- Add
CONTRIBUTING.rst
. - Add
README.rst
. - Lots of work and refactoring in documentation.
- Up to date requirements.txt.
- CircleCI integration.
- Thanks to Gintare Laniauskaite for work on the LOGO and documentation design!
- Add tox support and test CPython 2.7, 3.4 and 3.5.
- Mark some tests in test_async_traceback as xfail for Python 3.5.0 specifically (works fine on 3.5.1).
- Add
botoflow.__version__
. examples
directory andhelloworld
example. Thanks to @l2ol33rt for contribution.
Improvements
- Add ThrottlingException.
- Do not skip registration for all activities.
- Only try registering unregistered activities.
- Supporting more BaseFuture methods properly.
- json_data_converter - add support for Decimal objects + tests.
- json_data_converter - Make ActivityType serializable in cases
where
ActivityFailedException
is passsed throug SWF. - json_data_converter - Support
datetime
andtimedelta
object serialization. - Add support for activity retrying using the
retrying
library as the base with the major difference being that it takes seconds as the smallest resolution as opposed to millis. - Support handling basic inputs that for example come from on botoflow based workflow starters. See commit 70423b5 for details.
Bugfixes
- Fix a regression in ChildWorkflowExecutionHandler where child workflow exceptions aren't passed to the parent process.
- Make sure that (Any|All)Future s behave wen passed in an empty iterable (they will immediately set an empty result).
- Handle starting a child workflow with a duplicate Workflow ID.
Miscellaneous
- Unit and integration test improvements.
- json_data_converter - Unit test improvements.
API Changes
- Expose workflow_id and run_id to decision context.
- Initial workflow cancellation support.
- Add .cancel() method in
WorkflowDefinition
.
- Add .cancel() method in
- Add async
cancellation_handler
method that can be overwritten to do cleanup for workflow cancellation tasks.
Improvements
- Implement workflow cancellation events.
- Big refactor of decider.py into a bunch of specific handlers
(ie.
activity_task_handler.py
, etc.). - Add separate future for cancel activity.
- Support
RequestCancelActivityTaskFailedError
. ActivityWorker
understandsCancellation
/CancelledError
.- Implement
ActivityFuture
that replaces the regular Future for all activities and has SWF support for cancellations. - Implement
request_heartbeat()
in Activity context. ActivityTaskHandler
usesActivityFuture
.
Bugfixes
- Add fallback handling for decoding of exception objects.
- Fix bug in workflow options overrides.
- Added kwarg formatting translation for Child workflow execution trigger.
- Respect pagination token returned in SWF workflow execution history.
- Fixed bug with activities decorator kwargs not falling down to enclosed activity decorators.
Miscellaneous
- Cleanup bogus prints.
- Doctype the async decorator a bit.
- Implement some integration tests.
delete_decision()
now returns True if a decision was deleted successfully and False otherwise.- Adjust handling of cancel events; parse exception out of event details.
- Cleanup of new handlers and decider.
- More activity cancellation work and more integration tests.
- Logic improvements + integration tests.
- Docstrings all around cancellation work.
- Refactor a bunch of cancellation related tests into a separate test file.
API Changes
- The worker API now uses
botocore
session, followed by region, followed by domain, followed by default tasklist.
Miscellaneous
- Use BotoCore 0.66 which has lots of incompatible changes, therefore the worker API changes as well.
API Changes
- Threading and multiprocessing based workers are renamed "Executor" and accept a worker as an argument so that they can be used with either the normal WorkflowWorker or GenericWorkflowWorker.
New Features
- Add GenericWorkflowWorker which allows specifying a function that can use any method it wants to lookup workflow definitions from a name and version, including by dynamically creating it.
Improvements
- Include additional attributes when serializing / deserializing subclasses of list and dict.
- Handle (de)serialization of subclasses of list.
Bugfixes
- json_data_converter - base64 encode any string that can't bedecoded as unicode.
- json_data_converter - Make sure we "flowify" dictionary values.
- Fix workflow and activity registration issue where default task list would not be set.
Miscellaneous
- Test that default activity task list is honoured.
API Changes
- You can use now @async and @async() with the same result.
- As a shortcut:
from botoflow import Future
.
New Features
- Implement the
@workflow
decorator. Using this decorator, you can change the workflow name. @execute
now also accepts data_converter and description parameters. If not specified, the description parameter defaults to the @execute method's docstring, as with@activity
.
Improvements
- The metaclass will now look at all bases of a WorkflowDefinition
subclass and copy all the
@execute
and@signal
methods to the class we're creating. Subclassing another workflow should now work much better. - Refactor the data_converter attribute into a property, and add a type check.
Bugfixes
- Create a new event loop on every reset to help with an edge case where gc happens at the wrong moment.
Miscellaneous
- Add a test that tests ability to pass in multiple signals as data into workflow.
- Add a simple workflow subclassing test.
- Add a test that shows multiver works.
- Add a test that tests that
@execute
method is copied from the superclass to the subclass.
- Initial release