Metadata-Version: 2.5
Name: turbine-core
Version: 1.0.0
Summary: Turbine kernel: project snapshots, check-run pipeline, extension registry, and entrypoints
Requires-Python: >=3.12
Requires-Dist: annotated-types>=0.8.0
Requires-Dist: asgiref>=3.12.1
Requires-Dist: cyclopts>=5.1.0
Requires-Dist: jsonschema>=4.26.0
Requires-Dist: prompt-toolkit>=3.0.53
Requires-Dist: pydantic-core>=2.46.4
Requires-Dist: pydantic>=2.13.4
Requires-Dist: python-dotenv>=1.2.3
Requires-Dist: referencing>=0.37.0
Requires-Dist: rich>=15.0.0
Requires-Dist: ruamel-yaml>=0.18.16
Requires-Dist: semver>=3.0.4
Requires-Dist: sqlglot>=30.16.0
Requires-Dist: tree-sitter-yaml>=0.7.2
Requires-Dist: tree-sitter>=0.26.0
Requires-Dist: typing-extensions>=4.16.0
Requires-Dist: typing-inspection>=0.4.4
Requires-Dist: tzdata>=2026.3
Provides-Extra: editor
Requires-Dist: lsprotocol>=2023.0.1; extra == 'editor'
Requires-Dist: pygls>=2; extra == 'editor'
Provides-Extra: serve
Requires-Dist: anyio>=4; extra == 'serve'
Requires-Dist: asgi-lifespan>=2.1.0; extra == 'serve'
Requires-Dist: litestar>=2.15; extra == 'serve'
Requires-Dist: uvicorn>=0.34; extra == 'serve'
Description-Content-Type: text/markdown

# turbine-core

Turbine checks that your data agrees with its Data Contract. You describe a table in a YAML
file, and Turbine compares the file with the live table and tests the data against the rules
in the file.

`turbine-core` is the kernel. It gives the `turbine` command, the Project model, and the
check run. It has no formats, check types, or database drivers of its own. Those come from
an Extension, such as `turbine-data`.

## Install

Install `turbine-data` with the driver of your database. It installs `turbine-core` too:

```console
uv add "turbine-data[duckdb]"
uv run turbine --help
```

`turbine-core` has two extras:

| Extra | What it adds |
| --- | --- |
| `serve` | The `turbine serve` command and the Management API |
| `editor` | `turbine-lsp`, the language server for an editor |
