django-urlconfchecks is a static type checker that checks your URLconf parameter types with argument types specified in associated views. It leverages the Django's static check system.
pip install django-urlconfchecks
Python 3.8 or later is required. However, before Python 3.10 some checks relating to Optional
types in view signatures are skipped due to stdlib limitations.
You can use this package in different ways:
Add django_urlconfchecks
to your INSTALLED_APPS
list in your settings.py
file.
INSTALLED_APPS = [ ... 'django_urlconfchecks', ]
Run this command from the root of your project, were manage.py
is located:
$ urlconfchecks --help Usage: urlconfchecks [OPTIONS] Check all URLConfs for errors. Options: --version -u, --urlconf PATH Specify the URLconf to check. --install-completion Install completion for the current shell. --show-completion Show completion for the current shell, to copy it or customize the installation. --help Show this message and exit.
Add the following to your .pre-commit-config.yaml
file:
- repo: https://github.com/AliSayyah/django-urlconfchecks rev: v0.11.0 hooks: - id: django-urlconfchecks
For more information, see the usage documentation.
Using this package, URL pattern types will automatically be matched with associated views, and in case of mismatch, an error will be raised.
Example:
# urls.py from django.urls import path from . import views urlpatterns = [ path('articles/<str:year>/', views.year_archive), path('articles/<int:year>/<int:month>/', views.month_archive), path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail), ]
# views.py def year_archive(request, year: int): pass def month_archive(request, year: int, month: int): pass def article_detail(request, year: int, month: int, slug: str): pass
output will be:
(urlchecker.E002) For parameter `year`, annotated type int does not match expected `str` from urlconf
typing.List[int]
, list[str]
etc.RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4