Skip to content

Incompatibility with Django 4.0.6

Hi,

I was building the latest master when I encounter the following error:

mailman-web_1     | Traceback (most recent call last):
mailman-web_1     |   File "manage.py", line 10, in <module>
mailman-web_1     |     execute_from_command_line(sys.argv)
mailman-web_1     |   File "/usr/lib/python3.8/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line
mailman-web_1     |     utility.execute()
mailman-web_1     |   File "/usr/lib/python3.8/site-packages/django/core/management/__init__.py", line 440, in execute
mailman-web_1     |     self.fetch_command(subcommand).run_from_argv(self.argv)
mailman-web_1     |   File "/usr/lib/python3.8/site-packages/django/core/management/base.py", line 414, in run_from_argv
mailman-web_1     |     self.execute(*args, **cmd_options)
mailman-web_1     |   File "/usr/lib/python3.8/site-packages/django/core/management/base.py", line 460, in execute
mailman-web_1     |     output = self.handle(*args, **options)
mailman-web_1     |   File "/usr/lib/python3.8/site-packages/django/core/management/base.py", line 98, in wrapped
mailman-web_1     |     res = handle_func(*args, **kwargs)
mailman-web_1     |   File "/usr/lib/python3.8/site-packages/django/core/management/commands/migrate.py", line 91, in handle
mailman-web_1     |     self.check(databases=[database])
mailman-web_1     |   File "/usr/lib/python3.8/site-packages/django/core/management/base.py", line 487, in check
mailman-web_1     |     all_issues = checks.run_checks(
mailman-web_1     |   File "/usr/lib/python3.8/site-packages/django/core/checks/registry.py", line 88, in run_checks
mailman-web_1     |     new_errors = check(app_configs=app_configs, databases=databases)
mailman-web_1     |   File "/usr/lib/python3.8/site-packages/django/core/checks/urls.py", line 42, in check_url_namespaces_unique
mailman-web_1     |     all_namespaces = _load_all_namespaces(resolver)
mailman-web_1     |   File "/usr/lib/python3.8/site-packages/django/core/checks/urls.py", line 61, in _load_all_namespaces
mailman-web_1     |     url_patterns = getattr(resolver, "url_patterns", [])
mailman-web_1     |   File "/usr/lib/python3.8/site-packages/django/utils/functional.py", line 49, in __get__
mailman-web_1     |     res = instance.__dict__[self.name] = self.func(instance)
mailman-web_1     |   File "/usr/lib/python3.8/site-packages/django/urls/resolvers.py", line 696, in url_patterns
mailman-web_1     |     patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
mailman-web_1     |   File "/usr/lib/python3.8/site-packages/django/utils/functional.py", line 49, in __get__
mailman-web_1     |     res = instance.__dict__[self.name] = self.func(instance)
mailman-web_1     |   File "/usr/lib/python3.8/site-packages/django/urls/resolvers.py", line 689, in urlconf_module
mailman-web_1     |     return import_module(self.urlconf_name)
mailman-web_1     |   File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
mailman-web_1     |     return _bootstrap._gcd_import(name[level:], package, level)
mailman-web_1     |   File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
mailman-web_1     |   File "<frozen importlib._bootstrap>", line 991, in _find_and_load
mailman-web_1     |   File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
mailman-web_1     |   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
mailman-web_1     |   File "<frozen importlib._bootstrap_external>", line 848, in exec_module
mailman-web_1     |   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
mailman-web_1     |   File "/opt/mailman-web/urls.py", line 20, in <module>
mailman-web_1     |     from django.conf.urls import include, url
mailman-web_1     | ImportError: cannot import name 'url' from 'django.conf.urls' (/usr/lib/python3.8/site-packages/django/conf/urls/__init__.py)

The Django version which is failed is 4.0.6.

More info:
https://stackoverflow.com/questions/70319606/importerror-cannot-import-name-url-from-django-conf-urls-after-upgrading-to

(Actually, I didn't expect this to happen, as I rely on Docker images which explicitly limit Django version to <3.2, see https://github.com/maxking/docker-mailman/blob/main/web/Dockerfile#L19 , but for some reason this was ignored.)

Edited by Danil Smirnov