Skip to content

Preserve defaults for positional-only parameters - #700

Open
Shubham-Padkonde wants to merge 1 commit into
google:masterfrom
Shubham-Padkonde:fix/positional-only-defaults
Open

Shubham-Padkonde wants to merge 1 commit into
google:masterfrom
Shubham-Padkonde:fix/positional-only-defaults

Conversation

@Shubham-Padkonde

Copy link
Copy Markdown

Python Fire drops default values for positional-only parameters, incorrectly treating optional arguments as required.

Reproducer:

from fire import core
core.Fire('hi'.rjust, command=['5'])

Before this fix, Fire reports that fillchar is required. Expected: ' hi'. dict.get and user-defined positional-only defaults are also affected.

The fix collects defaults for both positional parameter kinds in signature order. Six regression tests cover bound and unbound built-ins, mixed signatures, omitted defaults, explicit overrides, and required arguments. The mixed-signature test remains parseable on Python 3.7.

Validation on Python 3.12.14: 279 tests passed; pylint on changed modules: 10.00/10; git diff --check passed. Four of the six new tests failed before the implementation change. Other Python versions and upstream CI have not yet run.

Prepared and validated with Codex assistance. The integration rejected the standalone issue submission requested by CONTRIBUTING.md with HTTP 403, so the reproducer is included here.

Collect default values for both positional-only and positional-or-keyword
parameters. Add six regression tests covering built-ins, bound methods,
mixed signatures, omitted defaults, overrides, and required arguments.

Prepared with Codex assistance. Local validation on Python 3.12.14:
279 tests passed; pylint on changed modules passed with 10.00/10.
@google-cla

google-cla Bot commented Sep 15, 2026

Copy link
Copy Markdown

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant