[Bug 272811] sysutils/py-ansible-core: Missing dependency on textproc/py-toml

From: <bugzilla-noreply_at_freebsd.org>
Date: Sun, 30 Jul 2023 07:57:25 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=272811

            Bug ID: 272811
           Summary: sysutils/py-ansible-core: Missing dependency on
                    textproc/py-toml
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: Individual Port(s)
          Assignee: ports-bugs@FreeBSD.org
          Reporter: madpilot@FreeBSD.org
                CC: 0mp@FreeBSD.org, python@FreeBSD.org
                CC: 0mp@FreeBSD.org, python@FreeBSD.org

Created attachment 243700
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=243700&action=edit
patch v1

Hi,

After recent updates to the ports tree a pkg upgrade followed by pkg autoremove
deleted the py-toml port considering it an orphan, on machines where I have
ansible installed.

After this ansible started failing with the following error:

ERROR! Unexpected Exception, this is probably a bug: module 'toml' has no
attribute 'loads'
the full traceback was:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/ansible/cli/__init__.py", line
659, in cli_executor
    exit_code = cli.run()
  File "/usr/local/lib/python3.9/site-packages/ansible/cli/adhoc.py", line 117,
in run
    loader, inventory, variable_manager = self._play_prereqs()
  File "/usr/local/lib/python3.9/site-packages/ansible/cli/__init__.py", line
564, in _play_prereqs
    inventory = InventoryManager(loader=loader, sources=options['inventory'],
cache=(not options.get('flush_cache')))
  File "/usr/local/lib/python3.9/site-packages/ansible/inventory/manager.py",
line 167, in __init__
    self.parse_sources(cache=cache)
  File "/usr/local/lib/python3.9/site-packages/ansible/inventory/manager.py",
line 228, in parse_sources
    parse = self.parse_source(source, cache=cache)
  File "/usr/local/lib/python3.9/site-packages/ansible/inventory/manager.py",
line 279, in parse_source
    for plugin in self._fetch_inventory_plugins():
  File "/usr/local/lib/python3.9/site-packages/ansible/inventory/manager.py",
line 207, in _fetch_inventory_plugins
    plugin = inventory_loader.get(name)
  File "/usr/local/lib/python3.9/site-packages/ansible/plugins/loader.py", line
855, in get
    return self.get_with_context(name, *args, **kwargs).object
  File "/usr/local/lib/python3.9/site-packages/ansible/plugins/loader.py", line
878, in get_with_context
    self._module_cache[path] = self._load_module_source(name, path)
  File "/usr/local/lib/python3.9/site-packages/ansible/plugins/loader.py", line
828, in _load_module_source
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File
"/usr/local/lib/python3.9/site-packages/ansible/plugins/inventory/toml.py",
line 161, in <module>
    toml_loads = toml.loads  # type: ignore[assignment]
AttributeError: module 'toml' has no attribute 'loads'


So it looks like toml is an actual ansible unregistered dependency that
happened to be installed by some other dependency an is not being anymore.

I'm attaching a very simple patch I'm using locally that fixes the issue for
me.
Can you commit it or approve me committing it?

Thanks in advance!

-- 
You are receiving this mail because:
You are the assignee for the bug.