Skip to content

Changelog

Version history for the qlam-core Python SDK.

[Unreleased]

0.8.0 - 2026-10-01

Fixed

  • Cached OAuth tokens are usable again when a client_secret configured as env:VARIABLE_NAME is not set in the current environment. The variable is now needed only to request a new token, and a missing value still produces a configuration error at that point.

  • Configuration reference text now matches behavior: basic-auth username accepts env:VARIABLE_NAME like password does, and settings that are not used at runtime no longer advertise env: support.

Changed

  • Saving the config (for example qsh context set) no longer writes unset fields as null. Fields already in your config file are kept as written.

  • Regenerated OpenAPI models from qlam-openapi 0.7.0a3+48.shad343e7e. Groups QCSRole now includes TASK_PROFILE_USER. The same refresh adds optional group is_default, task-delete operation metadata, and tenant invitation request/response types. No new CLI commands.

Deprecated

  • The "direct token" configuration (defaults.auth.token), the context-level defaults.auth.oauth block, and token entries in auth_providers. None of them ever authenticated requests. They are still accepted so existing config files keep loading. Configure an oauth or basic entry in auth_providers and select it with defaults.auth_provider instead.

Removed

  • Config.auth_token and Config.timeout. Both raised AttributeError on a loaded config, and the QSH_AUTH_TOKEN environment variable is no longer used. Request timeouts come from defaults.http_client and defaults.timeouts.

  • The local auth provider (LocalAuthProvider). It could not be configured or instantiated, and error messages no longer list it as a supported provider type.

0.7.0 - 2026-09-11

Added

  • TaskProfilesClient for creating and reading task profiles — immutable free-form JSON objects attached to task submissions. All methods accept a tenant flag to read tenant-wide instead of caller-scoped.

Fixed

  • Empty JSON objects are now sent as request bodies instead of being dropped.
  • Fix get_user_info() when an empty list claim returns as an object
  • OAuth client_secret values configured as env:VARIABLE_NAME now resolve from the environment. Missing values produce a configuration error before authentication.

Changed

  • Dict request bodies are now typed as dict[str, Any], so nested JSON payloads with narrower inferred types pass static type checking.
  • Compilation create requests and list operations now support group IDs, and compilation responses include group metadata.

0.6.0 - 2026-08-14

Added

  • get_user_info() helper and typed UserInfo profile for the authenticated user (OAuth).

0.5.0 - 2026-08-10

Added

  • Groups API client (GroupsClient) and UsersClient.get_groups() for membership.
  • GroupsClient.resolve_id() and list filters (name, is_shared, id).

Changed

  • Task and task-definition responses include group information (Task.group; required group on definitions). Request group_id fields are UUIDs.
  • Tasks and definitions list operations support group_id filtering.

0.4.0 - 2026-06-30

Fixed

  • API client context managers preserve the concrete client type for static checkers.

Changed

  • Docstring code examples render as markdown in generated docs.

0.3.0 - 2026-06-04

Added

  • TenantsClient and UsersClient for tenant and user management APIs.
  • Full binary result downloads via ResultsClient.

Changed

  • User and tenant API clients updated for revised list filters and sorting.

Fixed

  • OAuth authorization-code login no longer logs a traceback after callback timeouts.

0.2.0 - 2026-04-10

Changed

  • Lowered minimum pydantic dependency.

0.1.0 - 2026-04-09

Initial public PyPI release of qlam-core.

Added

  • get_credential and get_access_token for programmatic credential retrieval.
  • Public vs private visibility for task definitions.
  • Expanded unit test coverage.

Changed

  • AppContext.default_headers for SDK-supplied default HTTP headers, including User-Agent.
  • Minimum Python version lowered to 3.10.
  • get_credential return type narrowed to Credential model.
  • Regenerated API models; resource identifiers use id fields consistently.
  • Removed CLI-specific references so the library is consumer-agnostic.