Skip to content

Compatibility Matrix

Status: Available in ETLantic 0.53.0 (Beta release candidate).

This table describes the declared compatibility of ETLantic 0.53.0. Foundation policy summary (ODCS / DTCS / DPCS / ContractModel / Python): Capabilities — Supported standards policy.

Surface Supported range or version
Python 3.11, 3.12, 3.13
Pydantic >=2.12,<3
ContractModel >=0.2,<0.3 (ODCS v3.1.0)
DTCS specification 3.0.0 (dtcsVersion: "3.0.0"; 2.0.0 / 1.0.0 remain readable)
DTCS toolkit >=0.13,<1
DPCS toolkit >=0.13,<1
Pipeline plan schema etlantic.plan/1
Pipeline authoring wire etlantic.pipeline/1
Run report wire etlantic.run_report/1
Capabilities vocabulary etlantic.capabilities/1
Dataframe protocol etlantic.dataframe/1
Tabular interchange (Gate A) etlantic.interchange/1 — Polars ↔ Pandas only; see API Plan/Runtime
SQL protocol etlantic.sql/1
Spark protocol etlantic.spark/1
Polars plugin etlantic-polars==0.53.0
Pandas plugin etlantic-pandas==0.53.0
SQL plugin etlantic-sql==0.53.0
DuckDB plugin etlantic-duckdb==0.53.0 (optional)
PySpark plugin etlantic-pyspark==0.53.0
Airflow plugin etlantic-airflow==0.53.0
Prefect scheduler etlantic-prefect==0.53.0
Keyring provider etlantic-keyring==0.53.0
SQLModel bridge etlantic-sqlmodel==0.53.0
FastAPI reference adapter etlantic-fastapi==0.53.0 (reference only; not a control plane; see the planned first-class control-plane program)
Medallantic (facade) medallantic==0.53.0
SparkForge redirect etlantic-sparkforge==0.53.0 (compatibility shim; prefer medallantic)
DataFusion plugin etlantic-datafusion==0.53.0 (technical qualification complete; provisional Alpha surface)
Orchestration protocol etlantic.orchestration/1
DTCS Transformation Plan protocol Published in DTCS 3.0 / dtcs 0.13 as dtcs.transform-plan/2 (v1 readable); ETLantic authoring shipped in 0.11
Portable authoring profile Shipped as etlantic.transform/1 (full DTCS 3.0 facade→IR authoring)
Portable compiler protocol Release-candidate etlantic.transform-compiler/1 (Local, Polars, Pandas, SQL, PySpark, DataFusion, and DuckDB qualification recorded for 0.50)
Package stability Beta — suitable for documented single-tenant reference deployments (not unrestricted enterprise production)
Plugin SDK stability Protocol /1 families frozen in 0.28.0; third-party plugins must pin etlantic>=0.53.0,<0.54 and re-run conformance

Joint burn-in (0.37)

0.36 is a compatibility evidence release. Upgrade paths under test:

Path Expectation
0.34 → 0.35 and 0.35 → 0.36 Declared outcomes for supported artifact families
Core + official plugins + Medallantic Joint pins on the same minor (==0.53.0)
Isolated wheels Old writer / new reader (and reverse) without monorepo imports
Compatibility vocabulary compatible / migrated / regenerate / upgrade-required / unsupported

Protocol notes for this minor: etlantic.scheduler/1 is a stable MVP (Prefect bounds); etlantic.quality/1 remains provisional. See Wire schema ranges, Migration 0.35 → 0.36, and Exit gate 0.36.

Tested versus declared

The core CI matrix runs linting and the core test suite on Ubuntu, Windows, and macOS with Python 3.11, 3.12, and 3.13. This is the broadest tested platform surface for 0.39.0. Wire codec burn-in covers the historical 0.24→0.25→0.26→0.27→0.28 window and the joint 0.34→0.35→0.36 window; see Wire schema ranges.

Optional plugin jobs run primarily on Ubuntu with Python 3.11. Polars and Pandas each have dedicated dataframe/compiler/conformance jobs. SQL runs against SQLite and PostgreSQL 16. PySpark compiler and differential coverage uses the sparkless compatibility backend by default; real JVM PySpark checks run in the dedicated real-pyspark CI job (0.23). Airflow compile import is tested across 2.8.x–2.10.x via airflow-runtime; Prefect, keyring, SQLModel, and SparkForge also have dedicated Ubuntu/3.11 jobs. Microbenchmark regression gate runs on Ubuntu/3.11 (scripts/check_benchmarks.py).

Package metadata declares these backend dependency ranges:

Package or extra Declared backend range
etlantic-polars polars>=1.0,<2; optional pyarrow>=14
etlantic-pandas pandas>=2.2,<3; optional pyarrow>=14
etlantic-pyspark pyspark>=3.5,<4; optional delta-spark>=3.0,<4
etlantic-sql sqlalchemy>=2.0,<3, psycopg[binary]>=3.1,<4
etlantic-duckdb duckdb>=1.0,<2
etlantic-sqlmodel sqlmodel>=0.0.22,<1
etlantic-keyring keyring (no narrower range declared)
etlantic-airflow No Apache Airflow runtime dependency; it compiles DAG source
airflow-runtime (uv group, 0.23) etlantic-airflow only; CI imports generated DAGs with apache-airflow 2.11.1 and 3.2.1
etlantic-prefect prefect>=3,<4
etlantic[otel] / [observability] opentelemetry-api>=1.36,<2
etlantic[arrow] pyarrow>=14

A declared range means the resolver may install that version; it does not mean every backend version and operating system combination is exercised in CI. For a controlled deployment, test the exact resolved environment and pin etlantic==0.53.0 plus every official plugin to ==0.53.0.

Core extras already enforce exact official plugin versions, for example etlantic[polars]==0.53.0 depends on etlantic-polars==0.53.0. Official plugin source metadata accepts core etlantic>=0.53.0,<0.54, which is minor-matched but less exact. Published, older, or third-party plugin metadata may use a broader bound such as etlantic>=0.14,<1.0; do not treat that broad specifier as evidence of tested cross-minor compatibility. Match the core and official plugin minor versions, and prefer exact pins for reproducibility.

Root import changes in 0.28 (third-wave removals of demoted aliases): see Migration 0.27 → 0.28. Package inventory: Optional packages.

Portable transformation profiles

DTCS publication does not mean the ETLantic facade or plugin compilers are already implemented. Compatibility is tracked independently:

DTCS profile Spec status ETLantic authoring (0.11) ETLantic compilers
dtcs:profile/portable-relational-kernel/1 Published (2.0) shipped (authoring) shipped (Polars + PySpark + Pandas, 0.12–0.14)
dtcs:profile/portable-relational/1 Published (2.0) shipped (authoring) shipped (Polars + PySpark + Pandas, 0.13–0.14)
dtcs:profile/portable-window/1 Experimental (2.0) shipped (alias authoring) shipped (Polars + PySpark, 0.17 Gate B)
dtcs:profile/portable-complex-types/1 Experimental (2.0) shipped (alias authoring) shipped (Polars + PySpark, 0.17 Gate C)
dtcs:profile/portable-relational-kernel/2 Candidate (3.0) shipped (authoring, plan v2) shipped (plan-v2 metadata via Polars kernel, 0.12)
dtcs:profile/portable-relational/2 Candidate (3.0) shipped (authoring) metadata alias of /1 on Polars + PySpark + Pandas (0.13–0.14); no candidate extensions
dtcs:profile/portable-string-advanced/1 Experimental (3.0) shipped (authoring) shipped (Polars + PySpark, 0.17 Gate B)
dtcs:profile/portable-conversion/1 Experimental (3.0) shipped (authoring) shipped (Polars + PySpark, 0.17 Gate B)
dtcs:profile/portable-statistics/1 Experimental (3.0) shipped (authoring) shipped (Polars + PySpark, 0.17 Gate B)
dtcs:profile/portable-complex-values/1 Experimental (3.0) shipped (authoring) shipped (Polars + PySpark, 0.17 Gate C)
dtcs:profile/portable-reshape/1 Experimental (3.0) shipped (authoring) shipped (Polars + PySpark, 0.17 Gate C)
dtcs:profile/portable-relational-extended/1 Experimental (3.0) shipped (authoring) 0.17 continuation
dtcs:profile/portable-temporal-iana/1 Experimental (3.0) shipped (authoring) 0.17 continuation
dtcs:profile/portable-nondeterministic/1 Experimental (3.0) shipped (authoring) 0.17 continuation (policy-gated)
dtcs:profile/portable-window/2 Candidate (3.0) shipped (authoring) 0.17 continuation

See Capabilities and the DTCS 3.0 publication record.