Fedora Account System
Red Hat Associate
Red Hat Customer
typing-extensions vendored in setuptools is not compatible with Python 3.15.0a3, e.g.: /usr/lib/python3.15/site-packages/setuptools/_vendor/typing_extensions.py:3641: in <module> no_type_check_decorator = typing.no_type_check_decorator See also: https://github.com/python/typing_extensions/pull/699
https://github.com/python/typing_extensions/pull/699 fixes a test I think it's https://github.com/python/typing_extensions/pull/595 that fixes the runtime issue --- How does this problem manifest in using setuptools? Does it break everything?
Seems like setuptools pretty much does: if TYPE_CHECKING: from typing_extensions import .. So this should not blow up on runtime at all :/
python-pytest-tornado's test sute, similar issue happens in python-pytest-freezegun: _____________________________ test_type_annotation _____________________________ testdir = <Testdir local('/tmp/pytest-of-mockbuild/pytest-0/test_type_annotation0')> @pytest.mark.xfail(sys.version_info < (3, 5), reason='Type hints added in Python 3.5') def test_type_annotation(testdir): testdir.makepyfile( test_type_annotation=""" import pytest from tornado.ioloop import IOLoop @pytest.mark.gen_test def test_type_attrib(io_loop: IOLoop): pass # Only check that gen_test works """, ) # Run tests result = testdir.runpytest_inprocess() # Check tests went off as they should: > assert result.ret == 0 E assert <ExitCode.INTERNAL_ERROR: 3> == 0 E + where <ExitCode.INTERNAL_ERROR: 3> = <RunResult ret=3 len(stdout.lines)=0 len(stderr.lines)=70 duration=0.03s>.ret /builddir/build/BUILD/python-pytest-tornado-0.8.1-build/pytest-tornado-0.8.1/test/test_fixtures.py:60: AssertionError ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/usr/lib/python3.15/site-packages/_pytest/pytester.py", line 1165, in runpytest_inprocess reprec = self.inline_run(*args, **kwargs) File "/usr/lib/python3.15/site-packages/_pytest/pytester.py", line 1130, in inline_run ret = main([str(x) for x in args], plugins=plugins) File "/usr/lib/python3.15/site-packages/_pytest/config/__init__.py", line 156, in main config = _prepareconfig(args, plugins) File "/usr/lib/python3.15/site-packages/_pytest/config/__init__.py", line 342, in _prepareconfig config = pluginmanager.hook.pytest_cmdline_parse( pluginmanager=pluginmanager, args=args ) File "/usr/lib/python3.15/site-packages/pluggy/_hooks.py", line 512, in __call__ return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.15/site-packages/pluggy/_manager.py", line 120, in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 167, in _multicall raise exception File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 139, in _multicall teardown.throw(exception) ~~~~~~~~~~~~~~^^^^^^^^^^^ File "/usr/lib/python3.15/site-packages/_pytest/helpconfig.py", line 112, in pytest_cmdline_parse config = yield ^^^^^ File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 121, in _multicall res = hook_impl.function(*args) File "/usr/lib/python3.15/site-packages/_pytest/config/__init__.py", line 1146, in pytest_cmdline_parse self.parse(args) ~~~~~~~~~~^^^^^^ File "/usr/lib/python3.15/site-packages/_pytest/config/__init__.py", line 1527, in parse self._preparse(args, addopts=addopts) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.15/site-packages/_pytest/config/__init__.py", line 1412, in _preparse self.pluginmanager.load_setuptools_entrypoints("pytest11") ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^ File "/usr/lib/python3.15/site-packages/pluggy/_manager.py", line 416, in load_setuptools_entrypoints plugin = ep.load() File "/usr/lib64/python3.15/importlib/metadata/__init__.py", line 216, in load module = import_module(self.module) File "/usr/lib64/python3.15/importlib/__init__.py", line 88, in import_module return _bootstrap._gcd_import(name[level:], package, level) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1303, in _gcd_import File "<frozen importlib._bootstrap>", line 1276, in _find_and_load File "<frozen importlib._bootstrap>", line 1219, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 491, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1303, in _gcd_import File "<frozen importlib._bootstrap>", line 1276, in _find_and_load File "<frozen importlib._bootstrap>", line 1247, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 857, in _load_unlocked File "/usr/lib/python3.15/site-packages/_pytest/assertion/rewrite.py", line 186, in exec_module exec(co, module.__dict__) ~~~~^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.15/site-packages/setuptools/_vendor/typeguard/__init__.py", line 4, in <module> from ._checkers import TypeCheckerCallable as TypeCheckerCallable File "<frozen importlib._bootstrap>", line 1276, in _find_and_load File "<frozen importlib._bootstrap>", line 1247, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 857, in _load_unlocked File "/usr/lib/python3.15/site-packages/_pytest/assertion/rewrite.py", line 186, in exec_module exec(co, module.__dict__) ~~~~^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.15/site-packages/setuptools/_vendor/typeguard/_checkers.py", line 38, in <module> import typing_extensions File "/usr/lib/python3.15/site-packages/setuptools/_vendor/typing_extensions.py", line 3641, in <module> no_type_check_decorator = typing.no_type_check_decorator ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib64/python3.15/typing.py", line 3881, in __getattr__ raise AttributeError(f"module {__name__!r} has no attribute {attr!r}") AttributeError: module 'typing' has no attribute 'no_type_check_decorator'
I keep seeing it around, the more I look at it, the weirder it seems to me that there's an attempt to import typing_extensions from setuptools. python-binary-manager: Check import: binman.etype.ti_board_config Traceback (most recent call last): File "/usr/lib/rpm/redhat/import_all_modules.py", line 106, in import_modules importlib.import_module(module) ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ File "/usr/lib64/python3.15/importlib/__init__.py", line 88, in import_module return _bootstrap._gcd_import(name[level:], package, level) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1311, in _gcd_import File "<frozen importlib._bootstrap>", line 1276, in _find_and_load File "<frozen importlib._bootstrap>", line 1247, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 857, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 747, in exec_module File "<frozen importlib._bootstrap>", line 491, in _call_with_frames_removed File "/builddir/build/BUILD/python-binary-manager-0.0.6-build/BUILDROOT/usr/lib/python3.15/site-packages/binman/etype/ti_board_config.py", line 14, in <module> from jsonschema import validate File "/usr/lib/python3.15/site-packages/jsonschema/__init__.py", line 13, in <module> from jsonschema._format import FormatChecker File "/usr/lib/python3.15/site-packages/jsonschema/_format.py", line 11, in <module> from jsonschema.exceptions import FormatError File "/usr/lib/python3.15/site-packages/jsonschema/exceptions.py", line 15, in <module> from referencing.exceptions import Unresolvable as _Unresolvable File "/usr/lib/python3.15/site-packages/referencing/__init__.py", line 5, in <module> from referencing._core import Anchor, Registry, Resource, Specification File "/usr/lib/python3.15/site-packages/referencing/_core.py", line 12, in <module> from typing_extensions import TypeVar File "/usr/lib/python3.15/site-packages/setuptools/_vendor/typing_extensions.py", line 3641, in <module> no_type_check_decorator = typing.no_type_check_decorator ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib64/python3.15/typing.py", line 3912, in __getattr__ raise AttributeError(f"module {__name__!r} has no attribute {attr!r}") AttributeError: module 'typing' has no attribute 'no_type_check_decorator' referencing has this bit in _core.py: try: from typing_extensions import TypeVar except ImportError: # pragma: no cover from typing import TypeVar and this in pyproject.toml's dependencies: "typing-extensions>=4.4.0; python_version<'3.13'", Accidentally, typing_extensions can be imported, and that causes ruckus.
And it's all moot: the core issue is that I wasn't successful in building the newest setuptools in Copr. Once that's working, this issue will disappear, since it stopped vendoring typing_extensions.