skillfed

uncalled-for

Async dependency injection for Python functions

uncalled-for Permissive 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) Active 15 v0.4.0 released

Install

uncalled-for on PyPI

pip

pip install uncalled-for

uv

uv add uncalled-for

poetry

poetry add uncalled-for

Package 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

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

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 AsyncExitStack and ContextVar
  • 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...

Read as markdown · JSON record · Source repository

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
async dependency injectionpython function dependency resolverasync context manager injectionparameter default dependencyasync factory patternlightweight DI frameworkcontext variable injection

Similar packages