bpo-33109: argparse subparsers are once again not required by default#6919
bpo-33109: argparse subparsers are once again not required by default#6919ned-deily merged 1 commit intopython:masterfrom
Conversation
bpo-26510 in 3.7.0a2 changed the behavior of argparse to make subparsers required by default, returning to the behavior of 2.7 and 3.2. The behavior was changed in 3.3 to be no longer required. While it might make more sense to have the default to required, compatibility with 3.3 through 3.6 is probably less disruptive than trying to reintroduce compatibility with 2.7 at this point. This change restores the 3.6 behavior.
|
I still think we should consider the new behaviour more correct and the 3.3-3.6 behaviour a bug. This reintroduces the bug. |
|
@asottile Understood but see the discussion in https://bugs.python.org/issue33109 as to why we agree that compatibility with 3.6 is more important. Counterarguments welcome there! |
| parser_class, | ||
| dest=SUPPRESS, | ||
| required=True, | ||
| required=False, |
There was a problem hiding this comment.
While we are here, please move required to the end of the list of parameters. It was inserted in the middle of non-keyword-only parameters.
There was a problem hiding this comment.
This was discussed here
It makes no difference because add_subparsers does not take positional arguments (all arguments are keyword-only). The ordering here was chosen to be consistent with the rest of the classes in the module
There was a problem hiding this comment.
Oh, sorry. You are right.
|
Thanks @ned-deily for the PR 🌮🎉.. I'm working now to backport this PR to: 3.7. |
|
GH-7089 is a backport of this pull request to the 3.7 branch. |
…pythonGH-6919) bpo-26510 in 3.7.0a2 changed the behavior of argparse to make subparsers required by default, returning to the behavior of 2.7 and 3.2. The behavior was changed in 3.3 to be no longer required. While it might make more sense to have the default to required, compatibility with 3.3 through 3.6 is probably less disruptive than trying to reintroduce compatibility with 2.7 at this point. This change restores the 3.6 behavior. (cherry picked from commit 8ebf5ce) Co-authored-by: Ned Deily <[email protected]>
…GH-6919) (GH-7089) bpo-26510 in 3.7.0a2 changed the behavior of argparse to make subparsers required by default, returning to the behavior of 2.7 and 3.2. The behavior was changed in 3.3 to be no longer required. While it might make more sense to have the default to required, compatibility with 3.3 through 3.6 is probably less disruptive than trying to reintroduce compatibility with 2.7 at this point. This change restores the 3.6 behavior. (cherry picked from commit 8ebf5ce) Co-authored-by: Ned Deily <[email protected]>
bpo-26510 in 3.7.0a2 changed the behavior of argparse to make
subparsers required by default, returning to the behavior of 2.7
and 3.2. The behavior was changed in 3.3 to be no longer required.
While it might make more sense to have the default to required,
compatibility with 3.3 through 3.6 is probably less disruptive
than trying to reintroduce compatibility with 2.7 at this point.
This change restores the 3.6 behavior.
https://bugs.python.org/issue33109