You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
% python --version
Python 3.11.3
% python plox/plox.py
Traceback (most recent call last):
File "/home/janus/flipstone/craftinginterpreters-plox/plox/plox.py", line 3, in <module>
from scanner import Scanner, Token, TokenType
File "/home/janus/flipstone/craftinginterpreters-plox/plox/scanner.py", line 12, in <module>
@unique
^^^^^^
File "/home/janus/.pyenv/versions/3.11.3/lib/python3.11/enum.py", line 1561, in unique
raise ValueError('duplicate values found in %r: %s' %
ValueError: duplicate values found in <enum 'TokenType'>: NUMBER -> STRING, EOF -> STRING
strange, i don't get this error (clearly)... but i'm using python 3.10
I don't understand why this error, the TokenType enum has the @unique decorator. AND the token types that it complains about having dupe values are both values set by autohttps://docs.python.org/3/library/enum.html#enum.auto
but we know this parts of the python Enum got intervened between 3.10 and 3.11.
Changed in version 3.11.1: In prior versions, auto() had to be the only thing on the assignment line to work properly.
something warrants a deeper dive... without having yet figured this out, I blame python, it's their bug my code is perfect 😂😅
Ah, ok, I understand. Looking at the 91456, that is about aliases, which you don't have. And 91457 was backported as 94156 (note how that is not 91456) which suggests that it should only emit a DeprecationWarning but still work, which it doesn't.
Activity
naringas commentedon May 7, 2023
strange, i don't get this error (clearly)... but i'm using python 3.10
I don't understand why this error, the TokenType enum has the
@uniquedecorator. AND the token types that it complains about having dupe values are both values set byautohttps://docs.python.org/3/library/enum.html#enum.autobut we know this parts of the python Enum got intervened between 3.10 and 3.11.
something warrants a deeper dive... without having yet figured this out, I blame python, it's their bug my code is perfect 😂😅
naringas commentedon May 7, 2023
In python 3.10 there is no such a thing as
StrEnum... so why should adding a new kind of Enum, break older python Enums that used to work fine? https://docs.python.org/3/library/enum.html#enum.StrEnumysangkok commentedon May 7, 2023
Yeah, it's weird that the 3.11 changelog doesn't mention changes to
auto...naringas commentedon May 7, 2023
it's a python bug, a regression of some kind. They have been tweaking enum.py
python/cpython#91456
python/cpython#91457
ysangkok commentedon May 7, 2023
How can it be an existing bug in 3.11.3 if both of those are marked fixed/merged in 2022 and 3.11.3 was released last month?
naringas commentedon May 7, 2023
it's an exisiting bug cuz we just found it, but it's not a known bug, so far as I've looked.
ysangkok commentedon May 7, 2023
Ah, ok, I understand. Looking at the 91456, that is about aliases, which you don't have. And 91457 was backported as 94156 (note how that is not 91456) which suggests that it should only emit a DeprecationWarning but still work, which it doesn't.
naringas commentedon May 7, 2023
so I suppose that your solution, of using
StrEnuminstead ofEnumis THE workaround... but Python should not break like this between 3.10 and 3.11....all that remains if filling the bug report to Python.python/cpython#104271gh issues #1 and #2 are solved:
naringas commentedon May 9, 2023
I made a fix for this, but I haven't bothered to update my local python version, could you test it?
this is the fix e1d7426#diff-69834159763133611b2ce61f9c7fdd35941c705fc1520ce40f294c9b208852a6L12