Opened 10 hours ago
#36208 new Uncategorized
Python 3.12/3.13 Enum-related error but only triggered via PyCharm debug start
Reported by: | Tim Richardson | Owned by: | |
---|---|---|---|
Component: | Uncategorized | Version: | 5.1 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
This is with Django 5.1.6
When using python 3.12 or 3.13, starting runserver via pycharm's debugger is triggering this code path and error.
I don't know if this is Django problem, but the stack trace is deep in Django code. The debugger triggers a code path which is somehow unusual.
This problem first occurred about a week ago. I can not reproduce this problem is a simple Django project. On the other hand, I also can not find via git bisect when this problem was introduced by a change in my code. It looks like a confluence of circumstances.
Reverting to python 3.11 avoids the problem.
Although finding what I may have done to cause this has eluded me, there is actually a real error trace:
Connected to pydev debugger (build 243.24978.54) django_api_sync_web | Traceback (most recent call last): django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/core/management/__init__.py", line 394, in execute django_api_sync_web | autoreload.check_errors(django.setup)() django_api_sync_web | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/utils/autoreload.py", line 64, in wrapper django_api_sync_web | fn(*args, **kwargs) django_api_sync_web | ~~^^^^^^^^^^^^^^^^^ django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/__init__.py", line 16, in setup django_api_sync_web | from django.urls import set_script_prefix django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/urls/__init__.py", line 1, in <module> django_api_sync_web | from .base import ( django_api_sync_web | ...<11 lines>... django_api_sync_web | ) django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/urls/base.py", line 8, in <module> django_api_sync_web | from .exceptions import NoReverseMatch, Resolver404 django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/urls/exceptions.py", line 1, in <module> django_api_sync_web | from django.http import Http404 django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/http/__init__.py", line 9, in <module> django_api_sync_web | from django.http.response import ( django_api_sync_web | ...<16 lines>... django_api_sync_web | ) django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/http/response.py", line 19, in <module> django_api_sync_web | from django.core.serializers.json import DjangoJSONEncoder django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/core/serializers/__init__.py", line 23, in <module> django_api_sync_web | from django.core.serializers.base import SerializerDoesNotExist django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/core/serializers/base.py", line 8, in <module> django_api_sync_web | from django.db import models django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/db/models/__init__.py", line 3, in <module> django_api_sync_web | from django.db.models.aggregates import * # NOQA django_api_sync_web | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/db/models/aggregates.py", line 6, in <module> django_api_sync_web | from django.db.models.expressions import Case, Func, Star, Value, When django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/db/models/expressions.py", line 853, in <module> django_api_sync_web | class TemporalSubtraction(CombinedExpression): django_api_sync_web | ...<11 lines>... django_api_sync_web | ) django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/db/models/expressions.py", line 854, in TemporalSubtraction django_api_sync_web | output_field = fields.DurationField() django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/db/models/fields/__init__.py", line 228, in __init__ django_api_sync_web | self.choices = choices django_api_sync_web | ^^^^^^^^^^^^ django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/db/models/fields/__init__.py", line 551, in choices django_api_sync_web | self._choices = normalize_choices(value) django_api_sync_web | ~~~~~~~~~~~~~~~~~^^^^^^^ django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/utils/choices.py", line 74, in normalize_choices django_api_sync_web | from django.db.models.enums import ChoicesType django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/db/models/enums.py", line 101, in <module> django_api_sync_web | class IntegerChoices(Choices, IntEnum): django_api_sync_web | ...<2 lines>... django_api_sync_web | pass django_api_sync_web | File "/usr/local/lib/python3.13/enum.py", line 487, in __prepare__ django_api_sync_web | metacls._check_for_existing_members_(cls, bases) django_api_sync_web | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^ django_api_sync_web | File "/usr/local/lib/python3.13/enum.py", line 937, in _check_for_existing_members_ django_api_sync_web | raise TypeError( django_api_sync_web | ...<2 lines>... django_api_sync_web | ) django_api_sync_web | TypeError: <enum 'IntegerChoices'> cannot extend <enum 'Choices'> django_api_sync_web | django_api_sync_web | During handling of the above exception, another exception occurred: django_api_sync_web | django_api_sync_web | Traceback (most recent call last): django_api_sync_web | File "/opt/.pycharm_helpers/pydev/pydevd.py", line 1570, in _exec django_api_sync_web | pydev_imports.execfile(file, globals, locals) # execute the script django_api_sync_web | ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ django_api_sync_web | File "/opt/.pycharm_helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile django_api_sync_web | exec(compile(contents+"\n", file, 'exec'), glob, loc) django_api_sync_web | ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ django_api_sync_web | File "manage.py", line 22, in <module> django_api_sync_web | main() django_api_sync_web | ~~~~^^ django_api_sync_web | File "manage.py", line 18, in main django_api_sync_web | execute_from_command_line(sys.argv) django_api_sync_web | ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line django_api_sync_web | utility.execute() django_api_sync_web | ~~~~~~~~~~~~~~~^^ django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/core/management/__init__.py", line 407, in execute django_api_sync_web | _parser = self.fetch_command("runserver").create_parser( django_api_sync_web | ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/core/management/__init__.py", line 275, in fetch_command django_api_sync_web | klass = load_command_class(app_name, subcommand) django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/core/management/__init__.py", line 48, in load_command_class django_api_sync_web | module = import_module("%s.management.commands.%s" % (app_name, name)) django_api_sync_web | File "/usr/local/lib/python3.13/importlib/__init__.py", line 88, in import_module django_api_sync_web | return _bootstrap._gcd_import(name[level:], package, level) django_api_sync_web | ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ django_api_sync_web | File "<frozen importlib._bootstrap>", line 1387, in _gcd_import django_api_sync_web | File "<frozen importlib._bootstrap>", line 1360, in _find_and_load django_api_sync_web | File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked django_api_sync_web | File "<frozen importlib._bootstrap>", line 935, in _load_unlocked django_api_sync_web | File "<frozen importlib._bootstrap_external>", line 1026, in exec_module django_api_sync_web | File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/core/management/commands/runserver.py", line 10, in <module> django_api_sync_web | from django.core.servers.basehttp import WSGIServer, get_internal_wsgi_application, run django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/core/servers/basehttp.py", line 18, in <module> django_api_sync_web | from django.core.handlers.wsgi import LimitedStream django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/core/handlers/wsgi.py", line 5, in <module> django_api_sync_web | from django.core.handlers import base django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/core/handlers/base.py", line 11, in <module> django_api_sync_web | from django.urls import get_resolver, set_urlconf django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/urls/__init__.py", line 1, in <module> django_api_sync_web | from .base import ( django_api_sync_web | ...<11 lines>... django_api_sync_web | ) django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/urls/base.py", line 8, in <module> django_api_sync_web | from .exceptions import NoReverseMatch, Resolver404 django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/urls/exceptions.py", line 1, in <module> django_api_sync_web | from django.http import Http404 django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/http/__init__.py", line 9, in <module> django_api_sync_web | from django.http.response import ( django_api_sync_web | ...<16 lines>... django_api_sync_web | ) django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/http/response.py", line 19, in <module> django_api_sync_web | from django.core.serializers.json import DjangoJSONEncoder django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/core/serializers/__init__.py", line 23, in <module> django_api_sync_web | from django.core.serializers.base import SerializerDoesNotExist django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/core/serializers/base.py", line 8, in <module> django_api_sync_web | from django.db import models django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/db/models/__init__.py", line 3, in <module> django_api_sync_web | from django.db.models.aggregates import * # NOQA django_api_sync_web | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/db/models/aggregates.py", line 6, in <module> django_api_sync_web | from django.db.models.expressions import Case, Func, Star, Value, When django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/db/models/expressions.py", line 853, in <module> django_api_sync_web | class TemporalSubtraction(CombinedExpression): django_api_sync_web | ...<11 lines>... django_api_sync_web | ) django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/db/models/expressions.py", line 854, in TemporalSubtraction django_api_sync_web | output_field = fields.DurationField() django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/db/models/fields/__init__.py", line 228, in __init__ django_api_sync_web | self.choices = choices django_api_sync_web | ^^^^^^^^^^^^ django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/db/models/fields/__init__.py", line 551, in choices django_api_sync_web | self._choices = normalize_choices(value) django_api_sync_web | ~~~~~~~~~~~~~~~~~^^^^^^^ django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/utils/choices.py", line 74, in normalize_choices django_api_sync_web | from django.db.models.enums import ChoicesType django_api_sync_web | File "/usr/local/lib/python3.13/site-packages/django/db/models/enums.py", line 101, in <module> django_api_sync_web | class IntegerChoices(Choices, IntEnum): django_api_sync_web | ...<2 lines>... django_api_sync_web | pass django_api_sync_web | File "/usr/local/lib/python3.13/enum.py", line 487, in __prepare__ django_api_sync_web | metacls._check_for_existing_members_(cls, bases) django_api_sync_web | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^ django_api_sync_web | File "/usr/local/lib/python3.13/enum.py", line 937, in _check_for_existing_members_ django_api_sync_web | raise TypeError( django_api_sync_web | ...<2 lines>... django_api_sync_web | ) django_api_sync_web | TypeError: <enum 'IntegerChoices'> cannot extend <enum 'Choices'> Aborting on container exit... Container django_api_sync_web Stopping Container django_api_sync_web Stopped exit status 1