Metadata-Version: 2.4
Name: etlantic-pandas
Version: 0.14.0
Summary: Pandas dataframe execution plugin for ETLantic.
Project-URL: Homepage, https://github.com/eddiethedean/etlantic
Project-URL: Documentation, https://github.com/eddiethedean/etlantic/tree/main/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 :: 3 - Alpha
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.15,>=0.14.0
Requires-Dist: pandas<3,>=2.2
Provides-Extra: arrow
Requires-Dist: pyarrow>=14; extra == 'arrow'
Description-Content-Type: text/markdown

# etlantic-pandas

Pandas dataframe plugin **and** portable transform compiler for
[ETLantic](https://github.com/eddiethedean/etlantic) 0.14.

```bash
pip install 'etlantic==0.14.0' 'etlantic-pandas==0.14.0'
pip install 'etlantic-pandas[arrow]==0.14.0'  # optional Arrow interchange
```

## Dataframe plugin

The plugin provides eager, index-neutral `DataFrame` execution. It copies
frames at ownership boundaries so Pandas index state and in-place mutation do
not leak into portable pipeline semantics. Planning fails closed when a
pipeline requires unsupported lazy or zero-copy behavior.

Select it with `Profile(dataframe_engine="pandas")`; the
`etlantic.dataframe_plugins` entry point named `pandas` registers the plugin.

## Portable transform compiler

The `etlantic.transform_compilers` entry point named `pandas` exposes
`etlantic_pandas:create_transform_compiler`. The eager compiler claims
`dtcs:profile/portable-relational-kernel/1` and
`dtcs:profile/portable-relational/1`, including joins, unions, grouping,
aggregation, ordering, deduplication, and limits without requiring a native
`@implementation("pandas")`.

```python
from etlantic import Profile

profile = Profile(
    name="pandas-portable",
    dataframe_engine="pandas",
    portable_transform_policy="require",
)
```

Plugin authors can verify the advertised portable behavior with the public
conformance suite:

```python
from etlantic.testing import run_portable_transform_conformance_suite
from etlantic_pandas import create_transform_compiler

run_portable_transform_conformance_suite(create_transform_compiler())
```
