- Fixed a typo in the IBM_DB2 connector type.
- Added support for new connector types:
- IBM_DB2
- SAP_GIGYA
- SAP_HYBRIS
- TREASURE_DATA
- APACHE_PULSAR
- ADOBE_TARGET
- AZURE_ACTIVE_DIRECTORY
- ADOBE_EXPERIENCE_MANAGER
- Generated the latest typedef models.
- Fixed generator to handle new core assets in the typedefs.
- Fixed
Readme.creator()
to useasset.trim_to_reference()
instead of sending the completeasset
, which was somehow breaking backend parsing for related assets.
- Generated the latest typedef models.
- Fixed
AtlanError
message for unescaped curly braces ({}
) inresponse.text
.
- Implemented cache management for
Connection
andSourceTag
. - Added support for assigning a
SourceTag
with avalue
to an asset.
- Added the missing
FluentLineage.includes_on_relations
method and theLineageListRequest.relation_attributes
field.
- Added a new connector type (
INRIVER
). - Added
APIObject
,APIQuery
, andAPIField
assets, along with theircreator()
methods. - Added a boolean field
immediate_neighbors
to theLineageListRequest
, which allows users to include immediate neighbors of the startingasset
in the response (True
), or exclude them (False
- default).
- Updated the type of
TableauDatasource.upstream_tables
andupstream_datasources
toOptional[List[Dict[str, Optional[str]]]]
to prevent Pydantic validation errors when a dictvalue
in this field is mapped toNone
.
- Generated the latest typedef models.
- Fixed
ModuleNotFoundError
caused by the missingPyYAML
dependency in the project’srequirements.txt
.
- Added support for sending
OpenLineage
events. - Added support for serialization/deserialization (serde) of the
DataContract
spec.
- Updated the
ContractClient.generate_initial_spec()
method to directly accept theasset
for which the initial contract spec is generated, similar to the Java SDK. Previously, you needed to pass the keyword argumentsasset_type
andasset_qualified_name
.
- Added new connector types (
IICS
,ABINITIO
,SAP_S4_HANA
).
- Added
CompoundQuery.tagged_with_value()
method to search for source-synced tags by assigned value eg: Snowflake tags. - Added
ContractClient.generate_initial_spec()
method to generate the initial contract specification for the provided assettypeName
andqualifiedName
.
- Added initial support for
Span
,SpanNear
,SpanWithin
, andSpanTerm
queries for textual fields.
- Added a new connector type
MODEL
for data modeling assets.
- Generated latest typedefs models (
model
,anomalo
,powerbi
).
- Added
username
property to theApiToken
model. - Added functions for validating custom package files to
pyatlan.test_utils
. - Added an optional parameter
asset_selection
toDataProduct.updater()
, allowing users to update assets within the data product. - Added the
DataProductsAssetsDSL.get_asset_selection()
method, which returns the asset selection DSL string for a data product based on the specifiedIndexSearchRequest
.
- Fixed pagination issues in
AuditSearchResults
. - Fixed multipart form handling for
AtlanTag
image uploads.
- Added a new function (
pkg.utils.set_package_headers
) to configure theAtlanClient
with the required custom package headers using environment variables.
- Fixed
pkg.utils.validate_connection()
to include other types (Connection
,Dict
).
- Moved
nanoid
from therequirements-dev.txt
. - Moved common test functions to a separate
test_utils
package.
- Added a new connector type
DM
for data modeling assets.
- Added support for
GCS
presigned URL file uploads. - Added the
find_run_by_id
method to theWorkflowClient
.
- Generated the latest typedef models.
- Added
pyatlan
to the Conda packages.
- Fixed the interpretation of
text-only
indexed fields for assets.
- Added support for
Azure Blob
presigned URL file uploads.
- Replaced
pyatlan.utils.HTTPStatus
with the standard libraryhttp.HTTPStatus
(introduced in Python 3.4).
- Implemented lazy imports for
pyatlan.model.assets
: This change reduces the import time for assets by deferring the import of modules until they are actually needed. As a result, users will experience faster startup times and reduced memory usage when working with assets.
- Fixed missing check for
asset.guid
in theReadme.creator()
method, which caused issues with updatingReadme
assets when the asset was passed usingAsset.ref_by_qualified_name()
instead ofAsset.ref_by_guid()
. The SDK now throws aValueError
ifasset.guid
is missing in theReadme.creator()
method to prevent these issues.
- Added support for nested aggregations.
- Added support for trident suggestions.
- Added
Superset
assetscreator()
methods.
- Added a new ELT connector type:
PREFECT
.
- Fixed the
ErrorCode.CM_ATTR_NOT_FOUND_BY_NAME
error message inCustomMetadataCache.get_attr_id_for_name()
, which was receiving the wrong parameters.
- Added
WorkflowClient.find_by_id()
method for workflow search/retrieval.
- Made
AtlanError
messages more descriptive.
-
Introduced a new pagination approach in
AssetClient.search()
andFluentSearch.execute()
called bulk search (disabled by default). It minimizes system impact when handling large result sets. The SDK switches to this search operation automatically if results exceed a predefined threshold (i.e:100,000
results). Alternatively, users can enable bulk search explicitly by settingbulk=True
inAssetClient.search()
orFluentSearch.execute()
. The breaking change is in regards to searches that return more than100,000
results — either the results will now be sorted differently or an error will be thrown. -
The
AssetClient.search()
andFluentSearch.execute()
methods will now raise an exception (InvalidRequestError
) in the following scenarios:-
when bulk search is enabled (
bulk=True
) and any user-specified sorting options are found in the search request. -
when bulk search is disabled (
bulk=False
), the number of results exceeds the predefined threshold (i.e:100,000
assets), and any user-specified sorting options are found in the search request.
This is because the bulk search approach ignores user-specified sorting and instead reorders the results based on the creation timestamps of assets to handle large numbers of assets efficiently.
-
- Pinned
urllib3>=1.26.0,<3
and movednetworkx
to the dev requirements to avoid potential version mismatches.
- Added the
creator()
method forDataContract
. - Overloaded the
creator()
methods to explicitly handle ancestralqualified_name
andname
. This enhancement allows users to create objects when the ancestral asset name contains/
, whichcreator()
was previously unable to handle.
- Generated the latest typedef models.
- Updated the latest set of Phosphor icons in the
AtlanIcon
enum.
- Added thread lock to cache methods (
get_cache()
and_refresh_cache()
). - Added support for the
Connection Delete
package. - Added support for custom metadata handling for data domains and products.
- Generated the latest typedef models (
DatabricksUnityCatalogTag
). - Updated
AtlanError
to includeuser_action
when throwing an exception.
- Added creator methods to
Kafka
andAzureEventHub
assets. - Added support for
includeClassificationNames
inIndexSearchRequest
. - Expanded the functionality of the
WorkflowClient
with new methods for scheduled query workflows.
- Fixed the
AtlasGlossaryCategory.trim_to_required()
method to useupdater()
instead ofcreate_for_modification()
.
- Generated the latest typedef models, including
Workflow
andWorkflowRun
. - Updated the SSO provider in
test_sso_client.py
to check forJUMPCLOUD
instead ofAZURE_AD
. - Updated the Pydantic dependency (
pydantic>=2.0.0,<3.0.0
) to provide more flexibility for users.
- Added
find_domain_by_name()
andfind_product_by_name
methods toAssetClient
to find data mesh objects by their human-readable names. - Modified the type of the
attributes
andrelated_attributes
keyword parameters inasset.get_hierarchy()
to acceptstr
in addition toAtlanField
.
- Fixed issues with data domain and data product creation.
- Added the
AtlanConnectorType.get_connector_name()
method, which handles connection qualified name validation for assets and returns the connector name. Previously, this logic was repeated in most Assetcreator()
methods, which sometimes resulted in theconnector_name
field being mistakenly omitted (this bug was found in theFile
asset).
- Added data mesh integration tests.
- Added a fallback delete mechanism for API tokens in tests.
- Generated the latest typedef models, such as
Cognos
,Stakeholder
, etc.
- Fixes typos and docstrings in IAM role methods of the
DynamoDB
andPostgreSQL
crawlers. Previously, the method name wasiam_user_role_auth
instead ofiam_role_auth
.
- Added support for
BigQuery
,DynamoDB
andPostgres
crawlers.
- Fixed logic in the
Referenceable
model to determine the correct subtype.
- Utilized generated atlas core enums in the import template.
- Added a shell script (
pyatlan-formatter
) capable of handling code formatting for both tracked and untracked files.
- Added support for
Snowflake Miner
. - Introduced new connector types:
COGNITE
,SYNDIGO
,NETEZZA
, andAZURE_SERVICE_BUS
. - Added an optional
depth
field to indicate the asset's depth within lineage in theReferenceable
model. - Added an optional parameter (
related_attributes
) to theget_hierarchy()
method, allowing users to specify a list of attributes to retrieve for each related asset in the hierarchy. - Expanded the functionality of the
WorkflowClient
with new methods for scheduling, stopping, and deleting workflows.
- Upgraded
jinja2
from3.1.3
to3.1.4
to address a security vulnerability: GHSA-h75v-3vvj-5mfj.
- Adds
FileClient
for uploading and downloading files from Atlan's tenant object storage via presigned URLs.
- Adds support for SSO group mapping.
- Adds
AtlanSSO
to enumerate the options for supported Atlan's SSO providers.
- Fixed an issue where explicit assignment of
None
to asset attributes inBulkRequest
within theclient.asset.save()
method resulted in exclusion from the request payload. - Fixed issues with multiple remove/append relationships where values were being overwritten inside append/remove dictionaries.
- Adds
AssetFilterGroup
enum for persona personalization. - Adds creator method to
AirflowDag
andAirflowTask
assets.
- Fixes
qualified_name
population for related entities inGlossary
objects. - Fixes logic for removing parent category relationship in
AtlasGlossaryCategory
. - Fixes lineage list performance by considering the
hasMore
attribute to optimize lineage paging.
- Updates
networkx >= 3.1
and bumped development requirements to the latest version.
- Fixes field alias typo for
restrict_propagation_through_hierarchy
in theAtlanTag
model. - Fixes issues with
AtlanEvent
model deserialization. Previously, it threw aValidationError
forENTITY_DELETE
,CLASSIFICATION_ADD
, andCLASSIFICATION_DELETE
events.
- Adds
atlanMetadata
icon toAtlanIcon
enum. - Adds support for
restrict_propagation_through_hierarchy
to theAtlanTag
model. - Adds latest typedef models (cube, cognite, spark, sparkjob, and multi-dimensional dataset).
- Adds support to limit the applicability of custom metadata attributes directly through the
AttributeDef.create()
method.
- Fixes an issue with direct model deserialization of structs.
- Fixes an issue where certain structs could cause errors during marshalling and unmarshalling.
- Fixes
Process.generate_qualified_name()
method to ensure that the generated processqualified_name
includes the connection prefix. Previously, it only used the MD5 hash as thequalified_name
for theProcess
.
- Adds
EnumDef.update()
method to update an existing enumeration with more valid values. - Adds
get_by_name()
method to theTypeDefClient
to retrieve a specific type definition from Atlan. - Adds
propagation_only_through_lineage
field to theAtlanTag
, allowing users to specify that propagation will only occur downstream in the lineage and not within the hierarchy.
EnumCache.get_by_name()
method now raisesNotFoundError
if the enumeration with the given name does not exist. Previously the method would only returnNone
in case the enumeration did not exist, rather than raising an error.
- Bump pre-commit black from
23.7.0
to24.3.0
(Fixes CVE security vulnerability).
- Adds model field (
__atlan_extra__
) to theAtlanObject
model to accommodate extra properties from API responses. - Adds an optional parameter (
return_info
) to the user creation method, allowing control over whether to return the list of created users or not. - Adds an optional parameter (
exclude_users
) to theSearchLogRequest
methods for excluding specific user data from search log results.
- Fixes issues related to creating data domains and data products.
- Bump black from
23.7.0
to24.3.0
(Fixes CVE security vulnerability).
- (Experimental) Adds support for
Sigma
andSQL Server
crawlers. - Adds AWS IoT connector types:
AWS_SITE_WISE
andAWS_GREENGRASS
. - Adds credential widget to package toolkit.
- Fixes
to_dict
method handling ofRange
queries fordatetime
attributes. - Fixes
UserClient
create method throwing 500 (internal server error).
- Sets
asset_type
keyword argument default value toAsset
inget_by_guid
andretrieve_minimal
methods.
- (Experimental) Adds the ability to search the background tasks queue.
- Adds the missing connector type for
MICROSTRATEGY
.
- Replaces spaces with underscores in generated enums.
- Adds pagination to listings for user, group, and membership.
- Fixes
LineageListResults
not including custom metadata. - Avoid throwing
ValidationError
when aggregating an index search with no results.
- Improves the tests report experience by using pytest plugins (
pytest-sugar
andpytest-timer
).
- Migrates to Pydantic 2.6
- Allows use of Python 3.8 as a minimum version supported by the SDK
- Adds file connector as a new connector type
- Adds Essbase connector as a new connector type
- Allows fluent lineage conditions to be configured for combining (AND) or any (OR)
- Adds an option to rerun workflows idempotently
Since this is a new major release, there are some breaking changes:
-
The move to Pydantic 2.6 means we have a dependency on a different major release of this library than previously. We do not believe it will impact your use of any of our methods; however, it could impact you if you rely on Pydantic v1 elsewhere in your codebase and are not yet ready to move to Pydantic v2 yourself.
-
The
find_personas_by_name
,find_purposes_by_name
andfind_connections_by_name
methods previously returned an empty list if no requested object were found, despite being documented as throwing aNotFoundError
in such cases. We have now made this consistent with the otherfind_.._by_name
methods, so if a requested object does not found it will now throw aNotFoundError
. -
To create consistency across our SDKs, we are also introducing new asset creation and modification methods. This is to reserve the use of verbs in a method name for server-side interactions (like
save
,find
, etc) and instead use non-verbs to indicate that you are creating an instance of an object purely in-memory — but that it still needs to be acted upon (save
d) in order to be persisted to Atlan. These offer identical functionality to the prior methods, and we will keep the prior methods around until at least the next major release but simply mark them as deprecated. (So no immediate change to any existing code should be needed.)Old method New method create()
creator()
create_for_modification()
updater()
- Adds a way to specify replace, append, or removal of individual relationships during
save
operations
- Adds missing changes to code generation templates
- Corrects an erroneous use of the inverse operator
- raise exception if tag in query in FluentSearch does not exist
- (Experimental) fix defects custom package generation
- add api to assign a token to a purpose
- add api to enable running sql queries
- Fix problem with AssetUpdatePayload not being returned from AtlanEvent
- Fix problem with sort order for AuditSearchRequest
- Make
aws_arn
optional in S3 models - Change default S3 file in package toolkit
- Update docstrings in package toolkit
- Add workflow
update
method - Adds QA checks (black, flake8, mypy) to the CI
- Bump jinja2 from 3.1.2 to 3.1.3
- Add missing regex and wildcard methods to the
KeywordField
- Make sure the name of the python file generated by the package toolkit does not contain any special characters
- Correct the description of fields in the
AttributeDef
model
- Add ability to update certificate, announcement for GlossaryTerm and GlossaryCategory
- Add
create
method forColumnProcess
- Always include sort by
GUID
as final criteria inIndexSearch
- (Experimental) Add classes to support custom package generation
- Add an additional parameter to
create
method ofADLSObject
- Add type checking to AtlanClient save and other methods
- Add credential management
- Fix workflow client monitor method
- Fix problem where Python SDK was not initializing applicableConnections and applicableGlossaries when creating new custom metadata sets
- Fix handling of archived custom metadata attributes
- (Experimental) Define and run new workflows
- Added support for retrieval of
SourceTagAttachements
inAtlanTags
- Fix duplicate initial GUID on Windows. This was due to a lack of support for nano-second accuracy in timestamps in Python on Windows. Code has been changed to rectify this problem.
- Fix problem parsing assets that contain SourceTagAttachements
- Add support for search log access
- Modify constants like Referenceable.TYPE_NAME to use InternalKeywordField, InternalKeywordTextField or InternalNumericField
- Fix groups in purpose policies and remove data mesh slugs and abbreviations
- Added missing "templates" field to the WorkflowSpec model
- Change qualifiedName generation on Link to be deterministic
Asset.create_for_modification
now raises an exception. Thecreate_for_modification
method should not be invoked on theAsset
class. Insteadcreate_for_modification
should be invoked on the class of the asset to be created, for exampleTable.create_for_modification
.
- An exception was being raised when
client.asset.replace_custom_metadata
was invoked on a custom metadata set that contained archived attributes. - The
ADLSObject.create()
was missing the parameter foradls_account_qualified_name
. This was causing theADSLObject
to be displayed incorrectly in the UI.
- (Experimental) Adds initial support for data domains and data products
- Disables the
delete_by_guid()
and restore methods for categories. Categories can currently only be purged (hard-deleted), so even when previously calling thedelete_by_guid()
method the backend actually translated this to a hard-delete (purge). (Which also means there is no way to restore a category.) We have therefore opted to disable thedelete_by_guid()
and restore methods — only for categories — to make it clearer that categories can only be purged (hard-deleted).
- Fixes error shown on retry overrun to show the underlying error, not the retry limit
- Fixes a message that was logged as an error but was purely informational (debug-level)
- Adds a unique request ID to every request, and includes in logging
- Logging is now done in both plain text and JSON
- Bundles a reasonable default logging configuration to the base container image
- Consolidates Python-based code repositories into a single place
- None
- Fix problem with source_read_top_user_record_list not being read correctly in index search
- Correct problem with AuditSearch mis-identifying asset as deleted tag
- Update enums with latest changes to persona preferences
- Bundle logging.conf file in Docker image
- Add ability to set icon during glossary creation
- Changed to support new custom metadata payload
- Add methods to manage Preset Assets
- Add in-cluster optimisation to use services URLs directly
- Changes the logic for generating Google Data Studio asset qualifiedNames
- Add filter to redact HTTP authorization header
- Add ability to traverse glossary hierarchy
- Publish docker image on release
- PARENT_CATEGORY of Glossary had the wrong atlan_field_name
- Rename exclude_classifications to exclude_atlan_tags in FluentLineage
- Add FluentLineage an abstraction mechanism, to simplify the most common lineage requests against Atlan (removing the need to understand the guts of Elastic).
- Add support for management of Google Data Studio assets
- Fix bug causing token_client.get_by_id to fail when when deprecated personas section present
- Fix bug causing client.user.add_as_admin to fail
- Add create methods for GCSBucket and GCSObject
- Create new helper client classes:
- AdminClient
- AssetClient
- Add property atlan_tag_names to assets to provide human readable versions of classificationNames
- Added Batch class for managing bulk updates in batches.
- Create new helper client classes:
- GroupClient
- RoleClient
- TokenClient
- TypeDefClient
- UserClient
- Add custom pre-commit hook
- Additional optional parameters for index searc
- Add capability to manage API Assets
- Fix bug preventing classifications with unexpected attributes from being read
- Fix bug preventing custom metadata from being read that were written with locked bug
- Correct issue with incorrect type on purpose_atlan_tags of Purpose
- Added support for searching audit logs
- Fixed bug preventing creation of locked custom metadata
- Fully-validate connection parameters on save
- Adds emojis and icons for both tags and custom metadata
- Fix bug on validating (internal) group names
- Manage ADLS assests
- Makes all options in AttributeDefs optional
- Add capability to do bucket and metric aggregations
- Mark lineage method (and others) deprecated, including DeprecationWarning
- Add capability to find and re-run workflows
- Fix Range query with 0 not generating expected request
- Adds Matillion, MongoDB, and time granularity for custom metadata
- Generates Sphinx documentation for the SDK
- Adds an API token check as part of cache refreshes
- Initial production release
- Adds column projections for listing users
- Renamed register_client method to set_default_client from AtlanClient
- Removed reset_default_client from AtlanClient
- Improve retry strategy for HTTP
- Adds generators for developer portal docs
- Adds create helper for Links
- Fixes bug in adding API tokens as admins and viewers
- Removes ability to activate and deactivate users
- Refactored Exception hierarchy
- Upgrade to pydantic 1.10.12
- Add ability to get, create and modify API tokens
- Fix bug in generating field class vars
- Adds a new FluentSearch approach to searching (no need to know Elastic anymore)
- Changes default inclusion operation for Bool queries to filter rather than must (for efficiency)
- Added:
- Adds new purpose policy permissions (attaching / detaching terms from assets)
- Fixes type for decentralized_role
- Documents various public methods in client, caches, and event-handling classes
- Add code generation for enums from enum-defs
- split assets into multiple modules
- Initial support for an X-Atlan-Request-Id header
- Breaking changes
- find_category_by_name[_fast] now return a list of categories rather than a single category, since categories are not unique by name within a glossary.
- Added:
- Bulk delete
- Restore
- Search by certificate
- Activate / deactivate users
- Search by any of multiple types
- regenerates model to include latest assets and structs
- Breaking change:
- S3_bucket_qualified_name is now required for S3 object creation
- Add a creation-only semantic operation, and deprecate upsert in favour of save
- Add Alteyx to AtlanConnectorType enums
- Correct issue where custom metadata wasn't being returned after the first page in mult-page index search
- Avoid double zipping when producing lambda layer in build
- Correct problem with indexing error
- Removed redundant code related to custom metadata
- Add handling for log events
- Add constant for archived asset retrieval
- Pin dependency on pydantic==1.10.8
- Facilitate inclusion of custom metadata in index search
- Change lineage list response into a lazy-fetching generator
- Renamed AtlanClassificationColor to AtlanTagColor
- Renamed all references to Classification and classification to Tag and tag (TagDef, Tag, tags, tagNames, etc):
- Add ability to create Files as an asset directly on Atlan.
- Add Event-handling abstractions
- Add the following methods to pyatlan.client.atlan.AtlanClient
- find_glossary_by_name
- find_category_fast_by_name
- find_category_by_name
- find_term_fast_by_name
- find_term_by_name
- Adds new persona and purpose policy handling
- Added trim_to_required method to assets
- Set status to Active when Badge is created
- Adds icons and images for classifications
- Migrates to easier to use uniqueness generator for testing
- Refactor Integration Tests to work on any server
- Remove incorrect required field validations for Connection
-
Fixes connection creation and associated validations
-
Adds further connectors (with icons)
-
Adds SQL parser endpoint
-
Add Lineage list API and integration tests
-
Fix bug on locking custom metadata
-
Refactor syntax for accessing custom metadata properties
Previously the custom metadata property
First Name
would have been accessed as follows:cm.first_name
This could cause confusion how the name was converted so now the following syntax will be used:
cm['First Name']
-
Added convenience properties for relationship_attributes
-
Rename convenience property for glossary terms from terms to assigned_terms
-
Add create method to Badge
-
Add integrations tests for CustomMetaData
- Added the following classes to support lineage retrieval
- LineageRelation
- DirectedPair
- LineageGraph
- LineageResponse
- Added the get_lineage method to AtlanClient
- Modify create_typdef in client to handle creating EnumDef
- Refresh caches on any SDK-driven creates or deletes
- Fix problem where custom metadata created via the SDK failed to show up in the UI
- Fix problem where custom metadata created via the SDK failed to show up in the UI
- Add find_connections_by_name to AtlanClient
- Add a create method to Process
- Add remove_terms method to AtlanClient
- Add append_terms method to AtlanClient
- Add replace_terms method to AtlanClient
- Update create method for Readme asset
- Fix broken link in README.md
- Renamed get_business_attributes method get_custom_metadata in Referenceable.Attributes
- Renamed set_business_attributes method set_custom_metadata in Referenceable.Attributes
- Renamed BusinessAttributes to CustomMetadata
- Add parameter overwrite_custom_metadata to AtlanClient.upsert
- Add get_custom_metadata to CustomMetadataCache
- Update create functions
- Added create method to Column
- Updated Schema.create method to add schema to Database schemas collection
- Updated Table.create method to add table to Schema tables collection
- Added relation_attributes parameter to IndexSearchRequest to specify the attributes to be included in each relationship that is included in the results of the search
- Set assets to empty list when no entities are returned by search
- Add classmethod ref_by_guid to Referencable
- Add classmethod ref_by_qualified_name to Referencable
- Corrected issue with from, size and track_total_hits in DSL object not being sent to server if the defaults weren't changed
- Added relation_attributes parameter to IndexSearchRequest to specify the attributes to be included in each relationship that is included in the results of the search
- Renamed environment variable used to specify the Atlan URL from ATLAN_HOST to ATLAN_BASE_URL
- Renamed initialization parameter in pyatlan.client.atlan.AtlanClient from host to base_url
- Initial public release