Releases: atlanhq/atlan-python
v4.2.0
🎉 New Features
- Added support for
ApplicationField.creator()
. - Added support for
CredentialClient.creator()
andCredentialClient.purge_by_guid()
. - Added support for optional parameters (
host
andport
) inConnection.creator()
.
⛑️ Breaking Changes
- Changed the default setting for tracking
IndexSearch
logs (save_search_log=False
). Previously, it was set toTrue
, which was causing frequent Out of Memory (OOM) issues in Metastore pods.
🥗 QOL Improvements
- Generated the latest typedef models.
- Refactored
OpenLineageClient.create_connection()
to use the newCredentialClient.creator()
.
Full Changelog: 4.1.0...4.2.0
v4.1.0
🎉 New Features
-
Added support for the following workflow packages:
Connectors
- OracleCrawler
Utilities
- LineageBuilder
- LineageGenerator
- APITokenConnectionAdmin
-
Extended the
WorkflowClient.run()
method to accept raw workflowJSON
strings.
🐞 Bug Fixes
- Updated the maximum API token Time-to-Expire (TTE) to
5
years. Previously, the value was set to13
years (409,968,000
seconds), which was reverted to5
years due to an integer overflow issue in Keycloak. For more details, see Keycloak Issue #19671.
🥗 QOL Improvements
- Added support for Python
3.10
,3.11
,3.12
and3.13
. - Increased the default
read
timeout forAtlanClient
to900
seconds (15
minutes).
Full Changelog: 4.0.2...4.1.0
v4.0.2
🎉 New Features
- Added the ability to the custom package logger to log unhandled exceptions.
- Added support for creating
OpenLineage
connections (OpenLineageClient.create_connection()
).
🐞 Bug Fixes
- Fixed handling of deleted
AtlanTagName
s inPurpose
asset deserialization. Previously, aValueError
was raised.
🥗 QOL Improvements
- Added an "Installing for development" section to the
README.md
. - Removed
pyatlan-codeql.yaml
in favor of using the organization-level CodeQL workflow to avoid configuration conflicts and failures.
Full Changelog: 4.0.1...4.0.2
v4.0.1
🎉 New Features
- Added a new connector type (
CUSTOM
). - Added support for the
DatabricksCrawler
andDatabricksMiner
workflow packages. - Added the
creator()
method for the following assets:Custom
Dataverse
TablePartition
🐞 Bug Fixes
- Fixed
_user_id
handling issue inpyatlan.pkg.utils.get_client()
.
🥗 QOL Improvements
- Enhanced test coverage with additional unit tests for the
append_terms
,replace_terms
, andremove_terms
methods.
❌ Deprecated Changes
table_name
andtable_qualified_name
inColumn.creator()
now emit aDeprecationWarning
. Users are advised to useparent_name
andparent_qualified_name
instead.
Full Changelog: 4.0.0...4.0.1
v3.1.3
🐞 Bug Fixes
- Fixed
_user_id
handling issue inpyatlan.pkg.utils.get_client()
.
v4.0.0
🎉 New Features
- Added support for the
MongoDBCrawler
workflow package. - Added
creator()
andupdater()
methods for theProcedure
asset.
🐞 Bug Fixes
- Fixed
WorkflowClient.find_by_type()
method to use regular expressions. - Fixed
AttributeDef.cardinality
andAttributeDef.type_name
handling for the newmulti_value_select
attribute option. - Fixed issues with the
AssetClient.append_terms()
,remove_terms()
, andreplace_terms()
methods:- These methods now use
SaveSemantic.APPEND/REPLACE/REMOVE
, which is more optimized and faster than the previous approach that required full asset retrieval with relationships for updates.
- These methods now use
- Fixed
S3Object.create_with_prefix()
andcreator()
to ensure thes3_bucket_name
field is correctly set.
🥗 QOL Improvements
- Added an OSV
vulnerability-scan
workflow job to GitHub Actions.
⛑️ Breaking Changes
-
The default behavior of
AssetClient.get_by_guid()
andAssetClient.get_by_qualified_name()
has changed:- By default, these methods now ignore relationships during asset retrieval (
ignore_relationships: bool = True
). Previously, this was set toFalse
. - This change is intentional, aiming to prevent users from retrieving more information than necessary, thereby reducing the overall runtime of requests.
- Users can now use the
attributes
andrelated_attributes
optional parameters to specify the exact details required for each search result. This ensures precise and efficient searches. See: Advanced Examples - Read.
# In this example, we are retrieving the "userDescription" attribute # for both the glossary and its terms (related attribute). # You can also retrieve other attributes as illustrated below: glossary = client.asset.get_by_guid( guid="b4113341-251b-4adc-81fb-2420501c30e6", asset_type=AtlasGlossary, min_ext_info=False, ignore_relationships=True, attributes=[AtlasGlossary.USER_DESCRIPTION, AtlasGlossary.TERMS], related_attributes=[AtlasGlossaryTerm.USER_DESCRIPTION] ) glossary = client.asset.get_by_qualified_name( asset_type=AtlasGlossary, qualified_name="pXkf3RUvsIOIG8xnn0W3O", min_ext_info=False, ignore_relationships=True, attributes=[AtlasGlossary.USER_DESCRIPTION, AtlasGlossary.TERMS], related_attributes=[AtlasGlossaryTerm.USER_DESCRIPTION] )
- By default, these methods now ignore relationships during asset retrieval (
Full Changelog: 3.1.2...4.0.0
v3.1.2
🎉 New features
- Enabled the use of the
Retry-After
header for handling rate-limit retries. - Added support for OpenTelemetry logging in custom packages.
- Added
creator()
methods forAnaplan
assets. - Added
creator()
methods forInsights
assets (Collection
,Folder
,Query
). - Added support for the following new connector types:
- ANAPLAN
- AWS_ECS
- AWS_BATCH
- AWS_LAMBDA
- AWS_SAGEMAKER
- DATAVERSE
🥗 QOL improvements
- Generated the latest typedef models.
- Upgraded
jinja2
from3.1.4
to3.1.5
to address a security vulnerability. - Fixed pagination assertions in
AuditSearch
unit tests and integration tests.
Full Changelog: 3.1.1...3.1.2
v3.1.1
🐞 Bug fixes
- Fixed a
ValidationError
caused by the private field (_user_id
) in theAtlanClient
constructor.
Full Changelog: 3.1.0...3.1.1
v3.1.0
🎉 New features
-
Added support for automatic token refresh and retrying API requests upon receiving a
401
(Unauthorized) response.To enable this feature, the following constants must be configured:
1. Environment variables:
For regenerating the bearer access token:
CLIENT_ID
(string)CLIENT_SECRET
(string)
2. Update
AtlanClient
field:_user_id
(string, default:None
): The unique identifier (GUID) of the user that the client impersonates.
Example:
client = AtlanClient() client._user_id = "962c8f78-98a7-908f-9ec2-9e5b7ee7a09f"
⛑️ Breaking changes
-
Introduced a new pagination approach in
SearchLogClient.search()
called search log bulk search (disabled by default). The SDK switches to this search operation automatically if results exceed a predefined threshold (e.g:10,000
results). Alternatively, users can enable bulk search explicitly by settingbulk=True
inSearchLogClient.search()
. This breaking change affects searches that return more than10,000
results — either the results will now be sorted differently or an error will be thrown. -
SearchLogClient.search()
method will now raise anInvalidRequestError
exception in the following scenarios:- when bulk search is enabled (
bulk=True
) and any user-specified sorting options are included in the search request. - when bulk search is disabled (
bulk=False
), the number of results exceeds the predefined threshold (e.g:10,000
assets), and any user-specified sorting options are found in the search request.
This is because the bulk search approach for search logs ignores user-specified sorting and instead reorders results by the
createdAt
timestamps of log entries to efficiently handle large volumes of search logs. - when bulk search is enabled (
Full Changelog: 3.0.0...3.1.0
v3.0.0
🎉 New features
- Added a new connector type (
BIGID
). - Added support for the following options in
Batch
operations:update_only
: bool (default:False
)track
: bool (default:False
)case_insensitive
: bool (default:False
)table_view_agnostic
: bool (default:False
)creation_handling
:AssetCreationHandling
(default:AssetCreationHandling.FULL
)
- Added default timeouts (
read
,connect
) toAtlanClient
:- Total default retries: int:
5
- AtlanClient.connect_timeout: float (default:
30.0
seconds) - AtlanClient.read_timeout: float (default:
120.0
seconds)
- Total default retries: int:
- Added support for a new
parent_type
(SnowflakeDynamicTable
) inColumn.creator()
. - Added exposure for source-specific custom attributes (e.g:
Asset.custom_attributes
). - Added handling for
error_cause
andbackend_error_id
inErrorInfo
.
🐞 Bug fixes
- Fixed the generator to correctly handle the naming of the
Asset.DOMAIN_GUIDS
keyword search field. - Fixed an issue where search pages (
IndexSearchResults
andAuditSearchResults
) could overrun when the total results are just under the_MASS_EXTRACT_THRESHOLD
. - Fixed an issue with timestamp paging returning incomplete results when searching with a small page size (e.g:
2
) and assets with the same creation time.
🥗 QOL improvements
- Generated the latest typedef models.
- Added the
@init_guid
decorator to theupdater()
method of assets to ensure that GUIDs are properly initialized and resolved in batch operations. - Removed
type_name
validation fromTable
,View
, andMaterialised View
to make them configurable when runningBatch
operations withtable_view_agnostic=True
. - Removed deprecated
AssetClient.get_lineage()
integration tests. - Updated integration test asset constants to align with the new tenant setup.
❌ Deprecated features
- Removed the deprecated
AssetClient.get_lineage()
method, which is slower and will no longer receive enhancements. Use theAssetClient.get_lineage_list()
method instead.
⛑️ Breaking changes
-
Batch
now acceptsAtlanClient
as the first parameter, replacing the previous use ofAssetClient
. -
Introduced a new pagination approach in
AuditClient.search()
called audit bulk search (disabled by default). The SDK switches to this search operation automatically if results exceed a predefined threshold (e.g:10,000
results). Alternatively, users can enable bulk search explicitly by settingbulk=True
inAuditClient.search()
. This breaking change affects searches that return more than10,000
results — either the results will now be sorted differently or an error will be thrown. -
AuditClient.search()
method will now raise anInvalidRequestError
exception in the following scenarios:- when bulk search is enabled (
bulk=True
) and any user-specified sorting options are included in the search request. - when bulk search is disabled (
bulk=False
), the number of results exceeds the predefined threshold (e.g:10,000
assets), and any user-specified sorting options are found in the search request.
This is because the audit bulk search approach ignores user-specified sorting and instead reorders results based on the creation timestamps of assets to handle large volumes of assets efficiently.
- when bulk search is enabled (
Full Changelog: 2.7.0...3.0.0