Releases: atlanhq/atlan-python
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
v2.7.0
🥗 QOL improvements
-
Renamed
CredentialResponseList
toCredentialListResponse
to ensure consistent response model naming. -
Updated handling for (
{"records": null}
) in theCredentialResponseList
to populate the model with an empty list ([]
) instead ofNone
, which is non-iterable. -
Updated
level
andconnection
fields inCredentialResponseList
to useOptional[Union[Dict[str, Any], str]]
, as they can be strings, preventing Pydantic validation errors, eg:"level": "user", "connection": "default/bigquery/1234567890"
Full Changelog: 2.6.2...2.7.0
v2.6.2
🥗 QOL improvements
- Added Column projection support to
group.get_all()
. - Added retry on http code 429.
Full Changelog: 2.6.1...2.6.2
v2.6.1
🎉 New features
- Added the
"x-atlan-client-origin": "product_sdk"
header to theAtlanClient
. - Added a method to retrieve all credentials:
CredentialClient.get_all()
.
🥗 QOL improvements
- Generated the latest typedef models.
- Application typedef changes:
- Replaced the
Application
supertype withApp
. - Renamed
ApplicationContainer
toApplication
. - Changed the level of the relationship from
Catalog
toAsset
. - Updated the name of the de-normalized attribute.
- Replaced the
- Application typedef changes:
- Added a wait to the integration test fixtures (
atlan_tag_test
,custom_metadata_test
).
👨💻 New contributors
- @pavanmanish-atlan made their first contribution in #428
- @vaibhavatlan made their first contribution in #427
Full Changelog: 2.6.0...2.6.1
v2.6.0
🎉 New features
- Added the
creator()
method forApplicationContainer
. - Added a new connector type (
APPLICATION
). - Added support for a new method (
s3()
) inTableauCrawler
to fetch metadata directly from S3 bucket. - Added support for the following CSA custom packages:
- Asset import
- Asset export (basic)
- Relational assets builder
- Added
username
andextras
fields to theCredentialResponse
model.
🐞 Bug fixes
- Fixed
Batch._track()
method to handleAtlasGlossaryTerm
assets correctly.
🥗 QOL improvements
- Generated the latest typedef models.
- Fixed several issues related to tag deletion during integration test cleanups (
purpose_test
,test_task_client
, andsuggestions_test
). - Updated various response models in
pyatlan.model.workflow
to useOptional
fields, ensuring complete capture of API response results. - Removed
@validate_arguments
from@overload
methods (WorkflowClient
:rerun()
,add_schedule()
,remove_schedule()
), as it unintentionally typecast arguments to different types, causing unexpected behavior when model fields were optional. Instead, replaced it with the utility functionvalidate_type()
to validate argument types in@overload
ed methods.
Full Changelog: 2.5.8...2.6.0
v2.5.8
v2.5.7
🎉 New features
- Added support for new connector types:
- IBM_DB2
- SAP_GIGYA
- SAP_HYBRIS
- TREASURE_DATA
- APACHE_PULSAR
- ADOBE_TARGET
- AZURE_ACTIVE_DIRECTORY
- ADOBE_EXPERIENCE_MANAGER
🐞 Bug fixes
- Fixed generator to handle new core assets in the typedefs.
🥗 QOL improvements
- Generated the latest typedef models.
Full Changelog: 2.5.6...2.5.7
v2.5.6
🐞 Bug fixes
- Fixed
Readme.creator()
to useasset.trim_to_reference()
instead of sending the completeasset
, which was somehow breaking backend parsing for related assets.
🥗 QOL improvements
- Generated the latest typedef models.
Full Changelog: 2.5.5...2.5.6