Bug 2483710
| Summary: | snakemake fails to build with Python 3.15: help2man: can't get `--help' info from snakemake | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Karolina Surma <ksurma> |
| Component: | snakemake | Assignee: | Orphan Owner <extras-orphan> |
| Status: | CLOSED ERRATA | QA Contact: | |
| Severity: | unspecified | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | rawhide | CC: | code, ksurma, mhroncok, neuro-sig |
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | snakemake-9.21.1-2.fc44 snakemake-9.21.1-2.fc43 | Doc Type: | --- |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2026-06-10 00:55:40 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
| Bug Depends On: | |||
| Bug Blocks: | 2412434 | ||
|
Description
Karolina Surma
2026-06-01 09:34:44 UTC
Hmm. This reveals that the man page has the wrong title (“name”) because the Summary from the subpackage defined by the expansion of
%pyproject_extras_subpkg -n snakemake reports
differs from the base package’s Summary, and so the expansion of %{summary} in the help2man invocation doesn’t work as expected. I’ll fix that, but it’s a pre-existing problem.
If I strip away the help2man layer and just invoke "snakemake --help" with the same PATH and PYTHONPATH, here’s the underlying traceback.
+ snakemake --help
Error in import line from /usr/lib/python3.15/site-packages/google_cloud_core-2.3.3-py3.15-nspkg.pth: import sys, types, os;p = os.path.join(sys._getframe(1).f_locals['sitedir'], *('google'
,));importlib = __import__('importlib.util');__import__('importlib.machinery');m = sys.modules.setdefault('google', importlib.util.module_from_spec(importlib.machinery.PathFinder.find_spec(
'google', [os.path.dirname(p)])));m = m or sys.modules.setdefault('google', types.ModuleType('google'));mp = (m or []) and m.__dict__.setdefault('__path__',[]);(p not in mp) and mp.append(p
)
Traceback (most recent call last):
File "<frozen site>", line 319, in _exec_imports
File "<string>", line 1, in <module>
KeyError: "local variable ''sitedir'' is not defined"
Error in import line from /usr/lib/python3.15/site-packages/google_cloud_core-2.3.3-py3.15-nspkg.pth: import sys, types, os;p = os.path.join(sys._getframe(1).f_locals['sitedir'], *('google', 'cloud'));importlib = __import__('importlib.util');__import__('importlib.machinery');m = sys.modules.setdefault('google.cloud', importlib.util.module_from_spec(importlib.machinery.PathFinder.find_spec('google.cloud', [os.path.dirname(p)])));m = m or sys.modules.setdefault('google.cloud', types.ModuleType('google.cloud'));mp = (m or []) and m.__dict__.setdefault('__path__',[]);(p not in mp) and mp.append(p);m and setattr(sys.modules['google'], 'cloud', m)
Traceback (most recent call last):
File "<frozen site>", line 319, in _exec_imports
File "<string>", line 1, in <module>
KeyError: "local variable ''sitedir'' is not defined"
Error in import line from /usr/lib/python3.15/site-packages/protobuf-3.19.6-py3.15-nspkg.pth: import sys, types, os;p = os.path.join(sys._getframe(1).f_locals['sitedir'], *('google',));importlib = __import__('importlib.util');__import__('importlib.machinery');m = sys.modules.setdefault('google', importlib.util.module_from_spec(importlib.machinery.PathFinder.find_spec('google', [os.path.dirname(p)])));m = m or sys.modules.setdefault('google', types.ModuleType('google'));mp = (m or []) and m.__dict__.setdefault('__path__',[]);(p not in mp) and mp.append(p)
Traceback (most recent call last):
File "<frozen site>", line 319, in _exec_imports
File "<string>", line 1, in <module>
KeyError: "local variable ''sitedir'' is not defined"
Traceback (most recent call last):
File "/usr/lib64/python3.15/argparse.py", line 2880, in print_help
help_text = self.format_help(formatter=formatter)
TypeError: ArgumentParser.format_help() got an unexpected keyword argument 'formatter'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/builddir/build/BUILD/snakemake-9.21.1-build/BUILDROOT/usr/lib/python3.15/site-packages/snakemake/cli.py", line 2391, in main
parser, args = parse_args(argv)
~~~~~~~~~~^^^^^^
File "/builddir/build/BUILD/snakemake-9.21.1-build/BUILDROOT/usr/lib/python3.15/site-packages/snakemake/cli.py", line 1904, in parse_args
args = parser.parse_args(argv)
File "/usr/lib/python3.15/site-packages/configargparse.py", line 1048, in parse_args
args, argv = self.parse_known_args(
~~~~~~~~~~~~~~~~~~~~~^
args=args,
^^^^^^^^^^
...<3 lines>...
ignore_help_args=False,
^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/lib/python3.15/site-packages/configargparse.py", line 1266, in parse_known_args
namespace, unknown_args = argparse.ArgumentParser.parse_known_args(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
self, args=args, namespace=namespace
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/lib64/python3.15/argparse.py", line 2128, in parse_known_args
return self._parse_known_args2(args, namespace, intermixed=False)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib64/python3.15/argparse.py", line 2157, in _parse_known_args2
namespace, args = self._parse_known_args(args, namespace, intermixed)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib64/python3.15/argparse.py", line 2408, in _parse_known_args
start_index = consume_optional(start_index)
File "/usr/lib64/python3.15/argparse.py", line 2332, in consume_optional
take_action(action, args, option_string)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib64/python3.15/argparse.py", line 2233, in take_action
action(self, namespace, argument_values, option_string)
~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib64/python3.15/argparse.py", line 1281, in __call__
parser.print_help()
~~~~~~~~~~~~~~~~~^^
File "/usr/lib64/python3.15/argparse.py", line 2884, in print_help
help_text = self.format_help()
File "/usr/lib/python3.15/site-packages/configargparse.py", line 1696, in format_help
return argparse.ArgumentParser.format_help(self) + (
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
File "/usr/lib64/python3.15/argparse.py", line 2841, in format_help
return formatter.format_help()
~~~~~~~~~~~~~~~~~~~~~^^
File "/usr/lib64/python3.15/argparse.py", line 340, in format_help
help = self._root_section.format_help()
File "/usr/lib64/python3.15/argparse.py", line 265, in format_help
item_help = join([func(*args) for func, args in self.items])
~~~~^^^^^^^
File "/usr/lib64/python3.15/argparse.py", line 265, in format_help
item_help = join([func(*args) for func, args in self.items])
~~~~^^^^^^^
File "/usr/lib64/python3.15/argparse.py", line 614, in _format_action
help_text = self._expand_help(action)
File "/usr/lib64/python3.15/argparse.py", line 714, in _expand_help
help_string = self._get_help_string(action)
File "/builddir/build/BUILD/snakemake-9.21.1-build/BUILDROOT/usr/lib/python3.15/site-packages/snakemake/common/argparse.py", line 76, in _get_help_string
and not isinstance(action.default, dataclasses._MISSING_TYPE)
^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: module 'dataclasses' has no attribute '_MISSING_TYPE'
The TypeError is supposed to happen, but it is supposed to be caught: https://github.com/python/cpython/blob/f31a89bb901067dd105b00cfa90523cf7ffdbbdd/Lib/argparse.py#L2877-L2882; that’s all in the Python standard library. But then the AttributeError on _MISSING_TYPE happens, and that’s the bug in Snakemake. It looks like this is due to https://github.com/python/cpython/pull/149086 (and Snakemake using a non-public API).
I offered upstream a PR that would fix this, https://github.com/snakemake/snakemake/pull/4211, but I noted in the PR text that my approach isn’t obviously the best one, and it doesn’t remove the reliance on implementation-defined behavior.
I’m strongly considering orphaning the Snakemake stack and related packages in the next few days, for reasons that I’ll write up in a separate bug if and when I do so.
*** Bug 2483717 has been marked as a duplicate of this bug. *** FEDORA-2026-e11f2ecdad (snakemake-9.21.1-2.fc44) has been submitted as an update to Fedora 44. https://bodhi.fedoraproject.org/updates/FEDORA-2026-e11f2ecdad FEDORA-2026-1cb62e2f46 (snakemake-9.21.1-2.fc43) has been submitted as an update to Fedora 43. https://bodhi.fedoraproject.org/updates/FEDORA-2026-1cb62e2f46 FEDORA-2026-e11f2ecdad has been pushed to the Fedora 44 testing repository. Soon you'll be able to install the update with the following command: `sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2026-e11f2ecdad` You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2026-e11f2ecdad See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates. FEDORA-2026-1cb62e2f46 has been pushed to the Fedora 43 testing repository. Soon you'll be able to install the update with the following command: `sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2026-1cb62e2f46` You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2026-1cb62e2f46 See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates. This package has changed maintainer in Fedora. Reassigning to the new maintainer of this component. FEDORA-2026-e11f2ecdad (snakemake-9.21.1-2.fc44) has been pushed to the Fedora 44 stable repository. If problem still persists, please make note of it in this bug report. FEDORA-2026-1cb62e2f46 (snakemake-9.21.1-2.fc43) has been pushed to the Fedora 43 stable repository. If problem still persists, please make note of it in this bug report. |