Metadata-Version: 2.1
Name: stepping
Version: 0.0.2
Summary: Incremental View Maintenance for Python backends
Author-email: Oliver Russell <ojhrussell@gmail.com>
Maintainer-email: Oliver Russell <ojhrussell@gmail.com>
Keywords: IVM,postgres
Classifier: Programming Language :: Python
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: immutables >=0.19
Requires-Dist: mypy >=1.4.1
Requires-Dist: pydantic >=2.3.0
Requires-Dist: psycopg >=3.1.8
Requires-Dist: psycopg-binary >=3.1.8
Requires-Dist: psycopg-pool >=3.1.7
Requires-Dist: tabulate >=0.9.0
Provides-Extra: dev
Requires-Dist: testing.postgresql >=1.3.0 ; extra == 'dev'
Requires-Dist: pytest >=7.2.2 ; extra == 'dev'
Requires-Dist: autoflake >=2.0.2 ; extra == 'dev'
Requires-Dist: black >=23.1.0 ; extra == 'dev'
Requires-Dist: icdiff >=2.0.6 ; extra == 'dev'
Requires-Dist: isort >=5.12.0 ; extra == 'dev'
Requires-Dist: prettyprinter >=0.18.0 ; extra == 'dev'
Requires-Dist: pydot >=1.4.2 ; extra == 'dev'
Requires-Dist: snakeviz >=2.1.1 ; extra == 'dev'

# `stepping`

Based on the paper: [DBSP: Automatic Incremental View Maintenance for Rich Query Languages](https://github.com/vmware/database-stream-processor/blob/e6cdbb538bbce8adb90018ff75f8ae8251b3e206/doc/theory/main.pdf).

# [📚 Documentation 📚](https://stepping.site)

## Installation

```bash
pip install stepping
```

### Development installation

```bash
git clone git@github.com:leontrolski/stepping.git
python -m venv .env
source .env/bin/activate
pip install -e '.[dev]'
pytest
mypy src tests
```

## Todos

- Docs.
- Work out how to parallelize.
- Write everything up, email the dbsp people from the original paper. In particular, ask question about why the incremental recursive stuff is different from the paper.
- See suggestions in `performance.md`.
- Look at 11.8 "Window aggregates"
- Replace `integrate_delay` with a nice transform. Similarly, transform shared delays.
- Test arbitrary depth grouped nesting and joining in a grouped setting (Does this _need_ doing?).
- Replace `annotate_zset` with `__get_pydantic_core_schema__`.
- Revisit `st.compile(...)`

# Uploading to Pypi

```bash
# bump version
python -m pip install build twine
python -m build
twine check dist/*
twine upload dist/*
```

# Deploy docs

```bash
flyctl launch
flyctl deploy
flyctl ips list -a stepping-docs
# set A record to @, IPv4
# set AAAA record to @, IPv6
flyctl certs create -a stepping-docs stepping.site

cd docs/doks
npm install
npm run start
npm run build
cd ..; flyctl deploy; cd -

cd docs
python ../scripts/md.py ../ $(find -L ../docs-md -name '**.md')
```
