PyO3 benches jobs in CI have recently started failing, somewhere in the pytest stage.
It looks like pytest 8.1.1 has changed something incompatibly with pytest-codspeed. I was able to fix the problem in PyO3's CI by pinning back to pytest < 8.1.
Here's a dump of the error:
nox > pytest --codspeed
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR> File "/home/runner/work/pyo3/pyo3/.nox/codspeed/lib/python3.12/site-packages/_pytest/main.py", line 283, in wrap_session
INTERNALERROR> config.hook.pytest_sessionstart(session=session)
INTERNALERROR> File "/home/runner/work/pyo3/pyo3/.nox/codspeed/lib/python3.12/site-packages/pluggy/_hooks.py", line 501, in __call__
INTERNALERROR> return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> File "/home/runner/work/pyo3/pyo3/.nox/codspeed/lib/python3.12/site-packages/pluggy/_manager.py", line 119, in _hookexec
INTERNALERROR> return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> File "/home/runner/work/pyo3/pyo3/.nox/codspeed/lib/python3.12/site-packages/pluggy/_callers.py", line 138, in _multicall
INTERNALERROR> raise exception.with_traceback(exception.__traceback__)
INTERNALERROR> File "/home/runner/work/pyo3/pyo3/.nox/codspeed/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
INTERNALERROR> teardown.throw(exception) # type: ignore[union-attr]
INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> File "/home/runner/work/pyo3/pyo3/.nox/codspeed/lib/python3.12/site-packages/_pytest/logging.py", line 785, in pytest_sessionstart
INTERNALERROR> return (yield)
INTERNALERROR> ^^^^^
INTERNALERROR> File "/home/runner/work/pyo3/pyo3/.nox/codspeed/lib/python3.12/site-packages/pluggy/_callers.py", line 102, in _multicall
INTERNALERROR> res = hook_impl.function(*args)
INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> File "/home/runner/work/pyo3/pyo3/.nox/codspeed/lib/python3.12/site-packages/_pytest/fixtures.py", line 118, in pytest_sessionstart
INTERNALERROR> session._fixturemanager = FixtureManager(session)
INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> File "/home/runner/work/pyo3/pyo3/.nox/codspeed/lib/python3.12/site-packages/_pytest/fixtures.py", line 1438, in __init__
INTERNALERROR> session.config.pluginmanager.register(self, "funcmanage")
INTERNALERROR> File "/home/runner/work/pyo3/pyo3/.nox/codspeed/lib/python3.12/site-packages/_pytest/config/__init__.py", line 501, in register
INTERNALERROR> self.hook.pytest_plugin_registered.call_historic(
INTERNALERROR> File "/home/runner/work/pyo3/pyo3/.nox/codspeed/lib/python3.12/site-packages/pluggy/_hooks.py", line 523, in call_historic
INTERNALERROR> res = self._hookexec(self.name, self._hookimpls.copy(), kwargs, False)
INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> File "/home/runner/work/pyo3/pyo3/.nox/codspeed/lib/python3.12/site-packages/pluggy/_manager.py", line 119, in _hookexec
INTERNALERROR> return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> File "/home/runner/work/pyo3/pyo3/.nox/codspeed/lib/python3.12/site-packages/pluggy/_callers.py", line 138, in _multicall
INTERNALERROR> raise exception.with_traceback(exception.__traceback__)
INTERNALERROR> File "/home/runner/work/pyo3/pyo3/.nox/codspeed/lib/python3.12/site-packages/pluggy/_callers.py", line 102, in _multicall
INTERNALERROR> res = hook_impl.function(*args)
INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> File "/home/runner/work/pyo3/pyo3/.nox/codspeed/lib/python3.12/site-packages/pytest_codspeed/plugin.py", line 97, in pytest_plugin_registered
INTERNALERROR> codspeed_benchmark_fixtures = plugin.getfixturedefs(
INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> File "/home/runner/work/pyo3/pyo3/.nox/codspeed/lib/python3.12/site-packages/_pytest/fixtures.py", line 1765, in getfixturedefs
INTERNALERROR> return tuple(self._matchfactories(fixturedefs, node))
INTERNALERROR> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> File "/home/runner/work/pyo3/pyo3/.nox/codspeed/lib/python3.12/site-packages/_pytest/fixtures.py", line 1770, in _matchfactories
INTERNALERROR> parentnodeids = {n.nodeid for n in node.iter_parents()}
INTERNALERROR> ^^^^^^^^^^^^^^^^^
INTERNALERROR> AttributeError: 'str' object has no attribute 'iter_parents'
PyO3
benches
jobs in CI have recently started failing, somewhere in thepytest
stage.It looks like
pytest
8.1.1 has changed something incompatibly withpytest-codspeed
. I was able to fix the problem in PyO3's CI by pinning back topytest
< 8.1.Here's a dump of the error: