Skip to main content
mypy logo

pep484 stubs for Django framework

Build Status Checked with mypy Gitter

This package contains type stubs and mypy plugin to provide more precise static types and type inference for Django framework. Django uses some Python "magic" that makes having precise types for some code patterns problematic. This is why we need to accompany the stubs with mypy plugins. The final goal is to be able to get precise types for most common patterns.

Could be run on earlier versions of Django, but expect some missing imports warnings.

Installation

pip install django-stubs

Mypy compatibility

django-stubs mypy version django version python version
1.3.0 0.750 2.2.x ^3.6
1.2.0 0.730 2.2.x ^3.6
1.1.0 0.720 2.2.x ^3.6
0.12.x old semantic analyzer (<0.711), dmypy support 2.1.x ^3.6

Configuration

To make mypy aware of the plugin, you need to add

[mypy]
plugins =
    mypy_django_plugin.main

in your mypy.ini or setup.cfg file.

Plugin also requires Django settings module (what you put into DJANGO_SETTINGS_MODULE variable) to be specified.

[mypy]
strict_optional = True

# This one is new:
[mypy.plugins.django-stubs]
django_settings_module = mysettings

Where mysettings is a value of DJANGO_SETTINGS_MODULE (with or without quotes)

Current implementation uses Django runtime to extract models information, so it will crash, if your installed apps models.py is not correct. For this same reason, you cannot use reveal_type inside global scope of any Python file that will be executed for django.setup().

In other words, if your manage.py runserver crashes, mypy will crash too.

This fully working typed boilerplate can serve you as an example.

Notes

Type implementation monkey-patches Django to add __class_getitem__ to the Manager class. If you would use Python3.7 and do that too in your code, you can make things like

class MyUserManager(models.Manager['MyUser']):
    pass

class MyUser(models.Model):
    objects = MyUserManager()

work, which should make a error messages a bit better.

Otherwise, custom type will be created in mypy, named MyUser__MyUserManager, which will rewrite base manager as models.Manager[User] to make methods like get_queryset() and others return properly typed QuerySet.

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.

Metadata

Release files for django-stubs 1.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-stubs 1.3.0
File Size Uploaded
django-stubs-1.3.0.tar.gz 157.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-stubs 1.3.0
File Interpreter ABI Platform
django_stubs-1.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 453.0 kB

Release files / django-stubs-1.3.0.tar.gz

Download URL django-stubs-1.3.0.tar.gz
Size 157.0 kB
Tags Source
SHA-256 checksum
How to use checksums
1251b31ec8845ff5ff80cf42c5f70bf2f021d29b5d9708ce7bad39d27924cb08
BLAKE2b-256 checksum
How to use checksums
74ef471bcb33232bf6416ed41e2b663d990c1fc4bd7bdb2f21515827325cd52a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.1 CPython/3.7.5

Release files / django_stubs-1.3.0-py3-none-any.whl

Download URL django_stubs-1.3.0-py3-none-any.whl
Size 296.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f9fd4b63686ca5b6e931a2136e4f2511ac8381fde53f43b5d6d3c147c3ed1b76
BLAKE2b-256 checksum
How to use checksums
e6ce742985ccfac9a80788626774e7c829adec45449fceb9e9856e89fdea17cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.1 CPython/3.7.5

Release history Release notifications | RSS feed

6.1.1

2 release files

6.1.0

2 release files

6.0.9

2 release files

6.0.8

2 release files

6.0.7

2 release files

6.0.6

2 release files

6.0.5

2 release files

6.0.4

2 release files

6.0.3

2 release files

6.0.2

2 release files

6.0.1

2 release files

6.0.0

2 release files

5.2.9

2 release files

5.2.8

2 release files

5.2.7

2 release files

5.2.6

2 release files

5.2.5

2 release files

5.2.4

2 release files

5.2.3

2 release files

5.2.2

2 release files

5.2.1

2 release files

5.2.0

2 release files

5.1.3

2 release files

5.1.2

2 release files

5.1.1

2 release files

5.1.0

2 release files

5.0.4

2 release files

5.0.3

2 release files

5.0.2

2 release files

5.0.1

2 release files

5.0.0

2 release files

4.2.7

2 release files

4.2.6

2 release files

4.2.5

2 release files

4.2.4

2 release files

4.2.3

2 release files

4.2.2

2 release files

4.2.1

2 release files

4.2.0

2 release files

1.16.0

2 release files

1.15.0

2 release files

1.14.0

2 release files

1.13.2

2 release files

1.12.0

2 release files

1.11.0

2 release files

1.10.1

2 release files

1.10.0

2 release files

1.9.0

2 release files

1.8.0

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

This release

1.3.0 This release

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.12.1

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.10.2

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

1 release file

0.4.0

1 release file

0.3.0

1 release file

0.2.0

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page