Type Check your Django app
Kracekumar Ramaraju (~kracekumar) |
Python 3 introduced type hints and it's optional to use. The decision to use the type-hints in the python community is in two different camps - Embrace and skeptical.
Adding type-hints has practical problems.
One such example is the working of type-checker,
mypy, and CPython interpreter.
mypy behaves like a statically typed language (strict with type declaration and modification) whereas Python run-time is lenient.
a: int = 23
a = 'Django'
Mypy will complain about the above code whereas Python run-time will not complain.
In this talk, I'll cover the following topics
- type hints concepts like co-variant, Protocol.
- how to add type-hints to Django project - views, models, APIs (Django Rest Framework), service functions
- Tools to help to add type-hints.
- Adding type-hints to user-defined code.
- Current limitation of the type-hints.
- Tuning mypy to suit your needs - strict and lenient checking.
All the example code snippets will run on Python 3.9.4+.
- Type Hints: https://docs.python.org/3/library/typing.html
- Mypy - http://mypy-lang.org/
- Django: https://www.djangoproject.com/
- Django Stubs - https://github.com/TypedDjango/django-stubs
- Django Restframeowrk - https://www.django-rest-framework.org/
- Django Restframework stubs - https://github.com/typeddjango/djangorestframework-stubs
As an audience, you need to understand the following topics.
- Type-hints: A basic introduction about type-hints in Python.
- Django: A beginner level understanding of Django or any web-framework in Python
Slide Deck - https://slides.com/kracekumar/type-hints-in-django
I'm Kracekumar and been using Python for a long time for fun, social causes, and profit. I work as a software engineer and built web applications, data pipelines, machine learning models, and broken code in production.