Metadata-Version: 2.4
Name: defacto
Version: 0.0.2
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Rust
Classifier: Topic :: Database
Requires-Dist: ibis-framework[duckdb]
Requires-Dist: pyyaml
Requires-Dist: defacto[postgres,kafka,tiered,networkx,neo4j,s3] ; extra == 'all'
Requires-Dist: confluent-kafka ; extra == 'kafka'
Requires-Dist: neo4j ; extra == 'neo4j'
Requires-Dist: networkx ; extra == 'networkx'
Requires-Dist: scipy ; extra == 'networkx'
Requires-Dist: psycopg[binary] ; extra == 'postgres'
Requires-Dist: boto3 ; extra == 's3'
Requires-Dist: deltalake ; extra == 'tiered'
Provides-Extra: all
Provides-Extra: kafka
Provides-Extra: neo4j
Provides-Extra: networkx
Provides-Extra: postgres
Provides-Extra: s3
Provides-Extra: tiered
Summary: An entity engine that turns operational events into temporal, queryable state
Author-email: Derek Zhang <derek.yn.zhang@gmail.com>
Requires-Python: >=3.12
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Repository, https://github.com/derek-yn-zhang/defacto

# Defacto

An entity engine that turns operational events into temporal, queryable state.

You define your entities as state machines in YAML. Defacto handles ingestion, identity resolution, state computation, and temporal queries.

```python
from defacto import Defacto

d = Defacto("definitions/")
d.ingest("app", events, process=True)

# current state
d.table("customer").execute()

# point-in-time
d.history("customer").as_of("2024-01-15").execute()
```

## Status

Pre-alpha. The engine works, the API is stabilizing, documentation is in progress.

## Getting started

Requires Python 3.12+ and a Rust toolchain.

```bash
git clone https://github.com/derek-yn-zhang/defacto.git
cd defacto
make setup
python examples/quickstart/main.py
```

See `examples/quickstart/` for a minimal example and `examples/showcase/` for multi-entity, multi-source, identity resolution, merges, and erasure.

