Releases: atlanhq/atlan-python
Releases · atlanhq/atlan-python
v9.4.1
New Features 🎉
- Agentic type hierarchy: Added Python SDK support for the new Agentic hierarchy (
Agentic,Artifact,Skill,SkillArtifact,Context,ContextRepository,ContextArtifact) with NanoID-based qualifiedName patterns and auto-populated parent refs on creators. IncludesContextLifecycleStatusenum andFileType.YAML/FileType.SQLadditions. FileType.MDenum value: Addedmdfile type to theFileTypeenum.
QOL Improvements 🥗
- Generator
--overrideflag: Added--overrideflag to the generator script to force re-download of typedefs, bypassing the daily cache check. - Generator template coverage: Added Jinja2 asset, attribute, and import templates for all Agentic types so the code generator can reproduce creator methods.
_CORE_ASSETSupdates: Added Agentic types, Dremio, Cloud, Google, and GCPDataplex to the core assets list to stabilize code generation layout.- Regenerated models from latest typedefs.
Full Changelog: 9.4.0...9.4.1
v8.5.4
v9.4.0
Experimental: pyatlan_v9 🧪
BusinessPolicyException,BusinessPolicyIncident,BusinessPolicyLogstandalone classes: Added full standalone flat asset classes for these three business policy types. Previously onlyRelated*reference types existed, so users couldn't create, search, or deprecate these asset types viapyatlan_v9.
QOL Improvements 🥗
- Generated latest typedef models.
Full Changelog: 9.3.2...9.4.0
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