summaryrefslogtreecommitdiffstats
path: root/Doc
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2024-10-23 07:50:29 (GMT)
committerGitHub <noreply@github.com>2024-10-23 07:50:29 (GMT)
commit834ba5aaf21ac7fd123534dae8f9e478ee526aaa (patch)
tree3e1351b3c1b061fdfd0d382614db89489cccdd14 /Doc
parentc75ff2ef8eb71d91b1f92db9c2bc7ff18c582ab1 (diff)
downloadcpython-834ba5aaf21ac7fd123534dae8f9e478ee526aaa.zip
cpython-834ba5aaf21ac7fd123534dae8f9e478ee526aaa.tar.gz
cpython-834ba5aaf21ac7fd123534dae8f9e478ee526aaa.tar.bz2
gh-58032: Deprecate the argparse.FileType type converter (GH-124664)
Diffstat (limited to 'Doc')
-rw-r--r--Doc/deprecations/pending-removal-in-future.rst21
-rw-r--r--Doc/library/argparse.rst25
-rw-r--r--Doc/whatsnew/3.14.rst6
3 files changed, 33 insertions, 19 deletions
diff --git a/Doc/deprecations/pending-removal-in-future.rst b/Doc/deprecations/pending-removal-in-future.rst
index d77fc86..5a4502a 100644
--- a/Doc/deprecations/pending-removal-in-future.rst
+++ b/Doc/deprecations/pending-removal-in-future.rst
@@ -4,16 +4,6 @@ Pending removal in future versions
The following APIs will be removed in the future,
although there is currently no date scheduled for their removal.
-* :mod:`argparse`:
-
- * Nesting argument groups and nesting mutually exclusive
- groups are deprecated.
- * Passing the undocumented keyword argument *prefix_chars* to
- :meth:`~argparse.ArgumentParser.add_argument_group` is now
- deprecated.
-
-* :mod:`array`'s ``'u'`` format code (:gh:`57281`)
-
* :mod:`builtins`:
* ``bool(NotImplemented)``.
@@ -43,6 +33,17 @@ although there is currently no date scheduled for their removal.
as a single positional argument.
(Contributed by Serhiy Storchaka in :gh:`109218`.)
+* :mod:`argparse`:
+
+ * Nesting argument groups and nesting mutually exclusive
+ groups are deprecated.
+ * Passing the undocumented keyword argument *prefix_chars* to
+ :meth:`~argparse.ArgumentParser.add_argument_group` is now
+ deprecated.
+ * The :class:`argparse.FileType` type converter is deprecated.
+
+* :mod:`array`'s ``'u'`` format code (:gh:`57281`)
+
* :mod:`calendar`: ``calendar.January`` and ``calendar.February`` constants are
deprecated and replaced by :data:`calendar.JANUARY` and
:data:`calendar.FEBRUARY`.
diff --git a/Doc/library/argparse.rst b/Doc/library/argparse.rst
index ef0db3e..65663d4 100644
--- a/Doc/library/argparse.rst
+++ b/Doc/library/argparse.rst
@@ -865,16 +865,14 @@ See also :ref:`specifying-ambiguous-arguments`. The supported values are:
output files::
>>> parser = argparse.ArgumentParser()
- >>> parser.add_argument('infile', nargs='?', type=argparse.FileType('r'),
- ... default=sys.stdin)
- >>> parser.add_argument('outfile', nargs='?', type=argparse.FileType('w'),
- ... default=sys.stdout)
+ >>> parser.add_argument('infile', nargs='?')
+ >>> parser.add_argument('outfile', nargs='?')
>>> parser.parse_args(['input.txt', 'output.txt'])
- Namespace(infile=<_io.TextIOWrapper name='input.txt' encoding='UTF-8'>,
- outfile=<_io.TextIOWrapper name='output.txt' encoding='UTF-8'>)
+ Namespace(infile='input.txt', outfile='output.txt')
+ >>> parser.parse_args(['input.txt'])
+ Namespace(infile='input.txt', outfile=None)
>>> parser.parse_args([])
- Namespace(infile=<_io.TextIOWrapper name='<stdin>' encoding='UTF-8'>,
- outfile=<_io.TextIOWrapper name='<stdout>' encoding='UTF-8'>)
+ Namespace(infile=None, outfile=None)
.. index:: single: * (asterisk); in argparse module
@@ -1033,7 +1031,6 @@ Common built-in types and functions can be used as type converters:
parser.add_argument('distance', type=float)
parser.add_argument('street', type=ascii)
parser.add_argument('code_point', type=ord)
- parser.add_argument('dest_file', type=argparse.FileType('w', encoding='latin-1'))
parser.add_argument('datapath', type=pathlib.Path)
User defined functions can be used as well:
@@ -1827,9 +1824,19 @@ FileType objects
>>> parser.parse_args(['-'])
Namespace(infile=<_io.TextIOWrapper name='<stdin>' encoding='UTF-8'>)
+ .. note::
+
+ If one argument uses *FileType* and then a subsequent argument fails,
+ an error is reported but the file is not automatically closed.
+ This can also clobber the output files.
+ In this case, it would be better to wait until after the parser has
+ run and then use the :keyword:`with`-statement to manage the files.
+
.. versionchanged:: 3.4
Added the *encodings* and *errors* parameters.
+ .. deprecated:: 3.14
+
Argument groups
^^^^^^^^^^^^^^^
diff --git a/Doc/whatsnew/3.14.rst b/Doc/whatsnew/3.14.rst
index 1dd6c19..b389e6d 100644
--- a/Doc/whatsnew/3.14.rst
+++ b/Doc/whatsnew/3.14.rst
@@ -464,6 +464,12 @@ Deprecated
as a single positional argument.
(Contributed by Serhiy Storchaka in :gh:`109218`.)
+* :mod:`argparse`:
+ Deprecated the :class:`argparse.FileType` type converter.
+ Anything with resource management should be done downstream after the
+ arguments are parsed.
+ (Contributed by Serhiy Storchaka in :gh:`58032`.)
+
* :mod:`multiprocessing` and :mod:`concurrent.futures`:
The default start method (see :ref:`multiprocessing-start-methods`) changed
away from *fork* to *forkserver* on platforms where it was not already