Repository navigation
Frequently Asked Questions
Its consumers are metalayerlab's own repositories, and a GitHub tag is enough for them (design 0001). Install it with uv add "interpose @ git+https://github.com/metalayerlab/interpose@vX.Y.Z". See Quick Start.
Not yet. Dependabot's uv support drops the git URL of a name @ git+https://...@vX.Y.Z dependency and looks the bare name up on PyPI, so it never proposes a new tag (dependabot-core#16129). dependabot-core#16151, still open, would update a [tool.uv.sources] entry with tag = "...". Until then, bump the tag by hand or with a scheduled workflow. Design 0001's open question 4 has the details.
The old copy called int(), which truncates 0.5 to 0 without a word. interpose refuses any value that isn't the declared type. See Architecture Internals.
In the project's load_config, after SETTINGS.resolve(), raising ConfigError. check= is for rules about one value. See Quick Start.
So it can't be logged or formatted as its value by accident. A str subclass would pass straight into f-strings and log calls. See Security.
interpose | Shared mechanism for metalayerlab interceptors — a policy-configurable async middleware pipeline, the layered settings loader, Secret values, and Prometheus text exposition.
GitHub • Releases • Issues • Changelog • Contributing
This wiki is generated from docs/wiki/ on every push to main: edits made here are overwritten. Change it with a pull request.
- 🧅 One middleware loop; fail open or closed is policy, per project and per middleware
- 🥞 One lookup order:
_FILE> environment > YAML > default - 🧱 Strict types: no silent
0for a YAML0.5 - 🧭 Where each value came from, for every setting
- 🔒
Secret: masked in logs, reprs and errors - 📈 Prometheus text with labels from declared value sets