The aim of this project is to bring PEP 484 type hints to Django.
We currently focus on supporting Django >= 2.1 to simplify work in the beginning.
- Use retype/MonkeyType/stubgen to auto-generate django-stubs Django 2.1.
- Integrate existing stubs into django-stubs. See django-stubs/#4 for more.
- Create a mypy plugin to support Django model dynamic behaviour. See django-stubs/#5 for more.
- Create a test-suite to keep synced with upstream Django. See django-stubs/#3 for more.
- Commence refining auto-generated stubs and plugin until it is useful.
- Start conversation with Django core about potential integration.
This plan is not set in stone and can change.
Bringing type hints to Django will be a huge achievement but will require a lot of work. It is still unclear as to how much time and effort but one thing is clear: we will need a lot of help. No matter what skill level or amount of free time, if you have some motivation to help, please do so.
Right now, the best way to start helping is:
- Introduce yourself on the Gitter chat room.
- Start picking up one of the issues.
- Review and help triage the project management board.
- https://mypy.readthedocs.io/en/latest/cheat_sheet_py3.html
- https://docs.python.org/3/library/typing.html
- https://www.python.org/dev/peps/pep-0483/
- https://www.python.org/dev/peps/pep-0484/
We'll hopefully merge these existing efforts here as we move along.
- https://github.com/machinalis/mypy-django
- https://github.com/facebook/pyre-check/tree/master/stubs/3/django
- zulip/zulip#991
- https://gitlab.com/melvyn-sopacua/typeshed/commits/django
- https://github.com/suutari/mypy-django (See this comment for more)
The initial work was done by @mkurnikov and will be documented once django-stubs/#2 is done.