Skip to content

Python3.15a3 breaks %(default)x in help strings#142980

@alexprengere

Description

@alexprengere

Bug report

Bug description:

Since the merge of #141940, the following is broken:

importargparseparser=argparse.ArgumentParser() parser.add_argument( "--foo", type=int, default=1234, help="0x%(default)x", ) args=parser.parse_args()

It will trigger:

Traceback (most recent call last): File "/Users/aprengere/Dev/cpython/Lib/argparse.py", line 1792, in _check_help formatter._expand_help(action) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ File "/Users/aprengere/Dev/cpython/Lib/argparse.py", line 695, in _expand_help return help_string % params ~~~~~~~~~~~~^~~~~~~~ TypeError: %x format: an integer is required, not str 

The reason is that now the values are "colored" (thus converted to str) before doing the actual interpolation using help_string % values.
If the expected type is not string (integer in this example), then the --help will fail.

I will try to fix this using a different approach for #141940

CPython versions tested on:

CPython main branch

Operating systems tested on:

macOS

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.15new features, bugs and security fixesstdlibStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or error

    Projects

    Status

    Doc issues

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions