Releases: atlanhq/atlan-python
v9.3.2
Bug Fixes π
- Policy duplicate detection - allow updates to proceed: Revised the duplicate-detection logic (introduced in 9.2.0) so that legitimate policy updates are no longer blocked. The duplication check now only intercepts retried creations, not update requests.
AtlanTagdisplayNamefield: TheAtlanTagclassification model now accepts adisplayNamefield that was previously rejected during deserialization.
Experimental: pyatlan_v9 π§ͺ
- Sync
get/set_custom_metadataonAsset: Added synchronousget_custom_metadata()andset_custom_metadata()methods to the v9Assetclass, and fixed related custom metadata integration tests.
Full Changelog: 9.3.1...9.3.2
v9.3.1
Experimental: pyatlan_v9 π§ͺ
typedef typing corrections and serialization fixes:
- Corrected field types in
RelationshipDefand removed hardcoded defaults. - Optional typedef fields now use
msgspec.UNSETso they are omitted from serialization rather than emitted asnull.AttributeDef.default_valueandindex_type_es_fieldsrelaxed toAnyto accommodate varied server responses. is_rich_textandcustom_metadata_versionnow default toUNSETvia__post_init__and thecategoryfield is no longer silently dropped byomit_defaults.
QOL Improvements π₯
- Trivy action updated to
0.35.0: Keeps the security scanning workflow on a stable release.
Full Changelog: 9.3.0...9.3.1
v9.3.0
New Features π
ModeChart.to_atlas_dict()andmode_reportfield: Addedto_atlas_dict()method andmode_reportattribute to theModeChartmodel.
Bug Fixes π
DQConditionvalue type ordering: Reordered theUniontype forDQCondition.valueto prioritizeintoverstr, preventing integer values from being incorrectly coerced to strings during deserialization.RICH_TEXT/STRINGenum aliasing fix:AtlanCustomAttributePrimitiveType.RICH_TEXTnow has a distinct enum value ("rich_text") instead of sharing"string"withSTRING. Previously Python's Enum treated them as aliases, causingSTRINGattributes to incorrectly receiveis_rich_text=Trueand RICH_TEXT multi-value restrictions to bleed into STRING attribute creation. The API-level primitive type sent in requests remains"string"for both (fixes PART-548).
Experimental: pyatlan_v9 π§ͺ
RICH_TEXT/STRINGenum aliasing fix: Same fix applied topyatlan_v9/model/typedef.pyβRICH_TEXTandSTRINGcustom metadata attributes are now correctly distinguished in the v9 code path.
QOL Improvements π₯
- Security guidelines for agents: Added security guidelines documentation for agents interacting with the atlan-python SDK.
Full Changelog: 9.2.2...9.3.0
v9.2.2
π₯ QOL Improvements
PackageHeadersmodel and backward-compatible header emission: Introduced a typedPackageHeadersmodel to manage package-related HTTP headers.set_package_headersnow accepts explicit header values, and the SDK emits bothpackage-nameandapp-nameheaders to maintain backward compatibility with older backends./releaseskill: Added a Claude Code skill to automate SDK releases β bumps version, drafts release notes, commits, and tags.
Full Changelog: 9.2.1...9.2.2
v9.2.1
π§ͺ Experimental pyatlan_v9
- Restored
validate(),minimize(),relate()SDK methods: All generated asset types now includevalidate(for_creation=False)for dry-run field validation (checkstype_name,name,qualified_name, optional QN pattern matching, and hierarchy-specific fields whenfor_creation=True),minimize()to produce a minimal updater copy, andrelate()to create aRelated{Type}reference. These are purely opt-in β not called by any serde path. Overlay files can override any of these methods.
Full Changelog: 9.2.0...9.2.1
v9.2.0
π§ͺ Experimental pyatlan_v9
- IDE autocompletion: Replaced custom AST-based lazy loading with
lazy_loader+ Pkl-generated.pyistub file. All 860+ asset classes now have full IDE type hints and autocompletion while keeping lazy import performance. - Pkl-generated
__init__.pyand__init__.pyi: The Pkl renderer now aggregates all typedefs (viaimport*glob) to generate__init__.py(withlazy_loader.attach()mapping) and__init__.pyi(with explicit re-exports for IDEs) directly β no post-sync Python script needed. Hand-written types from_init_manual.pyare included by reading the file at generation time. - Model updates: Regenerated all v9 models β GTC anchor regularization, entity lineage fields (
depth,immediate_upstream,immediate_downstream), QuickSightuseLocalTypeAsPrefix, fully Pkl-generatedDataQualityRule, and referenceable field descriptors via overlays. type_nameserialization fix:type_namefield default changed toUNSETsoomit_defaults=Truenever omitstypeNamefrom API requests.- Simplified
transform.py: Removed_normalize_camel_key()and related camelCase abbreviation handling β msgspec structs use explicitfield(name=...)mappings. Asset registration now usescls.__name__directly.
π₯ QOL Improvements
- Regenerated latest typedef models.
- Improved Claude Code review skill and added auto-review trigger on PR open.
βοΈ Breaking Changes
- Policy duplicate detection during retries: When a policy creation request times out but actually succeeds on the backend, the SDK now detects the existing policy instead of blindly retrying and creating a duplicate. On retry, the transport layer searches for an existing
AuthPolicywith the same name and persona GUID β if found, it returns a mock response containing the existing policy. Code that relied on retries always creating new policies will now receive the existing policy instead.
Full Changelog: 9.1.0...9.2.0
v9.1.0
π₯ QOL Improvements
- Regenerated latest typedef models.
- Upgraded Python dependencies (
pydantic,ruff,mypy,pytz, and others) and GitHub Actions to latest versions. - Replaced Sphinx with MkDocs + mkdocstrings for SDK documentation.
- Fixed circular import chains in
core/__init__.pygenerator (SQL β DbtTest,atlan_apppriority ordering). - Moved
AtlanApp,AtlanAppTool,AtlanAppWorkflow, andAppWorkflowRunintocore/. - Added Claude Code skill (
/upgrade-deps) for automated SDK dependency maintenance.
βοΈ Breaking Changes
DynamoDBTable.creator()now raisesNotImplementedError. DynamoDB tables have a fundamentally different creation model and cannot reuse the inheritedTable.creator(). Submit an enhancement request if you need this implemented.FileClient.upload_file()now blocks uploads of sensitive files (system paths, credential directories, hidden config files) to prevent accidental secret exposure. Users can extend the blocklist via thePYATLAN_UPLOAD_FILE_BLOCKED_PATHSenvironment variable (comma-separated substrings matched against the resolved path):# .env export PYATLAN_UPLOAD_FILE_BLOCKED_PATHS="/custom/secrets/,.vault,.credentials"
Full Changelog: 9.0.0...9.1.0
v9.0.0
π New Features
- Added
DynamoDBAttribute.creator()methods. - Added support for new connector type
AtlanConnectorType.ALLOYDB_POSTGRES.
π§ͺ Experimental
pyatlan_v9 β Next-generation Pyatlan SDK powered bymsgspec πͺ
Introduced pyatlan_v9, a ground-up rebuild of the SDK's data layer replacing Pydantic v1 with msgspec. Ships with full functional parity β models, clients, caches, and serde β while delivering 35-50x faster serialization performance. No implicit validators, fully typed, and extensible by design.
Key design changes:
- All models use
msgspec.Structinstead of PydanticBaseModel - Explicit
UNSETsentinel replaces Pydantic's implicit unset tracking omit_defaults=Trueandrename="camel"handle JSON wire format natively- Zero runtime validation overhead β type safety enforced at decode time
Benchmark results (Python 3.11, msgspec 0.20.0, macOS):
| Operation | msgspec (v9) | Pydantic v1 | Speedup |
|---|---|---|---|
| Object creation | 1.6β2.3 us | 75β102 us | ~40-50x |
| Serialization | 0.37β0.42 us | 14β17 us | ~35-46x |
| Deserialization | 1.7β1.8 us | 59β65 us | ~35-36x |
| Round-trip (ser + deser) | 2.1β2.2 us | 79β85 us | ~37-41x |
pyatlan_v9is experimental and ships alongside the stablepyatlanpackage. APIs may change in future releases.
π₯ QOL Improvements
- Regenerated latest SDK models.
- Switched Claude Code review model to Opus.
- Fixed flaky integration test failures across PR runs.
- Added Claude Code skill (
/generate-v9-models) to generate and sync msgspec models forpyatlan_v9.
βοΈ Breaking Changes
SSOClient.update_group_mapping()now requiresgroup_map_nameas a mandatory parameter.- Atlan tag task response no longer returns
classification_id.
Full Changelog: 8.5.3...9.0.0
v8.5.3
π₯ QOL Improvements
- Added scheduled Trivy scan with Linear ticket creation.
- Added Claude Code workflow with /review skill for PR reviews.
Full Changelog: 8.5.2...8.5.3
v8.5.2
π₯ QOL Improvements
- Added Harbor as an additional container registry alongside GHCR and updated Docker docs to reference Harbor pulls.
- Added Snyk dependency scanning via
requirements.txt, pre-commit sync, and local scan instructions. - Added Trivy image and
uv.lockscans on PRs and main branch. - Limited uv dependency resolution to CPython and bumped
urllib3to fix CVEs. - Used constraint-dependencies for
cryptography.
Full Changelog: 8.5.1...8.5.2