Just in case someone is wondering why I noticed it, I ran into this error:
Testing started at 2:08 pm ... Launching pytest with arguments
unit/core/test_configuration.py::TestDeprecatedConf::test_validators_can_be_overridden_in_subclass
--no-header --no-summary -q in
/Users/amoghdesai/Documents/OSS/repos/airflow/airflow-core/tests Traceback
(most recent call last): File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/config/__init__.py",
line 860, in import_plugin __import__(importspec) ~~~~~~~~~~^^^^^^^^^^^^
File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/assertion/rewrite.py",
line 186, in exec_module exec(co, module.__dict__)
~~~~^^^^^^^^^^^^^^^^^^^^^ File
"/Users/amoghdesai/Documents/OSS/repos/airflow/devel-common/src/tests_common/pytest_plugin.py",
line 39, in <module> from _pytest.config.findpaths import ConfigValue
ImportError: cannot import name 'ConfigValue' from
'_pytest.config.findpaths'
(/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/config/findpaths.py)
The above exception was the direct cause of the following exception:
Traceback (most recent call last): File
"/Applications/PyCharm.app/Contents/plugins/python-ce/helpers/pycharm/_jb_pytest_runner.py",
line 75, in <module> sys.exit(pytest.main(args, plugins_to_load +
[Plugin])) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/config/__init__.py",
line 156, in main config = _prepareconfig(args, plugins) File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/config/__init__.py",
line 342, in _prepareconfig config =
pluginmanager.hook.pytest_cmdline_parse( pluginmanager=pluginmanager,
args=args ) File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/pluggy/_hooks.py",
line 512, in __call__ return self._hookexec(self.name,
self._hookimpls.copy(), kwargs, firstresult)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/pluggy/_manager.py",
line 120, in _hookexec return self._inner_hookexec(hook_name, methods,
kwargs, firstresult)
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/pluggy/_callers.py",
line 167, in _multicall raise exception File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/pluggy/_callers.py",
line 139, in _multicall teardown.throw(exception) ~~~~~~~~~~~~~~^^^^^^^^^^^
File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/helpconfig.py",
line 112, in pytest_cmdline_parse config = yield ^^^^^ File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/pluggy/_callers.py",
line 121, in _multicall res = hook_impl.function(*args) File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/config/__init__.py",
line 1146, in pytest_cmdline_parse self.parse(args) ~~~~~~~~~~^^^^^^ File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/config/__init__.py",
line 1527, in parse self._preparse(args, addopts=addopts)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/config/__init__.py",
line 1431, in _preparse self.hook.pytest_load_initial_conftests(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ early_config=self, args=args,
parser=self._parser ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^
File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/pluggy/_hooks.py",
line 512, in __call__ return self._hookexec(self.name,
self._hookimpls.copy(), kwargs, firstresult)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/pluggy/_manager.py",
line 120, in _hookexec return self._inner_hookexec(hook_name, methods,
kwargs, firstresult)
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/pluggy/_callers.py",
line 167, in _multicall raise exception File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/pluggy/_callers.py",
line 139, in _multicall teardown.throw(exception) ~~~~~~~~~~~~~~^^^^^^^^^^^
File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/warnings.py",
line 129, in pytest_load_initial_conftests return (yield) ^^^^^ File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/pluggy/_callers.py",
line 139, in _multicall teardown.throw(exception) ~~~~~~~~~~~~~~^^^^^^^^^^^
File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/capture.py",
line 173, in pytest_load_initial_conftests yield File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/pluggy/_callers.py",
line 121, in _multicall res = hook_impl.function(*args) File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/config/__init__.py",
line 1228, in pytest_load_initial_conftests
self.pluginmanager._set_initial_conftests(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ args=args, ^^^^^^^^^^ ...<8
lines>... ), ^^ ) ^ File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/config/__init__.py",
line 583, in _set_initial_conftests self._try_load_conftest(
~~~~~~~~~~~~~~~~~~~~~~~^ anchor, ^^^^^^^ ...<2 lines>...
consider_namespace_packages=consider_namespace_packages,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/config/__init__.py",
line 621, in _try_load_conftest self._loadconftestmodules(
~~~~~~~~~~~~~~~~~~~~~~~~~^ anchor, ^^^^^^^ ...<2 lines>...
consider_namespace_packages=consider_namespace_packages,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/config/__init__.py",
line 661, in _loadconftestmodules mod = self._importconftest( conftestpath,
...<2 lines>... consider_namespace_packages=consider_namespace_packages, )
File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/config/__init__.py",
line 737, in _importconftest self.consider_conftest(mod,
registration_name=conftestpath_plugin_name)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/config/__init__.py",
line 818, in consider_conftest self.register(conftestmodule,
name=registration_name)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/config/__init__.py",
line 514, in register self.consider_module(plugin)
~~~~~~~~~~~~~~~~~~~~^^^^^^^^ File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/config/__init__.py",
line 826, in consider_module self._import_plugin_specs(getattr(mod,
"pytest_plugins", []))
~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/config/__init__.py",
line 833, in _import_plugin_specs self.import_plugin(import_spec)
~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/config/__init__.py",
line 862, in import_plugin raise ImportError( f'Error importing plugin
"{modname}": {e.args[0]}' ).with_traceback(e.__traceback__) from e File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/config/__init__.py",
line 860, in import_plugin __import__(importspec) ~~~~~~~~~~^^^^^^^^^^^^
File
"/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/assertion/rewrite.py",
line 186, in exec_module exec(co, module.__dict__)
~~~~^^^^^^^^^^^^^^^^^^^^^ File
"/Users/amoghdesai/Documents/OSS/repos/airflow/devel-common/src/tests_common/pytest_plugin.py",
line 39, in <module> from _pytest.config.findpaths import ConfigValue
ImportError: Error importing plugin "tests_common.pytest_plugin": cannot
import name 'ConfigValue' from '_pytest.config.findpaths'
(/Users/amoghdesai/Documents/OSS/repos/airflow/.venv/lib/python3.13/site-packages/_pytest/config/findpaths.py)
Process finished with exit code 1
Which is not too explanatory on what went wrong, I was in the loop for the
pytest bump, hence I noticed it and raised
the concern.
Thanks & Regards,
Amogh Desai
On Tue, Nov 11, 2025 at 5:07 PM Jarek Potiuk <[email protected]> wrote:
> Hello here,
>
> As Amogh noticed people might still have an old version of Pytest (<9) in
> their environments and the release of Pytest yesterday changed a bit the
> way how one of our plugins was implemented.
> We already have pytest>=9.0.0 in our dependencies added together with that
> change, So next time you sync your environment it should get updated
> automatically.
>
> So make sure to rebase your PRs to the latest main and sync.
>
> For virtualenvs of yours (remember you should use uv):
>
> uv sync
>
> For images:
>
> breeze ci-image build [--python X.Y]
>
> J.
>