Standardizing models
Project description
bollhav
Model definition framework for data pipeline targets.
Implementations
Installation
pip install bollhav
Model
from bollhav import Model, ModelType, WriteMode, Database, PostgresColumn, PostgresType
model = Model(
name="orders",
source_entity="raw.orders",
table="orders",
schema="public",
database=Database.POSTGRES,
columns=[
PostgresColumn(name="id", data_type=PostgresType.BIGINT, primary_key=True, nullable=False, order=0),
PostgresColumn(name="created_at", data_type=PostgresType.TIMESTAMPTZ, nullable=False, order=1),
PostgresColumn(name="email", data_type=PostgresType.TEXT, nullable=True, order=2, sensitive=True),
],
write_mode=WriteMode.APPEND,
cron="0 3 * * *",
partitioned_by=["created_at"],
)
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
name |
str |
required | Unique identifier for the model |
source_entity |
str |
required | Source table or view to read from |
table |
str |
"" |
Destination table name |
schema |
str |
"" |
Destination schema name |
database |
Database |
None |
Target database. Required if columns is set |
columns |
list[PostgresColumn | ParquetColumn] |
None |
Column definitions. Required if database is set |
model_type |
ModelType |
TABLE |
TABLE or VIEW |
write_mode |
WriteMode |
APPEND |
How to write data. VIEW requires ModelType.VIEW |
tags |
list[str] |
None |
Labels for filtering |
cron |
str |
None |
Cron expression. Automatically infers batch_size |
enabled |
bool |
True |
Whether the model is active |
debug |
bool |
False |
Enables debug mode |
description |
str |
None |
Human-readable description |
source_dsn |
str |
None |
DSN for the source connection |
source_query |
str |
None |
Optional query to use instead of source_entity |
partitioned_by |
list[str] |
None |
Column names to partition by. Must exist in columns |
**kwargs |
Extra metadata. Callable values are resolved with non-callable kwargs as arguments |
Computed attributes
| Attribute | Description |
|---|---|
batch_size |
Inferred from cron if set, otherwise None |
sensitive |
True if any column has sensitive=True |
Databases
from bollhav import Database
Database.POSTGRES
Database.PARQUET
Write modes
from bollhav import WriteMode
WriteMode.APPEND
WriteMode.VIEW # Must be used with ModelType.VIEW
Extra kwargs
Non-reserved keyword arguments are stored in model.extra. Callable values are resolved at init time using the non-callable kwargs as arguments.
model = Model(
name="orders",
source_entity="raw.orders",
static="production",
env=lambda static: f"env={static}",
)
model.extra # {"static": "production", "env": "env=production"}
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
bollhav-1.2.0.tar.gz
(9.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
File details
Details for the file bollhav-1.2.0.tar.gz.
File metadata
- Download URL: bollhav-1.2.0.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ba88005e46981861be57a1a26e16bc8d0062d1efd227a407937cd3040f8b613
|
|
| MD5 |
6d2632e8680917365ad16339e30e1dd8
|
|
| BLAKE2b-256 |
5b9e175ba4ace190b57278fe2289203370644667d7e5ff9f4848fd86e98d8aeb
|
File details
Details for the file bollhav-1.2.0-py3-none-any.whl.
File metadata
- Download URL: bollhav-1.2.0-py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c236fc2c999b2943c3441dc473b15ac12423c814af4ebdc7df78b16ab126d092
|
|
| MD5 |
714d3885ed92c3ce4008d3b6ef06ea5a
|
|
| BLAKE2b-256 |
290436d9d0408490830b01e793c4b321b2dbba90a4a45b754757e5af1f239ff2
|