Python SDK changelog
TL;DR
typesafe-sdkhas three PyPI releases:0.0.1a0(name placeholder),0.5.7— the initial public release, 2026-09-14 — and0.6.0, 2026-09-15, the current version. The only breaking change so far:Score.criteriais now an ordered sequence instead of a dictionary keyed by integers. Write new code against 0.6.0.
Release table
| Version | Date | Kind | Headline |
|---|---|---|---|
0.6.0 |
2026-09-15 | minor, breaking | Score.criteria becomes an ordered sequence; abstract input types; richer errors; RetryPolicy validation; picklable exceptions and responses |
0.5.7 |
2026-09-14 | initial public release | First published SDK |
0.0.1a0 |
— (date not captured) | pre-release placeholder | Reserves the typesafe-sdk name on PyPI; no documented content |
The upstream changelog (both the docs page and docs/changelog.md in the repo) covers only 0.6.0 and 0.5.7. 0.0.1a0 appears in the PyPI release listing collected 2026-09-17 and has no changelog entry.
Repository state captured for this wiki: https://github.com/typesafe-ai/typesafe-sdk-python at commit 420ef4ffb612d5a539a1e0f0fe883ff6770340af, authored 2026-09-15, subject "Release v0.6.0" (co-authored by Allie Laabs and Daniel Gafni). Tags v0.5.7 and v0.6.0 are both present in the clone; v0.6.0 points at that same commit, which is also origin/main. pyproject.toml at that commit declares version = "0.6.0".
v0.6.0 (2026-09-15)
Verbatim from the upstream changelog:
Breaking Changes
- accept
Score.criteriaas an ordered sequence instead of a dictionary keyed by integers
Features
- improve type annotations on SDK inputs to accept abstract types like
MappingandSequence - improve error messages to include http details and metadata
Bug fixes
- handle invalid values in
RetryPolicy - make exceptions and responses picklable
Documentation
- link more concepts from main docs
What the breaking change means in code
from typesafe_sdk import Score
# 0.6.0 and later
Score(instructions="How urgent is this ticket?", criteria=["can wait", "this week", "today"])
# pre-0.6.0 shape — an int-keyed dict; no longer the documented form
# Score(instructions="How urgent is this ticket?",
# criteria={0: "can wait", 1: "this week", 2: "today"})
Migration steps when upgrading from 0.5.7:
- Find every
Score(...)construction and every{"type": "score", ...}dictionary. - Replace the int-keyed dict with a list (or tuple) ordered from score
0upward.sorted(old.items())then[value for _, value in ...]reproduces the order. - Leave answer-reading code alone:
ScoreAnswer.legendandScoreAnswer.probabilitiesare still keyed by integer score. Only the question side changed. - Re-check
RetryPolicy(...)arguments — invalid values now raiseTypeSafeErrorat construction instead of being accepted silently.
See Python SDK question types (Noul, Choice, Score) for the full 0.6.0 question contract and Python SDK responses, answers, usage, models for the answer side.
Where each change is visible in the API
| Change | Observable effect | Page |
|---|---|---|
Score.criteria sequence |
Score(criteria=Sequence[JSONContent]); empty sequence raises TypeSafeError |
Python SDK question types (Noul, Choice, Score) |
| Abstract input types | state, questions, criteria, headers accept Mapping/Sequence, not just dict/list |
Python SDK: install, clients, system_one() |
| Richer error messages | TypeSafeAPIError.endpoint, and __str__ renders endpoint: status message (request_id=…) |
Python SDK retries, exceptions, constants |
RetryPolicy validation |
__post_init__ raises TypeSafeError for bad max_retries, backoff values, jitter, or timeout |
Python SDK retries, exceptions, constants |
| Picklable exceptions and responses | Response.__copy__ / __reduce__ carry request_id and the raw HTTP response; TypeSafeAPIResponseValidationError.args is set explicitly |
Python SDK responses, answers, usage, models |
v0.5.7 (2026-09-14)
Verbatim: "This is the initial public release of TypeSafe Python SDK. Learn more in the documentation."
No itemized changes are published for this release. The version number starting at 0.5.7 rather than 0.1.0 is not explained upstream; the Python and JavaScript SDKs share the 0.5.7 → 0.6.0 sequence, which suggests a shared internal release train (inferred).
v0.0.1a0
Listed on PyPI among the typesafe-sdk releases (0.0.1a0, 0.5.7, 0.6.0) as collected on 2026-09-17. No changelog entry, no release date captured, and no documentation references it. Treat it as a name-reservation pre-release; do not install it.
Related packages
| Package | Version | Note |
|---|---|---|
typesafe-sdk |
0.6.0 | The SDK. Import as typesafe_sdk. |
typesafe-ai |
0.1.0 | Redirect shim that simply depends on typesafe-sdk. |
typesafe |
0.9.1 | Unrelated third-party package — not TypeSafe AI. |
@typesafe-ai/sdk (npm) |
0.6.0 (2026-09-15); 0.5.7 on 2026-09-12 | The JavaScript SDK, on the same version line — see JavaScript SDK changelog. |
Version pinning
The SDK is pre-1.0, and 0.6.0 already shipped a breaking change in a minor bump, so pin conservatively:
# pyproject.toml
dependencies = ["typesafe-sdk>=0.6.0,<0.7"]
uv add "typesafe-sdk>=0.6.0,<0.7"
Check the installed version at runtime:
from typesafe_sdk import __version__
print(__version__) # resolved via importlib.metadata.version("typesafe-sdk")
Related
- Python SDK: install, clients, system_one() — install, clients,
system_one() - Python SDK question types (Noul, Choice, Score) — the 0.6.0
Score.criteriacontract - Python SDK responses, answers, usage, models — answers, usage, models
- Python SDK retries, exceptions, constants —
RetryPolicyvalidation and richer errors - JavaScript SDK changelog — the JS SDK's parallel release line
- Versions and timeline (models, SDKs, API, company) — models, SDKs, API and company timeline
- typesafe-ai GitHub organisation and repos — the
typesafe-aiGitHub organisation
Sources
- raw/docs/sdk__python__changelog.md (https://docs.typesafe.ai/sdk/python/changelog.md)
- raw/github/typesafe-sdk-python/docs/changelog.md, pyproject.toml, git tags v0.5.7 / v0.6.0 (https://github.com/typesafe-ai/typesafe-sdk-python @ 420ef4ffb612d5a539a1e0f0fe883ff6770340af, 2026-09-15)
- PyPI release listing for
typesafe-sdk(0.0.1a0, 0.5.7, 0.6.0) and thetypesafe-aishim, collected 2026-09-17 and recorded in CLAUDE.md