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.exampletoprojects/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_BRONZEAXIOMATIC_SCHEMA_SILVERAXIOMATIC_SCHEMA_GOLDAXIOMATIC_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_apihttp_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, ormergeprimary_key: key used by merge semanticsschema_evolution_mode:auto,strict, ordiscard
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 appearstrict: freeze schema and fail on driftdiscard: 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:
mergewith a primary key provides idempotent upsert behaviourreplacegives deterministic snapshot tables on rerunappendpreserves full arrival history
Choose by resource based on analytical needs and source stability.
Operationally, ingestion stage gating also considers:
force_reload=Truealways 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 examplev0.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-publishvia OIDC
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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09f61be4e323744666cee0ec659c7fca9413e21ee4b0a1781a185f0497b5a3df
|
|
| MD5 |
f54680619003379b56b4d213ac385c09
|
|
| BLAKE2b-256 |
698b477b087856f1533d7bc060a8a2ac42d747e67e35cf415a76951ca60f75a3
|
Provenance
The following attestation bundles were made for axiomatic_engine-0.1.0.tar.gz:
Publisher:
release.yml on axiomatic-bi/axiomatic-engine
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
axiomatic_engine-0.1.0.tar.gz -
Subject digest:
09f61be4e323744666cee0ec659c7fca9413e21ee4b0a1781a185f0497b5a3df - Sigstore transparency entry: 1358023947
- Sigstore integration time:
-
Permalink:
axiomatic-bi/axiomatic-engine@5bb043b4645d3f696c632d0dcc060b03969a40ca -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/axiomatic-bi
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5bb043b4645d3f696c632d0dcc060b03969a40ca -
Trigger Event:
push
-
Statement type:
File details
Details for the file axiomatic_engine-0.1.0-py3-none-any.whl.
File metadata
- Download URL: axiomatic_engine-0.1.0-py3-none-any.whl
- Upload date:
- Size: 40.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ce1aa8e851044e9d89ea15f6ede24b7a0b880180a5aaac2441880592a4fbe4e
|
|
| MD5 |
cf5f133744ea479ed0af02c7621ff5c1
|
|
| BLAKE2b-256 |
919c70477c6209686dccc8a7020c281e7a996cff0c8d2e2778f23fb8cb111720
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
axiomatic_engine-0.1.0-py3-none-any.whl -
Subject digest:
4ce1aa8e851044e9d89ea15f6ede24b7a0b880180a5aaac2441880592a4fbe4e - Sigstore transparency entry: 1358024087
- Sigstore integration time:
-
Permalink:
axiomatic-bi/axiomatic-engine@5bb043b4645d3f696c632d0dcc060b03969a40ca -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/axiomatic-bi
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5bb043b4645d3f696c632d0dcc060b03969a40ca -
Trigger Event:
push
-
Statement type: