pep484 stubs for Django REST framework
Mypy stubs for Django REST Framework.
Supports Python 3.8 and up.
Installation
pip install djangorestframework-stubs[compatible-mypy]
To make mypy aware of the plugin, you need to add
[mypy]
plugins =
mypy_drf_plugin.main
in your mypy.ini
file.
FAQ
Model instance is inferred as Any
instead of my Model
class
When subclassing ModelSerializer
, add a type argument to type-hint the related model class, for example:
class MyModelSerializer(serializers.ModelSerializer[MyModel]):
class Meta:
model = MyModel
fields = ("id", "example")
Which means that methods where the model is being passed around will know the actual type of the model instead of being Any
. The instance
attribute on the above serializer will be Union[MyModel, typing.Sequence[MyModel], None]
.
To get help
We have Gitter here: https://gitter.im/mypy-django/Lobby
If you think you have more generic typing issue, please refer to https://github.com/python/mypy and their Gitter.
Contributing
This project is open source and community driven. As such we encourage contributions big and small. You can contribute by doing any of the following:
- Contribute code (e.g. improve stubs, add plugin capabilities, write tests etc) - to do so please follow the contribution guide.
- Assist in code reviews and discussions in issues.
- Identify bugs and issues and report these
You can always also reach out in gitter to discuss your contributions!