Metadata-Version: 2.4
Name: wowdata
Version: 0.2.3
Summary: A human-centred, teachable data wrangling and pipeline framework.
Author: WowData Contributors
License: Apache-2.0
Project-URL: Homepage, https://github.com/sci2pro/wowdata
Project-URL: Repository, https://github.com/sci2pro/wowdata
Project-URL: Issues, https://github.com/sci2pro/wowdata/issues
Keywords: data-engineering,etl,data-pipelines,education,data-wrangling
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: petl>=1.7
Requires-Dist: frictionless>=5.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: tox>=4.0; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Provides-Extra: docs
Requires-Dist: mkdocs; extra == "docs"
Requires-Dist: mkdocs-material; extra == "docs"
Dynamic: license-file

# WowData™

[![PyPI version](https://img.shields.io/pypi/v/wowdata)](https://pypi.org/project/wowdata/)
[![Python versions](https://img.shields.io/pypi/pyversions/wowdata)](https://pypi.org/project/wowdata/)
[![Coverage](https://codecov.io/gh/sci2pro/wowdata/branch/main/graph/badge.svg)](https://codecov.io/gh/sci2pro/wowdata)

WowData™ is a human-centred data wrangling and pipeline framework designed to make real-world data cleanup understandable, teachable, and inspectable.

## Install

From PyPI:

```bash
pip install wowdata
```

From source (editable):

```bash
git clone https://github.com/sci2pro/wowdata.git
cd wowdata
pip install -e .
```

## Quick Start

Create a small input CSV:

```csv
person_id,age,country
1,30,KE
2,17,UG
3,41,KE
```

Run with Python API:

```python
from wowdata import Pipeline, Sink, Source, Transform

pipe = (
    Pipeline(Source("people.csv"))
    .then(Transform("cast", params={"types": {"age": "integer"}, "on_error": "null"}))
    .then(Transform("filter", params={"where": "age >= 18 and country == 'KE'"}))
    .then(Sink("adults_ke.csv"))
)

pipe.run()
```

Run from YAML with CLI:

```bash
wow run pipeline.yaml
```

Fallback command if `wow` conflicts in your shell:

```bash
wowdata run pipeline.yaml
```

## Repository Examples

The repository now includes runnable sample pipelines and data files under `examples/`.

From the repo root, you can run them directly with `--base-dir` so relative CSV paths resolve correctly:

```bash
wow run examples/climate_heat_events.yaml --base-dir examples
wow run examples/climate_rainfall_alerts.yaml --base-dir examples
```

You can also `cd examples` and run the same YAML files from there.

## Documentation

- Philosophy: [docs/philosophy.md](docs/philosophy.md)
- Examples: [EXAMPLES.md](EXAMPLES.md)
- Reference: [REFERENCE.md](REFERENCE.md)
- Docs site source: [docs/](docs/) + [mkdocs.yml](mkdocs.yml)

To preview docs locally:

```bash
pip install -e .[docs]
mkdocs serve
```

The same docs can be published to GitHub Pages (for `wowdata.github.io`).

## Testing

Run the default local test target:

```bash
pytest
```

Or through `tox`:

```bash
tox
```

`tox` is configured to run Python 3.14 by default. If you explicitly want a different interpreter or a wider matrix, request it directly, for example:

```bash
tox -e py311
tox -e py310,py311,py312,py313,py314
```
