acceldata-sdk-python Overview
acceldata-sdk-python automates catalog, pipeline, and tagging workflows in Acceldata Data Observability Cloud (ADOC).
Warning
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.
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 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 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.
- 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.
