Description
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.