Metadata-Version: 2.4
Name: wowdata
Version: 0.1.1
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
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: 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™

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
```

## 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`).
