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.8.tar.gz
(175.0 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.8-py3-none-any.whl
(237.1 kB
view details)
File details
Details for the file phlo-0.7.8.tar.gz.
File metadata
- Download URL: phlo-0.7.8.tar.gz
- Upload date:
- Size: 175.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7dd558a98e9991a5af61ef349a4fe1dd828982c1345ad1b100508bf194bf81aa
|
|
| MD5 |
19ffa1b320d8f5c3ef39ed3c4aea758b
|
|
| BLAKE2b-256 |
768262818bf9632eebd723b5006994106e7af7865662af4cc6251821f23beb85
|
File details
Details for the file phlo-0.7.8-py3-none-any.whl.
File metadata
- Download URL: phlo-0.7.8-py3-none-any.whl
- Upload date:
- Size: 237.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f62885a7126921d07670054598be2fe1fe2afe39c1f69d5b1a4ea4b898b57d8
|
|
| MD5 |
71ad88eef1d9d67b3b4e4feb25e76839
|
|
| BLAKE2b-256 |
7d1b3b4d34e898dae7136f13150a03eaa7caf5d149935119aaeb0bba0348ff8a
|