ansible-lint icon indicating copy to clipboard operation
ansible-lint copied to clipboard

tests: ImportWarning: _AnsibleCollectionFinder.find_spec() not found; falling back to find_module()

Open ssbarnea opened this issue 2 years ago • 1 comments

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()

ssbarnea avatar Feb 17 '22 16:02 ssbarnea

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.

webknjaz avatar Mar 10 '22 01:03 webknjaz