setuptools version
main
Python version
3.15.0a6
OS
all
Additional environment information
This happens when we run tests builds of Fedora Python packages with Python 3.15 pre-releases.
Description
setuptools tests fail with:
________________________ TestDepends.testModuleExtract _________________________
self = <setuptools.tests.test_setuptools.TestDepends object at 0x7f07b8dda060>
@needs_bytecode
def testModuleExtract(self):
> from json import __version__
/builddir/build/BUILD/python-setuptools-80.10.2-build/setuptools-80.10.2/setuptools/tests/test_setuptools.py:82:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
<frozen importlib._bootstrap>:1336: in _handle_fromlist
???
/usr/lib64/python3.15/json/__init__.py:371: in __getattr__
_deprecated("__version__", remove=(3, 20))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
name = '__version__'
message = '{name!r} is deprecated and slated for removal in Python {remove}'
def _deprecated(name, message=_DEPRECATED_MSG, *, remove, _version=sys.version_info):
"""Warn that *name* is deprecated or should be removed.
RuntimeError is raised if *remove* specifies a major/minor tuple older than
the current Python version or the same version but past the alpha.
The *message* argument is formatted with *name* and *remove* as a Python
version tuple (e.g. (3, 11)).
"""
remove_formatted = f"{remove[0]}.{remove[1]}"
if (_version[:2] > remove) or (_version[:2] == remove and _version[3] != "alpha"):
msg = f"{name!r} was slated for removal after Python {remove_formatted} alpha"
raise RuntimeError(msg)
else:
msg = message.format(name=name, remove=remove_formatted)
> _wm.warn(msg, DeprecationWarning, stacklevel=3)
E DeprecationWarning: '__version__' is deprecated and slated for removal in Python 3.20
/usr/lib64/python3.15/_py_warnings.py:889: DeprecationWarning
___________________________ TestDepends.testRequire ____________________________
self = <setuptools.tests.test_setuptools.TestDepends object at 0x7f07b8dd9f30>
@needs_bytecode
def testRequire(self):
req = Require('Json', '1.0.3', 'json')
assert req.name == 'Json'
assert req.module == 'json'
assert req.requested_version == Version('1.0.3')
assert req.attribute == '__version__'
assert req.full_name() == 'Json-1.0.3'
> from json import __version__
/builddir/build/BUILD/python-setuptools-80.10.2-build/setuptools-80.10.2/setuptools/tests/test_setuptools.py:101:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
<frozen importlib._bootstrap>:1336: in _handle_fromlist
???
/usr/lib64/python3.15/json/__init__.py:371: in __getattr__
_deprecated("__version__", remove=(3, 20))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
name = '__version__'
message = '{name!r} is deprecated and slated for removal in Python {remove}'
def _deprecated(name, message=_DEPRECATED_MSG, *, remove, _version=sys.version_info):
"""Warn that *name* is deprecated or should be removed.
RuntimeError is raised if *remove* specifies a major/minor tuple older than
the current Python version or the same version but past the alpha.
The *message* argument is formatted with *name* and *remove* as a Python
version tuple (e.g. (3, 11)).
"""
remove_formatted = f"{remove[0]}.{remove[1]}"
if (_version[:2] > remove) or (_version[:2] == remove and _version[3] != "alpha"):
msg = f"{name!r} was slated for removal after Python {remove_formatted} alpha"
raise RuntimeError(msg)
else:
msg = message.format(name=name, remove=remove_formatted)
> _wm.warn(msg, DeprecationWarning, stacklevel=3)
E DeprecationWarning: '__version__' is deprecated and slated for removal in Python 3.20
/usr/lib64/python3.15/_py_warnings.py:889: DeprecationWarning
=========================== short test summary info ============================
FAILED setuptools/tests/test_setuptools.py::TestDepends::testModuleExtract - ...
FAILED setuptools/tests/test_setuptools.py::TestDepends::testRequire - Deprec...
This is coming from:
|
from json import __version__ |
|
from json import __version__ |
Using such an attribute from the Python standard library for tests won't be sustainable in the future, as they are being removed from everywhere.
python/cpython#76007
python/cpython#138675
Expected behavior
The tests should use a non-deprecated attribute for this.
How to Reproduce
$ tox -e py315 -- setuptools/tests/test_setuptools.py -k TestDepends -W 'ignore:os.path.commonprefix:DeprecationWarning'
The manual -W is to hide which covers this up pygments/pygments#3039
Output
.pkg-cpython315: _optional_hooks> python /usr/lib/python3.14/site-packages/pyproject_api/_backend.py True setuptools.build_meta
.pkg-cpython315: get_requires_for_build_editable> python /usr/lib/python3.14/site-packages/pyproject_api/_backend.py True setuptools.build_meta
.pkg-cpython315: build_editable> python /usr/lib/python3.14/site-packages/pyproject_api/_backend.py True setuptools.build_meta
py315: install_package> /usr/bin/uv pip install --reinstall --no-deps setuptools@.../pypa/setuptools/.tox/.tmp/package/36/setuptools-82.0.0-0.editable-py3-none-any.whl
py315: commands[0]> pytest setuptools/tests/test_setuptools.py -k TestDepends -W ignore:os.path.commonprefix:DeprecationWarning
============================= test session starts ==============================
platform linux -- Python 3.15.0a6, pytest-9.0.2, pluggy-1.6.0
cachedir: .tox/py315/.pytest_cache
rootdir: .../pypa/setuptools
configfile: pytest.ini
plugins: perf-0.15.0, enabler-3.4.0, mypy-1.0.1, jaraco.mongodb-12.4.0, typeguard-4.5.0, xdist-3.8.0, jaraco.test-5.6.0, checkdocs-2.14.0, cov-7.0.0, subprocess-1.5.3, home-0.6.0, jaraco.vcs-2.4.1, ruff-0.5, timeout-2.4.0
created: 12/12 workers
12 workers [5 items]
...FF [100%]
=================================== FAILURES ===================================
___________________________ TestDepends.testRequire ____________________________
[gw1] linux -- Python 3.15.0 .../pypa/setuptools/.tox/py315/bin/python3
self = <setuptools.tests.test_setuptools.TestDepends object at 0x7f2682f363f0>
@needs_bytecode
def testRequire(self):
req = Require('Json', '1.0.3', 'json')
assert req.name == 'Json'
assert req.module == 'json'
assert req.requested_version == Version('1.0.3')
assert req.attribute == '__version__'
assert req.full_name() == 'Json-1.0.3'
> from json import __version__
.../pypa/setuptools/setuptools/tests/test_setuptools.py:101:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
<frozen importlib._bootstrap>:1336: in _handle_fromlist
???
/usr/lib64/python3.15/json/__init__.py:371: in __getattr__
_deprecated("__version__", remove=(3, 20))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
name = '__version__'
message = '{name!r} is deprecated and slated for removal in Python {remove}'
def _deprecated(name, message=_DEPRECATED_MSG, *, remove, _version=sys.version_info):
"""Warn that *name* is deprecated or should be removed.
RuntimeError is raised if *remove* specifies a major/minor tuple older than
the current Python version or the same version but past the alpha.
The *message* argument is formatted with *name* and *remove* as a Python
version tuple (e.g. (3, 11)).
"""
remove_formatted = f"{remove[0]}.{remove[1]}"
if (_version[:2] > remove) or (_version[:2] == remove and _version[3] != "alpha"):
msg = f"{name!r} was slated for removal after Python {remove_formatted} alpha"
raise RuntimeError(msg)
else:
msg = message.format(name=name, remove=remove_formatted)
> _wm.warn(msg, DeprecationWarning, stacklevel=3)
E DeprecationWarning: '__version__' is deprecated and slated for removal in Python 3.20
/usr/lib64/python3.15/_py_warnings.py:889: DeprecationWarning
________________________ TestDepends.testModuleExtract _________________________
[gw4] linux -- Python 3.15.0 .../pypa/setuptools/.tox/py315/bin/python3
self = <setuptools.tests.test_setuptools.TestDepends object at 0x7f853cc16060>
@needs_bytecode
def testModuleExtract(self):
> from json import __version__
.../pypa/setuptools/setuptools/tests/test_setuptools.py:82:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
<frozen importlib._bootstrap>:1336: in _handle_fromlist
???
/usr/lib64/python3.15/json/__init__.py:371: in __getattr__
_deprecated("__version__", remove=(3, 20))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
name = '__version__'
message = '{name!r} is deprecated and slated for removal in Python {remove}'
def _deprecated(name, message=_DEPRECATED_MSG, *, remove, _version=sys.version_info):
"""Warn that *name* is deprecated or should be removed.
RuntimeError is raised if *remove* specifies a major/minor tuple older than
the current Python version or the same version but past the alpha.
The *message* argument is formatted with *name* and *remove* as a Python
version tuple (e.g. (3, 11)).
"""
remove_formatted = f"{remove[0]}.{remove[1]}"
if (_version[:2] > remove) or (_version[:2] == remove and _version[3] != "alpha"):
msg = f"{name!r} was slated for removal after Python {remove_formatted} alpha"
raise RuntimeError(msg)
else:
msg = message.format(name=name, remove=remove_formatted)
> _wm.warn(msg, DeprecationWarning, stacklevel=3)
E DeprecationWarning: '__version__' is deprecated and slated for removal in Python 3.20
/usr/lib64/python3.15/_py_warnings.py:889: DeprecationWarning
================================ tests coverage ================================
...
=========================== short test summary info ============================
FAILED setuptools/tests/test_setuptools.py::TestDepends::testRequire - Deprec...
FAILED setuptools/tests/test_setuptools.py::TestDepends::testModuleExtract - ...
========================= 2 failed, 3 passed in 2.27s ==========================
py315: exit 1 (2.97 seconds) .../pypa/setuptools> pytest setuptools/tests/test_setuptools.py -k TestDepends -W ignore:os.path.commonprefix:DeprecationWarning pid=293760
py315: FAIL code 1 (4.86=setup[1.88]+cmd[2.97] seconds)
evaluation failed :( (4.90 seconds)
setuptools version
main
Python version
3.15.0a6
OS
all
Additional environment information
This happens when we run tests builds of Fedora Python packages with Python 3.15 pre-releases.
Description
setuptools tests fail with:
This is coming from:
setuptools/setuptools/tests/test_setuptools.py
Line 82 in 66b59b0
setuptools/setuptools/tests/test_setuptools.py
Line 101 in 66b59b0
Using such an attribute from the Python standard library for tests won't be sustainable in the future, as they are being removed from everywhere.
python/cpython#76007
python/cpython#138675
Expected behavior
The tests should use a non-deprecated attribute for this.
How to Reproduce
The manual
-Wis to hide which covers this up pygments/pygments#3039Output