Skip to content

Releases: atlanhq/atlan-python

v4.0.1

14 Jan 12:57
694f36f
Compare
Choose a tag to compare

🎉 New Features

  • Added a new connector type (CUSTOM).
  • Added support for the DatabricksCrawler and DatabricksMiner workflow packages.
  • Added the creator() method for the following assets:
    • Custom
    • Dataverse
    • TablePartition

🐞 Bug Fixes

  • Fixed _user_id handling issue in pyatlan.pkg.utils.get_client().

🥗 QOL Improvements

  • Enhanced test coverage with additional unit tests for the append_terms, replace_terms, and remove_terms methods.

❌ Deprecated Changes

  • table_name and table_qualified_name in Column.creator() now emit a DeprecationWarning. Users are advised to use parent_name and parent_qualified_name instead.

Full Changelog: 4.0.0...4.0.1

v3.1.3

14 Jan 12:55
Compare
Choose a tag to compare

🐞 Bug Fixes

  • Fixed _user_id handling issue in pyatlan.pkg.utils.get_client().

v4.0.0

07 Jan 15:14
bcb1371
Compare
Choose a tag to compare

🎉 New Features

  • Added support for the MongoDBCrawler workflow package.
  • Added creator() and updater() methods for the Procedure asset.

🐞 Bug Fixes

  • Fixed WorkflowClient.find_by_type() method to use regular expressions.
  • Fixed AttributeDef.cardinality and AttributeDef.type_name handling for the new multi_value_select attribute option.
  • Fixed issues with the AssetClient.append_terms(), remove_terms(), and replace_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.
  • Fixed S3Object.create_with_prefix() and creator() to ensure the s3_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() and AssetClient.get_by_qualified_name() has changed:

    • By default, these methods now ignore relationships during asset retrieval (ignore_relationships: bool = True). Previously, this was set to False.
    • 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 and related_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]
    )

Full Changelog: 3.1.2...4.0.0

v3.1.2

31 Dec 16:46
77fe61a
Compare
Choose a tag to compare

🎉 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 for Anaplan assets.
  • Added creator() methods for Insights 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 from 3.1.4 to 3.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

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