Restate Python SDK
June 23, 2026 Β· View on GitHub
Restate Python SDK
Restate is a system for easily building resilient applications using distributed durable async/await. This repository contains the Restate SDK for writing services in Python.
Community
- π€οΈ Join our online community for help, sharing feedback and talking to the community.
- π Check out our documentation to get quickly started!
- π£ Follow us on Twitter for staying up to date.
- π Create a GitHub issue for requesting a new feature or reporting a problem.
- π Visit our GitHub org for exploring other repositories.
Using the SDK
Prerequisites:
- Python >= v3.10
To use this SDK, add the dependency to your project:
pip install restate_sdk
Versions
The compatibility with Restate is described in the following table. sdk-python versions < 0.10 are deprecated and no longer supported.
| Restate Server\sdk-python | 0.10 - 0.18 | 1.0 |
|---|---|---|
| < 1.3 | β | β |
| 1.3 - 1.4 | β (1) | β (1)(2) |
| 1.5 - 1.6 | β | β (2) |
| 1.7 | β | β |
(1) Note The new Service/Object/Workflow constructor field and the decorator field invocation_retry_policy works only from Restate 1.4 onward. Check the in-code documentation for more details.
(2) Note Scopes and limit keys work only from Restate 1.7 onward. Check the in-code documentation for more details.
Contributing
Weβre excited if you join the Restate community and start contributing! Whether it is feature requests, bug reports, ideas & feedback or PRs, we appreciate any and all contributions. We know that your time is precious and, therefore, deeply value any effort to contribute!
Local development
- Python 3
- PyEnv or VirtualEnv
- just
- Rust toolchain
Set up your virtual environment using the tool of your choice, e.g. VirtualEnv:
python3 -m venv .venv
source .venv/bin/activate
Install the build tools:
pip install -r requirements.txt
Now build the Rust module and include opt-in additional dev dependencies:
maturin dev -E test,lint
You usually need to build the Rust module only once, but you might need to rebuild it on pulls.
For linting and testing:
just verify
Releasing the package
Pull latest main:
git checkout main && git pull
Update module version in Cargo.toml and run a local build to update the Cargo.lock too, commit it. Then push tag, e.g.:
git tag -m "Release v0.1.0" v0.1.0
git push origin v0.1.0