Skip to content

Frequently Asked Questions

github-actions[bot] edited this page Nov 2, 2026 · 1 revision

Frequently Asked Questions

Why isn't interpose on PyPI?

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.

Does Dependabot update interpose?

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.

Why does a YAML 0.5 fail for an int setting, when my project's old config.py took it?

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.

Where do rules between settings go?

In the project's load_config, after SETTINGS.resolve(), raising ConfigError. check= is for rules about one value. See Quick Start.

Why isn't Secret a str?

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

GitHub • Releases


📚 Getting Started

📖 Core Concepts

🔒 Security

🆘 Help & Support

🧑‍💻 For Developers


🔑 Key Features

  • 🧅 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 0 for a YAML 0.5
  • 🧭 Where each value came from, for every setting
  • 🔒 Secret: masked in logs, reprs and errors
  • 📈 Prometheus text with labels from declared value sets

Clone this wiki locally