Skip to main content

A typed orchestration engine for configurable ingestion and transformation pipelines.

Project description

Axiomatic Engine

Axiomatic Engine orchestrates ingestion and transformation pipelines while keeping domain logic in project folders.

Quick Start

Install the package:

  • uv add axiomatic-engine

Or with pip:

  • pip install axiomatic-engine

Run a project entrypoint:

  • copy projects/fake_store/.env.example to projects/fake_store/.env
  • set required environment variables for your target warehouse and storage
  • run uv run python projects/fake_store/run_pipeline.py

This gives a working reference for a REST ingestion source and transformation flow using the engine contracts.

Contributor Quickstart

The project standardises on uv for local quality checks and packaging workflows.

  • Install hooks once:
    • uv run --group dev pre-commit install
  • Run hooks across the repository:
    • uv run --group dev pre-commit run --all-files
  • Run the full package quality gate:
    • uv run --group dev --group test python scripts/quality_gate.py

Runtime Configuration Contract

The engine reads typed runtime settings from AXIOMATIC_* environment variables, with project entrypoints able to override values via CLI flags.

Schema layers are configured independently:

  • AXIOMATIC_SCHEMA_BRONZE
  • AXIOMATIC_SCHEMA_SILVER
  • AXIOMATIC_SCHEMA_GOLD
  • AXIOMATIC_SCHEMA_ANALYTICS

This keeps medallion naming explicit and consistent across ingestion and dbt model targets.

Source Routing Contract

Source implementations now expose specific source kinds:

  • rest_api
  • http_file

The standard project path is typed source definitions routed through axiomatic_engine.sources.factory via build_source(...).

Direct source constructors remain supported for advanced project-specific customisation.

Ingestion Resource Load Hints

Sources can provide optional per-resource hints through ResourceLoadHints:

  • write_disposition: append, replace, or merge
  • primary_key: key used by merge semantics
  • schema_evolution_mode: auto, strict, or discard

These hints are source-agnostic contracts and are mapped by the source bridge when building dlt.resource(...).

Schema Evolution Policy

The engine supports a hybrid schema evolution policy:

  • auto: evolve bronze schema when new fields appear
  • strict: freeze schema and fail on drift
  • discard: discard unexpected values while keeping rows

Projects can set this per resource so strictness can vary by endpoint.

Rerun Semantics

Replay behaviour depends on per-resource load hints:

  • merge with a primary key provides idempotent upsert behaviour
  • replace gives deterministic snapshot tables on rerun
  • append preserves full arrival history

Choose by resource based on analytical needs and source stability.

Operationally, ingestion stage gating also considers:

  • force_reload=True always triggers ingestion
  • otherwise storage-cache heuristics decide whether ingestion should run

Security Defaults

Current security defaults prioritise secret-safe runtime surfaces:

  • dbt command environments are filtered to an allowlist instead of forwarding the full process environment
  • token-like values in dbt stderr are redacted before being returned in transformation failure details
  • ingestion logs avoid dumping raw loader result objects

Package Quality Gate

The package quality gate is standardised on uv and runs the same checks you should later enforce in CI:

  • pre-commit checks across the repository
  • unit tests
  • distribution build (wheel + source distribution)
  • distribution metadata checks
  • wheel content validation for src-layout packaging boundaries

Run it with both dependency groups enabled:

uv run --group dev --group test python scripts/quality_gate.py

Pre-commit Checks

Use pre-commit for fast local feedback before commits.

Install the hooks:

uv run --group dev pre-commit install

Run hooks on all files:

uv run --group dev pre-commit run --all-files

Release Publishing

Release publishing is handled by .github/workflows/release.yml.

  • Trigger: push a tag matching v* (for example v0.1.1)
  • Required PyPI setup: configure a Trusted Publisher for this GitHub repository
  • Workflow behaviour:
    • runs the same quality gate command used locally and in CI
    • builds release distributions
    • uploads dist/* as workflow artefacts
    • publishes with pypa/gh-action-pypi-publish via OIDC

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

axiomatic_engine-0.1.0.tar.gz (22.6 kB view details)

Uploaded Source

Built Distribution

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

axiomatic_engine-0.1.0-py3-none-any.whl (40.8 kB view details)

Uploaded Python 3

File details

Details for the file axiomatic_engine-0.1.0.tar.gz.

File metadata

  • Download URL: axiomatic_engine-0.1.0.tar.gz
  • Upload date:
  • Size: 22.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for axiomatic_engine-0.1.0.tar.gz
Algorithm Hash digest
SHA256 09f61be4e323744666cee0ec659c7fca9413e21ee4b0a1781a185f0497b5a3df
MD5 f54680619003379b56b4d213ac385c09
BLAKE2b-256 698b477b087856f1533d7bc060a8a2ac42d747e67e35cf415a76951ca60f75a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for axiomatic_engine-0.1.0.tar.gz:

Publisher: release.yml on axiomatic-bi/axiomatic-engine

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file axiomatic_engine-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for axiomatic_engine-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4ce1aa8e851044e9d89ea15f6ede24b7a0b880180a5aaac2441880592a4fbe4e
MD5 cf5f133744ea479ed0af02c7621ff5c1
BLAKE2b-256 919c70477c6209686dccc8a7020c281e7a996cff0c8d2e2778f23fb8cb111720

See more details on using hashes here.

Provenance

The following attestation bundles were made for axiomatic_engine-0.1.0-py3-none-any.whl:

Publisher: release.yml on axiomatic-bi/axiomatic-engine

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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