diff --git a/Doc/howto/curses.rst b/Doc/howto/curses.rst
index c85b318..ea62b1c 100644
--- a/Doc/howto/curses.rst
+++ b/Doc/howto/curses.rst
@@ -422,7 +422,7 @@
 blue or any other color you like.  Unfortunately, the Linux console doesn't
 support this, so I'm unable to try it out, and can't provide any examples.  You
 can check if your terminal can do this by calling
-:func:`~curses.can_change_color`, which returns True if the capability is
+:func:`~curses.can_change_color`, which returns ``True`` if the capability is
 there.  If you're lucky enough to have such a talented terminal, consult your
 system's man pages for more information.
 
diff --git a/Doc/howto/functional.rst b/Doc/howto/functional.rst
index 0f4c4e4..97c90c7 100644
--- a/Doc/howto/functional.rst
+++ b/Doc/howto/functional.rst
@@ -689,8 +689,8 @@
 
 
 The :func:`any(iter) <any>` and :func:`all(iter) <all>` built-ins look at the
-truth values of an iterable's contents.  :func:`any` returns True if any element
-in the iterable is a true value, and :func:`all` returns True if all of the
+truth values of an iterable's contents.  :func:`any` returns ``True`` if any element
+in the iterable is a true value, and :func:`all` returns ``True`` if all of the
 elements are true values:
 
     >>> any([0,1,0])
diff --git a/Doc/library/ast.rst b/Doc/library/ast.rst
index 16de3ca..daf28de 100644
--- a/Doc/library/ast.rst
+++ b/Doc/library/ast.rst
@@ -244,6 +244,6 @@
    Return a formatted dump of the tree in *node*.  This is mainly useful for
    debugging purposes.  The returned string will show the names and the values
    for fields.  This makes the code impossible to evaluate, so if evaluation is
-   wanted *annotate_fields* must be set to False.  Attributes such as line
+   wanted *annotate_fields* must be set to ``False``.  Attributes such as line
    numbers and column offsets are not dumped by default.  If this is wanted,
    *include_attributes* can be set to ``True``.
diff --git a/Doc/library/bdb.rst b/Doc/library/bdb.rst
index 0737602..7229087 100644
--- a/Doc/library/bdb.rst
+++ b/Doc/library/bdb.rst
@@ -194,17 +194,17 @@
    .. method:: user_line(frame)
 
       This method is called from :meth:`dispatch_line` when either
-      :meth:`stop_here` or :meth:`break_here` yields True.
+      :meth:`stop_here` or :meth:`break_here` yields ``True``.
 
    .. method:: user_return(frame, return_value)
 
       This method is called from :meth:`dispatch_return` when :meth:`stop_here`
-      yields True.
+      yields ``True``.
 
    .. method:: user_exception(frame, exc_info)
 
       This method is called from :meth:`dispatch_exception` when
-      :meth:`stop_here` yields True.
+      :meth:`stop_here` yields ``True``.
 
    .. method:: do_clear(arg)
 
@@ -245,7 +245,7 @@
 
    .. method:: set_quit()
 
-      Set the :attr:`quitting` attribute to True.  This raises :exc:`BdbQuit` in
+      Set the :attr:`quitting` attribute to ``True``.  This raises :exc:`BdbQuit` in
       the next call to one of the :meth:`dispatch_\*` methods.
 
 
diff --git a/Doc/library/bz2.rst b/Doc/library/bz2.rst
index 44e1331..9027a35 100644
--- a/Doc/library/bz2.rst
+++ b/Doc/library/bz2.rst
@@ -169,7 +169,7 @@
 
    .. attribute:: eof
 
-      True if the end-of-stream marker has been reached.
+      ``True`` if the end-of-stream marker has been reached.
 
       .. versionadded:: 3.3
 
diff --git a/Doc/library/ctypes.rst b/Doc/library/ctypes.rst
index a9dce61..ccbb8ec 100644
--- a/Doc/library/ctypes.rst
+++ b/Doc/library/ctypes.rst
@@ -2242,7 +2242,7 @@
 .. class:: c_bool
 
    Represent the C :c:type:`bool` datatype (more accurately, :c:type:`_Bool` from
-   C99).  Its value can be True or False, and the constructor accepts any object
+   C99).  Its value can be ``True`` or ``False``, and the constructor accepts any object
    that has a truth value.
 
 
diff --git a/Doc/library/difflib.rst b/Doc/library/difflib.rst
index 5ab1a46..81dc0f1 100644
--- a/Doc/library/difflib.rst
+++ b/Doc/library/difflib.rst
@@ -359,7 +359,7 @@
       The *autojunk* parameter.
 
    SequenceMatcher objects get three data attributes: *bjunk* is the
-   set of elements of *b* for which *isjunk* is True; *bpopular* is the set of
+   set of elements of *b* for which *isjunk* is ``True``; *bpopular* is the set of
    non-junk elements considered popular by the heuristic (if it is not
    disabled); *b2j* is a dict mapping the remaining elements of *b* to a list
    of positions where they occur. All three are reset whenever *b* is reset
diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst
index 7596228..8293d49 100644
--- a/Doc/library/dis.rst
+++ b/Doc/library/dis.rst
@@ -274,7 +274,7 @@
 
    .. data:: is_jump_target
 
-      True if other code jumps to here, otherwise False
+      ``True`` if other code jumps to here, otherwise ``False``
 
    .. versionadded:: 3.4
 
diff --git a/Doc/library/email.message.rst b/Doc/library/email.message.rst
index c0f947f..84a5f51 100644
--- a/Doc/library/email.message.rst
+++ b/Doc/library/email.message.rst
@@ -131,7 +131,7 @@
 
       Return ``True`` if the message's payload is a list of sub-\
       :class:`Message` objects, otherwise return ``False``.  When
-      :meth:`is_multipart` returns False, the payload should be a string object.
+      :meth:`is_multipart` returns ``False``, the payload should be a string object.
 
 
    .. method:: set_unixfrom(unixfrom)
diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst
index 474bb1d..fb4fc7f 100644
--- a/Doc/library/functions.rst
+++ b/Doc/library/functions.rst
@@ -48,7 +48,7 @@
 
 .. function:: all(iterable)
 
-   Return True if all elements of the *iterable* are true (or if the iterable
+   Return ``True`` if all elements of the *iterable* are true (or if the iterable
    is empty).  Equivalent to::
 
       def all(iterable):
@@ -60,8 +60,8 @@
 
 .. function:: any(iterable)
 
-   Return True if any element of the *iterable* is true.  If the iterable
-   is empty, return False.  Equivalent to::
+   Return ``True`` if any element of the *iterable* is true.  If the iterable
+   is empty, return ``False``.  Equivalent to::
 
       def any(iterable):
           for element in iterable:
@@ -905,7 +905,7 @@
      the buffer will typically be 4096 or 8192 bytes long.
 
    * "Interactive" text files (files for which :meth:`~io.IOBase.isatty`
-     returns True) use line buffering.  Other text files use the policy
+     returns ``True``) use line buffering.  Other text files use the policy
      described above for binary files.
 
    *encoding* is the name of the encoding used to decode or encode the file.
diff --git a/Doc/library/gc.rst b/Doc/library/gc.rst
index 8e3a4bd..6b95dc5 100644
--- a/Doc/library/gc.rst
+++ b/Doc/library/gc.rst
@@ -148,8 +148,8 @@
 
 .. function:: is_tracked(obj)
 
-   Returns True if the object is currently tracked by the garbage collector,
-   False otherwise.  As a general rule, instances of atomic types aren't
+   Returns ``True`` if the object is currently tracked by the garbage collector,
+   ``False`` otherwise.  As a general rule, instances of atomic types aren't
    tracked and instances of non-atomic types (containers, user-defined
    objects...) are.  However, some type-specific optimizations can be present
    in order to suppress the garbage collector footprint of simple instances
diff --git a/Doc/library/http.client.rst b/Doc/library/http.client.rst
index 892e62f..2dbfa20 100644
--- a/Doc/library/http.client.rst
+++ b/Doc/library/http.client.rst
@@ -573,7 +573,7 @@
 
 .. attribute:: HTTPResponse.closed
 
-   Is True if the stream is closed.
+   Is ``True`` if the stream is closed.
 
 Examples
 --------
diff --git a/Doc/library/http.cookiejar.rst b/Doc/library/http.cookiejar.rst
index 34bfa87..b50cb22 100644
--- a/Doc/library/http.cookiejar.rst
+++ b/Doc/library/http.cookiejar.rst
@@ -90,7 +90,7 @@
    Netscape and RFC 2965 cookies.  By default, RFC 2109 cookies (ie. cookies
    received in a :mailheader:`Set-Cookie` header with a version cookie-attribute of
    1) are treated according to the RFC 2965 rules.  However, if RFC 2965 handling
-   is turned off or :attr:`rfc2109_as_netscape` is True, RFC 2109 cookies are
+   is turned off or :attr:`rfc2109_as_netscape` is ``True``, RFC 2109 cookies are
    'downgraded' by the :class:`CookieJar` instance to Netscape cookies, by
    setting the :attr:`version` attribute of the :class:`Cookie` instance to 0.
    :class:`DefaultCookiePolicy` also provides some parameters to allow some
@@ -644,7 +644,7 @@
 
 .. attribute:: Cookie.secure
 
-   True if cookie should only be returned over a secure connection.
+   ``True`` if cookie should only be returned over a secure connection.
 
 
 .. attribute:: Cookie.expires
@@ -655,7 +655,7 @@
 
 .. attribute:: Cookie.discard
 
-   True if this is a session cookie.
+   ``True`` if this is a session cookie.
 
 
 .. attribute:: Cookie.comment
@@ -672,7 +672,7 @@
 
 .. attribute:: Cookie.rfc2109
 
-   True if this cookie was received as an RFC 2109 cookie (ie. the cookie
+   ``True`` if this cookie was received as an RFC 2109 cookie (ie. the cookie
    arrived in a :mailheader:`Set-Cookie` header, and the value of the Version
    cookie-attribute in that header was 1).  This attribute is provided because
    :mod:`http.cookiejar` may 'downgrade' RFC 2109 cookies to Netscape cookies, in
@@ -681,18 +681,18 @@
 
 .. attribute:: Cookie.port_specified
 
-   True if a port or set of ports was explicitly specified by the server (in the
+   ``True`` if a port or set of ports was explicitly specified by the server (in the
    :mailheader:`Set-Cookie` / :mailheader:`Set-Cookie2` header).
 
 
 .. attribute:: Cookie.domain_specified
 
-   True if a domain was explicitly specified by the server.
+   ``True`` if a domain was explicitly specified by the server.
 
 
 .. attribute:: Cookie.domain_initial_dot
 
-   True if the domain explicitly specified by the server began with a dot
+   ``True`` if the domain explicitly specified by the server began with a dot
    (``'.'``).
 
 Cookies may have additional non-standard cookie-attributes.  These may be
@@ -719,7 +719,7 @@
 
 .. method:: Cookie.is_expired(now=None)
 
-   True if cookie has passed the time at which the server requested it should
+   ``True`` if cookie has passed the time at which the server requested it should
    expire.  If *now* is given (in seconds since the epoch), return whether the
    cookie has expired at the specified time.
 
diff --git a/Doc/library/imp.rst b/Doc/library/imp.rst
index 6647b9e..ee02c3f 100644
--- a/Doc/library/imp.rst
+++ b/Doc/library/imp.rst
@@ -200,8 +200,8 @@
    The ``cpython-32`` string comes from the current magic tag (see
    :func:`get_tag`; if :attr:`sys.implementation.cache_tag` is not defined then
    :exc:`NotImplementedError` will be raised).  The returned path will end in
-   ``.pyc`` when ``__debug__`` is True or ``.pyo`` for an optimized Python
-   (i.e. ``__debug__`` is False).  By passing in True or False for
+   ``.pyc`` when ``__debug__`` is ``True`` or ``.pyo`` for an optimized Python
+   (i.e. ``__debug__`` is ``False``).  By passing in ``True`` or ``False`` for
    *debug_override* you can override the system's value for ``__debug__`` for
    extension selection.
 
diff --git a/Doc/library/importlib.rst b/Doc/library/importlib.rst
index fc63a8b..177f15b 100644
--- a/Doc/library/importlib.rst
+++ b/Doc/library/importlib.rst
@@ -928,8 +928,8 @@
    The ``cpython-32`` string comes from the current magic tag (see
    :func:`get_tag`; if :attr:`sys.implementation.cache_tag` is not defined then
    :exc:`NotImplementedError` will be raised).  The returned path will end in
-   ``.pyc`` when ``__debug__`` is True or ``.pyo`` for an optimized Python
-   (i.e. ``__debug__`` is False).  By passing in True or False for
+   ``.pyc`` when ``__debug__`` is ``True`` or ``.pyo`` for an optimized Python
+   (i.e. ``__debug__`` is ``False``).  By passing in ``True`` or ``False`` for
    *debug_override* you can override the system's value for ``__debug__`` for
    extension selection.
 
diff --git a/Doc/library/io.rst b/Doc/library/io.rst
index 7925e33..2b55018 100644
--- a/Doc/library/io.rst
+++ b/Doc/library/io.rst
@@ -280,7 +280,7 @@
 
    .. method:: readable()
 
-      Return ``True`` if the stream can be read from.  If False, :meth:`read`
+      Return ``True`` if the stream can be read from.  If ``False``, :meth:`read`
       will raise :exc:`OSError`.
 
    .. method:: readline(size=-1)
diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst
index b37af61..6929192 100644
--- a/Doc/library/itertools.rst
+++ b/Doc/library/itertools.rst
@@ -51,7 +51,7 @@
 chain.from_iterable     iterable                        p0, p1, ... plast, q0, q1, ...                      ``chain.from_iterable(['ABC', 'DEF']) --> A B C D E F``
 :func:`compress`        data, selectors                 (d[0] if s[0]), (d[1] if s[1]), ...                 ``compress('ABCDEF', [1,0,1,0,1,1]) --> A C E F``
 :func:`dropwhile`       pred, seq                       seq[n], seq[n+1], starting when pred fails          ``dropwhile(lambda x: x<5, [1,4,6,4,1]) --> 6 4 1``
-:func:`filterfalse`     pred, seq                       elements of seq where pred(elem) is False           ``filterfalse(lambda x: x%2, range(10)) --> 0 2 4 6 8``
+:func:`filterfalse`     pred, seq                       elements of seq where pred(elem) is false           ``filterfalse(lambda x: x%2, range(10)) --> 0 2 4 6 8``
 :func:`groupby`         iterable[, keyfunc]             sub-iterators grouped by value of keyfunc(v)
 :func:`islice`          seq, [start,] stop [, step]     elements from seq[start:stop:step]                  ``islice('ABCDEFG', 2, None) --> C D E F G``
 :func:`starmap`         func, seq                       func(\*seq[0]), func(\*seq[1]), ...                 ``starmap(pow, [(2,5), (3,2), (10,3)]) --> 32 9 1000``
diff --git a/Doc/library/logging.handlers.rst b/Doc/library/logging.handlers.rst
index 04d0f27..315c168 100644
--- a/Doc/library/logging.handlers.rst
+++ b/Doc/library/logging.handlers.rst
@@ -843,7 +843,7 @@
 
    Returns a new instance of the :class:`HTTPHandler` class. The *host* can be
    of the form ``host:port``, should you need to use a specific port number.
-   If no *method* is specified, ``GET`` is used. If *secure* is True, an HTTPS
+   If no *method* is specified, ``GET`` is used. If *secure* is true, an HTTPS
    connection will be used. If *credentials* is specified, it should be a
    2-tuple consisting of userid and password, which will be placed in an HTTP
    'Authorization' header using Basic authentication. If you specify
diff --git a/Doc/library/logging.rst b/Doc/library/logging.rst
index e9df25e..3751501 100644
--- a/Doc/library/logging.rst
+++ b/Doc/library/logging.rst
@@ -160,7 +160,7 @@
    is called to get the exception information.
 
    The second optional keyword argument is *stack_info*, which defaults to
-   False. If specified as True, stack information is added to the logging
+   ``False``. If true, stack information is added to the logging
    message, including the actual logging call. Note that this is not the same
    stack information as that displayed through specifying *exc_info*: The
    former is stack frames from the bottom of the stack up to the logging call
@@ -308,7 +308,7 @@
 
    Checks to see if this logger has any handlers configured. This is done by
    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
+   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
    existence of handlers.
@@ -878,7 +878,7 @@
    is called to get the exception information.
 
    The second optional keyword argument is *stack_info*, which defaults to
-   False. If specified as True, stack information is added to the logging
+   ``False``. If true, stack information is added to the logging
    message, including the actual logging call. Note that this is not the same
    stack information as that displayed through specifying *exc_info*: The
    former is stack frames from the bottom of the stack up to the logging call
diff --git a/Doc/library/lzma.rst b/Doc/library/lzma.rst
index b201206..53fba89 100644
--- a/Doc/library/lzma.rst
+++ b/Doc/library/lzma.rst
@@ -232,7 +232,7 @@
 
    .. attribute:: eof
 
-      True if the end-of-stream marker has been reached.
+      ``True`` if the end-of-stream marker has been reached.
 
    .. attribute:: unused_data
 
diff --git a/Doc/library/mmap.rst b/Doc/library/mmap.rst
index 7db60d2..18e05e3 100644
--- a/Doc/library/mmap.rst
+++ b/Doc/library/mmap.rst
@@ -162,7 +162,7 @@
 
    .. attribute:: closed
 
-      True if the file is closed.
+      ``True`` if the file is closed.
 
       .. versionadded:: 3.2
 
diff --git a/Doc/library/nntplib.rst b/Doc/library/nntplib.rst
index 9ab2c94..0098041 100644
--- a/Doc/library/nntplib.rst
+++ b/Doc/library/nntplib.rst
@@ -82,7 +82,7 @@
 
 
    .. versionchanged:: 3.2
-      *usenetrc* is now False by default.
+      *usenetrc* is now ``False`` by default.
 
    .. versionchanged:: 3.3
       Support for the :keyword:`with` statement was added.
@@ -216,7 +216,7 @@
 .. method:: NNTP.login(user=None, password=None, usenetrc=True)
 
    Send ``AUTHINFO`` commands with the user name and password.  If *user*
-   and *password* are None and *usenetrc* is True, credentials from
+   and *password* are None and *usenetrc* is true, credentials from
    ``~/.netrc`` will be used if possible.
 
    Unless intentionally delayed, login is normally performed during the
diff --git a/Doc/library/os.path.rst b/Doc/library/os.path.rst
index 03350d7..269856c 100644
--- a/Doc/library/os.path.rst
+++ b/Doc/library/os.path.rst
@@ -137,7 +137,7 @@
    the number of seconds since the epoch (see the  :mod:`time` module).  Raise
    :exc:`OSError` if the file does not exist or is inaccessible.
 
-   If :func:`os.stat_float_times` returns True, the result is a floating point
+   If :func:`os.stat_float_times` returns ``True``, the result is a floating point
    number.
 
 
@@ -147,7 +147,7 @@
    giving the number of seconds since the epoch (see the  :mod:`time` module).
    Raise :exc:`OSError` if the file does not exist or is inaccessible.
 
-   If :func:`os.stat_float_times` returns True, the result is a floating point
+   If :func:`os.stat_float_times` returns ``True``, the result is a floating point
    number.
 
 
@@ -340,5 +340,5 @@
 
 .. data:: supports_unicode_filenames
 
-   True if arbitrary Unicode strings can be used as file names (within limitations
+   ``True`` if arbitrary Unicode strings can be used as file names (within limitations
    imposed by the file system).
diff --git a/Doc/library/os.rst b/Doc/library/os.rst
index 67f94ac..f5f2e16 100644
--- a/Doc/library/os.rst
+++ b/Doc/library/os.rst
@@ -551,7 +551,7 @@
 
 .. data:: supports_bytes_environ
 
-   True if the native OS type of the environment is bytes (eg. False on
+   ``True`` if the native OS type of the environment is bytes (eg. ``False`` on
    Windows).
 
    .. versionadded:: 3.2
diff --git a/Doc/library/pickle.rst b/Doc/library/pickle.rst
index 49ec9c1..14d5206 100644
--- a/Doc/library/pickle.rst
+++ b/Doc/library/pickle.rst
@@ -161,7 +161,7 @@
    :class:`io.BytesIO` instance, or any other custom object that meets this
    interface.
 
-   If *fix_imports* is True and *protocol* is less than 3, pickle will try to
+   If *fix_imports* is true and *protocol* is less than 3, pickle will try to
    map the new Python 3.x names to the old module names used in Python 2.x,
    so that the pickle data stream is readable with Python 2.x.
 
@@ -178,7 +178,7 @@
    supported.  The higher the protocol used, the more recent the version of
    Python needed to read the pickle produced.
 
-   If *fix_imports* is True and *protocol* is less than 3, pickle will try to
+   If *fix_imports* is true and *protocol* is less than 3, pickle will try to
    map the new Python 3.x names to the old module names used in Python 2.x,
    so that the pickle data stream is readable with Python 2.x.
 
@@ -200,7 +200,7 @@
 
    Optional keyword arguments are *fix_imports*, *encoding* and *errors*,
    which are used to control compatibility support for pickle stream generated
-   by Python 2.x.  If *fix_imports* is True, pickle will try to map the old
+   by Python 2.x.  If *fix_imports* is true, pickle will try to map the old
    Python 2.x names to the new names used in Python 3.x.  The *encoding* and
    *errors* tell pickle how to decode 8-bit string instances pickled by Python
    2.x; these default to 'ASCII' and 'strict', respectively.
@@ -216,7 +216,7 @@
 
    Optional keyword arguments are *fix_imports*, *encoding* and *errors*,
    which are used to control compatibility support for pickle stream generated
-   by Python 2.x.  If *fix_imports* is True, pickle will try to map the old
+   by Python 2.x.  If *fix_imports* is true, pickle will try to map the old
    Python 2.x names to the new names used in Python 3.x.  The *encoding* and
    *errors* tell pickle how to decode 8-bit string instances pickled by Python
    2.x; these default to 'ASCII' and 'strict', respectively.
@@ -266,7 +266,7 @@
    argument.  It can thus be an on-disk file opened for binary writing, a
    :class:`io.BytesIO` instance, or any other custom object that meets this interface.
 
-   If *fix_imports* is True and *protocol* is less than 3, pickle will try to
+   If *fix_imports* is true and *protocol* is less than 3, pickle will try to
    map the new Python 3.x names to the old module names used in Python 2.x,
    so that the pickle data stream is readable with Python 2.x.
 
@@ -336,7 +336,7 @@
 
    Optional keyword arguments are *fix_imports*, *encoding* and *errors*,
    which are used to control compatibility support for pickle stream generated
-   by Python 2.x.  If *fix_imports* is True, pickle will try to map the old
+   by Python 2.x.  If *fix_imports* is true, pickle will try to map the old
    Python 2.x names to the new names used in Python 3.x.  The *encoding* and
    *errors* tell pickle how to decode 8-bit string instances pickled by Python
    2.x; these default to 'ASCII' and 'strict', respectively.
diff --git a/Doc/library/plistlib.rst b/Doc/library/plistlib.rst
index 92de860..3cf8086 100644
--- a/Doc/library/plistlib.rst
+++ b/Doc/library/plistlib.rst
@@ -54,7 +54,7 @@
 
    * :data:`FMT_BINARY`: Binary plist format
 
-   If *use_builtin_types* is True (the default) binary data will be returned
+   If *use_builtin_types* is true (the default) binary data will be returned
    as instances of :class:`bytes`, otherwise it is returned as instances of
    :class:`Data`.
 
diff --git a/Doc/library/sched.rst b/Doc/library/sched.rst
index f1a376f..26f59c5 100644
--- a/Doc/library/sched.rst
+++ b/Doc/library/sched.rst
@@ -113,7 +113,7 @@
    function passed to the constructor) for the next event, then execute it and so
    on until there are no more scheduled events.
 
-   If *blocking* is False executes the scheduled events due to expire soonest
+   If *blocking* is false executes the scheduled events due to expire soonest
    (if any) and then return the deadline of the next scheduled call in the
    scheduler (if any).
 
diff --git a/Doc/library/sqlite3.rst b/Doc/library/sqlite3.rst
index 6d1f76a..bb4aab7 100644
--- a/Doc/library/sqlite3.rst
+++ b/Doc/library/sqlite3.rst
@@ -241,10 +241,10 @@
 .. function:: enable_callback_tracebacks(flag)
 
    By default you will not get any tracebacks in user-defined functions,
-   aggregates, converters, authorizer callbacks etc. If you want to debug them, you
-   can call this function with *flag* as True. Afterwards, you will get tracebacks
-   from callbacks on ``sys.stderr``. Use :const:`False` to disable the feature
-   again.
+   aggregates, converters, authorizer callbacks etc. If you want to debug them,
+   you can call this function with *flag* set to ``True``. Afterwards, you will
+   get tracebacks from callbacks on ``sys.stderr``. Use :const:`False` to
+   disable the feature again.
 
 
 .. _sqlite3-connection-objects:
diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst
index 9091aff..f14ef07 100644
--- a/Doc/library/ssl.rst
+++ b/Doc/library/ssl.rst
@@ -287,7 +287,7 @@
 .. function:: RAND_pseudo_bytes(num)
 
    Returns (bytes, is_cryptographic): bytes are *num* pseudo-random bytes,
-   is_cryptographic is True if the bytes generated are cryptographically
+   is_cryptographic is ``True`` if the bytes generated are cryptographically
    strong. Raises an :class:`SSLError` if the operation is not supported by the
    current RAND method.
 
@@ -300,8 +300,8 @@
 
 .. function:: RAND_status()
 
-   Returns True if the SSL pseudo-random number generator has been seeded with
-   'enough' randomness, and False otherwise.  You can use :func:`ssl.RAND_egd`
+   Returns ``True`` if the SSL pseudo-random number generator has been seeded with
+   'enough' randomness, and ``False`` otherwise.  You can use :func:`ssl.RAND_egd`
    and :func:`ssl.RAND_add` to increase the randomness of the pseudo-random
    number generator.
 
@@ -1173,7 +1173,7 @@
 .. method:: SSLContext.get_ca_certs(binary_form=False)
 
    Returns a list of dicts with information of loaded CA certs. If the
-   optional argument is True, returns a DER-encoded copy of the CA
+   optional argument is true, returns a DER-encoded copy of the CA
    certificate.
 
    .. note::
diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst
index 6635b0e..24c9155 100644
--- a/Doc/library/stdtypes.rst
+++ b/Doc/library/stdtypes.rst
@@ -2851,7 +2851,7 @@
 
    .. method:: isdisjoint(other)
 
-      Return True if the set has no elements in common with *other*.  Sets are
+      Return ``True`` if the set has no elements in common with *other*.  Sets are
       disjoint if and only if their intersection is the empty set.
 
    .. method:: issubset(other)
diff --git a/Doc/library/struct.rst b/Doc/library/struct.rst
index f2ea361..ec2e1be 100644
--- a/Doc/library/struct.rst
+++ b/Doc/library/struct.rst
@@ -295,7 +295,7 @@
 For the ``'?'`` format character, the return value is either :const:`True` or
 :const:`False`. When packing, the truth value of the argument object is used.
 Either 0 or 1 in the native or standard bool representation will be packed, and
-any non-zero value will be True when unpacking.
+any non-zero value will be ``True`` when unpacking.
 
 
 
diff --git a/Doc/library/subprocess.rst b/Doc/library/subprocess.rst
index dd8a5d2..7fbe398 100644
--- a/Doc/library/subprocess.rst
+++ b/Doc/library/subprocess.rst
@@ -522,7 +522,7 @@
    *executable* (or for the first item in *args*) relative to *cwd* if the
    executable path is a relative path.
 
-   If *restore_signals* is True (the default) all signals that Python has set to
+   If *restore_signals* is true (the default) all signals that Python has set to
    SIG_IGN are restored to SIG_DFL in the child process before the exec.
    Currently this includes the SIGPIPE, SIGXFZ and SIGXFSZ signals.
    (Unix only)
@@ -530,7 +530,7 @@
    .. versionchanged:: 3.2
       *restore_signals* was added.
 
-   If *start_new_session* is True the setsid() system call will be made in the
+   If *start_new_session* is true the setsid() system call will be made in the
    child process prior to the execution of the subprocess.  (Unix only)
 
    .. versionchanged:: 3.2
diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst
index b885de8..f38640b 100644
--- a/Doc/library/sys.rst
+++ b/Doc/library/sys.rst
@@ -1067,7 +1067,7 @@
    :func:`open` function.  Their parameters are chosen as follows:
 
    * The character encoding is platform-dependent.  Under Windows, if the stream
-     is interactive (that is, if its :meth:`isatty` method returns True), the
+     is interactive (that is, if its :meth:`isatty` method returns ``True``), the
      console codepage is used, otherwise the ANSI code page.  Under other
      platforms, the locale encoding is used (see :meth:`locale.getpreferredencoding`).
 
diff --git a/Doc/library/tarfile.rst b/Doc/library/tarfile.rst
index d7e3b5f..59336c9 100644
--- a/Doc/library/tarfile.rst
+++ b/Doc/library/tarfile.rst
@@ -359,7 +359,7 @@
    full name. Its file information is extracted as accurately as possible. *member*
    may be a filename or a :class:`TarInfo` object. You can specify a different
    directory using *path*. File attributes (owner, mtime, mode) are set unless
-   *set_attrs* is False.
+   *set_attrs* is false.
 
    .. note::
 
diff --git a/Doc/library/tkinter.ttk.rst b/Doc/library/tkinter.ttk.rst
index 9860c86..6f8bf1c 100644
--- a/Doc/library/tkinter.ttk.rst
+++ b/Doc/library/tkinter.ttk.rst
@@ -272,8 +272,8 @@
 
    .. method:: instate(statespec, callback=None, *args, **kw)
 
-      Test the widget's state. If a callback is not specified, returns True
-      if the widget state matches *statespec* and False otherwise. If callback
+      Test the widget's state. If a callback is not specified, returns ``True``
+      if the widget state matches *statespec* and ``False`` otherwise. If callback
       is specified then it is called with args if widget state matches
       *statespec*.
 
@@ -938,7 +938,7 @@
 
    .. method:: exists(item)
 
-      Returns True if the specified *item* is present in the tree.
+      Returns ``True`` if the specified *item* is present in the tree.
 
 
    .. method:: focus(item=None)
@@ -1084,7 +1084,7 @@
 
       Ensure that *item* is visible.
 
-      Sets all of *item*'s ancestors open option to True, and scrolls the
+      Sets all of *item*'s ancestors open option to ``True``, and scrolls the
       widget if necessary so that *item* is within the visible portion of
       the tree.
 
diff --git a/Doc/library/turtle.rst b/Doc/library/turtle.rst
index aea9450..b015530 100644
--- a/Doc/library/turtle.rst
+++ b/Doc/library/turtle.rst
@@ -1055,8 +1055,8 @@
 
    Write text - the string representation of *arg* - at the current turtle
    position according to *align* ("left", "center" or right") and with the given
-   font.  If *move* is True, the pen is moved to the bottom-right corner of the
-   text.  By default, *move* is False.
+   font.  If *move* is true, the pen is moved to the bottom-right corner of the
+   text.  By default, *move* is ``False``.
 
    >>> turtle.write("Home = ", True, align="center")
    >>> turtle.write((0,0), True)
@@ -1092,7 +1092,7 @@
 
 .. function:: isvisible()
 
-   Return True if the Turtle is shown, False if it's hidden.
+   Return ``True`` if the Turtle is shown, ``False`` if it's hidden.
 
    >>> turtle.hideturtle()
    >>> turtle.isvisible()
diff --git a/Doc/library/unittest.mock.rst b/Doc/library/unittest.mock.rst
index d7efcf4..135abeb 100644
--- a/Doc/library/unittest.mock.rst
+++ b/Doc/library/unittest.mock.rst
@@ -298,11 +298,11 @@
         assert the mock has been called with the specified calls.
         The `mock_calls` list is checked for the calls.
 
-        If `any_order` is False (the default) then the calls must be
+        If `any_order` is false (the default) then the calls must be
         sequential. There can be extra calls before or after the
         specified calls.
 
-        If `any_order` is True then the calls can be in any order, but
+        If `any_order` is true then the calls can be in any order, but
         they must all appear in :attr:`mock_calls`.
 
             >>> mock = Mock(return_value=None)
@@ -1200,7 +1200,7 @@
     `values` can be a dictionary of values to set in the dictionary. `values`
     can also be an iterable of `(key, value)` pairs.
 
-    If `clear` is True then the dictionary will be cleared before the new
+    If `clear` is true then the dictionary will be cleared before the new
     values are set.
 
     `patch.dict` can also be called with arbitrary keyword arguments to set
diff --git a/Doc/library/urllib.request.rst b/Doc/library/urllib.request.rst
index 61b7734..c4dd7e3 100644
--- a/Doc/library/urllib.request.rst
+++ b/Doc/library/urllib.request.rst
@@ -59,7 +59,7 @@
    some non-Windows platforms.
 
    .. warning::
-      If neither *cafile* nor *capath* is specified, and *cadefault* is False,
+      If neither *cafile* nor *capath* is specified, and *cadefault* is ``False``,
       an HTTPS request will not do any verification of the server's
       certificate.
 
@@ -211,7 +211,7 @@
    containing the image.
 
    *unverifiable* should indicate whether the request is unverifiable,
-   as defined by RFC 2965.  It defaults to False.  An unverifiable
+   as defined by RFC 2965.  It defaults to ``False``.  An unverifiable
    request is one whose URL the user did not have the option to
    approve.  For example, if the request is for an image in an HTML
    document, and the user had no option to approve the automatic
diff --git a/Doc/library/venv.rst b/Doc/library/venv.rst
index efc2137..461c9e1 100644
--- a/Doc/library/venv.rst
+++ b/Doc/library/venv.rst
@@ -94,7 +94,7 @@
     * ``system_site_packages`` -- a Boolean value indicating that the system Python
       site-packages should be available to the environment (defaults to ``False``).
 
-    * ``clear`` -- a Boolean value which, if True, will delete the contents of
+    * ``clear`` -- a Boolean value which, if true, will delete the contents of
       any existing target directory, before creating the environment.
 
     * ``symlinks`` -- a Boolean value indicating whether to attempt to symlink the
@@ -102,11 +102,11 @@
       e.g. ``pythonw.exe``), rather than copying. Defaults to ``True`` on Linux and
       Unix systems, but ``False`` on Windows.
 
-    * ``upgrade`` -- a Boolean value which, if True, will upgrade an existing
+    * ``upgrade`` -- a Boolean value which, if true, will upgrade an existing
       environment with the running Python - for use when that Python has been
       upgraded in-place (defaults to ``False``).
 
-    * ``with_pip`` -- a Boolean value which, if True, ensures pip is
+    * ``with_pip`` -- a Boolean value which, if true, ensures pip is
       installed in the virtual environment
 
     .. versionchanged:: 3.4
diff --git a/Doc/library/zipfile.rst b/Doc/library/zipfile.rst
index 1966713..969a536 100644
--- a/Doc/library/zipfile.rst
+++ b/Doc/library/zipfile.rst
@@ -411,7 +411,7 @@
       name as a file path, and if any subdirectories are package directories,
       all of these are added recursively.  *basename* is intended for internal
       use only.  When *filterfunc(pathname)* is given, it will be called for every
-      invocation. When it returns a False value, that path and its subpaths will
+      invocation. When it returns a false value, that path and its subpaths will
       be ignored.
       The :meth:`writepy` method makes archives with file names like
       this::
diff --git a/Doc/library/zipimport.rst b/Doc/library/zipimport.rst
index dffc8e3..2cf508b 100644
--- a/Doc/library/zipimport.rst
+++ b/Doc/library/zipimport.rst
@@ -111,7 +111,7 @@
 
    .. method:: is_package(fullname)
 
-      Return True if the module specified by *fullname* is a package. Raise
+      Return ``True`` if the module specified by *fullname* is a package. Raise
       :exc:`ZipImportError` if the module couldn't be found.
 
 
diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst
index 0c6a0ab..0e936c6 100644
--- a/Doc/reference/datamodel.rst
+++ b/Doc/reference/datamodel.rst
@@ -201,7 +201,7 @@
             single: True
 
          These represent the truth values False and True.  The two objects representing
-         the values False and True are the only Boolean objects. The Boolean type is a
+         the values ``False`` and ``True`` are the only Boolean objects. The Boolean type is a
          subtype of the integer type, and Boolean values behave like the values 0 and 1,
          respectively, in almost all contexts, the exception being that when converted to
          a string, the strings ``"False"`` or ``"True"`` are returned, respectively.
diff --git a/Doc/whatsnew/3.3.rst b/Doc/whatsnew/3.3.rst
index fec55fd..6e0746a 100644
--- a/Doc/whatsnew/3.3.rst
+++ b/Doc/whatsnew/3.3.rst
@@ -1125,7 +1125,7 @@
 
 * If Python is compiled without threads, the C version automatically
   disables the expensive thread local context machinery. In this case,
-  the variable :data:`~decimal.HAVE_THREADS` is set to False.
+  the variable :data:`~decimal.HAVE_THREADS` is set to ``False``.
 
 API changes
 ~~~~~~~~~~~
diff --git a/Misc/NEWS b/Misc/NEWS
index 6411640..96e897d 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -45,6 +45,12 @@
   pythoncore sub-project.  This should prevent build errors due a previous
   build's python(_d).exe still running.
 
+Documentation
+-------------
+
+- Issue #19795: Improved markup of True/False constants.
+
+
 What's New in Python 3.4.0 Beta 1?
 ==================================
 
