ansible-lint
ansible-lint copied to clipboard
tests: ImportWarning: _AnsibleCollectionFinder.find_spec() not found; falling back to find_module()
Apparently when running pytest with python 3.10 we get some warnings from ansible 2.12 which we cannot ignore. They were addressed in 2.13 but a backport is not planned.
I was able to narrow how what happens a little bit:
$ python -W error -m pytest -- --pdb
Traceback (most recent call last):
File "<frozen importlib._bootstrap>", line 939, in _find_spec
AttributeError: '_AnsibleCollectionFinder' object has no attribute 'find_spec'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/ssbarnea/.pyenv/versions/3.10.2/lib/python3.10/runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/Users/ssbarnea/.pyenv/versions/3.10.2/lib/python3.10/runpy.py", line 86, in _run_code
exec(code, run_globals)
File "/Users/ssbarnea/.pyenv/versions/3.10.2/lib/python3.10/site-packages/pytest/__main__.py", line 5, in <module>
raise SystemExit(pytest.console_main())
File "/Users/ssbarnea/.pyenv/versions/3.10.2/lib/python3.10/site-packages/_pytest/config/__init__.py", line 188, in console_main
code = main()
File "/Users/ssbarnea/.pyenv/versions/3.10.2/lib/python3.10/site-packages/_pytest/config/__init__.py", line 146, in main
config = _prepareconfig(args, plugins)
File "/Users/ssbarnea/.pyenv/versions/3.10.2/lib/python3.10/site-packages/_pytest/config/__init__.py", line 325, in _prepareconfig
config = pluginmanager.hook.pytest_cmdline_parse(
File "/Users/ssbarnea/.pyenv/versions/3.10.2/lib/python3.10/site-packages/pluggy/_hooks.py", line 265, in __call__
return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
File "/Users/ssbarnea/.pyenv/versions/3.10.2/lib/python3.10/site-packages/pluggy/_manager.py", line 80, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/Users/ssbarnea/.pyenv/versions/3.10.2/lib/python3.10/site-packages/pluggy/_callers.py", line 55, in _multicall
gen.send(outcome)
File "/Users/ssbarnea/.pyenv/versions/3.10.2/lib/python3.10/site-packages/_pytest/helpconfig.py", line 102, in pytest_cmdline_parse
config: Config = outcome.get_result()
File "/Users/ssbarnea/.pyenv/versions/3.10.2/lib/python3.10/site-packages/pluggy/_result.py", line 60, in get_result
raise ex[1].with_traceback(ex[2])
File "/Users/ssbarnea/.pyenv/versions/3.10.2/lib/python3.10/site-packages/pluggy/_callers.py", line 39, in _multicall
res = hook_impl.function(*args)
File "/Users/ssbarnea/.pyenv/versions/3.10.2/lib/python3.10/site-packages/_pytest/config/__init__.py", line 1013, in pytest_cmdline_parse
self.parse(args)
File "/Users/ssbarnea/.pyenv/versions/3.10.2/lib/python3.10/site-packages/_pytest/config/__init__.py", line 1301, in parse
self._preparse(args, addopts=addopts)
File "/Users/ssbarnea/.pyenv/versions/3.10.2/lib/python3.10/site-packages/_pytest/config/__init__.py", line 1180, in _preparse
self.pluginmanager.consider_preparse(args, exclude_only=False)
File "/Users/ssbarnea/.pyenv/versions/3.10.2/lib/python3.10/site-packages/_pytest/config/__init__.py", line 671, in consider_preparse
self.consider_pluginarg(parg)
File "/Users/ssbarnea/.pyenv/versions/3.10.2/lib/python3.10/site-packages/_pytest/config/__init__.py", line 697, in consider_pluginarg
self.import_plugin(arg, consider_entry_points=True)
File "/Users/ssbarnea/.pyenv/versions/3.10.2/lib/python3.10/site-packages/_pytest/config/__init__.py", line 743, in import_plugin
__import__(importspec)
File "/Users/ssbarnea/c/a/ansible-lint/src/ansiblelint/testing/__init__.py", line 25, in <module>
from ansiblelint.rules import RulesCollection # noqa: E402
File "/Users/ssbarnea/c/a/ansible-lint/src/ansiblelint/rules/__init__.py", line 15, in <module>
import ansiblelint.utils
File "/Users/ssbarnea/c/a/ansible-lint/src/ansiblelint/utils.py", line 48, in <module>
from ansible.parsing.mod_args import ModuleArgsParser
File "/Users/ssbarnea/.pyenv/versions/3.10.2/lib/python3.10/site-packages/ansible/parsing/mod_args.py", line 28, in <module>
from ansible.template import Templar
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1002, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 941, in _find_spec
File "<frozen importlib._bootstrap>", line 914, in _find_spec_legacy
ImportWarning: _AnsibleCollectionFinder.find_spec() not found; falling back to find_module()
I think this was fixed upstream in https://github.com/ansible/ansible/pull/76225 but not backported to 2.12. So it's reasonable to expect that ansible-core == 2.13
won't exhibit this problem.