Skip to main content

Lakehouse platform

Project description

Phlo

Modern data lakehouse platform. Plugin-driven. Storage-agnostic.

CI PyPI Python 3.11+

Features

  • Decorator-driven development@phlo.ingestion and @phlo.quality replace 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

  • uv — Python package manager
  • Docker — Container runtime

Quick Start

# Install with default plugins
uv pip install phlo[defaults]

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

# Generate service configuration, start services, and materialize
phlo services init
phlo services start
phlo materialize --select "dlt_glucose_entries+"

Documentation

Full documentation source lives under docs/index.md. The Fumadocs site now builds from docs-app/ against that same Markdown tree:

npm --prefix docs-app install
npm --prefix docs-app run dev

The docs app serves locally on http://localhost:3101.

Primary entry points:

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


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.8.1b2.tar.gz (242.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

phlo-0.8.1b2-py3-none-any.whl (327.2 kB view details)

Uploaded Python 3

File details

Details for the file phlo-0.8.1b2.tar.gz.

File metadata

  • Download URL: phlo-0.8.1b2.tar.gz
  • Upload date:
  • Size: 242.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","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

Hashes for phlo-0.8.1b2.tar.gz
Algorithm Hash digest
SHA256 9053876f4278785ef90f234668cab05aaf4c0f9e67fbd5faa360fbd967a6b65c
MD5 83d8feaff4eb0093a304d2a174da8e0d
BLAKE2b-256 1ec7de74ac97c75a5bc148f16c6e6c0a1d19240e04997b2f68b0794039b63236

See more details on using hashes here.

File details

Details for the file phlo-0.8.1b2-py3-none-any.whl.

File metadata

  • Download URL: phlo-0.8.1b2-py3-none-any.whl
  • Upload date:
  • Size: 327.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","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

Hashes for phlo-0.8.1b2-py3-none-any.whl
Algorithm Hash digest
SHA256 8a9b577ef3e3aede535bfb64de3d2e1a6135e2535173fb52d944d69c97f944b9
MD5 fbc7a28b8d9baf40cbc3759121862304
BLAKE2b-256 caa80d9c656188fb846f3538d2187cef17167838c9e2447fb86aee65e41a8e81

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page