Releases: dispatchrun/dispatch-py
v0.8.0
This release brings better interoperability with asyncio
, along with a flask
integration.
What's Changed
New features
- Flask integration by @chriso in #169
- interoperability with asyncio (part 1) by @achille-roussel in #174
- interoperability with asyncio (part 2): integration with aiohttp by @achille-roussel in #175
- interoperability with asyncio (part 3): refactor with aiohttp by @achille-roussel in #176
- support both asyncio and blocking modes with different abstractions by @achille-roussel in #178
Other changes
- Wrap pickled values in dispatch.sdk.python.v1 container by @chriso in #177
- Avoid pickling primitive values and proto messages by @chriso in #179
- test: decouple test components from httpx by @chriso in #170
- Flask integration tests by @chriso in #171
- Depend on http-message-signatures >= 0.5.0 by @chriso in #172
- README: light and dark mode logo by @achille-roussel in #168
- README: update project description by @achille-roussel in #173
Full Changelog: v0.7.1...v0.8.0
v0.7.1
This version fixes a few minor issues from the previous release.
What's Changed
- Simplify registration of error/output to status mappings by @chriso in #166
- Add top-level dispatch.batch helper function by @chriso in #165
- Fix the Lambda handler by @Pryz in #162
- Set readme badges to main branch by @Pryz in #164
- Update links in the example function by @chicoxyzzy in #161
Full Changelog: v0.7.0...v0.7.1
v0.7.0
What's Changed
This version fixes bugs that were uncovered by more robust type checking. It also adds new APIs to support integrations with the newly released Dispatch CLI!
New features
- mypy: upgrade to 1.10.0 by @achille-roussel in #156
Bug fixes
- update URLs from stealthrocket to dispatchrun by @achille-roussel in #160
Documentation
- README: update logo by @achille-roussel in #159
Other changes
- test: drop FastAPI dependency by @achille-roussel in #155
- Creation/expiration time by @chriso in #157
- Add dedicated error types for each of the error statuses by @chriso in #158
Full Changelog: v0.6.0...v0.7.0
v0.6.0
What's Changed
This version brings a lot of new and powerful APIs to the SDK.
The main change that v0.6 brings is enabling the integration of Dispatch in applications that are not based on FastAPI. The top-level dispatch
package can now be used to create vanilla Dispatch applications:
import dispatch
# The .function decorator is available on the top-level package to
# declare functions that can be orchestrated by the scheduler.
@dispatch.function
def greet(who: str):
...
# The .run function runs the main event loop interacting with the
# scheduler. It takes an optional initialization function that will
# be called right before entering the event loop.
dispatch.run(lambda: greet.dispatch('me'))
New features
- Dispatch without FastAPI by @achille-roussel in #154
Other changes
- Remove mock server entry point by @chriso in #151
- Don't print verification key warning when running under Dispatch CLI by @chriso in #152
- Extract new proto fields by @chriso in #153
Full Changelog: v0.5.1...v0.6.0
v0.5.1
What's Changed
This version adds multiple bug fixes, including one that prevented dispatch functions from running concurrently within a single application instance (distributing concurrent calls across multiple instances was unaffected).
Other changes
- FastAPI: run Dispatch functions in a thread executor by @chriso in #146
- Add experimentation Lambda integration by @Pryz in #142
- Don't pickle coroutine state twice by @chriso in #148
- Bump cibuildwheel version to fix PyPI publish issue by @chriso in #149
Full Changelog: v0.5.0...v0.5.1
v0.5.0
What's Changed
This version introduces a new Reset
error type, which when raised or returned, replaces the function being run by a different call.
New features
- add special Reset class to implement tail calls by @achille-roussel in #145
Full Changelog: v0.4.2...v0.5.0
v0.4.2
v0.4.1
This patch release brings compatibility with Python 3.9 and 3.10.
Prior to this update, the Python SDK for Dispatch was only compatible with Python 3.11+, which caused a lot of issues due to default Python installations often being older on OSX and Ubuntu (usually 3.9). This caused a lot of friction for users who tried Dispatch but didn't have a supported version pre-installed.
What's Changed
Bug fixes
- v0.4.1: fix build by @achille-roussel in #139
- Add MANIFEST.in by @chriso in #141
Other changes
- Minor UX improvements by @chriso in #138
- Python 3.10 support by @chriso in #136
- Python 3.9 support by @chriso in #140
Full Changelog: v0.4.0...v0.4.1
v0.4.0
This is an important release with new concurrency APIs to compose more advanced applications powered by Dispatch.
The release also includes new default integrations for errors raised by popular services like Slack and OpenAI, so dispatch functions can automatically handle retries when executing requests to those APIs.
What's Changed
New features
- Concurrency primitives: any, all, race by @chriso in #131
- Remote endpoints by @chriso in #134
- Slack integration by @chriso in #132
- OpenAI integration by @chriso in #133
Other changes
- Fix registration of synchronous functions by @chriso in #129
- mock server: show more info when a call fails by @chriso in #128
- Promote docopt dependency by @chriso in #130
- Promote httpx dependency by @chriso in #137
Full Changelog: v0.3.0...v0.4.0
v0.3.0
v0.3.0 introduces a new SDK feature called batch
, allowing you to build a batch of functions to be dispatched and executed concurrently.
@dispatch.function
def funcA(): ...
@dispatch.function
def funcB(someargs): ...
batch = dispatch.batch()
batch.add(funcA)
batch.add(funcB, someargs)
batch.dispatch()
Take a look at the documentation to learn about the different SDK features: Workflow as code!
Happy building!
What's Changed
New features
- Batch submit by @chriso in #127
- Improve UX around verification keys by @chriso in #120
- Mock server by @chriso in #126
Documentation
- Add section describing serialization and its quirks by @chriso in #118
- Update README by @chriso in #125
Other changes
Full Changelog: v0.2.1...v0.3.0