Metadata-Version: 2.4
Name: tessera-contracts
Version: 0.2.0
Summary: Data contract coordination for warehouses
Project-URL: Documentation, https://ashita-ai.github.io/tessera
Project-URL: Repository, https://github.com/ashita-ai/tessera
License-File: LICENSE
Requires-Python: >=3.11
Requires-Dist: alembic<2.0.0,>=1.14.0
Requires-Dist: argon2-cffi<24.0.0,>=23.0.0
Requires-Dist: asyncpg<1.0.0,>=0.30.0
Requires-Dist: email-validator<3.0.0,>=2.3.0
Requires-Dist: fastapi<1.0.0,>=0.115.0
Requires-Dist: greenlet<4.0.0,>=3.3.0
Requires-Dist: httpx<1.0.0,>=0.28.0
Requires-Dist: itsdangerous<3.0.0,>=2.0.0
Requires-Dist: jinja2<4.0.0,>=3.1.0
Requires-Dist: jsonschema<5.0.0,>=4.20.0
Requires-Dist: prometheus-client<1.0.0,>=0.21.0
Requires-Dist: pydantic-settings<3.0.0,>=2.6.0
Requires-Dist: pydantic<3.0.0,>=2.10.0
Requires-Dist: python-dotenv<2.0.0,>=1.0.0
Requires-Dist: python-multipart<1.0.0,>=0.0.12
Requires-Dist: pyyaml<7.0.0,>=6.0.0
Requires-Dist: redis<6.0.0,>=5.0.0
Requires-Dist: rich<14.0.0,>=13.0.0
Requires-Dist: slowapi<1.0.0,>=0.1.9
Requires-Dist: sqlalchemy<3.0.0,>=2.0.0
Requires-Dist: typer<1.0.0,>=0.15.0
Requires-Dist: uvicorn<1.0.0,>=0.32.0
Provides-Extra: avro
Requires-Dist: fastavro<2.0.0,>=1.8.0; extra == 'avro'
Provides-Extra: bigquery
Requires-Dist: google-cloud-bigquery<4.0.0,>=3.25.0; extra == 'bigquery'
Provides-Extra: demo
Requires-Dist: dbt-duckdb>=1.10.0; extra == 'demo'
Provides-Extra: dev
Requires-Dist: mypy<2.0.0,>=1.13.0; extra == 'dev'
Requires-Dist: pytest-asyncio<1.0.0,>=0.24.0; extra == 'dev'
Requires-Dist: pytest-cov<7.0.0,>=6.0.0; extra == 'dev'
Requires-Dist: pytest<9.0.0,>=8.0.0; extra == 'dev'
Requires-Dist: ruff<1.0.0,>=0.8.0; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-gen-files<1.0.0,>=0.5.0; extra == 'docs'
Requires-Dist: mkdocs-literate-nav<1.0.0,>=0.6.0; extra == 'docs'
Requires-Dist: mkdocs-material<10.0.0,>=9.5.0; extra == 'docs'
Requires-Dist: mkdocs<2.0.0,>=1.6.0; extra == 'docs'
Requires-Dist: mkdocstrings[python]<1.0.0,>=0.27.0; extra == 'docs'
Provides-Extra: duckdb
Requires-Dist: duckdb<2.0.0,>=1.0.0; extra == 'duckdb'
Description-Content-Type: text/markdown

<p align="center">
  <img src="https://raw.githubusercontent.com/ashita-ai/tessera/main/assets/logo.png" alt="Tessera" width="300">
</p>

<h3 align="center">Data contract coordination for warehouses</h3>

<p align="center">
  <a href="https://ashita-ai.github.io/tessera">Docs</a> |
  <a href="#quick-start">Quick Start</a> |
  <a href="https://github.com/ashita-ai/tessera/issues">Issues</a>
</p>

---

**Tessera coordinates breaking changes between data producers and consumers.**

When a producer wants to drop a column, Tessera notifies affected consumers and blocks the change until they acknowledge. No more 3am pages from broken pipelines.

```
Producer: "I want to drop user_email"
    ↓
Tessera: "3 teams depend on this. Notifying them."
    ↓
Consumers: "We've migrated. Approved."
    ↓
Producer: Ships v2.0.0 safely
```

## Quick Start

```bash
# Docker (recommended)
docker compose up -d
open http://localhost:8000

# Or from source
uv sync --all-extras
docker compose up -d db  # PostgreSQL
uv run uvicorn tessera.main:app --reload
```

## Key Features

- **Schema contracts** - JSON Schema, Avro, OpenAPI, and GraphQL support
- **Breaking change detection** - Auto-detect incompatible changes
- **Consumer registration** - Track who depends on what
- **Proposal workflow** - Coordinate changes across teams
- **Multi-source imports** - dbt manifests, OpenAPI specs, GraphQL schemas, Avro registries
- **Web UI** - Visual interface for managing contracts

## Global Search

Search across teams, users, assets, and contracts:

```bash
curl "http://localhost:8000/api/v1/search?q=payments&types=assets&types=contracts&limit=5"
```

## Configuration

Webhook settings (optional):

- `WEBHOOK_URL` - Destination for webhook events
- `WEBHOOK_SECRET` - HMAC secret for webhook signatures
- `WEBHOOK_ALLOWED_DOMAINS` - Comma-separated domain allowlist (e.g. `example.com,webhooks.mycorp.com`)

## How It Works

1. **Producers** publish contracts (schema + guarantees) for their data assets
2. **Consumers** register dependencies on contracts they use
3. **Breaking changes** create proposals requiring consumer acknowledgment
4. **Non-breaking changes** auto-publish with version bumps

## Documentation

Full documentation at [ashita-ai.github.io/tessera](https://ashita-ai.github.io/tessera):

- [Quickstart Guide](https://ashita-ai.github.io/tessera/getting-started/quickstart/)
- [Python SDK](https://ashita-ai.github.io/tessera/guides/python-sdk/) | [PyPI](https://pypi.org/project/tessera-sdk/)
- [dbt Integration](https://ashita-ai.github.io/tessera/guides/dbt-integration/)
- [API Reference](https://ashita-ai.github.io/tessera/api/overview/)

## License

MIT
