Description
Hey all,
I know the README says it doesn't make sense to use django-stubs
without mypy, because mypy uses a plugin for cases where type hints alone don't work. Sorry if this question is a waste of time, and feel free to close this issue.
That said, this library ships with some very thorough type stubs for just about everything in Django. Is it possible to get a subset of the benefits from these stubs using a different type checker, like pyright
?
I tried using the stubs from the latest commit, without the mypy plugin, with pyright, but have found that pyright
can't infer the types of model fields, which would be very useful. Nor can it infer types returned by Manager
methods.
I'm sure pyright is sourcing the stubs just fine; I can manually edit the stubs for something like timezone.now()
, and pyright picks it up immediately.
Is it expected that most things having to do with the ORM don't work without running the mypy plugin? Is there manual monkey-patching that can be done, without running the mypy plugin, to help type checkers infer the correct types from model fields and Manager methods?
If this were possible it would be really awesome, and would help more users of type hints get lots of value out of django-stubs
=)
I'm using Django 3.1.6, and stubs from the latest commit.
Examples
Here are some images of pyright
doing type inference in my text editor:
I instantiate a prod
from a Product
models, which has a name
field that's a CharField
.
pyright
knows prod
is a Product
, but it thinks prod.name
has a type of Unknown
. It thinks Product.name
has a type of CharField[Unknown, Unknown]