Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork2.3k
Description
Describe the bug
This is a bug to track fixing a test failure in continuous integration. Thetest_enum_class unit test is currently failing when run on Python 3.12 (alpha), as seen in build logs here:https://github.com/sphinx-doc/sphinx/actions/runs/3487569464/jobs/5835351346#step:8:1868
E AssertionError: assert ['', '.. py:class:: EnumCls(value, names=None, *values, module=None, qualname=None, type=None, start=1, boundary=None)', ' :module: target.enums', '', ' this is enum class', '', '', ' .. py:method:: EnumCls.say_goodbye()', ' :module: target.enums', ' :classmethod:', '', ' a classmethod says good-bye to you.', '', '', ' .. py:method:: EnumCls.say_hello()', ' :module: target.enums', '', ' a method says hello to you.', '', '', ' .. py:attribute:: EnumCls.val1', ' :module: target.enums', ' :value: 12', '', ' doc for val1', '', '', ' .. py:attribute:: EnumCls.val2', ' :module: target.enums', ' :value: 23', '', ' doc for val2', '', '', ' .. py:attribute:: EnumCls.val3', ' :module: target.enums', ' :value: 34', '', ' doc for val3', ''] == ['', '.. py:class:: EnumCls(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)', ' :module: target.enums', '', ' this is enum class', '', '', ' .. py:method:: EnumCls.say_goodbye()', ' :module: target.enums', ' :classmethod:', '', ' a classmethod says good-bye to you.', '', '', ' .. py:method:: EnumCls.say_hello()', ' :module: target.enums', '', ' a method says hello to you.', '', '', ' .. py:attribute:: EnumCls.val1', ' :module: target.enums', ' :value: 12', '', ' doc for val1', '', '', ' .. py:attribute:: EnumCls.val2', ' :module: target.enums', ' :value: 23', '', ' doc for val2', '', '', ' .. py:attribute:: EnumCls.val3', ' :module: target.enums', ' :value: 34', '', ' doc for val3', '']E At index 1 diff: '.. py:class:: EnumCls(value, names=None, *values, module=None, qualname=None, type=None, start=1, boundary=None)' != '.. py:class:: EnumCls(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)'E Full diff:E [E '',E - '.. py:class:: EnumCls(value, names=None, *, module=None, qualname=None, 'E ? ---------------E + '.. py:class:: EnumCls(value, names=None, *values, module=None, 'E ? ++++++E - 'type=None, start=1, boundary=None)',E + 'qualname=None, type=None, start=1, boundary=None)',E ? +++++++++++++++E ' :module: target.enums',E '',E ' this is enum class',E '',E '',E ' .. py:method:: EnumCls.say_goodbye()',E ' :module: target.enums',E ' :classmethod:',E '',E ' a classmethod says good-bye to you.',E '',E '',E ' .. py:method:: EnumCls.say_hello()',E ' :module: target.enums',E '',E ' a method says hello to you.',E '',E '',E ' .. py:attribute:: EnumCls.val1',E ' :module: target.enums',E ' :value: 12',E '',E ' doc for val1',E '',E '',E ' .. py:attribute:: EnumCls.val2',E ' :module: target.enums',E ' :value: 23',E '',E ' doc for val2',E '',E '',E ' .. py:attribute:: EnumCls.val3',E ' :module: target.enums',E ' :value: 34',E '',E ' doc for val3',E '',E ]How to Reproduce
N/A - this is occurring when unit tests for thesphinx.git repository are run
Seehttps://github.com/sphinx-doc/sphinx/actions/runs/3487569464/jobs/5835351346 for an example build log output.
Environment Information
N/A
Sphinx extensions
N/A
Additional context
Although test failures started occurring for Python 3.12 (alpha) onwards, the type signature emitted by Sphinx forEnumCls also changed for Python 3.11 (explainingthis unit test condition).
The cause may be related to the fact that Python'sEnum class has two signatures for the__call__ method, as described here:python/cpython#73549 (comment) -- one of them has signature(value), and the other has signature(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None).
The latter method signature doesn't seem to have changed between Python 3.11.0 and Python 3.12.0a2:
https://github.com/python/cpython/blob/deaf509e8fc6e0363bd6f26d52ad42f976ec42f2/Lib/enum.py#L669
https://github.com/python/cpython/blob/3b9d793efcfd2c00c14ffbeab1a3389bf3b095ff/Lib/enum.py#L695
And the Sphinx code that emits the signatures seems to be calling thesphinx.util.stringify_signature method, so that could provide a starting point for debugging.