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.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.0.0.tar.gz | 41.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sympheny_toolbox-3.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 108.0 kB
Release files / sympheny_toolbox-3.0.0.tar.gz
| Download URL | sympheny_toolbox-3.0.0.tar.gz |
|---|---|
| Size | 41.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a32bfcfa7f97476fd7b0bf2597469bba83e7066cbab59cd495ff43eb4cbe8b4e
|
|
BLAKE2b-256 checksum How to use checksums |
6196e1961be90727dd90cc21a13aecdc8598a09506bdb8180b0e00c3e308e70f
|
| 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.0-py3-none-any.whl
| Download URL | sympheny_toolbox-3.0.0-py3-none-any.whl |
|---|---|
| Size | 66.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b1807a98894c7bf942216cc57e66e88158611387920abd33407b2be3470d6c56
|
|
BLAKE2b-256 checksum How to use checksums |
65854c30160b4ad1b1b1435bd2a2e638e9598b857ce4f94fe13af1c0e0381e7d
|
| 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}
|