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_secretconfigured asenv:VARIABLE_NAMEis 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
usernameacceptsenv:VARIABLE_NAMElikepassworddoes, and settings that are not used at runtime no longer advertiseenv:support.
Changed
-
Saving the config (for example
qsh context set) no longer writes unset fields asnull. Fields already in your config file are kept as written. -
Regenerated OpenAPI models from
qlam-openapi0.7.0a3+48.shad343e7e. GroupsQCSRolenow includesTASK_PROFILE_USER. The same refresh adds optional groupis_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-leveldefaults.auth.oauthblock, andtokenentries inauth_providers. None of them ever authenticated requests. They are still accepted so existing config files keep loading. Configure anoauthorbasicentry inauth_providersand select it withdefaults.auth_providerinstead.
Removed
-
Config.auth_tokenandConfig.timeout. Both raisedAttributeErroron a loaded config, and theQSH_AUTH_TOKENenvironment variable is no longer used. Request timeouts come fromdefaults.http_clientanddefaults.timeouts. -
The
localauth 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
TaskProfilesClientfor creating and reading task profiles — immutable free-form JSON objects attached to task submissions. All methods accept atenantflag 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_secretvalues configured asenv:VARIABLE_NAMEnow 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 typedUserInfoprofile for the authenticated user (OAuth).
0.5.0 - 2026-08-10
Added
- Groups API client (
GroupsClient) andUsersClient.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; requiredgroupon definitions). Requestgroup_idfields are UUIDs. - Tasks and definitions list operations support
group_idfiltering.
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
TenantsClientandUsersClientfor 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
pydanticdependency.
0.1.0 - 2026-04-09
Initial public PyPI release of qlam-core.
Added
get_credentialandget_access_tokenfor programmatic credential retrieval.- Public vs private visibility for task definitions.
- Expanded unit test coverage.
Changed
AppContext.default_headersfor SDK-supplied default HTTP headers, includingUser-Agent.- Minimum Python version lowered to 3.10.
get_credentialreturn type narrowed toCredentialmodel.- Regenerated API models; resource identifiers use
idfields consistently. - Removed CLI-specific references so the library is consumer-agnostic.