Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
Closed
Description
Bug report
In 3.11, subclassingEnumwithout providing a docstring causes tests to be added to a module's doctest suite.
- This lengthens test suites
- This creates failures if
Enumis not provided in theglobsargument todoctesttest runners - This creates failures if
__repr__is overridden
importrefromenumimportEnumclassMyEnum(Enum):def__repr__(self):"""Suppress the trailing colon and integer"""returnre.sub(r': \d+','',super().__repr__())classFinalEnum(MyEnum):MEMBER=1if__name__=="__main__":importdoctestdoctest.testmod(globs={'MyEnum':MyEnum,'FinalEnum':FinalEnum})
3.10
$ python3.10 e.py -v4 items had no tests: __main__ __main__.FinalEnum __main__.MyEnum __main__.MyEnum.__repr__0 testsin 4 items.0 passed and 0 failed.Test passed.3.11
$ python3.11 e.py**********************************************************************File"/Users/.../e.py", line?,in __main__.FinalEnumFailed example: FinalEnum.MEMBERExpected:<FinalEnum.MEMBER:1>Got:<FinalEnum.MEMBER>**********************************************************************File"/Users/.../e.py", line?,in __main__.FinalEnumFailed example: FinalEnum(1)Expected:<FinalEnum.MEMBER:1>Got:<FinalEnum.MEMBER>**********************************************************************File"/Users/.../e.py", line?,in __main__.FinalEnumFailed example: FinalEnum['MEMBER']Expected:<FinalEnum.MEMBER:1>Got:<FinalEnum.MEMBER>**********************************************************************File"/Users/.../e.py", line?,in __main__.FinalEnumFailed example: list(FinalEnum)Expected: [<FinalEnum.MEMBER:1>]Got: [<FinalEnum.MEMBER>]**********************************************************************File"/Users/.../e.py", line 10,in __main__.MyEnumFailed example: class Color(Enum): RED = 1 BLUE = 2 GREEN = 3Exception raised: Traceback (most recent call last): File"/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/doctest.py", line 1350,in __run exec(compile(example.source, filename,"single", ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File"<doctest __main__.MyEnum[0]>", line 1,in<module> class Color(Enum): ^^^^ NameError: name'Enum' is not defined**********************************************************************File"/Users/.../e.py", line 19,in __main__.MyEnumFailed example: Color.REDException raised: Traceback (most recent call last): File"/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/doctest.py", line 1350,in __run exec(compile(example.source, filename,"single", ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File"<doctest __main__.MyEnum[1]>", line 1,in<module> Color.RED ^^^^^ NameError: name'Color' is not defined**********************************************************************File"/Users/.../e.py", line 24,in __main__.MyEnumFailed example: Color(1)Exception raised: Traceback (most recent call last): File"/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/doctest.py", line 1350,in __run exec(compile(example.source, filename,"single", ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File"<doctest __main__.MyEnum[2]>", line 1,in<module> Color(1) ^^^^^ NameError: name'Color' is not defined**********************************************************************File"/Users/.../e.py", line 29,in __main__.MyEnumFailed example: Color['RED']Exception raised: Traceback (most recent call last): File"/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/doctest.py", line 1350,in __run exec(compile(example.source, filename,"single", ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File"<doctest __main__.MyEnum[3]>", line 1,in<module> Color['RED'] ^^^^^ NameError: name'Color' is not defined**********************************************************************File"/Users/.../e.py", line 34,in __main__.MyEnumFailed example: len(Color)Exception raised: Traceback (most recent call last): File"/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/doctest.py", line 1350,in __run exec(compile(example.source, filename,"single", ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File"<doctest __main__.MyEnum[4]>", line 1,in<module> len(Color) ^^^^^ NameError: name'Color' is not defined**********************************************************************File"/Users/.../e.py", line 37,in __main__.MyEnumFailed example: list(Color)Exception raised: Traceback (most recent call last): File"/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/doctest.py", line 1350,in __run exec(compile(example.source, filename,"single", ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File"<doctest __main__.MyEnum[5]>", line 1,in<module> list(Color) ^^^^^ NameError: name'Color' is not defined**********************************************************************2 items had failures: 4 of 5in __main__.FinalEnum 6 of 6in __main__.MyEnum***Test Failed*** 10 failures.
Your environment
Python 3.11.0b3
cc/@mscuthbert (FYI: a potential workaround is to add docstrings)