Releases: atlanhq/atlan-python
v7.1.6
🥗 QOL Improvements
- Added support for adding
DQrules schedule to an asset (i.e:AssetClient.add_dq_rule_schedule()).
Documentation: https://developer.atlan.com/patterns/create/dq_rules/#schedule-data-quality-rules
Full Changelog: 7.1.5...7.1.6
v7.1.5
🧪 Experimental
- Added
creator()andupdater()methods foralpha_DQRule(data quality rule) asset.
🥗 QOL Improvements
- Generated latest typedef models.
Full Changelog: 7.1.4...7.1.5
v7.1.4
🎉 New Features
- Added new connector types:
AI,SAP_ECC. - Added new connector categories:
AI,ERP. - Added
creator()methods forAI-basedassets. - Added support for
applicable_ai_asset_typesto custom metadataAttributeDef.Options.
🧪 Experimental
- Added support for
AtlanClientinitialization via API tokenguid.
🐞 Bug Fixes
- Fixed handling of
source_tagwhen noattributespresent.
🥗 QOL Improvements
- Generated latest typedef models.
- Updated Dockerfile to use
python:3.13.5-slim-bookworm. - Removed unused
requirementsfiles (now usingpyproject.toml).
Full Changelog: 7.1.3...7.1.4
v7.1.3
v7.1.2
🥗 QOL Improvements
- Generated latest typedefs models.
- Fixed
suggestions_testintegration test. - Updated Dockerfile to use
python:3.11-slim. - Migrated SDK to use
uvfor development, building, and publishing the SDK. - Added
delete_type:HARDoptional parameter toAssetClient.purge_by_guid()method. - Made
FluentSearchusage inget_by_*()methods consistent withGETAPI (returnactiveandarchivedassets).
Full Changelog: 7.1.1...7.1.2
v7.1.1
v7.1.0
🎉 New Features
- Added support for managing asset-to-asset relationships that include attributes. SDK now allows setting attributes on specific relationship types, providing richer metadata and contextual information for how assets are connected.
- These relationships can now carry attributes, similar to how assets themselves have attributes. The SDK has been enhanced to deserialize, access, and serialize these relationship-level attributes correctly.
Supported relationship types:
AtlasGlossaryAntonymAtlasGlossarySynonymAtlasGlossaryReplacementTermAtlasGlossarySemanticAssignmentAtlasGlossaryPreferredTermAtlasGlossaryRelatedTermAtlasGlossaryTermCategorizationAtlasGlossaryTranslationAtlasGlossaryValidValueAtlasGlossaryIsARelationshipCustomParentEntityCustomChildEntitiesCustomRelatedFromEntitiesCustomRelatedToEntitiesUserDefRelationship
🐞 Bug Fixes
- Fixed automatic
401token refresh by usingContextVarforAtlanClient._401_has_retried(bool flag) to avoid race conditions when executing SDK code in multithreading environments.
⛑️ Breaking Changes
Referenceable.relationship_attributes field type updated:
This field NOW supports:
Optional[Union[RelationshipAttributes, Dict[str, Any]]]Before:
Optional[Dict[str, Any]]-
If
typeNameis present in the relationship attributes, the SDK will attempt to deserialize using the correct subclass ofRelationshipAttributes. -
If
typeNameis absent, it will fall back to a rawDict[str, Any]. -
This change improves structure and typing for known relationship models while maintaining backward compatibility via fallback.
Full Changelog: 7.0.1...7.1.0
v7.0.1
🐞 Bug Fixes
- Fixed
FluentSearchcriteria used forget_by_qualified_name/guidmethod to include assettype_name.
Full Changelog: 7.0.0...7.0.1
v7.0.0
🎉 New Features
- Added
longas a new primitive type in theAtlanCustomAttributePrimitiveTypeenum. - Support for
UnmodeledAsset types: IntroducedIndistinctAssetas a fallback model to handle asset types that are not explicitly modeled in the SDK. Previously, such assets would returnNone(e.g: for newly introduced typedefs). With this release, the SDK will now return anIndistinctAssetinstance containing basic fields such asguid,qualifiedName, andtypeName.
🐞 Bug Fixes
- Fixed timestamp-based pagination in search log results when
from + sizeexceeds the Elasticsearch window size (10,000records) due to identical creation times for the first and last records in a retrieved page.
⛑️ Breaking Changes
This release includes a major refactor that eliminates all usage of AtlanClient.get_current_client() and set_current_client() (previously implemented using ContextVar / thread-local storage a.k.a TLS). Although the earlier design was thread-safe, it still required users to explicitly use PyAtlanThreadPoolExecutor in multi-threaded environments, resulting in unintuitive patterns and frequent client initialization errors.
The new design simplifies usage by requiring the client to be passed explicitly to SDK operations that interact with the Atlan platform.
Important
Affected Areas
All the following methods or constructors now require a client argument due to the removal of AtlanClient.get_current_client():
pyatlan.model.assets:
Referenceable.flush_custom_metadata(client)Referenceable.get_custom_metadata(client, name)Referenceable.set_custom_metadata(client, custom_metadata)CustomMetadataProxyis no longer initialized inReferenceable.__init__()(as it now requires aclient).Purpose.create_metadata_policy()Purpose.create_data_policy()DataProduct.get_assets()Badge.creator()Connection.creator()
Note
user_cache.validate_names, role_cache.validate_idstrs, and group_cache.validate_aliases are now invoked inside Connection.creator() instead of field validators.
pyatlan.model.custom_metadata:
CustomMetadataDict(client, name)CustomMetadataProxy(client, business_attributes)
pyatlan.model.structs:
SourceTagAttachment.by_name()SourceTagAttachment.by_qualified_name()SourceTagName()(constructor)
pyatlan.model.suggestions:
Suggestions.get()Suggestions.apply()
pyatlan.model.fluent_search
FluentSearch.tagged()FluentSearch.tagged_with_value()
pyatlan.client.typedef
EnumDef.update()AttributeDef.create()
pyatlan.model.search
Exists.with_custom_metadata()Term.with_custom_metadata()
pyatlan.client.atlan
client_connection()
pyatlan.model.open_lineage
OpenLineageEvent.emit()
pyatlan.model.fields.atlan_fields
CustomMetadataField()(constructor)
pyatlan.model.packages
- All crawler class constructors
Serialization & Deserialization
API Request Serialization:
- Now handled via the
AtlanRequestwrapper, which takes a Pydantic model instance and a client. - It automatically performs translation (e.g: converting human-readable Atlan tag names into hashed IDs using
AtlanTagRetranslator).
API Response Deserialization:
- Responses are processed using the
AtlanResponsewrapper. - It translates raw JSON into readable formats via registered translators like
AtlanTagTranslator(e.g: converting hashed tag IDs into human-readable names).
AtlanTag / AtlanTagName Changes
- Human-readable tag names are now only available when deserializing through
AtlanResponse(which requires a validclient). If skipped, tag names remain in hashed ID format or as plain strings. - Deleted tags (e.g
AtlanTagName('(DELETED)')) will only appear when usingAtlanResponse, as the lookup requires a client to determine tag validity. - The
.idattribute onAtlanTagNamehas been deprecated. UseAtlanTag.tag_idto access the hashed ID instead. - Fixed typo in
AtlanTag.source_tag_attachmentsfield name.
Other Changes
-
AtlanClient._401_has_retriedis now marked as aPrivateAttr. -
IndexSearchRequest.Metadatahas been moved to a separate class:IndexSearchRequestMetadata. -
Removed deprecated methods and utils:
AtlanClient.get_current_client()AtlanClient.set_current_client()PyAtlanThreadPoolExecutor(SDK is now fully thread-safe without it)
-
Updated
AssetClient.find_domain_by_name()andAssetClient.find_product_by_name()to return only activeDomainandProductassets. Previously, these methods returned bothactiveandarchivedassets, which caused issues when assets with the samenameexisted in both states - the first match (possiblyarchived) was returned.
🥗 QOL Improvements
- Regenerated latest typedef models.
- Refactored integration and unit tests to eliminate reliance on
AtlanClient.get_current_client()/set_current_client().
Full Changelog: 6.2.1...7.0.0
v6.2.1
🐞 Bug Fixes
- Extended the
applicable_asset_typesattribute definition to acceptUnion[Set[str], AssetTypes]. - Fixed validation to ensure provided asset type names match existing SDK asset classes, replacing the previously hard-coded set of asset types.
🥗 QOL Improvements
- Regenerated the latest typedef models.
Full Changelog: 6.1.1...6.2.0