Lakehouse platform
Project description
Modern data lakehouse platform. Plugin-driven. Storage-agnostic.
Features
- Decorator-driven development —
@phlo.ingestionand@phlo.qualityreplace hundreds of lines of boilerplate - Write-Audit-Publish pattern — Git-like branching with automatic quality gates and promotion
- Type-safe data quality — Pandera schemas enforce validation at ingestion time
- Plugin architecture — 12 plugin types: sources, quality, ingestion, transforms, services, hooks, catalogs, assets, resources, orchestrators, and CLI commands
- Storage-agnostic — Iceberg, Delta, or bring-your-own via table-format plugins
- Observatory UI — Web-based data exploration, lineage, and monitoring
- Observability — OpenTelemetry traces, metrics, and logs via
phlo-otel; Grafana/Prometheus/Loki stack - Production-ready — Auto-publishing, configurable merge strategies, freshness policies, data migrations
What It Looks Like
import phlo
@phlo.ingestion(
table_name="events",
unique_key="id",
validation_schema=EventSchema,
group="api",
cron="0 */1 * * *",
freshness_hours=(1, 24),
)
def api_events(partition_date: str):
return rest_api(...) # Any DLT source
@phlo.quality(
table="bronze.events",
checks=[
NullCheck(columns=["id", "timestamp"]),
RangeCheck(column="value", min_value=0, max_value=100),
UniqueCheck(columns=["id"]),
FreshnessCheck(column="timestamp", max_age_hours=24),
],
)
def events_quality():
pass
Prerequisites
Quick Start
# Install with default plugins
uv pip install phlo[defaults]
# Initialize a new project
phlo init my-project
cd my-project
# Start services and materialize
phlo services start
phlo materialize --select "dlt_glucose_entries+"
Documentation
Full documentation at docs/index.md:
- Installation Guide
- Quickstart Guide
- Core Concepts
- Developer Guide
- Plugin Development
- Workflow Development
- CLI Reference
- Configuration Reference
- Operations Guide
Development
uv pip install -e . # Install Phlo in dev mode
make check # Lint, format, typecheck, and test (parallel)
# Services
phlo services start # Start infrastructure
phlo services stop # Stop services
phlo services logs -f # View logs
# Individual gates
uv run ruff check . # Lint
uv run ruff format . # Format
uv run ty check # Typecheck
uv run pytest # Test
Architecture
Phlo is a monorepo of composable packages — install only what you need:
| Layer | Packages |
|---|---|
| Orchestration | phlo-dagster |
| Ingestion | phlo-dlt |
| Quality | phlo-pandera |
| Transforms | phlo-dbt |
| Table formats | phlo-iceberg, phlo-delta, phlo-clickhouse |
| Infrastructure | phlo-traefik, phlo-postgres |
| Storage | phlo-minio |
| Catalog | phlo-nessie, phlo-openmetadata |
| Query | phlo-trino |
| Observability | phlo-otel, phlo-clickstack, phlo-grafana, phlo-prometheus, phlo-loki, phlo-alloy |
| UI | phlo-observatory, phlo-pgweb, phlo-superset |
| API | phlo-api, phlo-hasura, phlo-postgrest |
| Dev/Test | phlo-testing |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
phlo-0.7.2.tar.gz
(173.6 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
phlo-0.7.2-py3-none-any.whl
(235.4 kB
view details)
File details
Details for the file phlo-0.7.2.tar.gz.
File metadata
- Download URL: phlo-0.7.2.tar.gz
- Upload date:
- Size: 173.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2675df33247fc25265a04d83f158bc1ef49f6cd4d2cf120c72eeec580c93cb71
|
|
| MD5 |
327a3aa09a409bca474809cad01fb5e1
|
|
| BLAKE2b-256 |
eeee0c2e86c4a5b3b8213693e325ae64f733e47363b0129dba32623d5f8367b2
|
File details
Details for the file phlo-0.7.2-py3-none-any.whl.
File metadata
- Download URL: phlo-0.7.2-py3-none-any.whl
- Upload date:
- Size: 235.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af905113d77928073e78865ab6f52cb3a23cd52bdc75f5e684bafb8cff4d4f49
|
|
| MD5 |
295e90154980cdd7ed8b8dac32d6a0c2
|
|
| BLAKE2b-256 |
3c0ba874d1a9103479ca4a32affd4249e7b92308240e095164c9205f43ea417d
|