Metadata-Version: 2.4
Name: phlo
Version: 0.1.0a2
Summary: Lakehouse platform
Requires-Python: >=3.11
Requires-Dist: asyncpg>=0.30.0
Requires-Dist: click>=8.0
Requires-Dist: dagster
Requires-Dist: dagster-webserver
Requires-Dist: duckdb>=0.9.0
Requires-Dist: fastapi>=0.127.0
Requires-Dist: httpx>=0.28.1
Requires-Dist: pandas
Requires-Dist: pandera
Requires-Dist: psycopg2-binary
Requires-Dist: pydantic-settings
Requires-Dist: python-ulid>=2.0.0
Requires-Dist: requests
Requires-Dist: rich>=13.0
Provides-Extra: core-services
Requires-Dist: phlo-dagster>=0.1.0; extra == 'core-services'
Requires-Dist: phlo-minio>=0.1.0; extra == 'core-services'
Requires-Dist: phlo-nessie>=0.1.0; extra == 'core-services'
Requires-Dist: phlo-postgres>=0.1.0; extra == 'core-services'
Requires-Dist: phlo-trino>=0.1.0; extra == 'core-services'
Provides-Extra: defaults
Requires-Dist: phlo-core-plugins>=0.1.0; extra == 'defaults'
Requires-Dist: phlo-dagster>=0.1.0; extra == 'defaults'
Requires-Dist: phlo-dbt>=0.1.0; extra == 'defaults'
Requires-Dist: phlo-dlt>=0.1.0; extra == 'defaults'
Requires-Dist: phlo-iceberg>=0.1.0; extra == 'defaults'
Requires-Dist: phlo-minio>=0.1.0; extra == 'defaults'
Requires-Dist: phlo-nessie>=0.1.0; extra == 'defaults'
Requires-Dist: phlo-postgres>=0.1.0; extra == 'defaults'
Requires-Dist: phlo-trino>=0.1.0; extra == 'defaults'
Provides-Extra: openmetadata
Requires-Dist: phlo-openmetadata>=0.1.0; extra == 'openmetadata'
Description-Content-Type: text/markdown

<p align="center">
  <img src="docs/assets/phlo.png" alt="Phlo" width="400">
</p>

<p align="center">
  <strong>Modern data lakehouse platform built on Dagster, DLT, Iceberg, Nessie, and dbt.</strong>
</p>

<p align="center">
  <a href="https://github.com/iamgp/phlo/actions/workflows/ci.yml"><img src="https://github.com/iamgp/phlo/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
  <a href="https://pypi.org/project/phlo/"><img src="https://img.shields.io/pypi/v/phlo" alt="PyPI"></a>
  <a href="https://pypi.org/project/phlo/"><img src="https://img.shields.io/pypi/pyversions/phlo" alt="Python"></a>
</p>

## Features

- **Write-Audit-Publish pattern** - Branch isolation with automatic promotion
- **@phlo_ingestion decorator** - 74% less boilerplate for data ingestion
- **Configurable merge strategies** - Append-only or upsert with deduplication (first/last/hash)
- **@phlo_quality decorator** - Declarative quality checks
- **Auto-publishing** - Marts automatically published to Postgres for BI
- **CLI tools** - `phlo services`, `phlo materialize`, `phlo create-workflow`
- **Infrastructure config** - Multi-project support with phlo.yaml

## Quick Start

```bash
# Install with uv
uv add phlo

# Or with pip
pip install phlo

# Initialize a new project
phlo init my-project
cd my-project

# Start services and run
phlo services start
phlo materialize --select "dlt_glucose_entries+"
```

## Documentation

Full documentation at [docs/index.md](docs/index.md):

- [Installation Guide](docs/getting-started/installation.md)
- [Quickstart Guide](docs/getting-started/quickstart.md)
- [Core Concepts](docs/getting-started/core-concepts.md)
- [Developer Guide](docs/guides/developer-guide.md)
- [CLI Reference](docs/reference/cli-reference.md)
- [Configuration Reference](docs/reference/configuration-reference.md)
- [Operations Guide](docs/operations/operations-guide.md)
- [Blog Series](docs/blog/README.md) - 13-part deep dive

## Development

```bash
# Services
phlo services start    # Start all services
phlo services stop     # Stop services
phlo services logs -f  # View logs

# Development
uv pip install -e .    # Install Phlo
ruff check src/        # Lint
ruff format src/       # Format
basedpyright src/      # Type check
phlo test              # Run tests
```
