Skip to main content

Standardizing models

Project description

bollhav

Model definition framework for data pipeline targets.

Implementations

Postgres
Parquet


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

Read more here

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

This version

1.2.2

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.2.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

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

bollhav-1.2.2-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file bollhav-1.2.2.tar.gz.

File metadata

  • Download URL: bollhav-1.2.2.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for bollhav-1.2.2.tar.gz
Algorithm Hash digest
SHA256 bddd378ebfa072157006134aae878c0ab4a2fabd9a737dd3618a073e02e0cdd5
MD5 5af3c923fdb31d140317cf2b2da26702
BLAKE2b-256 3ac2a84d9d9618311f1f5d7720df50d83b3bc4dceab29ea5581023363f78245b

See more details on using hashes here.

File details

Details for the file bollhav-1.2.2-py3-none-any.whl.

File metadata

  • Download URL: bollhav-1.2.2-py3-none-any.whl
  • Upload date:
  • Size: 8.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for bollhav-1.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5e1c29abe2ae3140554cdcf3361193cf3211ac3a12f1457fc454a0a00037e047
MD5 1e8ef87e51e05cd00cc9c99042177315
BLAKE2b-256 7fd3f6aba20ba64b12a945fb6034a78a62a23c9e665b9b167eb0e5e3fbae0a55

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