uncalled-for
Async dependency injection for Python functions
Install
uncalled-for on PyPI
pip
pip install uncalled-foruv
uv add uncalled-forpoetry
poetry add uncalled-forPackage facts
| License | # Released under MIT License Copyright (c) 2025 Chris Guidry. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the… (full text in the JSON record) (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 3 days since the last release |
| Last repo commit | |
| First released | |
| Popularity | one of the top 1,000 most-downloaded packages on PyPI (30-day window, as of 2026-08-13) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-13) |
Evidence: uncalled_for-0.4.0-py3-none-any.whl
About uncalled-for
from the package's own PyPI description — quoted content, verbatim
uncalled-for
Async dependency injection for Python functions.
Declare what your function needs as parameter defaults. They show up resolved when the function runs. No ceremony, no container, no configuration.
from uncalled_for import Depends
async def get_db():
db = await connect()
try:
yield db
finally:
await db.close()
async def handle_request(db: Connection = Depends(get_db)):
await db.execute("SELECT 1")
Features
- Zero dependencies — standard library only
- Async-native — built on
AsyncExitStackandContextVar - Context manager lifecycle — sync and async generators get proper cleanup
- Nested dependencies — dependencies can depend on other dependencies
- Caching — each dependency resolves once per call, even if referenced multiple times
- Call arguments — a factory can reference the arguments of the call it serves
Call arguments
A factory sometimes needs a value from the call itself, not from another
dependency. CallArgument declares that reference:
```python from uncalled_for import CallArgument, Depends
def load_user(user_id: str = CallArgument()) -> User: return...
AI interpretation — verify before relying
AI-generated interpretation of the package facts above; every digit, version, license, or vulnerability id it cites is grounded in the facts already shown on this page
Async dependency injection for Python functions using parameter defaults, with zero external dependencies and built-in support for context manager lifecycles and nested dependency resolution.
Actively maintained with a recent release (3 days old) and zero runtime dependencies, making installation straightforward. Supports Python 3.10–3.14 and carries Alpha status, indicating early-stage maturity.
MIT license permits unrestricted use, modification, and distribution in both open and closed projects, with no copyleft obligations.
Usage
pip install uncalled-for
from uncalled_for import Depends
async def get_db():
db = await connect()
try:
yield db
finally:
await db.close()
async def handle_request(db = Depends(get_db)):
await db.execute("SELECT 1")
Requires Python 3.10 or later; async/await syntax and an async runtime are necessary to use the package.
Verdict: A lightweight, actively maintained async dependency injection library with zero external dependencies and permissive MIT licensing. Best suited for async Python projects needing declarative dependency resolution; Alpha status and small community (15 stars) suggest evaluating for production use with caution.
Needs verification
- Real-world performance characteristics and scalability limits under high-concurrency workloads
- Maturity and stability guarantees beyond Alpha classification
- Community adoption rate and long-term maintenance commitment
Similar packages
permissive · top 1,000 on PyPI
referencingpermissive · top 100 on PyPI
kombupermissive · top 1,000 on PyPI
redispermissive · top 1,000 on PyPI
greenletpermissive · top 100 on PyPI
MarkupSafepermissive · top 100 on PyPI
aiosqlitepermissive · top 1,000 on PyPI
qrcodepermissive · top 1,000 on PyPI
factory-boypermissive · top 1,000 on PyPI
grpc-interceptorpermissive · top 1,000 on PyPI