Skip to content

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

Closed as duplicate
Closed as duplicate

Description

@alexprengere

Bug report

Bug description:

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

import argparse

parser = 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

Activity

  1. added
    stdlibStandard Library Python modules in the Lib/ directory
    on Dec 19, 2025
  2. grayjk commented on Dec 19, 2025

    @grayjk
    Contributor

    duplicate of #142950?

  3. alexprengere commented on Dec 19, 2025

    @alexprengere
    ContributorAuthor

    Yep, will close now 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

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

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions