ThrustLab

Versioning & stability

The Python SDK uses its own SemVer, independent of the /v1/ API version. The HTTP path is permanently /v1/; SDK version bumps are about the Python surface (method names, argument shapes, exception classes).

Current state

ComponentStability
/v1/ HTTP APIStable — see the stability policy
thrustlab Python SDK0.x — minor bumps may include small breaking changes until 1.0

SemVer mapping

BumpExamplesBackward compatible?
Patch (0.1.0 → 0.1.1)Bug fixes, dependency bumps, doc fixesYes
Minor (0.1.0 → 0.2.0)New methods, new exception classes, possibly small breaking renames during 0.xNo during 0.x; yes after 1.0
Major (0.x → 1.0)Surface graduates to "stable" — covered by deprecation policyn/a

While the SDK is in 0.x, pin it tightly in production:

# requirements.txt
thrustlab>=0.1.0,<0.2.0

After 1.0, a looser constraint is safe:

thrustlab>=1.0,<2.0

Reading the installed version

import thrustlab
print(thrustlab.__version__)

The same value is reported in the User-Agent on every request — see logging & debugging.

Release cadence

  • Patch releases ship as bug fixes are needed; no schedule.
  • Minor releases ship roughly when a new /v1/ resource lands or a pattern (idempotency / pagination / retries) gets a meaningful upgrade.
  • The plan is to graduate to 1.0 once the SDK has been used in production for a quarter without breaking changes.

Deprecation policy (post-1.0)

After 1.0, the SDK will follow the same deprecation timeline as the API:

  1. New name lands; old name keeps working.
  2. Old name emits a DeprecationWarning for at least one minor.
  3. Old name is removed in the next major (e.g. 1.x → 2.0).

You can promote DeprecationWarning to errors in CI to catch usage early:

import warnings
warnings.filterwarnings("error", category=DeprecationWarning, module="thrustlab")

Compatibility with the /v1/ API

The /v1/ HTTP path is permanent — it does not get a v2. New fields are additive (don't break old SDK versions), and the stability policy governs what counts as a breaking change.

In practice this means:

  • An old SDK can talk to a newer server. New optional fields are simply not exposed by the SDK — you'll see them in result["raw"] but not as typed attributes.
  • A new SDK can talk to an older server, but only if every method it invokes exists. New methods raise 404 against an old server.

See also

We use cookies and analytics tools to understand how you use ThrustLab and improve the experience. Privacy Policy

Python SDK — Versioning & stability · ThrustLab API