Releases: atlanhq/atlan-python
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
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