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