Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: about 18 hours 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 (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-12-16T22:29:51.000Z (5 days ago)
- Last Synced: 2024-12-20T07:45:22.888Z (1 day ago)
- Topics: django, django-rest-framework, mypy, pep484, python
- Language: Python
- Homepage:
- Size: 698 KB
- Stars: 458
- Watchers: 7
- Forks: 121
- Open Issues: 63
-
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
[![Build status](https://github.com/typeddjango/djangorestframework-stubs/workflows/test/badge.svg?branch=master&event=push)](https://github.com/typeddjango/djangorestframework-stubs/actions?query=workflow%3Atest)
[![Checked with mypy](https://www.mypy-lang.org/static/mypy_badge.svg)](https://mypy-lang.org/)
[![Gitter](https://badges.gitter.im/mypy-django/Lobby.svg)](https://gitter.im/mypy-django/Lobby)
[![StackOverflow](https://shields.io/badge/ask-stackoverflow-orange?logo=stackoverflow)](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!