Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

3.11 creates doctests for Enum subclasses brittle againstglobs and overridden__repr__ #93976

Closed
Assignees
ethanfurman
Labels
3.11only security fixes3.12only security fixesstdlibStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or error
@jacobtylerwalls

Description

@jacobtylerwalls

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 ifEnum is not provided in theglobs argument todoctest test 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)

Metadata

Metadata

Assignees

Labels

3.11only security fixes3.12only security fixesstdlibStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or error

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions


    [8]ページ先頭

    ©2009-2025 Movatter.jp