GH-54732: Tweak wording around empty lines in argument files#150980
Conversation
Documentation build overview
17 files changed ·
|
| Each line is treated as a single argument, so an empty line is read as an | ||
| empty string (``''``). |
There was a problem hiding this comment.
I tried to simulate the situation where empty strings are passed from a file and it doesn't return an unrecognized argument, so this note makes much more sense to me and is perfectly understandable.
I also tried to simulate the unrecognized arguments error to see when it appears and my understanding is that it's related to leftover tokens in general rather than empty strings. So, if my understanding is correct, it also makes sense that it was removed here.
So, overall, the new wording is much clearer to me.
>>> import argparse
>>> with open("args.txt", "w") as f:
... f.write("-f\n\nbar\n")
...
8
>>> parser = argparse.ArgumentParser(fromfile_prefix_chars="@")
>>> parser.add_argument("-f")
_StoreAction(option_strings=['-f'], dest='f', nargs=None, const=None, default=None, type=None, choices=None, required=False, help=None, metavar=None, deprecated=False)
>>> parser.add_argument("rest", nargs="*")
_StoreAction(option_strings=[], dest='rest', nargs='*', const=None, default=None, type=None, choices=None, required=False, help=None, metavar=None, deprecated=False)
>>> parser._read_args_from_files(["@args.txt"])
['-f', '', 'bar']
>>> parser.parse_args(["@args.txt"])
Namespace(f='', rest=['bar'])
>>> p2 = argparse.ArgumentParser(fromfile_prefix_chars="@")
>>> p2.add_argument("-f")
_StoreAction(option_strings=['-f'], dest='f', nargs=None, const=None, default=None, type=None, choices=None, required=False, help=None, metavar=None, deprecated=False)
>>> p2.parse_args(["@args.txt"])
usage: [-h] [-f F]
: error: unrecognized arguments: bar|
Thanks @savannahostrowski for the PR 🌮🎉.. I'm working now to backport this PR to: 3.13, 3.14, 3.15. |
|
GH-151165 is a backport of this pull request to the 3.15 branch. |
|
GH-151166 is a backport of this pull request to the 3.14 branch. |
|
GH-151167 is a backport of this pull request to the 3.13 branch. |
Follow-up to #136795.
Revises the empty-lines note to address the concerns raised in #54732 (comment), and adds a caveat to the
convert_arg_line_to_argsexample that split-based parsing can't represent arguments containing spaces.