MAINT: Fix `pytest.PytestRemovedIn9Warning` since pytest 8.2.0
Since pytest 8.2.0 the following pytest.PytestRemovedIn9Warning
is raised when running ASE tests:
% pytest
Traceback (most recent call last):
File "/Users/ikeda/miniforge3/envs/myenv/bin/pytest", line 10, in <module>
sys.exit(console_main())
^^^^^^^^^^^^^^
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/_pytest/config/__init__.py", line 206, in console_main
code = main()
^^^^^^
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/_pytest/config/__init__.py", line 159, in main
config = _prepareconfig(args, plugins)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/_pytest/config/__init__.py", line 346, in _prepareconfig
config = pluginmanager.hook.pytest_cmdline_parse(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/pluggy/_hooks.py", line 513, in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/pluggy/_manager.py", line 120, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/pluggy/_callers.py", line 139, in _multicall
raise exception.with_traceback(exception.__traceback__)
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/_pytest/helpconfig.py", line 106, in pytest_cmdline_parse
config = yield
^^^^^
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/pluggy/_callers.py", line 103, in _multicall
res = hook_impl.function(*args)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/_pytest/config/__init__.py", line 1152, in pytest_cmdline_parse
self.parse(args)
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/_pytest/config/__init__.py", line 1501, in parse
self._preparse(args, addopts=addopts)
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/_pytest/config/__init__.py", line 1405, in _preparse
self.hook.pytest_load_initial_conftests(
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/pluggy/_hooks.py", line 513, in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/pluggy/_manager.py", line 120, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/pluggy/_callers.py", line 139, in _multicall
raise exception.with_traceback(exception.__traceback__)
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/_pytest/warnings.py", line 150, in pytest_load_initial_conftests
return (yield)
^^^^^
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/_pytest/capture.py", line 153, in pytest_load_initial_conftests
yield
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/pluggy/_callers.py", line 103, in _multicall
res = hook_impl.function(*args)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/_pytest/config/__init__.py", line 1230, in pytest_load_initial_conftests
self.pluginmanager._set_initial_conftests(
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/_pytest/config/__init__.py", line 588, in _set_initial_conftests
self._try_load_conftest(
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/_pytest/config/__init__.py", line 626, in _try_load_conftest
self._loadconftestmodules(
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/_pytest/config/__init__.py", line 666, in _loadconftestmodules
mod = self._importconftest(
^^^^^^^^^^^^^^^^^^^^^
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/_pytest/config/__init__.py", line 742, in _importconftest
self.consider_conftest(mod, registration_name=conftestpath_plugin_name)
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/_pytest/config/__init__.py", line 823, in consider_conftest
self.register(conftestmodule, name=registration_name)
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/_pytest/config/__init__.py", line 508, in register
plugin_name = super().register(plugin, name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/pluggy/_manager.py", line 168, in register
self._verify_hook(hook, hookimpl)
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/pluggy/_manager.py", line 360, in _verify_hook
_warn_for_function(argname_warning, hookimpl.function)
File "/Users/ikeda/miniforge3/envs/myenv/lib/python3.11/site-packages/pluggy/_manager.py", line 41, in _warn_for_function
warnings.warn_explicit(
pytest.PytestRemovedIn9Warning: The (startdir: py.path.local) argument is deprecated, please use (start_path: pathlib.Path)
see https://docs.pytest.org/en/latest/deprecations.html#py-path-local-arguments-for-hooks-replaced-with-pathlib-path
I found this is caused by the usage of startdir
(deprecated since pytest 7.0.0) in pytest_report_header
in ase/test/conftest.py
. Using start_path
instead, the warning is gone.
https://docs.pytest.org/en/8.2.x/reference/reference.html#pytest.hookspec.pytest_report_header
I found this issue from the recent failure of windows-test
pipeline
- https://gitlab.com/ase/ase/-/jobs/6729906623 (succeeded)
- https://gitlab.com/ase/ase/-/jobs/6732436313 (failed)
For the pipeline of the present MR, I turned on windows-test
, which passed.
https://gitlab.com/yuzie007/ase/-/jobs/6755329900
On the other hand, oldlibs
failed likely due to the usage of pytest==6.2.5
, which should be fixed maybe on the ase-dockers
side. (I will make another MR on ase-dockers
soon.)
https://gitlab.com/yuzie007/ase/-/jobs/6755329891
Checklist
-
I am familiar with ASE's contribution guidelines. -
Doc strings in code changed in this MR are up to date. -
Unit tests have been added for new or changed code. -
Issue is resolved via "closes #XXXX" if applicable.