diff --git a/Doc/library/asyncio-eventloop.rst b/Doc/library/asyncio-eventloop.rst
index eed4f08..202da5a 100644
--- a/Doc/library/asyncio-eventloop.rst
+++ b/Doc/library/asyncio-eventloop.rst
@@ -346,7 +346,7 @@
 
    * *reuse_address* tells the kernel to reuse a local socket in
      TIME_WAIT state, without waiting for its natural timeout to
-     expire. If not specified will automatically be set to True on
+     expire. If not specified will automatically be set to ``True`` on
      UNIX.
 
    * *reuse_port* tells the kernel to allow this endpoint to be bound to the
@@ -424,7 +424,7 @@
 
    * *reuse_address* tells the kernel to reuse a local socket in
      TIME_WAIT state, without waiting for its natural timeout to
-     expire. If not specified will automatically be set to True on
+     expire. If not specified will automatically be set to ``True`` on
      UNIX.
 
    * *reuse_port* tells the kernel to allow this endpoint to be bound to the
diff --git a/Doc/library/asyncio-task.rst b/Doc/library/asyncio-task.rst
index 766e3b8..9bff1c4 100644
--- a/Doc/library/asyncio-task.rst
+++ b/Doc/library/asyncio-task.rst
@@ -245,7 +245,7 @@
 
    .. method:: done()
 
-      Return True if the future is done.
+      Return ``True`` if the future is done.
 
       Done means either that a result / exception are available, or that the
       future was cancelled.
@@ -562,7 +562,7 @@
    All futures must share the same event loop.  If all the tasks are done
    successfully, the returned future's result is the list of results (in the
    order of the original sequence, not necessarily the order of results
-   arrival).  If *return_exceptions* is True, exceptions in the tasks are
+   arrival).  If *return_exceptions* is true, exceptions in the tasks are
    treated the same as successful results, and gathered in the result list;
    otherwise, the first raised exception will be immediately propagated to the
    returned future.
diff --git a/Doc/library/ctypes.rst b/Doc/library/ctypes.rst
index 7550f4d..94822ba 100644
--- a/Doc/library/ctypes.rst
+++ b/Doc/library/ctypes.rst
@@ -1358,7 +1358,7 @@
 ignored.  On posix systems, RTLD_NOW is always added, and is not
 configurable.
 
-The *use_errno* parameter, when set to True, enables a ctypes mechanism that
+The *use_errno* parameter, when set to true, enables a ctypes mechanism that
 allows accessing the system :data:`errno` error number in a safe way.
 :mod:`ctypes` maintains a thread-local copy of the systems :data:`errno`
 variable; if you call foreign functions created with ``use_errno=True`` then the
@@ -1369,7 +1369,7 @@
 copy, and the function :func:`ctypes.set_errno` changes the ctypes private copy
 to a new value and returns the former value.
 
-The *use_last_error* parameter, when set to True, enables the same mechanism for
+The *use_last_error* parameter, when set to true, enables the same mechanism for
 the Windows error code which is managed by the :func:`GetLastError` and
 :func:`SetLastError` Windows API functions; :func:`ctypes.get_last_error` and
 :func:`ctypes.set_last_error` are used to request and change the ctypes private
@@ -1579,7 +1579,7 @@
 
    The returned function prototype creates functions that use the standard C
    calling convention.  The function will release the GIL during the call.  If
-   *use_errno* is set to True, the ctypes private copy of the system
+   *use_errno* is set to true, the ctypes private copy of the system
    :data:`errno` variable is exchanged with the real :data:`errno` value before
    and after the call; *use_last_error* does the same for the Windows error
    code.
diff --git a/Doc/library/functools.rst b/Doc/library/functools.rst
index f9b90a8..9a8defe 100644
--- a/Doc/library/functools.rst
+++ b/Doc/library/functools.rst
@@ -56,7 +56,7 @@
    grow without bound.  The LRU feature performs best when *maxsize* is a
    power-of-two.
 
-   If *typed* is set to True, function arguments of different types will be
+   If *typed* is set to true, function arguments of different types will be
    cached separately.  For example, ``f(3)`` and ``f(3.0)`` will be treated
    as distinct calls with distinct results.
 
diff --git a/Doc/library/io.rst b/Doc/library/io.rst
index 23df18f..4da6e09 100644
--- a/Doc/library/io.rst
+++ b/Doc/library/io.rst
@@ -537,7 +537,7 @@
    The *name* can be one of two things:
 
    * a character string or :class:`bytes` object representing the path to the
-     file which will be opened. In this case closefd must be True (the default)
+     file which will be opened. In this case closefd must be ``True`` (the default)
      otherwise an error will be raised.
    * an integer representing the number of an existing OS-level file descriptor
      to which the resulting :class:`FileIO` object will give access. When the
diff --git a/Doc/library/logging.rst b/Doc/library/logging.rst
index 98fea66..97fed84 100644
--- a/Doc/library/logging.rst
+++ b/Doc/library/logging.rst
@@ -318,7 +318,7 @@
    looking for handlers in this logger and its parents in the logger hierarchy.
    Returns ``True`` if a handler was found, else ``False``. The method stops searching
    up the hierarchy whenever a logger with the 'propagate' attribute set to
-   False is found - that will be the last logger which is checked for the
+   false is found - that will be the last logger which is checked for the
    existence of handlers.
 
    .. versionadded:: 3.2
diff --git a/Doc/library/quopri.rst b/Doc/library/quopri.rst
index 3c31125..ef2b5f2 100644
--- a/Doc/library/quopri.rst
+++ b/Doc/library/quopri.rst
@@ -52,7 +52,7 @@
 
    Like :func:`encode`, except that it accepts a source :class:`bytes` and
    returns the corresponding encoded :class:`bytes`. By default, it sends a
-   False value to *quotetabs* parameter of the :func:`encode` function.
+   ``False`` value to *quotetabs* parameter of the :func:`encode` function.
 
 
 
diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst
index 2636b15..a2f0083 100644
--- a/Doc/library/ssl.rst
+++ b/Doc/library/ssl.rst
@@ -1387,7 +1387,7 @@
    This setting doesn't apply to client sockets.  You can also use the
    :data:`OP_SINGLE_ECDH_USE` option to further improve security.
 
-   This method is not available if :data:`HAS_ECDH` is False.
+   This method is not available if :data:`HAS_ECDH` is ``False``.
 
    .. versionadded:: 3.3
 
diff --git a/Doc/library/subprocess.rst b/Doc/library/subprocess.rst
index 33563bb..c1b28f8 100644
--- a/Doc/library/subprocess.rst
+++ b/Doc/library/subprocess.rst
@@ -64,7 +64,7 @@
    is automatically created with ``stdin=PIPE``, and the *stdin* argument may
    not be used as well.
 
-   If *check* is True, and the process exits with a non-zero exit code, a
+   If *check* is true, and the process exits with a non-zero exit code, a
    :exc:`CalledProcessError` exception will be raised. Attributes of that
    exception hold the arguments, the exit code, and stdout and stderr if they
    were captured.
diff --git a/Doc/library/sysconfig.rst b/Doc/library/sysconfig.rst
index 6ba094d..02aaab3 100644
--- a/Doc/library/sysconfig.rst
+++ b/Doc/library/sysconfig.rst
@@ -152,7 +152,7 @@
    If *vars* is provided, it must be a dictionary of variables that will
    update the dictionary used to expand the paths.
 
-   If *expand* is set to False, the paths will not be expanded.
+   If *expand* is set to false, the paths will not be expanded.
 
    If *scheme* is not an existing scheme, :func:`get_paths` will raise a
    :exc:`KeyError`.
diff --git a/Doc/library/threading.rst b/Doc/library/threading.rst
index 5063ede..cddbd52 100644
--- a/Doc/library/threading.rst
+++ b/Doc/library/threading.rst
@@ -615,7 +615,7 @@
 
    .. method:: wait_for(predicate, timeout=None)
 
-      Wait until a condition evaluates to True.  *predicate* should be a
+      Wait until a condition evaluates to true.  *predicate* should be a
       callable which result will be interpreted as a boolean value.
       A *timeout* may be provided giving the maximum time to wait.
 
