Sympheny Toolbox
The official typed Python client for the Sympheny SaaS API: every documented endpoint as a typed method, synchronous and asynchronous, with authentication handled for you.
Documentation
Full documentation lives at https://docs.sympheny.com/:
- SDK guide and reference: https://docs.sympheny.com/sdk/
- REST API reference: https://docs.sympheny.com/api/
Install
pip install sympheny-toolbox
Requires Python 3.11+.
Quick start
from sympheny_toolbox import Sympheny
client = Sympheny("you@example.com", "your-password")
for project in client.projects.list():
print(project.project_name)
The same API is available asynchronously via AsyncSympheny:
from sympheny_toolbox import AsyncSympheny
async with AsyncSympheny("you@example.com", "your-password") as client:
projects = await client.projects.list()
Endpoints are grouped on the client the way the documented API groups them (client.projects, client.analyses, client.scenarios, client.hubs, client.solver_jobs, and so on); see the SDK reference. Requests and responses use Pydantic models generated from the OpenAPI spec (sympheny_toolbox.models). Higher-level helpers that combine several calls, such as running a solver job and downloading its results, live in sympheny_toolbox.workflows and are documented under Workflows.
Failed requests raise sympheny_toolbox.errors.SymphenyError subclasses: AuthenticationError (401), PermissionDeniedError (403), NotFoundError (404), APIError (any other unsuccessful status), and UnexpectedResponseError.
Development
The client is layered: the merged OpenAPI spec in specs/ generates models.py, the hand-written asynchronous client in _async/ is the source of truth, and the synchronous client in _sync/ is generated from it by an unasync-style transform. Regenerate it with uv run python scripts/generate_sync.py after changing anything under _async/.
Run every check (drift check, ruff, mypy, tests under coverage) with ./scripts/check.sh. Tests live under tests/ and run against a mock API (httpx.MockTransport), so they need no credentials and never reach the real Sympheny API.
To release: bump the version in pyproject.toml, add the matching CHANGELOG.md entry, and push a vX.Y.Z tag. The publish workflow checks that the tag matches the project version, runs all checks, and publishes to PyPI.
Release files for sympheny-toolbox 3.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sympheny_toolbox-3.0.1.tar.gz | 41.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sympheny_toolbox-3.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 108.0 kB
Release files / sympheny_toolbox-3.0.1.tar.gz
| Download URL | sympheny_toolbox-3.0.1.tar.gz |
|---|---|
| Size | 41.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
520570398f61e6837ea9b4de17900480f48b0d1ad3c0d94cdf1f738a14939884
|
|
BLAKE2b-256 checksum How to use checksums |
fdef720e910e937b777a52ac84ce80ad583d367a88b42095cbc62850dc625986
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / sympheny_toolbox-3.0.1-py3-none-any.whl
| Download URL | sympheny_toolbox-3.0.1-py3-none-any.whl |
|---|---|
| Size | 66.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
549261eede02a1d28eae4962cfcf8c374be702deb725f237e0225e5c061e56a1
|
|
BLAKE2b-256 checksum How to use checksums |
dc8de075380e05f3e06990085aabfddb5183e0e524946808ea6282cb7e132e4b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|