dfe-schemas
The one place a DFE deployment's ClickHouse databases, tables, views, roles and grants and its Kafka bootstrap topics are defined. dfe-engine reads this package at boot and applies what is missing, so nothing else in a DFE deployment creates any of them.
It ships the schema trees as package data, with the renderer that turns them into ClickHouse DDL for the platform a connection reaches and into topic specs for Kafka. load_manifest(root=...) renders a tree of your own instead.
What it gives you
manifest.yaml: every object a deployment creates, in dependency order. A new table is an entry there plus its definition file, with no engine release.- One table shape on every ClickHouse: the argumentless
Replicated<variant>engine with noON CLUSTER, which ClickHouse Cloud rewrites toSharedMergeTree. PlatformProbe, which tells ClickHouse Cloud from self-hosted on a live connection, and whoserequire_replication()refuses a self-hosted server with no Keeper.- A per-object checksum, the same on every platform, so an applier can tell what changed.
- Kafka bootstrap topics with their replication clamped to the deployment's broker count.
- The ClickHouse role and grant catalogue, and the declared ClickHouse settings defaults every DFE deployment applies.
- The registries of table engines, column types and default field maps that dfe-engine validates source definitions against.
Example
uv add dfe-schemas
from dfe_schemas.clickhouse import Platform
from dfe_schemas.manifest import load_manifest
from dfe_schemas.render import Renderer
manifest = load_manifest()
renderer = Renderer(manifest, platform=Platform.SELF_HOSTED, data_database="dfe")
first = renderer.render(manifest.objects[0])
print(first.id, first.checksum[:12])
for statement in first.statements:
print(statement)
db.data 8a39e4f8fa91
CREATE DATABASE IF NOT EXISTS dfe ON CLUSTER '{cluster}'
ENGINE = Replicated('/clickhouse/databases/dfe', '{shard}', '{replica}')
Platform.CLOUD renders the same object for ClickHouse Cloud. Against a live server, PlatformProbe(client).platform names it for you.
Docs and source are at https://github.com/hyperi-io/dfe-schemas. Requires Python 3.14 or later. Licensed BUSL-1.1: https://github.com/hyperi-io/dfe-schemas/blob/main/LICENSE.
Metadata
Release files for dfe-schemas 0.2.22
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| dfe_schemas-0.2.22.tar.gz | 1.3 MB | Without provenance | Details for dfe_schemas-0.2.22.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| dfe_schemas-0.2.22-py3-none-any.whl | Python 3 | none | any | Details for dfe_schemas-0.2.22-py3-none-any.whl |
Total release size: 4.1 MB
Release files / dfe_schemas-0.2.22.tar.gz
| Download URL | dfe_schemas-0.2.22.tar.gz |
|---|---|
| Size | 1.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dd93806ed3a34ab71601e775c72585c810af1c999aea7a981a85fb6ff9cb25bd
|
|
BLAKE2b-256 checksum How to use checksums |
8653f508fa8d07409535d5434b17b26f59a18344161cc2980f7c3c6a7a039550
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","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}
|
Release files / dfe_schemas-0.2.22-py3-none-any.whl
| Download URL | dfe_schemas-0.2.22-py3-none-any.whl |
|---|---|
| Size | 2.8 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
df764d74ac1e34a5a0264c7374c58ee2aadbbc0142ea735e1f8f4d1740fd8f1e
|
|
BLAKE2b-256 checksum How to use checksums |
2534111ddb2648397c8c8d1dd81d5b6ec32bef7e998e99c292a724b431d92f9e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","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}
|
Security for dfe-schemas 0.2.22
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.