A small, async-friendly dependency-injection helper for Python: declare
function parameters as dependencies and have them resolved automatically.
Provides
Requires
License
MIT
Changelog
* Wed Nov 04 2026 Martin Pluskal <mpluskal@suse.com>
- Update to 0.4.2:
* Restore the shared scope when dependency cleanup fails, so
a failing exit or cancellation no longer leaks a closed
scope into later calls
* Annotate contextmanager helpers as Generator instead of
Iterator (type-only, no runtime change)
* Sat Oct 10 2026 Martin Pluskal <mpluskal@suse.com>
- Update to 0.4.1:
* No functional change: only the license metadata in
pyproject.toml is now explicit (same MIT license)
* Mon Aug 10 2026 Martin Pluskal <mpluskal@suse.com>
- Update to 0.4.0:
* Add a call-scoped frame mechanism in a new uncalled_for.frames
module: it maps the outer function's parameter names to
caller-supplied values or to unresolved dependencies, memoizes
both results and failures, and detects reference cycles
* Add CallArgument("name"), resolving to the value the outer
function received for that parameter - whether the caller
passed it or another dependency on the signature produced it.
It works both as a factory parameter default (the bare form
takes the parameter's own name) and as a keyword binding in
Depends(factory, **bindings), which wires up an ordinary
function without changing it. Previously a dependency factory
could only receive values that were themselves dependencies,
and making an outer call value a dependency hid it from the
outer signature
* New public API: CallArgument, CycleError, Frame, current_frame
and frame_scope
* resolved_dependencies now routes its resolution loop through
the frame, and external resolvers can enter frame_scope()
themselves
* Existing resolution paths are deliberately unchanged: a bare
Depends(f) keeps its cache key exactly f, _resolve_parameters
keeps its signature, and the stack ContextVar moved into
frames.py behind an unchanged _Depends.stack alias
* Fix five errors reported by a bare pyright run, four of which
predate this release
- Run the upstream test suite during build instead of only a bare
import smoke test:
* New BuildRequires: pytest >= 9.0.2, pytest-asyncio >= 0.24.0
* Upstream's coverage and per-test-timeout pytest options are
CI-only gates and are not applied
- Package the LICENSE file
* Thu Jun 18 2026 Martin Pluskal <mpluskal@suse.com>
- Initial package (version 0.3.2)
Files
/usr/lib/python3.13/site-packages/uncalled_for
/usr/lib/python3.13/site-packages/uncalled_for-0.4.2.dist-info
/usr/lib/python3.13/site-packages/uncalled_for-0.4.2.dist-info/INSTALLER
/usr/lib/python3.13/site-packages/uncalled_for-0.4.2.dist-info/METADATA
/usr/lib/python3.13/site-packages/uncalled_for-0.4.2.dist-info/RECORD
/usr/lib/python3.13/site-packages/uncalled_for-0.4.2.dist-info/REQUESTED
/usr/lib/python3.13/site-packages/uncalled_for-0.4.2.dist-info/WHEEL
/usr/lib/python3.13/site-packages/uncalled_for-0.4.2.dist-info/licenses
/usr/lib/python3.13/site-packages/uncalled_for-0.4.2.dist-info/licenses/LICENSE
/usr/lib/python3.13/site-packages/uncalled_for/__init__.py
/usr/lib/python3.13/site-packages/uncalled_for/__pycache__
/usr/lib/python3.13/site-packages/uncalled_for/__pycache__/__init__.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/uncalled_for/__pycache__/__init__.cpython-313.pyc
/usr/lib/python3.13/site-packages/uncalled_for/__pycache__/annotations.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/uncalled_for/__pycache__/annotations.cpython-313.pyc
/usr/lib/python3.13/site-packages/uncalled_for/__pycache__/base.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/uncalled_for/__pycache__/base.cpython-313.pyc
/usr/lib/python3.13/site-packages/uncalled_for/__pycache__/frames.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/uncalled_for/__pycache__/frames.cpython-313.pyc
/usr/lib/python3.13/site-packages/uncalled_for/__pycache__/functional.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/uncalled_for/__pycache__/functional.cpython-313.pyc
/usr/lib/python3.13/site-packages/uncalled_for/__pycache__/introspection.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/uncalled_for/__pycache__/introspection.cpython-313.pyc
/usr/lib/python3.13/site-packages/uncalled_for/__pycache__/resolution.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/uncalled_for/__pycache__/resolution.cpython-313.pyc
/usr/lib/python3.13/site-packages/uncalled_for/__pycache__/shared.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/uncalled_for/__pycache__/shared.cpython-313