acceldata-sdk-python Overview
automates catalog, pipeline, and tagging workflows in Acceldata Data Observability Cloud (ADOC).acceldata-sdk-python
Warning
Legacy package notice
replaces the legacy acceldata-sdk-python package. acceldata-sdk is now in maintenance mode and is supported for up to three additional releases. Start new projects on acceldata-sdk-python.acceldata-sdk
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
from PyPI.acceldata-sdk-python - Credentials: An API access key and secret from your ADOC deployment, plus the base URL provided by your administrator.
Install the SDK
pip install acceldata-sdk-python==26.7.0
Create a Client
Create API Keys from the ADOC UI, then pass them to :AdocClient
from acceldata.client.adoc_client import AdocClientclient = 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 |
| int | Milliseconds to wait while opening a connection to ADOC. | 5000 |
| 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 |
|
Catalog → Datasources |
|
Catalog → Policies |
|
Pipelines |
|
Runtime: Python 3.10 or newer.
Client: Use a single instance for catalog, pipeline, and tag operations.AdocClient
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, AcceldataSdkExceptiontry: 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 so the client retries automatically instead of failing immediately.transient_retry=RetryConfig(...)
from acceldata.client.transient_retry import RetryConfig
Retries are disabled if you omit or pass transient_retry. To enable retries, pass None.RetryConfig(...)
Default RetryConfig()
Calling with no arguments uses the SDK's built-in values:RetryConfig()
Parameter | Default | What It Means |
| 10 | Total attempts (the first try plus up to nine retries). |
| 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. |
| 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 across several calls. Override only the fields you need — the rest keep their SDK defaults.RetryConfig
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 AdocClientfrom acceldata.client.transient_retry import RetryConfigfrom acceldata.models.sdk.catalog import PolicyExecutionRequest, PolicyExecutionType, RuleTypeclient = 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,)
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 (recommended), or callget_datasource
with the datasource name.AdocClient.start_crawler
from acceldata.client.transient_retry import RetryConfigretry = 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 behaviorstatus = 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 RetryConfigretry = 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.
- Data Sources 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 Guide – Learn how to attach tags and labels to catalog assets.
- Migration Reference – Learn why and how to move from the legacy acceldata-sdk package.

Have a suggestion?