Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make it possible to obtain non-type arguments in type analyze plugin hooks #18508

Open
palle-k opened this issue Jan 22, 2025 · 0 comments
Open
Labels

Comments

@palle-k
Copy link

palle-k commented Jan 22, 2025

Feature

It should be possible to obtain value expressions used as generic arguments in an AnalyzeTypeContext
For example, given typing.Annotated[builtins.int, "hello world"], I want to obtain "hello world", which is not a type, but a value.

Pitch

This feature would enable type checking of dependencies in FastAPI. FastAPI dependency injection allows specification of dependencies like this:

def my_dependency() -> SomeType:
    return ...


@app.get("/")
def route_handler(arg: Annotated[SomeType, Depends(my_dependency)]):
    return arg.do_something()

In this situation, MyPy should (with the help of a FastAPI specific plugin) be able to verify that the return type of my_dependency matches the type, which is the first generic argument of Annotated.


Currently, a plugin could theoretically obtain dependencies using get_type_analyze_hook. However, when inspecting the type arguments (ctx.type.args), any non-type argument to Annotated is not accessible within the scope of this hook.


Furthermore, this could potentially enable additional inspections relating to Pydantic fields.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant