MIXINv2 ======= ``mixinv2`` is a dependency injection framework with pytest-fixture syntax, plus a configuration language for declarative programming. The package has two parts: The **Python decorator API** (``@scope``, ``@extern``, ``@resource``) gives you dependency injection with pytest-fixture syntax — declare what a function needs and the framework wires it up. Each module owns only its own concern; cross- cutting behaviour layers on via ``@patch`` without touching the original code. App-scoped singletons and per-request resources coexist naturally. See :doc:`tutorial`. **MIXINv2** is a configuration language written in ``.mixin.yaml`` / ``.mixin.json`` / ``.mixin.toml`` files. SQL queries, format strings, URL patterns — all the business decisions that clutter Python code — live in MIXINv2 instead, where independent modules deep-merge by name without glue code — immune to the `Expression Problem `_. If you have ever struggled to mock a service that tangles I/O with business logic, or dreaded porting an application from sync to async, or needed to swap between providers without rewriting half your Python — MIXINv2 can help. Despite looking like a configuration format, it is also a statically typed modern programming language based on `inheritance-calculus `_, which is provably more expressive than λ-calculus, so it can express your entire business logic — not just configuration. Move that logic into MIXINv2 and Python reduces to thin I/O adapters that are trivial to mock or replace. The same MIXINv2 code runs against any set of adapters and the business logic never changes, even when you port your synchronous program to async — the problem known as `function color `_. See :doc:`mixinv2-tutorial`. :doc:`installation` Install the package from PyPI. :doc:`tutorial` Getting started with the Python decorator API — build a web application step by step using ``@scope``, ``@extern``, and ``@resource``. :doc:`mixinv2-tutorial` Getting started with MIXINv2 — rewrite the same application in ``.mixin.yaml``, separating business logic from I/O, then switch the underlying framework to asyncio without changing your code. :doc:`specification` Full language specification for MIXINv2. `API Reference `__ Python API reference (auto-generated). .. toctree:: :hidden: installation tutorial mixinv2-tutorial specification API Reference