Python SDK Changelog

3.3.0 (2026-06-29)

Features

  • get_model_run_output transparently waits for an output that is still being computed, polling until it is ready instead of failing fast.
  • Raises a clear error if the output is still computing after the poll timeout (default 300s).
  • Exposes Model.input_aggregations (list[InputAggregation] of id, name, key).

3.2.0 (2026-06-19)

Features

  • ModelSummary now includes a required revision field.
  • ModelGroup now exposes timeHorizon and a models list (id, revision, createdAt).
  • display_name values no longer include the .r<n> revision suffix; read revision for the revision number.
  • Model.summary exposes the terse model summary; description now carries long-form markdown. After the migration, description is an empty string for existing models until a long-form description is published; the previous terse text lives in summary.

3.0.0 (2026-05-21)

Features

  • Internal network requests use the new API gateway. This is not a true breaking change, but 3.0.0 will be the minimum version required in the future when the previous paths are deprecated.
  • The client now retries rate-limited responses, so bulk workloads self-throttle instead of failing on the first rate-limit response. A max_retries client option (default 3) tunes or disables the behaviour; set it to 0 to manage retries yourself.
  • A new RateLimitError (subclass of ApiError) is raised when retries are exhausted, with a retry_after attribute carrying the server’s hint so you can back off without guessing.

2.2.0 (2026-04-29)

Features

  • Multiple Client instances in the same process now share one auth token resulting in less authorisation calls.

2.1.0 (2026-04-27)

Features

  • Add has_aggregation_errors to ModelRun now so callers can detect runs whose input aggregations failed to process.

2.0.0 (2026-04-21)

Features

  • Model.notes changed to str | None (previously str) so you can branch when they’re absent. Note that this field is only populated for models authored by your organisation.
  • Add description: str to Model type — exposes the new top-level model description from the API.
  • Breaking: Remove the high specificity ModelMetadata Pydantic class. model.model_metadata is now dict[str, Any] and contains the arbitrary bag of metadata specific to the model. If you were previously reading this field, use model.model_metadata["<field>"], and remove anyfrom pd4castr_api_sdk.models import ModelMetadata imports.