#35090: Enforce uniqueness on custom path converters
-------------------------------------+-------------------------------------
     Reporter:  Adam Johnson         |                    Owner:  Salvo
         Type:                       |  Polizzi
  Cleanup/optimization               |                   Status:  closed
    Component:  Core (URLs)          |                  Version:  dev
     Severity:  Normal               |               Resolution:  fixed
     Keywords:                       |             Triage Stage:  Ready for
                                     |  checkin
    Has patch:  1                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Changes (by Natalia Bidart):

 * cc: Salvo Polizzi (added)

Comment:

 The removal of the deprecation code is causing failuires when the test
 suite is run in reverse:
 {{{
 ======================================================================
 ERROR [0.008s]:
 test_converter_reverse_with_second_layer_instance_namespace
 
(urlpatterns.tests.SimplifiedURLTests.test_converter_reverse_with_second_layer_instance_namespace)
 ----------------------------------------------------------------------
 Traceback (most recent call last):
   File "/home/jenkins/workspace/main-
 reverse/database/postgres/label/focal/python/python3.13/django/test/utils.py",
 line 446, in inner
     return func(*args, **kwargs)
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/tests/urlpatterns/tests.py",
 line 181, in test_converter_reverse_with_second_layer_instance_namespace
     url = reverse("instance-ns-base64:subsubpattern-base64",
 kwargs=kwargs)
   File "/home/jenkins/workspace/main-
 reverse/database/postgres/label/focal/python/python3.13/django/urls/base.py",
 line 64, in reverse
     app_list = resolver.app_dict[ns]
                ^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 637, in app_dict
     self._populate()
     ~~~~~~~~~~~~~~^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 548, in _populate
     for url_pattern in reversed(self.url_patterns):
                                 ^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/utils/functional.py",
 line 47, in __get__
     res = instance.__dict__[self.name] = self.func(instance)
                                          ~~~~~~~~~^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 718, in url_patterns
     patterns = getattr(self.urlconf_module, "urlpatterns",
 self.urlconf_module)
                        ^^^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/utils/functional.py",
 line 47, in __get__
     res = instance.__dict__[self.name] = self.func(instance)
                                          ~~~~~~~~~^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 711, in urlconf_module
     return import_module(self.urlconf_name)
   File "/usr/lib/python3.13/importlib/__init__.py", line 88, in
 import_module
     return _bootstrap._gcd_import(name[level:], package, level)
            ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
   File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
   File "<frozen importlib._bootstrap>", line 1331, in
 _find_and_load_unlocked
   File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
   File "<frozen importlib._bootstrap_external>", line 1022, in exec_module
   File "<frozen importlib._bootstrap>", line 488, in
 _call_with_frames_removed
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/tests/urlpatterns/path_base64_urls.py",
 line 5, in <module>
     register_converter(converters.Base64Converter, "base64")
     ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/converters.py",
 line 57, in register_converter
     raise ValueError(f"Converter {type_name!r} is already registered.")
 ValueError: Converter 'base64' is already registered.

 ======================================================================
 ERROR [0.000s]: test_converter_reverse
 (urlpatterns.tests.SimplifiedURLTests.test_converter_reverse)
 (url='base64')
 ----------------------------------------------------------------------
 Traceback (most recent call last):
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/tests/urlpatterns/tests.py",
 line 174, in test_converter_reverse
     url = reverse(url_name, kwargs=kwargs)
   File "/home/jenkins/workspace/main-
 reverse/database/postgres/label/focal/python/python3.13/django/urls/base.py",
 line 98, in reverse
     resolved_url = resolver._reverse_with_prefix(view, prefix, *args,
 **kwargs)
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 749, in _reverse_with_prefix
     self._populate()
     ~~~~~~~~~~~~~~^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 548, in _populate
     for url_pattern in reversed(self.url_patterns):
                                 ^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/utils/functional.py",
 line 47, in __get__
     res = instance.__dict__[self.name] = self.func(instance)
                                          ~~~~~~~~~^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 718, in url_patterns
     patterns = getattr(self.urlconf_module, "urlpatterns",
 self.urlconf_module)
                        ^^^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/utils/functional.py",
 line 47, in __get__
     res = instance.__dict__[self.name] = self.func(instance)
                                          ~~~~~~~~~^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 711, in urlconf_module
     return import_module(self.urlconf_name)
   File "/usr/lib/python3.13/importlib/__init__.py", line 88, in
 import_module
     return _bootstrap._gcd_import(name[level:], package, level)
            ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
   File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
   File "<frozen importlib._bootstrap>", line 1331, in
 _find_and_load_unlocked
   File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
   File "<frozen importlib._bootstrap_external>", line 1022, in exec_module
   File "<frozen importlib._bootstrap>", line 488, in
 _call_with_frames_removed
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/tests/urlpatterns/path_base64_urls.py",
 line 5, in <module>
     register_converter(converters.Base64Converter, "base64")
     ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/converters.py",
 line 57, in register_converter
     raise ValueError(f"Converter {type_name!r} is already registered.")
 ValueError: Converter 'base64' is already registered.

 ======================================================================
 ERROR [0.000s]: test_converter_reverse
 (urlpatterns.tests.SimplifiedURLTests.test_converter_reverse) (url
 ='subpattern-base64')
 ----------------------------------------------------------------------
 Traceback (most recent call last):
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/tests/urlpatterns/tests.py",
 line 174, in test_converter_reverse
     url = reverse(url_name, kwargs=kwargs)
   File "/home/jenkins/workspace/main-
 reverse/database/postgres/label/focal/python/python3.13/django/urls/base.py",
 line 98, in reverse
     resolved_url = resolver._reverse_with_prefix(view, prefix, *args,
 **kwargs)
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 749, in _reverse_with_prefix
     self._populate()
     ~~~~~~~~~~~~~~^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 548, in _populate
     for url_pattern in reversed(self.url_patterns):
                                 ^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/utils/functional.py",
 line 47, in __get__
     res = instance.__dict__[self.name] = self.func(instance)
                                          ~~~~~~~~~^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 718, in url_patterns
     patterns = getattr(self.urlconf_module, "urlpatterns",
 self.urlconf_module)
                        ^^^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/utils/functional.py",
 line 47, in __get__
     res = instance.__dict__[self.name] = self.func(instance)
                                          ~~~~~~~~~^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 711, in urlconf_module
     return import_module(self.urlconf_name)
   File "/usr/lib/python3.13/importlib/__init__.py", line 88, in
 import_module
     return _bootstrap._gcd_import(name[level:], package, level)
            ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
   File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
   File "<frozen importlib._bootstrap>", line 1331, in
 _find_and_load_unlocked
   File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
   File "<frozen importlib._bootstrap_external>", line 1022, in exec_module
   File "<frozen importlib._bootstrap>", line 488, in
 _call_with_frames_removed
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/tests/urlpatterns/path_base64_urls.py",
 line 5, in <module>
     register_converter(converters.Base64Converter, "base64")
     ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/converters.py",
 line 57, in register_converter
     raise ValueError(f"Converter {type_name!r} is already registered.")
 ValueError: Converter 'base64' is already registered.

 ======================================================================
 ERROR [0.015s]: test_converter_reverse
 (urlpatterns.tests.SimplifiedURLTests.test_converter_reverse) (url
 ='namespaced-base64:subpattern-base64')
 ----------------------------------------------------------------------
 Traceback (most recent call last):
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/tests/urlpatterns/tests.py",
 line 174, in test_converter_reverse
     url = reverse(url_name, kwargs=kwargs)
   File "/home/jenkins/workspace/main-
 reverse/database/postgres/label/focal/python/python3.13/django/urls/base.py",
 line 64, in reverse
     app_list = resolver.app_dict[ns]
                ^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 637, in app_dict
     self._populate()
     ~~~~~~~~~~~~~~^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 548, in _populate
     for url_pattern in reversed(self.url_patterns):
                                 ^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/utils/functional.py",
 line 47, in __get__
     res = instance.__dict__[self.name] = self.func(instance)
                                          ~~~~~~~~~^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 718, in url_patterns
     patterns = getattr(self.urlconf_module, "urlpatterns",
 self.urlconf_module)
                        ^^^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/utils/functional.py",
 line 47, in __get__
     res = instance.__dict__[self.name] = self.func(instance)
                                          ~~~~~~~~~^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 711, in urlconf_module
     return import_module(self.urlconf_name)
   File "/usr/lib/python3.13/importlib/__init__.py", line 88, in
 import_module
     return _bootstrap._gcd_import(name[level:], package, level)
            ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
   File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
   File "<frozen importlib._bootstrap>", line 1331, in
 _find_and_load_unlocked
   File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
   File "<frozen importlib._bootstrap_external>", line 1022, in exec_module
   File "<frozen importlib._bootstrap>", line 488, in
 _call_with_frames_removed
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/tests/urlpatterns/path_base64_urls.py",
 line 5, in <module>
     register_converter(converters.Base64Converter, "base64")
     ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/converters.py",
 line 57, in register_converter
     raise ValueError(f"Converter {type_name!r} is already registered.")
 ValueError: Converter 'base64' is already registered.

 ======================================================================
 ERROR [0.000s]: test_converter_resolve
 (urlpatterns.tests.SimplifiedURLTests.test_converter_resolve)
 (url='/base64/aGVsbG8=/')
 ----------------------------------------------------------------------
 Traceback (most recent call last):
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/tests/urlpatterns/tests.py",
 line 163, in test_converter_resolve
     match = resolve(url)
   File "/home/jenkins/workspace/main-
 reverse/database/postgres/label/focal/python/python3.13/django/urls/base.py",
 line 25, in resolve
     return get_resolver(urlconf).resolve(path)
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 666, in resolve
     for pattern in self.url_patterns:
                    ^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/utils/functional.py",
 line 47, in __get__
     res = instance.__dict__[self.name] = self.func(instance)
                                          ~~~~~~~~~^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 718, in url_patterns
     patterns = getattr(self.urlconf_module, "urlpatterns",
 self.urlconf_module)
                        ^^^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/utils/functional.py",
 line 47, in __get__
     res = instance.__dict__[self.name] = self.func(instance)
                                          ~~~~~~~~~^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 711, in urlconf_module
     return import_module(self.urlconf_name)
   File "/usr/lib/python3.13/importlib/__init__.py", line 88, in
 import_module
     return _bootstrap._gcd_import(name[level:], package, level)
            ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
   File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
   File "<frozen importlib._bootstrap>", line 1331, in
 _find_and_load_unlocked
   File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
   File "<frozen importlib._bootstrap_external>", line 1022, in exec_module
   File "<frozen importlib._bootstrap>", line 488, in
 _call_with_frames_removed
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/tests/urlpatterns/path_base64_urls.py",
 line 5, in <module>
     register_converter(converters.Base64Converter, "base64")
     ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/converters.py",
 line 57, in register_converter
     raise ValueError(f"Converter {type_name!r} is already registered.")
 ValueError: Converter 'base64' is already registered.

 ======================================================================
 ERROR [0.000s]: test_converter_resolve
 (urlpatterns.tests.SimplifiedURLTests.test_converter_resolve)
 (url='/base64/aGVsbG8=/subpatterns/d29ybGQ=/')
 ----------------------------------------------------------------------
 Traceback (most recent call last):
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/tests/urlpatterns/tests.py",
 line 163, in test_converter_resolve
     match = resolve(url)
   File "/home/jenkins/workspace/main-
 reverse/database/postgres/label/focal/python/python3.13/django/urls/base.py",
 line 25, in resolve
     return get_resolver(urlconf).resolve(path)
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 666, in resolve
     for pattern in self.url_patterns:
                    ^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/utils/functional.py",
 line 47, in __get__
     res = instance.__dict__[self.name] = self.func(instance)
                                          ~~~~~~~~~^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 718, in url_patterns
     patterns = getattr(self.urlconf_module, "urlpatterns",
 self.urlconf_module)
                        ^^^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/utils/functional.py",
 line 47, in __get__
     res = instance.__dict__[self.name] = self.func(instance)
                                          ~~~~~~~~~^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 711, in urlconf_module
     return import_module(self.urlconf_name)
   File "/usr/lib/python3.13/importlib/__init__.py", line 88, in
 import_module
     return _bootstrap._gcd_import(name[level:], package, level)
            ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
   File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
   File "<frozen importlib._bootstrap>", line 1331, in
 _find_and_load_unlocked
   File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
   File "<frozen importlib._bootstrap_external>", line 1022, in exec_module
   File "<frozen importlib._bootstrap>", line 488, in
 _call_with_frames_removed
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/tests/urlpatterns/path_base64_urls.py",
 line 5, in <module>
     register_converter(converters.Base64Converter, "base64")
     ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/converters.py",
 line 57, in register_converter
     raise ValueError(f"Converter {type_name!r} is already registered.")
 ValueError: Converter 'base64' is already registered.

 ======================================================================
 ERROR [0.010s]: test_converter_resolve
 (urlpatterns.tests.SimplifiedURLTests.test_converter_resolve)
 (url='/base64/aGVsbG8=/namespaced/d29ybGQ=/')
 ----------------------------------------------------------------------
 Traceback (most recent call last):
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/tests/urlpatterns/tests.py",
 line 163, in test_converter_resolve
     match = resolve(url)
   File "/home/jenkins/workspace/main-
 reverse/database/postgres/label/focal/python/python3.13/django/urls/base.py",
 line 25, in resolve
     return get_resolver(urlconf).resolve(path)
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 666, in resolve
     for pattern in self.url_patterns:
                    ^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/utils/functional.py",
 line 47, in __get__
     res = instance.__dict__[self.name] = self.func(instance)
                                          ~~~~~~~~~^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 718, in url_patterns
     patterns = getattr(self.urlconf_module, "urlpatterns",
 self.urlconf_module)
                        ^^^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/utils/functional.py",
 line 47, in __get__
     res = instance.__dict__[self.name] = self.func(instance)
                                          ~~~~~~~~~^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/resolvers.py",
 line 711, in urlconf_module
     return import_module(self.urlconf_name)
   File "/usr/lib/python3.13/importlib/__init__.py", line 88, in
 import_module
     return _bootstrap._gcd_import(name[level:], package, level)
            ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
   File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
   File "<frozen importlib._bootstrap>", line 1331, in
 _find_and_load_unlocked
   File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
   File "<frozen importlib._bootstrap_external>", line 1022, in exec_module
   File "<frozen importlib._bootstrap>", line 488, in
 _call_with_frames_removed
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/tests/urlpatterns/path_base64_urls.py",
 line 5, in <module>
     register_converter(converters.Base64Converter, "base64")
     ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/django/urls/converters.py",
 line 57, in register_converter
     raise ValueError(f"Converter {type_name!r} is already registered.")
 ValueError: Converter 'base64' is already registered.

 ======================================================================
 FAIL [0.002s]: test_warning_override_converter
 (urlpatterns.tests.SimplifiedURLTests.test_warning_override_converter)
 ----------------------------------------------------------------------
 Traceback (most recent call last):
   File "/home/jenkins/workspace/main-
 
reverse/database/postgres/label/focal/python/python3.13/tests/urlpatterns/tests.py",
 line 212, in test_warning_override_converter
     with self.assertRaisesMessage(ValueError, msg):
          ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.13/contextlib.py", line 148, in __exit__
     next(self.gen)
     ~~~~^^^^^^^^^^
 AssertionError: ValueError not raised
 }}}

 To reproduce: `./runtests.py --reverse urlpatterns`
-- 
Ticket URL: <https://code.djangoproject.com/ticket/35090#comment:23>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/django-updates/010701946ef2a72f-c4dad7ef-b02e-40a6-ba19-2efef6c63aaf-000000%40eu-central-1.amazonses.com.

Reply via email to