Issue #25523: Correct "a" article to "an" article
This changes the main documentation, doc strings, source code comments, and a
couple error messages in the test suite. In some cases the word was removed
to fix the grammar.
diff --git a/Doc/library/chunk.rst b/Doc/library/chunk.rst
index 04c7e27..d31fa0a 100644
--- a/Doc/library/chunk.rst
+++ b/Doc/library/chunk.rst
@@ -48,7 +48,7 @@
the :class:`Chunk` class defined here is to instantiate an instance at the start
of each chunk and read from the instance until it reaches the end, after which a
new instance can be instantiated. At the end of the file, creating a new
-instance will fail with a :exc:`EOFError` exception.
+instance will fail with an :exc:`EOFError` exception.
.. class:: Chunk(file[, align, bigendian, inclheader])
diff --git a/Doc/library/difflib.rst b/Doc/library/difflib.rst
index ead6b7a..c6bf3ef 100644
--- a/Doc/library/difflib.rst
+++ b/Doc/library/difflib.rst
@@ -276,7 +276,7 @@
generating the delta lines) in unified diff format.
Unified diffs are a compact way of showing just the lines that have changed plus
- a few lines of context. The changes are shown in a inline style (instead of
+ a few lines of context. The changes are shown in an inline style (instead of
separate before/after blocks). The number of context lines is set by *n* which
defaults to three.
diff --git a/Doc/library/ftplib.rst b/Doc/library/ftplib.rst
index 3ab7b3b..b155daf 100644
--- a/Doc/library/ftplib.rst
+++ b/Doc/library/ftplib.rst
@@ -283,9 +283,9 @@
.. method:: FTP.transfercmd(cmd[, rest])
- Initiate a transfer over the data connection. If the transfer is active, send a
+ Initiate a transfer over the data connection. If the transfer is active, send an
``EPRT`` or ``PORT`` command and the transfer command specified by *cmd*, and
- accept the connection. If the server is passive, send a ``EPSV`` or ``PASV``
+ accept the connection. If the server is passive, send an ``EPSV`` or ``PASV``
command, connect to it, and start the transfer command. Either way, return the
socket for the connection.
diff --git a/Doc/library/io.rst b/Doc/library/io.rst
index d3cdbf1..633a6af 100644
--- a/Doc/library/io.rst
+++ b/Doc/library/io.rst
@@ -221,7 +221,7 @@
Even though :class:`IOBase` does not declare :meth:`read`, :meth:`readinto`,
or :meth:`write` because their signatures will vary, implementations and
clients should consider those methods part of the interface. Also,
- implementations may raise a :exc:`IOError` when operations they do not
+ implementations may raise an :exc:`IOError` when operations they do not
support are called.
The basic type used for binary data read from or written to a file is
diff --git a/Doc/library/optparse.rst b/Doc/library/optparse.rst
index dfb43a1..c1ed15b 100644
--- a/Doc/library/optparse.rst
+++ b/Doc/library/optparse.rst
@@ -1327,7 +1327,7 @@
the list of arguments to process (default: ``sys.argv[1:]``)
``values``
- a :class:`optparse.Values` object to store option arguments in (default: a
+ an :class:`optparse.Values` object to store option arguments in (default: a
new instance of :class:`Values`) -- if you give an existing object, the
option defaults will not be initialized on it
diff --git a/Doc/library/os.path.rst b/Doc/library/os.path.rst
index 5d7edd1..99a36af 100644
--- a/Doc/library/os.path.rst
+++ b/Doc/library/os.path.rst
@@ -256,7 +256,7 @@
.. function:: samefile(path1, path2)
Return ``True`` if both pathname arguments refer to the same file or directory
- (as indicated by device number and i-node number). Raise an exception if a
+ (as indicated by device number and i-node number). Raise an exception if an
:func:`os.stat` call on either pathname fails.
Availability: Unix.
diff --git a/Doc/library/smtplib.rst b/Doc/library/smtplib.rst
index 5b2808d..b6e7689 100644
--- a/Doc/library/smtplib.rst
+++ b/Doc/library/smtplib.rst
@@ -22,7 +22,7 @@
.. class:: SMTP([host[, port[, local_hostname[, timeout]]]])
- A :class:`SMTP` instance encapsulates an SMTP connection. It has methods
+ An :class:`SMTP` instance encapsulates an SMTP connection. It has methods
that support a full repertoire of SMTP and ESMTP operations. If the optional
host and port parameters are given, the SMTP :meth:`connect` method is
called with those parameters during initialization. If specified,
@@ -45,7 +45,7 @@
.. class:: SMTP_SSL([host[, port[, local_hostname[, keyfile[, certfile[, timeout]]]]]])
- A :class:`SMTP_SSL` instance behaves exactly the same as instances of
+ An :class:`SMTP_SSL` instance behaves exactly the same as instances of
:class:`SMTP`. :class:`SMTP_SSL` should be used for situations where SSL is
required from the beginning of the connection and using :meth:`starttls` is
not appropriate. If *host* is not specified, the local host is used. If
diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst
index f79eba6..73b5d5c 100644
--- a/Doc/library/socket.rst
+++ b/Doc/library/socket.rst
@@ -757,7 +757,7 @@
Set blocking or non-blocking mode of the socket: if *flag* is 0, the socket is
set to non-blocking, else to blocking mode. Initially all sockets are in
blocking mode. In non-blocking mode, if a :meth:`recv` call doesn't find any
- data, or if a :meth:`send` call can't immediately dispose of the data, a
+ data, or if a :meth:`send` call can't immediately dispose of the data, an
:exc:`error` exception is raised; in blocking mode, the calls block until they
can proceed. ``s.setblocking(0)`` is equivalent to ``s.settimeout(0.0)``;
``s.setblocking(1)`` is equivalent to ``s.settimeout(None)``.
diff --git a/Doc/library/sqlite3.rst b/Doc/library/sqlite3.rst
index f897234..2b730e8 100644
--- a/Doc/library/sqlite3.rst
+++ b/Doc/library/sqlite3.rst
@@ -583,7 +583,7 @@
.. attribute:: lastrowid
This read-only attribute provides the rowid of the last modified row. It is
- only set if you issued a ``INSERT`` statement using the :meth:`execute`
+ only set if you issued an ``INSERT`` statement using the :meth:`execute`
method. For operations other than ``INSERT`` or when :meth:`executemany` is
called, :attr:`lastrowid` is set to :const:`None`.
diff --git a/Doc/library/sunau.rst b/Doc/library/sunau.rst
index 4bdb99b..5d57d4b 100644
--- a/Doc/library/sunau.rst
+++ b/Doc/library/sunau.rst
@@ -54,8 +54,8 @@
Note that it does not allow read/write files.
- A *mode* of ``'r'`` returns a :class:`AU_read` object, while a *mode* of ``'w'``
- or ``'wb'`` returns a :class:`AU_write` object.
+ A *mode* of ``'r'`` returns an :class:`AU_read` object, while a *mode* of ``'w'``
+ or ``'wb'`` returns an :class:`AU_write` object.
.. function:: openfp(file, mode)
diff --git a/Doc/library/webbrowser.rst b/Doc/library/webbrowser.rst
index f74b89f..03c5713 100644
--- a/Doc/library/webbrowser.rst
+++ b/Doc/library/webbrowser.rst
@@ -20,7 +20,7 @@
the user exits the browser.
If the environment variable :envvar:`BROWSER` exists, it is interpreted to
-override the platform default list of browsers, as a :data:`os.pathsep`-separated
+override the platform default list of browsers, as an :data:`os.pathsep`-separated
list of browsers to try in order. When the value of a list part contains the
string ``%s``, then it is interpreted as a literal browser command line to be
used with the argument URL substituted for ``%s``; if the part does not contain