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 d241f1a..7189c65 100644
--- a/Doc/howto/functional.rst
+++ b/Doc/howto/functional.rst
@@ -687,8 +687,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 d06a39a..95a5abb 100644
--- a/Doc/library/bz2.rst
+++ b/Doc/library/bz2.rst
@@ -162,7 +162,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/email.message.rst b/Doc/library/email.message.rst
index 576531d..3075e86 100644
--- a/Doc/library/email.message.rst
+++ b/Doc/library/email.message.rst
@@ -75,7 +75,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 4ebf3ca..b125a78 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:
@@ -890,7 +890,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 5878da5..71449a3 100644
--- a/Doc/library/gc.rst
+++ b/Doc/library/gc.rst
@@ -130,8 +130,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 4daeeea..783a596 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 ebdbd4d..364d81e 100644
--- a/Doc/library/imp.rst
+++ b/Doc/library/imp.rst
@@ -190,8 +190,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 efd027b..e51b315 100644
--- a/Doc/library/importlib.rst
+++ b/Doc/library/importlib.rst
@@ -918,8 +918,18 @@
     Reliance on this decorator is discouraged when it is possible to set
     :attr:`__package__` before importing. By
     setting it beforehand the code for the module is executed with the
+<<<<<<<
     attribute set and thus can be used by global level code during
     initialization.
+=======
+   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
+   *debug_override* you can override the system's value for ``__debug__`` for
+   extension selection.
+>>>>>>>
 
    .. note::
 
diff --git a/Doc/library/io.rst b/Doc/library/io.rst
index 73288f8..bd0ce67 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(limit=-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 d0dc572..415e397 100644
--- a/Doc/library/logging.handlers.rst
+++ b/Doc/library/logging.handlers.rst
@@ -831,7 +831,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 5fd5039..da46575 100644
--- a/Doc/library/lzma.rst
+++ b/Doc/library/lzma.rst
@@ -225,7 +225,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 759d3b7..a15d7f7 100644
--- a/Doc/library/nntplib.rst
+++ b/Doc/library/nntplib.rst
@@ -83,7 +83,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.
@@ -217,7 +217,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 36f2d14..57a6bca 100644
--- a/Doc/library/os.path.rst
+++ b/Doc/library/os.path.rst
@@ -133,7 +133,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.
 
 
@@ -143,7 +143,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.
 
 
@@ -334,5 +334,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 2c33366..20f3e87 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 a99117c..86902ef 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/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 a2bd48c..0dc8b89 100644
--- a/Doc/library/sqlite3.rst
+++ b/Doc/library/sqlite3.rst
@@ -229,10 +229,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 c4e1712..b13861d 100644
--- a/Doc/library/ssl.rst
+++ b/Doc/library/ssl.rst
@@ -245,7 +245,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.
 
@@ -258,8 +258,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.
 
diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst
index db3ef88..f0d2f80 100644
--- a/Doc/library/stdtypes.rst
+++ b/Doc/library/stdtypes.rst
@@ -2847,7 +2847,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 994506c..dde32b9 100644
--- a/Doc/library/struct.rst
+++ b/Doc/library/struct.rst
@@ -282,7 +282,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 157649c..9f2f82d 100644
--- a/Doc/library/subprocess.rst
+++ b/Doc/library/subprocess.rst
@@ -512,7 +512,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)
@@ -520,7 +520,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 bc1d9fe..8ec1190 100644
--- a/Doc/library/sys.rst
+++ b/Doc/library/sys.rst
@@ -1032,7 +1032,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 b8b65b9..1ead71c 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 9494861..0243d7f 100644
--- a/Doc/library/unittest.mock.rst
+++ b/Doc/library/unittest.mock.rst
@@ -299,11 +299,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)
@@ -1180,7 +1180,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 eac222f..10aa260 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 2dd21e5..96ca2f5 100644
--- a/Doc/library/venv.rst
+++ b/Doc/library/venv.rst
@@ -93,7 +93,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 any existing target
+    * ``clear`` -- a Boolean value which, if true, will delete any existing target
       directory instead of raising an exception (defaults to ``False``).
 
     * ``symlinks`` -- a Boolean value indicating whether to attempt to symlink the
@@ -101,7 +101,7 @@
       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``).
 
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 2128ffc..48a42cc 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
 ~~~~~~~~~~~
