Metadata-Version: 2.4
Name: etlantic
Version: 0.43.0
Summary: Typed, contract-driven data pipeline modeling for Python.
Project-URL: Homepage, https://github.com/eddiethedean/etlantic
Project-URL: Documentation, https://etlantic.readthedocs.io/
Project-URL: Repository, https://github.com/eddiethedean/etlantic
Project-URL: Issues, https://github.com/eddiethedean/etlantic/issues
Project-URL: Changelog, https://github.com/eddiethedean/etlantic/blob/main/CHANGELOG.md
Author-email: Odo Matthews <odosmatthews@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: data-contracts,etl,pipelines,pydantic,typed
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: anyio<5,>=4
Requires-Dist: click<9,>=8
Requires-Dist: contractmodel<0.3,>=0.2
Requires-Dist: dpcs<1,>=0.13
Requires-Dist: dtcs<1,>=0.13
Requires-Dist: jsonschema<5,>=4.23
Requires-Dist: packaging>=24
Requires-Dist: pydantic<3,>=2.12
Requires-Dist: typer<1,>=0.15
Provides-Extra: airflow
Requires-Dist: etlantic-airflow==0.43.0; extra == 'airflow'
Provides-Extra: arrow
Requires-Dist: pyarrow>=14; extra == 'arrow'
Provides-Extra: dataframes
Requires-Dist: etlantic-pandas==0.43.0; extra == 'dataframes'
Requires-Dist: etlantic-polars==0.43.0; extra == 'dataframes'
Provides-Extra: datafusion
Requires-Dist: etlantic-datafusion==0.43.0; extra == 'datafusion'
Provides-Extra: fastapi
Requires-Dist: etlantic-fastapi==0.43.0; extra == 'fastapi'
Provides-Extra: iceberg
Requires-Dist: etlantic-iceberg==0.43.0; extra == 'iceberg'
Provides-Extra: keyring
Requires-Dist: etlantic-keyring==0.43.0; extra == 'keyring'
Provides-Extra: medallantic
Requires-Dist: medallantic==0.43.0; extra == 'medallantic'
Provides-Extra: observability
Requires-Dist: opentelemetry-api<2,>=1.36; extra == 'observability'
Provides-Extra: openlineage
Requires-Dist: etlantic-openlineage==0.43.0; extra == 'openlineage'
Provides-Extra: otel
Requires-Dist: opentelemetry-api<2,>=1.36; extra == 'otel'
Provides-Extra: pandas
Requires-Dist: etlantic-pandas==0.43.0; extra == 'pandas'
Provides-Extra: polars
Requires-Dist: etlantic-polars==0.43.0; extra == 'polars'
Provides-Extra: postgresql
Requires-Dist: etlantic-sql==0.43.0; extra == 'postgresql'
Provides-Extra: prefect
Requires-Dist: etlantic-prefect==0.43.0; extra == 'prefect'
Provides-Extra: pyspark
Requires-Dist: etlantic-pyspark==0.43.0; extra == 'pyspark'
Provides-Extra: s3
Requires-Dist: etlantic-s3==0.43.0; extra == 's3'
Provides-Extra: snowflake
Requires-Dist: etlantic-snowflake==0.43.0; extra == 'snowflake'
Provides-Extra: spark
Requires-Dist: etlantic-pyspark==0.43.0; extra == 'spark'
Provides-Extra: sparkforge
Requires-Dist: etlantic-sparkforge==0.43.0; extra == 'sparkforge'
Provides-Extra: sql
Requires-Dist: etlantic-sql==0.43.0; extra == 'sql'
Provides-Extra: sqlmodel
Requires-Dist: etlantic-sqlmodel==0.43.0; extra == 'sqlmodel'
Description-Content-Type: text/markdown

<p align="center">
  <img
    src="https://raw.githubusercontent.com/eddiethedean/etlantic/main/docs/theme/assets/etlantic-logo.svg"
    width="148"
    alt="ETLantic logo"
  >
</p>

<h1 align="center">ETLantic</h1>

<p align="center">
  <strong>One typed pipeline model. Many execution backends.</strong><br>
  Typed contracts. Deterministic plans. Pluggable execution.
</p>

<p align="center">
  <a href="https://github.com/eddiethedean/etlantic/actions/workflows/ci.yml"><img src="https://github.com/eddiethedean/etlantic/actions/workflows/ci.yml/badge.svg" alt="CI status"></a>
  <a href="https://pypi.org/project/etlantic/"><img src="https://img.shields.io/pypi/v/etlantic.svg" alt="PyPI version"></a>
  <a href="https://pypi.org/project/etlantic/"><img src="https://img.shields.io/pypi/pyversions/etlantic.svg" alt="Supported Python versions"></a>
  <img src="https://img.shields.io/badge/status-beta-d6a84b.svg" alt="Project status: beta">
  <a href="https://github.com/eddiethedean/etlantic/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-0f766e.svg" alt="MIT license"></a>
</p>

<p align="center">
  <a href="https://etlantic.readthedocs.io/en/v0.43.0/01_GETTING_STARTED/QUICKSTART/">Quickstart</a> ·
  <a href="https://etlantic.readthedocs.io/">Documentation</a> ·
  <a href="https://etlantic.readthedocs.io/en/v0.43.0/01_GETTING_STARTED/COMPARE/">Is ETLantic for me?</a> ·
  <a href="https://etlantic.readthedocs.io/en/v0.43.0/10_REFERENCE/API_REFERENCE/">Python API</a> ·
  <a href="https://etlantic.readthedocs.io/en/v0.43.0/10_REFERENCE/CLI/">CLI</a>
</p>

---

ETLantic gives Python data pipelines one portable, typed logical model. It
coordinates contracts, transformations, and topology while plugins handle
execution. It validates wiring, capabilities, configuration, and plugin trust
before producing a deterministic plan.

ETLantic complements dataframe engines and orchestrators; it does not replace
them.

## Quickstart

ETLantic requires Python 3.11 or newer. In an activated virtual environment:

```bash
python -m pip install 'etlantic==0.43.0'
python -m etlantic --version
mkdir my-pipeline
cd my-pipeline
python -m etlantic init --with-toml
python -m etlantic validate pipeline.py:SamplePipeline --profile development
python -m etlantic run pipeline.py:SamplePipeline --profile development
```

The run should succeed and write Ada and Grace to `data/out.json`. See the
[full Quickstart](https://etlantic.readthedocs.io/en/v0.43.0/01_GETTING_STARTED/QUICKSTART/)
for setup details and expected output.

## What it provides

- Typed `Data`, `Transformation`, `Extract`, `Load`, and `Pipeline` building
  blocks.
- Validation before execution or publication, with human, JSON, and SARIF
  diagnostics.
- Deterministic plans that can be inspected, fingerprinted, diffed, run, or
  compiled.
- Contract generation for
  [ODCS](https://etlantic.readthedocs.io/en/v0.43.0/03_DATA_CONTRACTS/ODCS/),
  [DTCS](https://etlantic.readthedocs.io/en/v0.43.0/04_TRANSFORMATIONS/DTCS/),
  and [DPCS](https://etlantic.readthedocs.io/en/v0.43.0/05_PIPELINES/DPCS/)
  artifacts.
- Pluggable execution across local Python, Polars, Pandas, SQL, and PySpark,
  plus orchestration integrations.

Application code should use the curated public facade:

```python
import etlantic as etl
```

The public CLI includes `init`, `doctor`, `validate`, `inspect`, `plan`, `run`,
`compile`, `generate`, `diff`, `plugin`, `schema`, `reliability`, `viz`, and
`report`.

## Execution options

Core has no dataframe, database, Spark, or orchestrator dependency. Install
only the integrations a pipeline needs:

| Capability | 0.43 |
|---|---|
| Local Python + JSON/CSV | `etlantic` |
| Polars or Pandas | `etlantic[polars]` or `etlantic[pandas]` |
| SQL or PySpark | `etlantic[sql]` or `etlantic[pyspark]` |
| Airflow or Prefect | `etlantic[airflow]` or `etlantic[prefect]` |

Each transformation must support the selected backend. In controlled
deployments, pin ETLantic and official plugins to the same release. See
[engine selection](https://etlantic.readthedocs.io/en/v0.43.0/01_GETTING_STARTED/ENGINE_SELECTION/)
and
[compatibility](https://etlantic.readthedocs.io/en/v0.43.0/10_REFERENCE/COMPATIBILITY/).

## Security and production posture

ETLantic is currently **Beta**. It is suitable for documented, controlled,
single-tenant pilots—not unrestricted enterprise production.

It does not include a managed runtime or multi-tenant control plane; that work
is tracked in the
[control-plane program](https://etlantic.readthedocs.io/en/v0.43.0/11_DEVELOPMENT/MULTI_TENANT_CONTROL_PLANE_PLAN/).

Plans and reports contain secret references, never resolved secret values.
Production profiles require an explicit non-empty `plugin_allowlist`; an
allowlist controls selection but is not a sandbox. Schema history stores
fingerprints and metadata, never source rows.

Review the
[production readiness](https://etlantic.readthedocs.io/en/v0.43.0/06_EXECUTION/PRODUCTION_READINESS/)
and
[security model](https://etlantic.readthedocs.io/en/v0.43.0/02_FOUNDATIONS/SECURITY/)
before a pilot.

## Learn more

- [Quickstart](https://etlantic.readthedocs.io/en/v0.43.0/01_GETTING_STARTED/QUICKSTART/)
  and [first pipeline](https://etlantic.readthedocs.io/en/v0.43.0/01_GETTING_STARTED/FIRST_PIPELINE/)
- [Is ETLantic for me?](https://etlantic.readthedocs.io/en/v0.43.0/01_GETTING_STARTED/COMPARE/)
  and [capabilities](https://etlantic.readthedocs.io/en/v0.43.0/01_GETTING_STARTED/CAPABILITIES/)
- [CLI reference](https://etlantic.readthedocs.io/en/v0.43.0/10_REFERENCE/CLI/)
  and [Python API](https://etlantic.readthedocs.io/en/v0.43.0/10_REFERENCE/API_REFERENCE/)
- [Plugin SDK](https://etlantic.readthedocs.io/en/v0.43.0/07_PLUGIN_SDK/)
  and [optional packages](https://etlantic.readthedocs.io/en/v0.43.0/10_REFERENCE/OPTIONAL_PACKAGES/)

## Contributing

See [CONTRIBUTING.md](https://github.com/eddiethedean/etlantic/blob/main/CONTRIBUTING.md)
for development setup and pull-request guidance. Use
[GitHub Issues](https://github.com/eddiethedean/etlantic/issues) for bugs and
questions, and follow the private instructions in
[SECURITY.md](https://github.com/eddiethedean/etlantic/blob/main/SECURITY.md)
to report vulnerabilities.

ETLantic is available under the
[MIT License](https://github.com/eddiethedean/etlantic/blob/main/LICENSE).
