Metadata-Version: 2.4
Name: medallantic
Version: 0.33.0
Summary: Engine-agnostic medallion facade on ETLantic (native authoring + SparkForge IR migrate).
Project-URL: Homepage, https://github.com/eddiethedean/etlantic
Project-URL: Documentation, https://github.com/eddiethedean/etlantic/tree/main/packages/medallantic/docs
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
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: etlantic<0.34,>=0.33.0
Description-Content-Type: text/markdown

# Medallantic

Engine-agnostic **medallion facade** on ETLantic: native bronze/silver/gold
authoring plus a SparkForge IR migrate path. Prefer `medallantic` over the
deprecated `etlantic-sparkforge` redirect.

Medallantic owns bronze/silver/gold authoring conventions; ETLantic owns
the portable contracts, graph, validation, planning, execution lifecycle, and
plugin coordination underneath it. **ETLantic core never gains medallion
types.**

**0.29 (M1)** ships `MedallionPipeline`, `MedallionBuilder`, `Bronze` /
`Silver` / `Gold`, and `medallantic.migrate.sparkforge`. **0.30 (M2)** enforces
portable `rules=` via `etlantic.quality/1` gates (Polars/Pandas/local live;
SQL/PySpark fail-closed). Transform callables remain **0.31**.

Documentation:

- [Documentation index](docs/README.md)
- [Getting started](docs/getting-started.md)
- [SparkForge migration](docs/sparkforge-migration.md)
- [Compatibility](docs/compatibility.md)
- [Architecture](docs/architecture.md)

## Install

```bash
pip install 'etlantic==0.33.0' 'medallantic==0.33.0'
# or
pip install 'etlantic[medallantic]'
```

## Native authoring

```python
from medallantic import MedallionBuilder

defn = (
    MedallionBuilder("ecommerce", schema="demo")
    .bronze("orders", asset="bronze_orders")
    .silver("clean", source="orders", asset="silver_orders")
    .gold("kpis", source="clean", asset="gold_kpis", write_mode="merge")
    .build()
)
```

## SparkForge IR migrate

Feed `SparkForgePipelineSpec` (JSON/YAML fixtures or hand-built dataclasses)
via `adapt_pipeline` or `medallantic.migrate.sparkforge`. There is **no** live
`pipeline_builder` / SparkForge Python API bridge in this release.

The adapted result supplies an ordinary ETLantic pipeline and profile; select
execution plugins such as `Profile.spark_engine="pyspark"` separately.
Production profiles must allowlist every trusted execution plugin.
