https://github.com/typeddjango/djangorestframework-stubs
PEP-484 stubs for django-rest-framework
https://github.com/typeddjango/djangorestframework-stubs
django django-rest-framework mypy pep484 python
Last synced: 17 days ago
JSON representation
PEP-484 stubs for django-rest-framework
- Host: GitHub
- URL: https://github.com/typeddjango/djangorestframework-stubs
- Owner: typeddjango
- License: mit
- Created: 2018-11-12T01:07:16.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2025-03-31T04:14:17.000Z (23 days ago)
- Last Synced: 2025-04-04T09:13:09.284Z (19 days ago)
- Topics: django, django-rest-framework, mypy, pep484, python
- Language: Python
- Homepage:
- Size: 751 KB
- Stars: 487
- Watchers: 6
- Forks: 123
- Open Issues: 68
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-python-typing - djangorestframework-stubs - Stubs for [DRF](https://github.com/encode/django-rest-framework). (Stub packages)
- best-of-web-python - GitHub - 38% open · ⏱️ 05.06.2024): (Django Utilities)
README
# pep484 stubs for Django REST framework
[](https://github.com/typeddjango/djangorestframework-stubs/actions?query=workflow%3Atest)
[](https://mypy-lang.org/)
[](https://gitter.im/mypy-django/Lobby)
[](https://stackoverflow.com/questions/tagged/django-stubs?tab=Active)Mypy stubs for [Django REST Framework](https://pypi.org/project/djangorestframework/).
Supports Python 3.8 and up.## Installation
```bash
pip install djangorestframework-stubs[compatible-mypy]
```To make mypy aware of the plugin, you need to add
```ini
[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](https://peps.python.org/pep-0484/#generics) to type-hint the related model class, for example:
```python
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:
If you think you have more generic typing issue, please refer to 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:
1. Contribute code (e.g. improve stubs, add plugin capabilities, write tests etc) - to do so please follow the [contribution guide](./CONTRIBUTING.md).
2. Assist in code reviews and discussions in issues.
3. Identify bugs and issues and report theseYou can always also reach out in gitter to discuss your contributions!