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.1.0
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.1.0.tar.gz | 44.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sympheny_toolbox-3.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 116.4 kB
Release files / sympheny_toolbox-3.1.0.tar.gz
| Download URL | sympheny_toolbox-3.1.0.tar.gz |
|---|---|
| Size | 44.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d4b1183afe31db54a5dc7f73c2d05c0b8896a730a212fb90caa4a8c01482b16b
|
|
BLAKE2b-256 checksum How to use checksums |
a4b6c08da3128b12160cc1eba5ec123226fbe7214c72df9e3735ddb745a3e322
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","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.1.0-py3-none-any.whl
| Download URL | sympheny_toolbox-3.1.0-py3-none-any.whl |
|---|---|
| Size | 71.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3e8ddea8b5cbd65346e276a8cfedd08888d0e84959dad9d7b8f281b15d57b260
|
|
BLAKE2b-256 checksum How to use checksums |
cfe41be3f72fafa985fa53e0073a07d7a7738be7fc99136c6243529d496ef655
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","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}
|