tox-dev / pyproject-api

API to interact with the python pyproject.toml based projects
https://pyproject-api.readthedocs.io/en/latest/?badge=latest
MIT License
23 stars 12 forks source link

_ensure_meta_present raises AttributeError in 1.6.0 with tox 4.10.0 #101

Closed SeanMooney closed 10 months ago

SeanMooney commented 10 months ago

hi we started seeing gate failures in OpenStack about an hour ago that appear to be related to the 1.6.0 release

https://zuul.opendev.org/t/openstack/build/c5d49b4d4359429ea1c4887559184f12/log/job-output.txt#1431-1478

2023-08-29 18:17:59.547755 | ubuntu-focal | dist_info = hook(self.meta_folder, self._wheel_config_settings).metadata

2023-08-29 18:17:59.547792 | ubuntu-focal | AttributeError: 'NoneType' object has no attribute 'metadata

This seams to be affecting a large number of our jobs.

it is simple to replicate by cloning any of the affect repos and say running the py3 tox env.

i think this has now been address with the release of tox 4.11.0 and pyproject-api 1.6.1

hoefuly those will make there way into our ci shortly but i just wanted to report this incomaptibely in hopes we can catch that before the release going forward

SeanMooney commented 10 months ago

repoducer steps

clone any openstack repo that uses tox

git clone https://opendev.org/openstack/nova

install tox 4.10.0 with pyproject-api=1.6.0

cd nova
python3 -m venv .venv 
. .venv/bin/activate
python3 -m pip install tox===4.10.0 pyproject-api===1.6.0

replciate bug

tox -e py3

output

[20:33:50]➜ tox -e py3
.pkg: _optional_hooks> python /home/smooney/repos/nova/.venv/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
.pkg: get_requires_for_build_sdist> python /home/smooney/repos/nova/.venv/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
.pkg: get_requires_for_build_editable> python /home/smooney/repos/nova/.venv/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
py3: internal error
Traceback (most recent call last):
  File "/home/smooney/repos/nova/.venv/lib/python3.11/site-packages/tox/session/cmd/run/single.py", line 46, in _evaluate
    tox_env.setup()
  File "/home/smooney/repos/nova/.venv/lib/python3.11/site-packages/tox/tox_env/api.py", line 248, in setup
    self._setup_with_env()
  File "/home/smooney/repos/nova/.venv/lib/python3.11/site-packages/tox/tox_env/runner.py", line 145, in _setup_with_env
    self._setup_pkg()
  File "/home/smooney/repos/nova/.venv/lib/python3.11/site-packages/tox/tox_env/runner.py", line 168, in _setup_pkg
    self._packages = self._build_packages()
                     ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/smooney/repos/nova/.venv/lib/python3.11/site-packages/tox/tox_env/python/runner.py", line 119, in _build_packages
    packages = package_env.perform_packaging(self.conf)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/smooney/repos/nova/.venv/lib/python3.11/site-packages/tox/tox_env/package.py", line 45, in _func
    return meth(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/smooney/repos/nova/.venv/lib/python3.11/site-packages/tox/tox_env/python/virtual_env/package/pyproject.py", line 189, in perform_packaging
    deps = self._load_deps(for_env)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/smooney/repos/nova/.venv/lib/python3.11/site-packages/tox/tox_env/package.py", line 45, in _func
    return meth(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/smooney/repos/nova/.venv/lib/python3.11/site-packages/tox/tox_env/python/virtual_env/package/pyproject.py", line 248, in _load_deps
    deps = self._load_deps_from_built_metadata(for_env)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/smooney/repos/nova/.venv/lib/python3.11/site-packages/tox/tox_env/package.py", line 45, in _func
    return meth(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/smooney/repos/nova/.venv/lib/python3.11/site-packages/tox/tox_env/python/virtual_env/package/pyproject.py", line 292, in _load_deps_from_built_metadata
    reqs = self.get_package_dependencies(for_env)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/smooney/repos/nova/.venv/lib/python3.11/site-packages/tox/tox_env/package.py", line 45, in _func
    return meth(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/smooney/repos/nova/.venv/lib/python3.11/site-packages/tox/tox_env/python/virtual_env/package/pyproject.py", line 300, in get_package_dependencies
    self._ensure_meta_present(for_env)
  File "/home/smooney/repos/nova/.venv/lib/python3.11/site-packages/tox/tox_env/package.py", line 45, in _func
    return meth(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/smooney/repos/nova/.venv/lib/python3.11/site-packages/tox/tox_env/python/virtual_env/package/pyproject.py", line 321, in _ensure_meta_present
    dist_info = hook(self.meta_folder, self._wheel_config_settings).metadata
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'metadata'
.pkg: _exit> python /home/smooney/repos/nova/.venv/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
  py3: FAIL code 2 (0.11 seconds)
  evaluation failed :( (0.24 seconds)
SeanMooney commented 10 months ago

"python3 -m pip install tox===4.11.0" fixes this by the way since ye force 1.6.1 in the requirements for tox 4.11.0

just wanted to report this mainly for your awareness.

the new release fixes the regression

gaborbernat commented 10 months ago

Sorry, this was a transient release problem 👍