bug: show original choice casing in invalid choice errors - #667
Open
Amadeus-22 wants to merge 1 commit into
Open
Amadeus-22 wants to merge 1 commit into
Amadeus-22 wants to merge 1 commit into
Conversation
Since Click 8.2 the invalid choice error lists casefolded values for case-insensitive choices. Use the original casing, as get_metavar already does for --help, and add tests for CaseInsensitiveChoice. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #641 for #588. Closes #588.
Choicetoken normalization + make generic pallets/click#2796),Choicecasefolds choices whencase_sensitive=Falseand builds its display strings from those values. Fix readme.py script: Pydantic v2 and Click 8.2+ compatibility #641 fixed--helpby overridingget_metavarinCaseInsensitiveChoice, but the invalid choice error still lists lowercased values, e.g.'bogus' is not one of 'equity', 'forex', ...forlean data generate --security-type bogus.get_invalid_choice_messageinCaseInsensitiveChoiceso it uses the original casing too, sharing the display logic withget_metavar. Matching is unchanged (still case-insensitive).CaseInsensitiveChoice: help output casing, case-insensitive input, and the invalid choice message. They pass with Click 8.5.0 and 8.1.8.Before:
After: