Repository navigation
Closed
Labels
3.11only security fixesonly security fixes3.12only security fixesonly security fixesstdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Bug report
In 3.11, subclassing Enum without 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
import re
from enum import Enum
class MyEnum(Enum):
def __repr__(self):
"""Suppress the trailing colon and integer"""
return re.sub(r': \d+', '', super().__repr__())
class FinalEnum(MyEnum):
MEMBER = 1
if __name__ == "__main__":
import doctest
doctest.testmod(globs={'MyEnum': MyEnum, 'FinalEnum': FinalEnum})3.10
$ python3.10 e.py -v
4 items had no tests:
__main__
__main__.FinalEnum
__main__.MyEnum
__main__.MyEnum.__repr__
0 tests in 4 items.
0 passed and 0 failed.
Test passed.3.11
$ python3.11 e.py
**********************************************************************
File "/Users/.../e.py", line ?, in __main__.FinalEnum
Failed example:
FinalEnum.MEMBER
Expected:
<FinalEnum.MEMBER: 1>
Got:
<FinalEnum.MEMBER>
**********************************************************************
File "/Users/.../e.py", line ?, in __main__.FinalEnum
Failed example:
FinalEnum(1)
Expected:
<FinalEnum.MEMBER: 1>
Got:
<FinalEnum.MEMBER>
**********************************************************************
File "/Users/.../e.py", line ?, in __main__.FinalEnum
Failed example:
FinalEnum['MEMBER']
Expected:
<FinalEnum.MEMBER: 1>
Got:
<FinalEnum.MEMBER>
**********************************************************************
File "/Users/.../e.py", line ?, in __main__.FinalEnum
Failed example:
list(FinalEnum)
Expected:
[<FinalEnum.MEMBER: 1>]
Got:
[<FinalEnum.MEMBER>]
**********************************************************************
File "/Users/.../e.py", line 10, in __main__.MyEnum
Failed example:
class Color(Enum):
RED = 1
BLUE = 2
GREEN = 3
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[0]>", line 1, in <module>
class Color(Enum):
^^^^
NameError: name 'Enum' is not defined
**********************************************************************
File "/Users/.../e.py", line 19, in __main__.MyEnum
Failed 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[1]>", line 1, in <module>
Color.RED
^^^^^
NameError: name 'Color' is not defined
**********************************************************************
File "/Users/.../e.py", line 24, in __main__.MyEnum
Failed 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__.MyEnum
Failed 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__.MyEnum
Failed 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__.MyEnum
Failed 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 5 in __main__.FinalEnum
6 of 6 in __main__.MyEnum
***Test Failed*** 10 failures.Your environment
Python 3.11.0b3
cc/ @mscuthbert (FYI: a potential workaround is to add docstrings)
Reacted by Michael Scott Asato Cuthbert
Metadata
Metadata
Assignees
Labels
3.11only security fixesonly security fixes3.12only security fixesonly security fixesstdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Activity