Type Check your Django app

Kracekumar Ramaraju (~kracekumar)


Description:

Introduction

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.

Example

a: int = 23

a = 'Django'

Mypy will complain about the above code whereas Python run-time will not complain.

Talk content

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+.

References:

  • 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

Prerequisites:

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

Speaker Info:

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.

Speaker Links:

Section: Web development
Type: Talks
Target Audience: Intermediate
Last Updated: