Skip to content

Python 3.14.0a6: a few new regressions #1331

Open
@musicinmybrain

Description

@musicinmybrain
$ python3.14 --version
3.14.0a6
$ python3.14 -m venv _e
$ . _e/bin/activate
(_e) $ pip install tox
(_e) $ tox
[…]
========================================================================================== short test summary info ===========================================================================================
FAILED tests/test_exceptions_formatting.py::test_exception_others[recursion_error] - assert '\nTraceback (most recent call last):\n  File "tests/exceptions/source/others/recursion_error.py", line 19, in <module>\n    recursive()\n  File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive\n    recursive()\n  File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive\n    recursive()\n  File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive\n    recursive()\n  [Previous line repeated 995 more times]\n  File "tests/exceptions/source/others/recursion_error.py", line 14, in recursive\n    def recursive():\nRecursionError: maximum recursion depth exceeded\n\nTraceback (most recent call last):\n> File "tests/exceptions/source/others/recursion_error.py", line 19, in <module>\n    recursive()\n  File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive\n    recursive()\n  File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive\n    recursive()\n  File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive\n    recursive()\n  [Previous line repeated 995 more times]\n  File "tests/exceptions/source/others/recursion_error.py", line 14, in recursive\n    def recursive():\nRecursionError: maximum recursion depth exceeded\n\n\x1b[33m\x1b[1mTraceback (most recent call last):\x1b[0m\n  File "\x1b[32mtests/exceptions/source/others/\x1b[0m\x1b[32m\x1b[1mrecursion_error.py\x1b[0m", line \x1b[33m19\x1b[0m, in \x1b[35m<module>\x1b[0m\n    \x1b[1mrecursive\x1b[0m\x1b[1m(\x1b[0m\x1b[1m)\x1b[0m\n  File "\x1b[32mtests/exceptions/source/others/\x1b[0m\x1b[32m\x1b[1mrecursion_error.py\x1b[0m", line \x1b[33m15\x1b[0m, in \x1b[35mrecursive\x1b[0m\n    \x1b[1mrecursive\x1b[0m\x1b[1m(\x1b[0m\x1b[1m)\x1b[0m\n  File "\x1b[32mtests/exceptions/source/others/\x1b[0m\x1b[32m\x1b[1mrecursion_error.py\x1b[0m", line \x1b[33m15\x1b[0m, in \x1b[35mrecursive\x1b[0m\n    \x1b[1mrecursive\x1b[0m\x1b[1m(\x1b[0m\x1b[1m)\x1b[0m\n  File "\x1b[32mtests/exceptions/source/others/\x1b[0m\x1b[32m\x1b[1mrecursion_error.py\x1b[0m", line \x1b[33m15\x1b[0m, in \x1b[35mrecursive\x1b[0m\n    \x1b[1mrecursive\x1b[0m\x1b[1m(\x1b[0m\x1b[1m)\x1b[0m\n  [Previous line repeated 995 more times]\n  File "\x1b[32mtests/exceptions/source/others/\x1b[0m\x1b[32m\x1b[1mrecursion_error.py\x1b[0m", line \x1b[33m14\x1b[0m, in \x1b[35mrecursive\x1b[0m\n    \x1b[35m\x1b[1mdef\x1b[0m \x1b[1mrecursive\x1b[0m\x1b[1m(\x1b[0m\x1b[1m)\x1b[0m\x1b[1m:\x1b[0m\n\x1b[31m\x1b[1mRecursionError\x1b[0m:\x1b[1m maximum recursion depth exceeded\x1b[0m\n\nTraceback (most recent call last):\n\n  File "tests/exceptions/source/others/recursion_error.py", line 19, in <module>\n    recursive()\n    └ <function recursive at 0xDEADBEEF>\n\n  File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive\n    recursive()\n    └ <function recursive at 0xDEADBEEF>\n\n  File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive\n    recursive()\n    └ <function recursive at 0xDEADBEEF>\n\n  File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive\n    recursive()\n    └ <function recursive at 0xDEADBEEF>\n  [Previous line repeated 995 more times]\n\n  File "tests/exceptions/source/others/recursion_error.py", line 14, in recursive\n    def recursive():\n        └ <function recursive at 0xDEADBEEF>\n\nRecursionError: maximum recursion depth exceeded\n/home/ben/src/forks/loguru/.tox/tests/lib/python3.14/site-packages/coverage/pytracer.py:355: CoverageWarning: Trace function changed, data is likely wrong: None != <bound method PyTracer._trace of <PyTracer at 0xDEADBEEF: 984 data points in 19 files>> (trace-changed)\n  self.warn(\n' == '\nTraceback (most recent call last):\n  File "tests/exceptions/source/others/recursion_error.py", line 19, in <module>\n    recursive()\n  File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive\n    recursive()\n  File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive\n    recursive()\n  File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive\n    recursive()\n  [Previous line repeated 996 more times]\nRecursionError: maximum recursion depth exceeded\n\nTraceback (most recent call last):\n> File "tests/exceptions/source/others/recursion_error.py", line 19, in <module>\n    recursive()\n  File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive\n    recursive()\n  File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive\n    recursive()\n  File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive\n    recursive()\n  [Previous line repeated 996 more times]\nRecursionError: maximum recursion depth exceeded\n\n\x1b[33m\x1b[1mTraceback (most recent call last):\x1b[0m\n  File "\x1b[32mtests/exceptions/source/others/\x1b[0m\x1b[32m\x1b[1mrecursion_error.py\x1b[0m", line \x1b[33m19\x1b[0m, in \x1b[35m<module>\x1b[0m\n    \x1b[1mrecursive\x1b[0m\x1b[1m(\x1b[0m\x1b[1m)\x1b[0m\n  File "\x1b[32mtests/exceptions/source/others/\x1b[0m\x1b[32m\x1b[1mrecursion_error.py\x1b[0m", line \x1b[33m15\x1b[0m, in \x1b[35mrecursive\x1b[0m\n    \x1b[1mrecursive\x1b[0m\x1b[1m(\x1b[0m\x1b[1m)\x1b[0m\n  File "\x1b[32mtests/exceptions/source/others/\x1b[0m\x1b[32m\x1b[1mrecursion_error.py\x1b[0m", line \x1b[33m15\x1b[0m, in \x1b[35mrecursive\x1b[0m\n    \x1b[1mrecursive\x1b[0m\x1b[1m(\x1b[0m\x1b[1m)\x1b[0m\n  File "\x1b[32mtests/exceptions/source/others/\x1b[0m\x1b[32m\x1b[1mrecursion_error.py\x1b[0m", line \x1b[33m15\x1b[0m, in \x1b[35mrecursive\x1b[0m\n    \x1b[1mrecursive\x1b[0m\x1b[1m(\x1b[0m\x1b[1m)\x1b[0m\n  [Previous line repeated 996 more times]\n\x1b[31m\x1b[1mRecursionError\x1b[0m:\x1b[1m maximum recursion depth exceeded\x1b[0m\n\nTraceback (most recent call last):\n\n  File "tests/exceptions/source/others/recursion_error.py", line 19, in <module>\n    recursive()\n    └ <function recursive at 0xDEADBEEF>\n\n  File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive\n    recursive()\n    └ <function recursive at 0xDEADBEEF>\n\n  File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive\n    recursive()\n    └ <function recursive at 0xDEADBEEF>\n\n  File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive\n    recursive()\n    └ <function recursive at 0xDEADBEEF>\n  [Previous line repeated 996 more times]\n\nRecursionError: maximum recursion depth exceeded\n'


    Traceback (most recent call last):
      File "tests/exceptions/source/others/recursion_error.py", line 19, in <module>
        recursive()
      File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive
        recursive()
      File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive
        recursive()
      File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive
        recursive()
  -   [Previous line repeated 996 more times]
  ?                             ^
  +   [Previous line repeated 995 more times]
  ?                             ^
  +   File "tests/exceptions/source/others/recursion_error.py", line 14, in recursive
  +     def recursive():
    RecursionError: maximum recursion depth exceeded

    Traceback (most recent call last):
    > File "tests/exceptions/source/others/recursion_error.py", line 19, in <module>
        recursive()
      File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive
        recursive()
      File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive
        recursive()
      File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive
        recursive()
  -   [Previous line repeated 996 more times]
  ?                             ^
  +   [Previous line repeated 995 more times]
  ?                             ^
  +   File "tests/exceptions/source/others/recursion_error.py", line 14, in recursive
  +     def recursive():
    RecursionError: maximum recursion depth exceeded

    Traceback (most recent call last):
      File "tests/exceptions/source/others/recursion_error.py", line 19, in <module>
        recursive()
      File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive
        recursive()
      File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive
        recursive()
      File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive
        recursive()
  -   [Previous line repeated 996 more times]
  ?                             ^
  +   [Previous line repeated 995 more times]
  ?                             ^
  +   File "tests/exceptions/source/others/recursion_error.py", line 14, in recursive
  +     def recursive():
    RecursionError: maximum recursion depth exceeded

    Traceback (most recent call last):

      File "tests/exceptions/source/others/recursion_error.py", line 19, in <module>
        recursive()
        └ <function recursive at 0xDEADBEEF>

      File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive
        recursive()
        └ <function recursive at 0xDEADBEEF>

      File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive
        recursive()
        └ <function recursive at 0xDEADBEEF>

      File "tests/exceptions/source/others/recursion_error.py", line 15, in recursive
        recursive()
        └ <function recursive at 0xDEADBEEF>
  -   [Previous line repeated 996 more times]
  ?                             ^
  +   [Previous line repeated 995 more times]
  ?                             ^
  +
  +   File "tests/exceptions/source/others/recursion_error.py", line 14, in recursive
  +     def recursive():
  +         └ <function recursive at 0xDEADBEEF>

    RecursionError: maximum recursion depth exceeded
  + /home/ben/src/forks/loguru/.tox/tests/lib/python3.14/site-packages/coverage/pytracer.py:355: CoverageWarning: Trace function changed, data is likely wrong: None != <bound method PyTracer._trace of <PyTracer at 0xDEADBEEF: 984 data points in 19 files>> (trace-changed)
  +   self.warn(
FAILED tests/test_exceptions_formatting.py::test_exception_modern[type_hints-minimum_python_version0] - assert '\n\x1b[33m\x1b[1mTraceback (most recent call last):\x1b[0m\n\n  File "\x1b[32mtests/exceptions/source/modern/\x1b[0m\x1b[32m\x1b[1mtype_hints.py\x1b[0m", line \x1b[33m23\x1b[0m, in \x1b[35m<module>\x1b[0m\n    \x1b[1mmain\x1b[0m\x1b[1m(\x1b[0m\x1b[1m)\x1b[0m\n    \x1b[36m└ \x1b[0m\x1b[36m\x1b[1m<function main at 0xDEADBEEF>\x1b[0m\n\n  File "\x1b[32mtests/exceptions/source/modern/\x1b[0m\x1b[32m\x1b[1mtype_hints.py\x1b[0m", line \x1b[33m19\x1b[0m, in \x1b[35mmain\x1b[0m\n    \x1b[1mbar\x1b[0m\x1b[1m:\x1b[0m \x1b[1mName\x1b[0m \x1b[35m\x1b[1m=\x1b[0m \x1b[1mfoo\x1b[0m\x1b[1m(\x1b[0m\x1b[34m\x1b[1m1\x1b[0m\x1b[1m,\x1b[0m \x1b[34m\x1b[1m2\x1b[0m\x1b[1m,\x1b[0m \x1b[34m\x1b[1m3\x1b[0m\x1b[1m)\x1b[0m\n    \x1b[36m            └ \x1b[0m\x1b[36m\x1b[1m<function foo at 0xDEADBEEF>\x1b[0m\n\n  File "\x1b[32mtests/exceptions/source/modern/\x1b[0m\x1b[32m\x1b[1mtype_hints.py\x1b[0m", line \x1b[33m15\x1b[0m, in \x1b[35mfoo\x1b[0m\n    \x1b[35m\x1b[1mdef\x1b[0m \x1b[1mfoo\x1b[0m\x1b[1m(\x1b[0m\x1b[1ma\x1b[0m\x1b[1m:\x1b[0m \x1b[1mint\x1b[0m\x1b[1m,\x1b[0m \x1b[1mb\x1b[0m\x1b[1m:\x1b[0m \x1b[1mUnion\x1b[0m\x1b[1m[\x1b[0m\x1b[1mName\x1b[0m\x1b[1m,\x1b[0m \x1b[1mfloat\x1b[0m\x1b[1m]\x1b[0m\x1b[1m,\x1b[0m \x1b[1mc\x1b[0m\x1b[1m:\x1b[0m \x1b[36m"Name"\x1b[0m\x1b[1m)\x1b[0m \x1b[35m\x1b[1m->\x1b[0m \x1b[1mT\x1b[0m\x1b[1m:\x1b[0m \x1b[34m\x1b[1m1\x1b[0m \x1b[35m\x1b[1m/\x1b[0m \x1b[34m\x1b[1m0\x1b[0m\n    \x1b[36m    │   │       │  │     │             │             └ \x1b[0m\x1b[36m\x1b[1m~T\x1b[0m\n    \x1b[36m    │   │       │  │     │             └ \x1b[0m\x1b[36m\x1b[1m3\x1b[0m\n    \x1b[36m    │   │       │  │     └ \x1b[0m\x1b[36m\x1b[1m<class \'str\'>\x1b[0m\n    \x1b[36m    │   │       │  └ \x1b[0m\x1b[36m\x1b[1m<class \'typing.Union\'>\x1b[0m\n    \x1b[36m    │   │       └ \x1b[0m\x1b[36m\x1b[1m2\x1b[0m\n    \x1b[36m    │   └ \x1b[0m\x1b[36m\x1b[1m1\x1b[0m\n    \x1b[36m    └ \x1b[0m\x1b[36m\x1b[1m<function foo at 0xDEADBEEF>\x1b[0m\n\n\x1b[31m\x1b[1mZeroDivisionError\x1b[0m:\x1b[1m division by zero\x1b[0m\n' == '\n\x1b[33m\x1b[1mTraceback (most recent call last):\x1b[0m\n\n  File "\x1b[32mtests/exceptions/source/modern/\x1b[0m\x1b[32m\x1b[1mtype_hints.py\x1b[0m", line \x1b[33m23\x1b[0m, in \x1b[35m<module>\x1b[0m\n    \x1b[1mmain\x1b[0m\x1b[1m(\x1b[0m\x1b[1m)\x1b[0m\n    \x1b[36m└ \x1b[0m\x1b[36m\x1b[1m<function main at 0xDEADBEEF>\x1b[0m\n\n  File "\x1b[32mtests/exceptions/source/modern/\x1b[0m\x1b[32m\x1b[1mtype_hints.py\x1b[0m", line \x1b[33m19\x1b[0m, in \x1b[35mmain\x1b[0m\n    \x1b[1mbar\x1b[0m\x1b[1m:\x1b[0m \x1b[1mName\x1b[0m \x1b[35m\x1b[1m=\x1b[0m \x1b[1mfoo\x1b[0m\x1b[1m(\x1b[0m\x1b[34m\x1b[1m1\x1b[0m\x1b[1m,\x1b[0m \x1b[34m\x1b[1m2\x1b[0m\x1b[1m,\x1b[0m \x1b[34m\x1b[1m3\x1b[0m\x1b[1m)\x1b[0m\n    \x1b[36m            └ \x1b[0m\x1b[36m\x1b[1m<function foo at 0xDEADBEEF>\x1b[0m\n\n  File "\x1b[32mtests/exceptions/source/modern/\x1b[0m\x1b[32m\x1b[1mtype_hints.py\x1b[0m", line \x1b[33m15\x1b[0m, in \x1b[35mfoo\x1b[0m\n    \x1b[35m\x1b[1mdef\x1b[0m \x1b[1mfoo\x1b[0m\x1b[1m(\x1b[0m\x1b[1ma\x1b[0m\x1b[1m:\x1b[0m \x1b[1mint\x1b[0m\x1b[1m,\x1b[0m \x1b[1mb\x1b[0m\x1b[1m:\x1b[0m \x1b[1mUnion\x1b[0m\x1b[1m[\x1b[0m\x1b[1mName\x1b[0m\x1b[1m,\x1b[0m \x1b[1mfloat\x1b[0m\x1b[1m]\x1b[0m\x1b[1m,\x1b[0m \x1b[1mc\x1b[0m\x1b[1m:\x1b[0m \x1b[36m"Name"\x1b[0m\x1b[1m)\x1b[0m \x1b[35m\x1b[1m->\x1b[0m \x1b[1mT\x1b[0m\x1b[1m:\x1b[0m \x1b[34m\x1b[1m1\x1b[0m \x1b[35m\x1b[1m/\x1b[0m \x1b[34m\x1b[1m0\x1b[0m\n    \x1b[36m    │   │       │  │     │             │             └ \x1b[0m\x1b[36m\x1b[1m~T\x1b[0m\n    \x1b[36m    │   │       │  │     │             └ \x1b[0m\x1b[36m\x1b[1m3\x1b[0m\n    \x1b[36m    │   │       │  │     └ \x1b[0m\x1b[36m\x1b[1m<class \'str\'>\x1b[0m\n    \x1b[36m    │   │       │  └ \x1b[0m\x1b[36m\x1b[1mtyping.Union\x1b[0m\n    \x1b[36m    │   │       └ \x1b[0m\x1b[36m\x1b[1m2\x1b[0m\n    \x1b[36m    │   └ \x1b[0m\x1b[36m\x1b[1m1\x1b[0m\n    \x1b[36m    └ \x1b[0m\x1b[36m\x1b[1m<function foo at 0xDEADBEEF>\x1b[0m\n\n\x1b[31m\x1b[1mZeroDivisionError\x1b[0m:\x1b[1m division by zero\x1b[0m\n'


    Traceback (most recent call last):

      File "tests/exceptions/source/modern/type_hints.py", line 23, in <module>
        main()
        └ <function main at 0xDEADBEEF>

      File "tests/exceptions/source/modern/type_hints.py", line 19, in main
        bar: Name = foo(1, 2, 3)
                    └ <function foo at 0xDEADBEEF>

      File "tests/exceptions/source/modern/type_hints.py", line 15, in foo
        def foo(a: int, b: Union[Name, float], c: "Name") -> T: 1 / 0
            │   │       │  │     │             │             └ ~T
            │   │       │  │     │             └ 3
            │   │       │  │     └ <class 'str'>
  -         │   │       │  └ typing.Union
  +         │   │       │  └ <class 'typing.Union'>
  ?                                            ++++++++            ++
            │   │       └ 2
            │   └ 1
            └ <function foo at 0xDEADBEEF>

    ZeroDivisionError: division by zero
=========================================================================== 2 failed, 1560 passed, 29 skipped in 118.36s (0:01:58) ===========================================================================
tests: exit 1 (119.09 seconds) /home/ben/src/forks/loguru> pytest -vv --cov loguru/ --cov-report= pid=417152
tests: FAIL ✖ in 2 minutes 9 seconds
[…]

The docs environment also fails:

Traceback
=========

      File "/home/ben/src/forks/loguru/.tox/docs/lib/python3.14/site-packages/sphinx/builders/html/__init__.py", line 1228, in handle_page
        raise ThemeError(msg) from exc
    sphinx.errors.ThemeError: An error happened in rendering the page api.
    Reason: SystemError('error return without exception set')

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions