Metadata-Version: 2.4
Name: bollhav
Version: 3.0.0rc18
Summary: Standardizing models and pipes for data pipelines
Author-email: Erik Bremstedt <erik@bremstedtanalytics.se>
License-Expression: GPL-3.0-or-later
Project-URL: Homepage, https://github.com/ebremstedt/bollhav
Project-URL: Issues, https://github.com/ebremstedt/bollhav/issues
Requires-Python: >=3.11.0
Description-Content-Type: text/markdown
Requires-Dist: python-icron>=3.0.1
Requires-Dist: polars>=0.20.0
Requires-Dist: psycopg[binary]>=3.3.3
Requires-Dist: roskarl>=3.1.23
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: time-machine; extra == "dev"
Requires-Dist: pyright; extra == "dev"
Provides-Extra: tui
Requires-Dist: textual>=0.50; extra == "tui"

# bollhav

Model definition framework that standardizes data-pipeline code

This library
- is permissive by design
- is designed with ✨developer experience✨ in mind

Concepts
- [Model](docs/content/MODEL.md)
  - [Upstream](docs/content/MODEL.md#upstream-dependencies)
- [Runtime overrides](docs/content/RUNTIME_OVERRIDES.md) — env vars that override model settings at run time, plus the `@load_models` decorator
- [Tags](docs/content/TAGS.md)
    - [matching](docs/content/MATCHING.md)
- [Modes](docs/content/MODES.md)
- [Progress Bar](docs/content/PROGRESS_BAR.md)

Implementations:
- [Postgres](docs/content/POSTGRES.md)
- [MSSQL](docs/content/MSSQL.md)

# Demo

![demo](docs/content/batch_recording.gif)

## Explore the features

See [examples/](examples/) for self-contained, runnable pipelines that isolate each feature of bollhav

## Installation
```bash
pip install bollhav
```

## TUI

bollhav ships a terminal UI for running and exploring your models — set the run
env (backfill window, suffixes, state mode, …) in a form and fire a dry run, a
dry-state run, or the real thing, all without remembering env-var names

Install it with the `tui` extra, then just run `bollhav` pointed at a folder
that contains your models:

```bash
pip install "bollhav[tui]"

bollhav                 # browse the current directory
bollhav path/to/models  # browse a specific folder
```

It discovers every `Model` defined below that folder and runs the nearest
`main.py`. See [bollhav/tui/README.md](bollhav/tui/README.md) for the full guide
(keybindings, config, the two modes).

## Testing
Tests use `pytest`. Run the full suite:
```bash
pytest tests/
```

## Build + publish example

```sh
git tag 1.2.3 && git push --tags
```
