$npx skillfedfor your agent

uncalled-for

Async dependency injection for Python functions

With conditionsPyPI Released Aug 202676.6M downloads / mopermissive licensePure Python

Decision gist · record as of 2026-08-14

pure-Python wheel — uncalled_for-0.4.0-py3-none-any.whl
v0.4.0 · released 2026-08-10 · Python >=3.10

Yes, if you write async Python and want lightweight dependency injection without a framework. Zero runtime dependencies and active maintenance make it low-risk. Alpha status means the API may shift before 1.0, so pin the version or monitor releases. Not suitable for sync-only codebases—this is async-native by design.AI-flagged interpretation of the facts on this page — verify before relying

Before you install

  • Requires Python 3.10 or later; async/await syntax mandatory.
  • Active maintenance with a recent release (4 days old).
  • Zero runtime dependencies keeps installation friction minimal and attack surface small.

License · maintenance · safety

permissive license (permissive) — MIT license permits unrestricted use, modification, and distribution in both open and closed projects with minimal obligations—only attribution and license inclusion required.

last release 2026-08-10 (4 days) · last repo commit 2026-08-10 · 15 stars

0 known vulnerabilities (OSV.dev, 2026-08-14) · 76,554,634 downloads/mo, #445 on PyPI

Verify before relying

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")
  • Performance characteristics under high concurrency or deeply nested dependency graphs.
  • Real-world adoption patterns and ecosystem integration (frameworks, testing libraries).
  • Stability guarantees given Alpha classification—breaking changes possible before 1.0.
Same gist for agents: .md · .json

What it is and what it does

uncalled-for is an async dependency injection library that lets you declare function dependencies as parameter defaults, resolving them automatically at call time without a separate container or configuration step. It uses Python's standard library (AsyncExitStack and ContextVar) to manage async context lifetimes, handle cleanup, and support nested dependencies that can reference each other or the outer function's arguments.

The library is designed for async-first Python code—web frameworks, async utilities, and other async-heavy applications. Dependencies can be generators (sync or async) that yield a value and clean up afterward, or plain callables. Each dependency resolves once per function call even if referenced multiple times, and you can bind factory parameters to call arguments or other dependencies using CallArgument and keyword bindings.

Use it for

  • Inject database connections into async request handlers with automatic cleanup on completion.
  • Wire up async context managers (loggers, caches, clients) into function signatures without manual setup.
  • Build nested dependency chains where one async factory depends on another, resolving in order.
  • Pass call-specific values (user IDs, request IDs) through dependency factories without changing signatures.
  • Test async functions by swapping real dependencies for mocks via Depends bindings.

Worth the install?

AI-flagged interpretation of the facts on this page. Verify before relying on it.

With conditions

Yes, if you write async Python and want lightweight dependency injection without a framework.

Zero runtime dependencies and active maintenance make it low-risk. Alpha status means the API may shift before 1.0, so pin the version or monitor releases. Not suitable for sync-only codebases—this is async-native by design.

Install

uncalled-for on PyPI

Before you install

Active maintenance with a recent release (4 days old). Zero runtime dependencies keeps installation friction minimal and attack surface small. Early-stage project (Alpha status, first release in February 2026) but actively developed.

Requires Python 3.10 or later; async/await syntax mandatory.

License in practice

MIT license permits unrestricted use, modification, and distribution in both open and closed projects with minimal obligations—only attribution and license inclusion required.

Quickstart

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")

Verify before relying

  • Performance characteristics under high concurrency or deeply nested dependency graphs.
  • Real-world adoption patterns and ecosystem integration (frameworks, testing libraries).
  • Stability guarantees given Alpha classification—breaking changes possible before 1.0.

Package facts

Licensepermissive license permissive
Python supportSupports the current Python release >=3.10
Install frictionLow. Pure-Python wheel
Runtime dependenciesNone
MaintenanceActively maintained 4 days since the last release
Last repo commit
First released
Downloads76,554,634 / month, #445 on PyPI 30-day window, as of 2026-08-14
Known vulnerabilitiesNone known OSV.dev, checked 2026-08-14
Classifiers
Development Status :: 3 - AlphaLicense :: OSI Approved :: MIT LicenseOperating System :: OS IndependentProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Typing :: Typed

Evidence: uncalled_for-0.4.0-py3-none-any.whl

Tags

Capabilities
async dependency injectionpython function dependency resolverasync context manager injectionparameter default dependenciesasync factory patterndependency lifecycle managementnested async dependencies
Topics
async-firstdependency-injectioncontext-lifecycle

Let your AI agent find packages like this

Example. Real query, live index.

You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.

wish › “async context manager injection”

  • uncalled-forProvides async dependency injection for Python functions using…
  • async-exit-stackProvides AsyncExitStack, a backport of Python 3.7's asynchronous…
  • conditionalConditionally apply a context manager to a code block based on a…

Give your agent the search over MCP, or paste the wish link into any chat.

Similar packages

fastapi-injectable Worth it
PyPI · Python Modules · released Jun 2026

Enables FastAPI's Depends() dependency injection system to work outside route handlers—in CLI tools, background workers, Celery tasks, and scheduled jobs—without duplicating dependency logic.

The main gotcha is cache management in loops—read the long-running worker documentation before deploying to background tasks.

MITpure Python · 3.10+
83.5Kdownloads / mo
fastapi-decorators Worth it
PyPI · Software Development · released Mar 2026

Converts functions into FastAPI-compatible decorators that can inject and resolve FastAPI dependencies, eliminating boilerplate when building reusable endpoint decorators.

MITpure Python · 3.8+
148.7Kdownloads / mo
injector Worth it
PyPI · Application Frameworks · released Jan 2026

Injector is a Python dependency injection framework that automatically resolves and provides dependencies to your code, reducing boilerplate in larger applications through constructor injection and modular configuration.

permissive licensepure Python
4.0Mdownloads / mo
inject Worth it
PyPI · Python Modules · released Jul 2026

Provides a lightweight dependency injection framework for Python that automatically injects dependencies into functions and classes using type annotations or explicit binding declarations.

Install it if you want a simple alternative to heavier frameworks; skip it if your project already uses a framework with built-in DI (Django, FastAPI) or if you…

Apache-2.0pure Python · 3.10+
2.3Mdownloads / mo
wireup Worth it
PyPI · Python Modules · released Jul 2026

Wireup is a type-driven dependency injection container for Python that resolves and manages application dependencies at startup, supporting singletons, scoped, and transient lifetimes across sync and async code.

MITpure Python · 3.10+
99.4Kdownloads / mo
dependency-injector Worth it
PyPI · Software Development · released Jun 2026

Dependency Injector is a dependency injection framework that assembles and injects object dependencies into functions and methods, supporting factories, singletons, configuration providers, and async injection.

BSD-3-Clausecompiled wheel · 3.8+
8.4Mdownloads / mo

See also async-exit-stack · simple-di · taskiq-dependencies · promise