Uh oh!
There was an error while loading. Please reload this page.
GH-139862: Remove color from HelpFormatter - #142274
Conversation
Uh oh!
There was an error while loading. Please reload this page.
hugovk
commented
Dec 5, 2025
(Updated from |
…BfsD4.rst Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Uh oh!
There was an error while loading. Please reload this page.
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
hamdanal
commented
Dec 7, 2025
This PR broke instantiating the formatter outside the parser because importargparseformatter=argparse.HelpFormatter(prog="program")
formatter.add_usage(usage=None, actions=[], groups=[])
print(formatter.format_help())This now raises an Traceback (most recent call last):
File "/tmp/t.py", line 5, in <module>print(formatter.format_help())
~~~~~~~~~~~~~~~~~~~~~^^
File "/tmp/argparse.py", line 303, in format_helphelp=self._root_section.format_help()
File "/tmp/argparse.py", line 228, in format_help
item_help = join([func(*args) for func, args inself.items])
~~~~^^^^^^^
File "/tmp/argparse.py", line 315, in _format_usage
t =self._theme
^^^^^^^^^^^AttributeError: 'HelpFormatter' object has no attribute '_theme'This only broke a test over at https://github.com/hamdanal/rich-argparse and I am not sure if it a supported usage of the formatter. Let me know if I need to create an issue/PR. |
savannahostrowski
commented
Dec 7, 2025
Hey @hamdanal, thanks for raising this! Direct instantiation of |
hugovk
commented
Dec 7, 2025
@hamdanal And thank you for testing the nightly and reporting so quickly :) |
This is broken with cpython main which removed the color keyword argument to HelperFormatter in python/cpython#142274
This is broken with cpython main which removed the color keyword argument to HelperFormatter in python/cpython#142274
This is broken with cpython main which removed the color keyword argument to HelperFormatter in python/cpython#142274
hroncok
commented
Dec 18, 2025
Beware, this also breaks existing code that sets the color this way. This was possible in 3.14 and now it explodes: Python 3.14.2 (main, Dec 5 2025, 00:00:00) [GCC 15.2.1 20251111 (Red Hat 15.2.1-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import argparse
>>> argparse.HelpFormatter(prog='', color=True)
<argparse.HelpFormatter object at 0x7fd998cd1400>Python 3.15.0a3 (main, Dec 16 2025, 00:00:00) [GCC 15.2.1 20251211 (Red Hat 15.2.1-5)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import argparse
>>> argparse.HelpFormatter(prog='', color=True)
Traceback (most recent call last):
File "<python-input-1>", line 1, in <module>
argparse.HelpFormatter(prog='', color=True)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
TypeError: HelpFormatter.__init__() got an unexpected keyword argument 'color'In particular, this breaks pypa/build before pypa/build#962 |
hroncok
commented
Dec 18, 2025
Reported as #142928, so it is trackable. |
After digging into this, I think that we should just remove color from being passed into HelpFormatter, since this never worked and was never documented. IMO, this should be controlled by the parser anyway.
argparseformatter handling ofcolor#139862