From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Sat, 19 Jul 2025 14:28:57 +0000 (+0200) Subject: [3.13] gh-54732: Make argparse error caused by empty rows in option files explicit... X-Git-Tag: v3.13.6~68 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2d0f169b75ed8603d2637e83f4e47875c327b7e6;p=thirdparty%2FPython%2Fcpython.git [3.13] gh-54732: Make argparse error caused by empty rows in option files explicit (GH-136795) (#136819) gh-54732: Make argparse error caused by empty rows in option files explicit (GH-136795) (cherry picked from commit 8ffc3ef01e83ffe629c6107082677de4d23974d5) Co-authored-by: jdunter <2ve@mailbox.org> Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> --- diff --git a/Doc/library/argparse.rst b/Doc/library/argparse.rst index 290ef0fc3863..6d9348c54722 100644 --- a/Doc/library/argparse.rst +++ b/Doc/library/argparse.rst @@ -415,12 +415,18 @@ arguments they contain. For example:: >>> parser.parse_args(['-f', 'foo', '@args.txt']) Namespace(f='bar') -Arguments read from a file must by default be one per line (but see also +Arguments read from a file must be one per line by default (but see also :meth:`~ArgumentParser.convert_arg_line_to_args`) and are treated as if they were in the same place as the original file referencing argument on the command line. So in the example above, the expression ``['-f', 'foo', '@args.txt']`` is considered equivalent to the expression ``['-f', 'foo', '-f', 'bar']``. +.. note:: + + Empty lines are treated as empty strings (``''``), which are allowed as values but + not as arguments. Empty lines that are read as arguments will result in an + "unrecognized arguments" error. + :class:`ArgumentParser` uses :term:`filesystem encoding and error handler` to read the file containing arguments.