Skip to main content

analitiq-cdk

The Connector Development Kit: a vendor-neutral, transport-neutral toolbox of reusable building blocks a connector uses. It is consumed both for bulk streaming (the OSS engine reads/writes Arrow batches) and for a synchronous control-plane (discover schemas / create tables) that needs neither the columnar nor the HTTP weight.

The one rule

The dependency points engine → CDK, never back. No CDK module may import anything engine-side (src/grpc, src/state, src/models, src/engine/{engine,orchestrator,pipeline}, server.py, runner.py, main.py). Anything that must cross from engine to CDK crosses as a plain value or a CDK-owned type — never an engine object. A connectivity capability whose implementation is engine- or deployment-specific is expressed as a CDK-owned seam (Protocol / ABC) the other side implements (SecretsResolver, CheckpointStore).

What lives here

  • cdk/types.py — CDK-native value types (AckStatus, Cursor, SchemaSpec, BatchWriteResult, EndpointScope, CheckpointStore).
  • cdk/contract.py — capability Protocols (Readable, Writable, Discoverable, TableCreator, ColumnDef).
  • transports + ConnectionRuntime, the ADBC sub-registry, shared DB helpers, the query builder, the rate limiter.
  • the expression resolver + derived functions.
  • the type-map engine (type_map/).
  • the secrets seam + local/in-memory resolvers (secrets/).
  • the abstract destination base (base_handler.py).
  • the connector families, one class each: sql/ (GenericSQLConnector) and api/ (GenericAPIConnector) serve read and write; file/ (GenericFileConnector, plus the storage backends) and stdout/ (GenericStdoutConnector) write only.
  • the batch serializers the write-only families share (formatters/).

Dependency tiers (core + extras)

The CDK ships a small required core and opt-in extras, so a consumer installs only what its role needs. The split is enforced by lazy imports: cdk.sql and cdk.type_map resolve the Arrow helpers (and the HTTP transport its aiohttp session) only on first use, so importing the core control-plane surface never pulls pyarrow/aiohttp.

Tier Pulls Surface
core (always) sqlalchemy, pydantic SQL control-plane: cdk.sql discovery + standalone create_table, ConnectionRuntime/transport seam, type-map (string surface), secrets
[arrow] pyarrow columnar streaming: schema_contract, sql.adbc_reader, type_map.parse_arrow_type, GenericSQLConnector read/write
[api] aiohttp, aiohttp-retry, orjson, python-dateutil HTTP transport plus GenericAPIConnector: bounded transport retries, a lossless JSON encoder, and the ISO parser a stored replication cursor is read with
[file] aiofiles + pyarrow the file / s3 destination family (cdk.file), which writes through the local filesystem backend
[streaming] [arrow] + [api] + [file] full connector surface the engine consumes
[s3] boto3 s3:// secret refs (SchemeSecretsResolver)
[conformance] pytest + pyarrow the connector conformance suite a connector repo runs in its own CI

Plus the per-driver DB package a given connector needs (asyncpg, adbc-driver-*, …).

The thin-surface entry points raise cdk.MissingExtraError (naming the extra, e.g. analitiq-cdk[arrow]) when the extra is absent, rather than a bare No module named 'pyarrow': the package-level lazy reexports (cdk.sql.AdbcReader / open_adbc_reader, cdk.type_map.parse_arrow_type / resolve_arrow_type) and the HTTP transport (build_http_from_spec). A genuinely-absent extra is relabelled; an unrelated or broken-install import failure (a partial build failing on a submodule, a missing transitive dep) is re-raised untouched so the real cause survives.

Directly importing a streaming module that belongs to an extra (cdk.schema_contract, cdk.sql.adbc_reader, cdk.type_map.arrow, cdk.sql.generic, cdk.file.generic, cdk.stdout.generic, cdk.base_handler) without that extra raises a plain ImportError naming the missing package on the import line — those modules are the extra and require it by design; a thin control-plane consumer reaches the Arrow surface only through the guarded lazy reexports above, never by importing these modules directly.

Install

Published on PyPI as analitiq-cdk. Releases are currently pre-releases, so pip needs --pre (or an exact pin).

Control-plane only (discover + create-table, no pyarrow/aiohttp):

pip install --pre analitiq-cdk

Full streaming surface:

pip install --pre "analitiq-cdk[streaming]"

The engine consumes it in-tree (it is on PYTHONPATH alongside src/) and declares pyarrow/aiohttp itself, so the bundled engine image always has the full surface regardless of the CDK's own extras.

Metadata

Release files for analitiq-cdk 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for analitiq-cdk 0.3.0
File Size Uploaded
analitiq_cdk-0.3.0.tar.gz 365.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for analitiq-cdk 0.3.0
File Interpreter ABI Platform
analitiq_cdk-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 792.0 kB

Release files / analitiq_cdk-0.3.0.tar.gz

Download URL analitiq_cdk-0.3.0.tar.gz
Size 365.0 kB
Tags Source
SHA-256 checksum
How to use checksums
804ab62df140f89eef795c0dff49f118bf2c5828f56323c9e6da755fd2af1a47
BLAKE2b-256 checksum
How to use checksums
e75589a3dcdf4a59855d6b978e6b47dd04377c87ac7e188d63d85ab547deebde
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2026.

Transparency log

Release files / analitiq_cdk-0.3.0-py3-none-any.whl

Download URL analitiq_cdk-0.3.0-py3-none-any.whl
Size 427.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ba54c9f2e17ba879633eced9dc037293a98c625feca3ae3d1c49f6cee71f414f
BLAKE2b-256 checksum
How to use checksums
0e88a1c8254e78a0c71a5b2d8bc14a1958482a2c0c627f87346578bc5b38d6e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2026.

Transparency log

Release history Release notifications | RSS feed

0.4.0

2 release files

This release

0.3.0 This release

2 release files

0.2.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page