Strata — prototype
Declarative, versioned, immutable data transformations. Compiles to SQL (DuckDB/Postgres/BigQuery/Snowflake), with column-level lineage and 3-phase contract pins.
Working title v0.1 — prototype lives in
prototype/. Spec in../spec/.
Install (dev)
cd prototype
python -m venv .venv
.venv/bin/pip install -e ".[dev]"
strata --help
Or without venv after publish:
pip install strata-lang
strata --help
uv (standalone tool, no venv)
# from PyPI (once published) — package is strata-lang, entry point stays `strata`
uv tool install strata-lang
strata --help
# from Git (before PyPI, or dev)
uv tool install git+https://github.com/Tzinny-dev/strata --from prototype
strata --help
# upgrade
uv tool upgrade strata-lang
pip install --upgrade strata-lang
Quick start
# typecheck + contracts + lineage (no DB)
strata build examples/daily_orders.strata
# emit SQL for a dialect
strata compile examples/daily_orders.strata --dialect postgres
# materialize in DuckDB (with demo fixtures)
strata run examples/daily_orders.strata --seed -o /tmp/demo.duckdb
strata test examples/daily_orders.strata --seed
See docs/getting-started.md and docs/tutorial.md for the full walkthrough (every code block was run against the CLI before writing).
Warehouses
| Warehouse | SQL emit (compile --dialect) |
Engine run (run -o / exec) |
Driver |
|---|---|---|---|
| DuckDB | ✅ | ✅ DuckDBWarehouse + dbcompat (duckdb default dep) |
duckdb |
| Postgres | ✅ | ✅ cli.open_warehouse("postgres://...") → dbcompat.PGConn (probado vs Postgres 16 efímero) — adapters.get_adapter("postgres") sigue stub E095 a propósito |
pip install strata[postgres] |
| BigQuery | ✅ | ❌ stub E095 | pip install strata[bigquery] |
| Snowflake | ✅ | ❌ stub E095 | pip install strata[snowflake] |
Experimental modules
| Module | Status | Notes |
|---|---|---|
strata.integrations |
scaffolding only | airflow_dag_factory/prefect_flow_factory return strings of Python source; airflow/prefect not installed by default (pip install strata[airflow] / [prefect]). No real DAG/flow is instantiated — see plan-hito-2.md §B. |
strata.testing |
fixture helpers only | create_test_source/FreshnessTestHelper emit .strata text or temp tables; not wired to the executor for e2e. Use strata.exec for real freshness gates. |
strata.observability |
connected | MetricsCollector is imported by strata.exec._run_locked and exposed via get_metrics(); exporters are formatters (Prometheus/StatsD/JSON) without external deps. |
Development
.venv/bin/pytest -q
.venv/bin/pytest --cov=strata --cov-fail-under=80
Coverage gate: 80% (pyproject.toml / pytest.ini).
Release files for strata-lang 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| strata_lang-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Release files / strata_lang-0.1.0-py3-none-any.whl
| Download URL | strata_lang-0.1.0-py3-none-any.whl |
|---|---|
| Size | 152.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
87de2af09fb90f380fb47b800f78d8d48cf85c57994b47c13e008661d6586de0
|
|
BLAKE2b-256 checksum How to use checksums |
5d2088d7c9e37a09f9c4561ce6d3ed0f3bf8850b212aba656793c4c0fdc84cfd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|