Uh oh!
There was an error while loading. Please reload this page.
bpo-8538: Add support for boolean actions to argparse - #11478
Conversation
Uh oh!
There was an error while loading. Please reload this page.
Co-Authored-By: remilapeyre <remi.lapeyre@henki.fr>
the-knights-who-say-ni
commented
Jan 10, 2019
Hello, and thanks for your contribution! I'm a bot set up to make sure that the project can legally accept your contribution by verifying you have signed the PSF contributor agreement (CLA). Unfortunately we couldn't find an account corresponding to your GitHub username on bugs.python.org (b.p.o) to verify you have signed the CLA (this might be simply due to a missing "GitHub Name" entry in your b.p.o account settings). This is necessary for legal reasons before we can look at your contribution. Please follow the steps outlined in the CPython devguide to rectify this issue. You can check yourself to see if the CLA has been received. Thanks again for your contribution, we look forward to reviewing it! |
remilapeyre
commented
Jan 10, 2019
@kenahoo Can you sign the CLA to make @the-knights-who-say-ni happy? |
kenahoo
commented
Jan 10, 2019
Thanks @remilapeyre , I've signed it. |
Hi! I was about to write a patch to add the same feature. Good thing that I decided to look if someone was already working on it, thank you :-) I'd like to contribute with the following comments: 1. Register action rather than exposing the classI don't think self.register('action', 'optional_boolean', _BooleanOptionalAction)2. Be aware of short optionsYour current implementation does not ignore short options when adding the prefix 3. Ordering of parameters namesI think the parser.add_argument('--foo', '--bar', action='optional_boolean', ...)Then, in the help message, 4. DocumentationIn the case of registering the action 'optional_boolean', it would be necessary to update the documentation on the list of supported values for the 5. My custom action classAbout (2) and (3), I have a custom implementation in one project of mine that does that: classBoolAction(argparse.Action):
def__init__(self, option_strings, dest, **kw):
self.original_option_strings=option_stringskw['nargs'] =0option_strings= []
forsinself.original_option_strings:
option_strings.append(s)
ifs.startswith('--'):
s='--no-'+s[2:]
option_strings.append(s)
super(BoolAction, self).__init__(option_strings, dest, **kw)
def__call__(self, parser, namespace, values, option_string):
value=option_stringinself.original_option_stringssetattr(namespace, self.dest, value) |
kenahoo
commented
Jan 23, 2019
All of @guludo's comments seem reasonable to me. |
remilapeyre
commented
Jan 28, 2019
Hi @guludo, about 1. this has been discussed on b.p.o (https://bugs.python.org/issue8538#msg105620) and Steven Bethard seems to agree (https://bugs.python.org/issue8538#msg166165) so I think it is better to keep it that way before a core reviewers either confirm this API or asks for a registered action. I think it makes 4. unneeded. Nice catch for 2. and 3. I used something similar than you did for short options. The latest commit fix the ordering too. |
matrixise
commented
Sep 13, 2019
I would like to see the result of Travis... |
matrixise
left a comment
There was a problem hiding this comment.
Thank you for this contribution, I like the feature.
matrixise
commented
Sep 13, 2019
Thank you for your contribution and this feature, really appreciated. |
remilapeyre
commented
Sep 13, 2019
Thanks @matrixise ! |
matrixise
commented
Sep 16, 2019
@remilapeyre with pleasure. |
Uh oh!
There was an error while loading. Please reload this page.
python#4144 and python/cpython#11478 (review) resulted in the issue being fixed upstream. A fix in time saves a branch in typeshed :-)
#4144 and python/cpython#11478 (review) resulted in the issue being fixed upstream. Co-authored-by: hauntsaninja <>
python#4144 and python/cpython#11478 (review) resulted in the issue being fixed upstream. Co-authored-by: hauntsaninja <>
https://bugs.python.org/issue8538