acceldata-sdk-python Overview

acceldata-sdk-python automates catalog, pipeline, and tagging workflows in Acceldata Data Observability Cloud (ADOC).

Legacy package notice

acceldata-sdk-python replaces the legacy acceldata-sdk package. acceldata-sdk is now in maintenance mode and is supported for up to three additional releases. Start new projects on acceldata-sdk-python. For more information, see Migration Guide and New Features Overview.

Introduction

ADOC monitors data quality across data lakes and warehouses. It measures quality in the catalog, monitors data sources, and tracks how data moves through the platform, so operational and analytical decisions rest on trustworthy data.

acceldata-sdk-python exposes typed clients and helpers that let your applications register definitions, runs, lineage, and execution detail in ADOC programmatically.

Features at a Glance

Feature

Description

Catalog

Assets: Types, metadata, sampling, and profiling (full, incremental, selective). Datasources: Listing and filters, crawlers, and how assets attach to sources. See Datasources and Assets Guide. Policies: Data quality and reconciliation rules — fetch, execute, check status, retrieve results, and cancel. See Policy Guide.

Pipelines

Define pipelines, start runs, add jobs and spans, emit events, and close runs so ADOC can reconstruct lineage and execution history. See Pipelines Guide.

Prerequisites

Before you install the SDK, confirm the following:

  • Python version: Python 3.10 or newer.

  • Package: Install acceldata-sdk-python from PyPI.

  • Credentials: An API access key and secret from your ADOC deployment, plus the base URL provided by your administrator.

Install the SDK

pip install -i https://test.pypi.org/simple/ acceldata-sdk-python==26.7.0 # After QE is done and artifacts are published to PyPI: # pip install acceldata-sdk-python

Create a Client

Create API keys from the ADOC UI, then pass them to AdocClient:

from acceldata.client.adoc_client import AdocClient client = AdocClient( url="https://<your-adoc-url>", access_key="<your-access-key>", secret_key="<your-secret-key>", )

Optional Connection Parameters

You can set the following optional parameters when you construct AdocClient:

Parameter

Type

Description

Default

connection_timeout_ms

int

Milliseconds to wait while opening a connection to ADOC.

5000

read_timeout_ms

int

Milliseconds to wait for a response after the connection is established.

15000

client = AdocClient( url="https://<your-adoc-url>", access_key="<your-access-key>", secret_key="<your-secret-key>", connection_timeout_ms=10_000, read_timeout_ms=20_000, )

What the SDK Covers at a Glance

Area

AdocClient Surface

Catalog → Assets

get_asset*, get_*_asset_types, profile_asset(sync=...), sample_data, get_profile_*, and metadata helpers

Catalog → Datasources

get_datasource*, start_crawler*, listing and filters

Catalog → Policies

get_policy*, execute_policy, Executor, rule services

Pipelines

create/get_*pipeline*, get_*span*, create_span_event, and related methods

Runtime: Python 3.10 or newer.

Client: Use a single AdocClient instance for catalog, pipeline, and tag operations.

Error Handling

The SDK raises errors from acceldata.exceptions:

  • APIError: ADOC returned a non-2xx response.

  • ApiException: A network or transport issue occurred.

  • AcceldataSdkException: The SDK was used incorrectly, or a workflow-level failure occurred.

from acceldata.exceptions import APIError, ApiException, AcceldataSdkException try: client.get_pipelines() except APIError as err: print("API error:", err) except ApiException as err: print("Network error:", err) except AcceldataSdkException as err: print("SDK error:", err)

Retrying Flaky Catalog Calls (RetryConfig)

Sometimes ADOC returns a temporary error, such as a busy server, a rate limit, or a short network issue. For supported operations, pass transient_retry=RetryConfig(...) so the client retries automatically instead of failing immediately.

from acceldata.client.transient_retry import RetryConfig

Retries are disabled if you omit transient_retry or pass None. To enable retries, pass RetryConfig(...).

Default RetryConfig()

Calling RetryConfig() with no arguments uses the SDK's built-in values:

Parameter

Default

What It Means

max_attempts

10

Total attempts (the first try plus up to nine retries).

initial_interval_seconds

30

After a failed try, the client waits at least this long before the next try. The wait doubles after each subsequent failure (30s → 60s → 120s → …), using exponential backoff.

max_interval_seconds

600 (10 minutes)

Ceiling on the wait. Doubled delays never grow past this value between tries.

Example spacing with defaults: after the 1st failure, wait 30s; after the 2nd, 60s; then 120s, 240s, 480s; then 600s for any further waits (capped at 10 minutes).

Custom RetryConfig

Reuse one RetryConfig across several calls. Override only the fields you need — the rest keep their SDK defaults.

retry = RetryConfig( max_attempts=5, # total tries (first try + up to 4 retries) initial_interval_seconds=5.0, # first backoff step (still doubles until max_interval) max_interval_seconds=30.0, # cap between tries )

Example: Run a Policy

Retries apply while starting the run and while polling (for example, when sync=True).

from acceldata.client.adoc_client import AdocClient from acceldata.client.transient_retry import RetryConfig from acceldata.models.sdk.catalog import PolicyExecutionRequest, PolicyExecutionType, RuleType client = AdocClient(url="...", access_key="...", secret_key="...") retry = RetryConfig(max_attempts=6, initial_interval_seconds=10.0, max_interval_seconds=120.0) executor = client.execute_policy( RuleType.DATA_QUALITY, rule_id=123, policy_execution_request=PolicyExecutionRequest(PolicyExecutionType.FULL), sync=True, transient_retry=retry, ) # executor holds the run; sync=True already waited for a terminal result where applicable

Check status or result later (for example, after sync=False):

retry = RetryConfig(max_attempts=5, initial_interval_seconds=5.0, max_interval_seconds=30.0) status = client.get_policy_execution_status( RuleType.DATA_QUALITY, execution_id, transient_retry=retry, ) result = client.get_policy_execution_result( RuleType.DATA_QUALITY, execution_id, transient_retry=retry, )

Note Retry only helps when a single request fails temporarily. It does not shorten how long ADOC takes to finish a run that is still in progress.

Example: Start a Crawler and Read Status

Use the datasource handle from get_datasource (recommended), or call AdocClient.start_crawler with the datasource name.

from acceldata.client.transient_retry import RetryConfig retry = RetryConfig(max_attempts=5, initial_interval_seconds=5.0, max_interval_seconds=30.0) ds = client.get_datasource("sales_lakehouse") ds.start_crawler(transient_retry=retry) # Optional: poll crawler status with the same retry behavior status = ds.get_crawler_status(transient_retry=retry)

Example: Profile an Asset

Use this pattern when the profile POST request or status polling hits temporary HTTP errors.

from acceldata.client.transient_retry import RetryConfig retry = RetryConfig(max_attempts=6, initial_interval_seconds=15.0, max_interval_seconds=120.0) client.profile_asset( asset_id=999, sync=True, transient_retry=retry, )

What Gets Retried

The SDK retries "try again later" HTTP responses from ADOC — for example, overload (503), too many requests (429), or a short-lived conflict (409). The SDK follows a fixed list of status codes unless you customize it.

What's Next

After you complete this section, explore:

  • Pipelines Guide – Learn how to define pipelines, record runs, and instrument spans and jobs.

  • Datasources and Assets Guide – Learn how to discover data sources, resolve assets, and run profiling.

  • Policy Guide – Learn how to fetch, execute, and monitor data quality and reconciliation policies.

  • Tags and Labels – Learn how to attach tags and labels to catalog assets.

  • Migration Guide and New Features Overview – Learn why and how to move from the legacy acceldata-sdk package.