Skip to content

Releases: atlanhq/atlan-python

v3.1.1

26 Dec 08:31
61ab5e5
Compare
Choose a tag to compare

🐞 Bug fixes

  • Fixed a ValidationError caused by the private field (_user_id) in the AtlanClient constructor.

Full Changelog: 3.1.0...3.1.1

v3.1.0

25 Dec 19:01
64580da
Compare
Choose a tag to compare

🎉 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 setting bulk=True in SearchLogClient.search(). This breaking change affects searches that return more than 10,000 results — either the results will now be sorted differently or an error will be thrown.

  • SearchLogClient.search() method will now raise an InvalidRequestError 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.

Full Changelog: 3.0.0...3.1.0

v3.0.0

13 Dec 12:49
a49afb5
Compare
Choose a tag to compare

🎉 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) to AtlanClient:
    • Total default retries: int: 5
    • AtlanClient.connect_timeout: float (default: 30.0 seconds)
    • AtlanClient.read_timeout: float (default: 120.0 seconds)
  • Added support for a new parent_type (SnowflakeDynamicTable) in Column.creator().
  • Added exposure for source-specific custom attributes (e.g: Asset.custom_attributes).
  • Added handling for error_cause and backend_error_id in ErrorInfo.

🐞 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 and AuditSearchResults) 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 the updater() method of assets to ensure that GUIDs are properly initialized and resolved in batch operations.
  • Removed type_name validation from Table, View, and Materialised View to make them configurable when running Batch operations with table_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 the AssetClient.get_lineage_list() method instead.

⛑️ Breaking changes

  • Batch now accepts AtlanClient as the first parameter, replacing the previous use of AssetClient.

  • 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 setting bulk=True in AuditClient.search(). This breaking change affects searches that return more than 10,000 results — either the results will now be sorted differently or an error will be thrown.

  • AuditClient.search() method will now raise an InvalidRequestError 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.

Full Changelog: 2.7.0...3.0.0

v2.7.0

04 Dec 14:54
d3384b0
Compare
Choose a tag to compare

🥗 QOL improvements

  • Renamed CredentialResponseList to CredentialListResponse to ensure consistent response model naming.

  • Updated handling for ({"records": null}) in the CredentialResponseList to populate the model with an empty list ([]) instead of None, which is non-iterable.

  • Updated level and connection fields in CredentialResponseList to use Optional[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

03 Dec 11:51
8479a5b
Compare
Choose a tag to compare

🥗 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

25 Nov 14:24
4b2cee2
Compare
Choose a tag to compare

🎉 New features

  • Added the "x-atlan-client-origin": "product_sdk" header to the AtlanClient.
  • Added a method to retrieve all credentials: CredentialClient.get_all().

🥗 QOL improvements

  • Generated the latest typedef models.
    • Application typedef changes:
      • Replaced the Application supertype with App.
      • Renamed ApplicationContainer to Application.
      • Changed the level of the relationship from Catalog to Asset.
      • Updated the name of the de-normalized attribute.
  • 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

20 Nov 20:04
d22b962
Compare
Choose a tag to compare

🎉 New features

  • Added the creator() method for ApplicationContainer.
  • Added a new connector type (APPLICATION).
  • Added support for a new method (s3()) in TableauCrawler 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 and extras fields to the CredentialResponse model.

🐞 Bug fixes

  • Fixed Batch._track() method to handle AtlasGlossaryTerm 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, and suggestions_test).
  • Updated various response models in pyatlan.model.workflow to use Optional 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 function validate_type() to validate argument types in @overloaded methods.

Full Changelog: 2.5.8...2.6.0

v2.5.8

13 Nov 11:33
90fec8b
Compare
Choose a tag to compare

🐞 Bug fixes

  • Fixed a typo in the IBM_DB2 connector type.

Full Changelog: 2.5.7...2.5.8

v2.5.7

13 Nov 10:18
55953ab
Compare
Choose a tag to compare

🎉 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

23 Oct 19:57
d3945e1
Compare
Choose a tag to compare

🐞 Bug fixes

  • Fixed Readme.creator() to use asset.trim_to_reference() instead of sending the complete asset, which was somehow breaking backend parsing for related assets.

🥗 QOL improvements

  • Generated the latest typedef models.

Full Changelog: 2.5.5...2.5.6