Type Check your Django app

Add Type Hints to Django code base

Kracekumar

APIs Django Type-Hinting

See in schedule

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.

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

Type: Talk (30 mins); Python level: Intermediate; Domain level: Intermediate


Kracekumar

Airbase

I'm Kracekumar, a software engineer who worked on building web applications, data pipelines, and deep learning networks. Currently, I work as a Senior Software Engineer at [Airbase](https://www.airbase.com/).