Issue #17047: remove doubled words added in 3.3
as reported by Serhiy Storchaka and Matthew Barnett.
diff --git a/Doc/library/email.policy.rst b/Doc/library/email.policy.rst
index 31b13c1..51ac5c0 100644
--- a/Doc/library/email.policy.rst
+++ b/Doc/library/email.policy.rst
@@ -327,7 +327,7 @@
       each resulting line to the ``max_line_length``.  If ``cte_type`` is
       ``7bit``, non-ascii binary data is CTE encoded using the ``unknown-8bit``
       charset.  Otherwise the original source header is used, with its existing
-      line breaks and and any (RFC invalid) binary data it may contain.
+      line breaks and any (RFC invalid) binary data it may contain.
 
 
 .. note::
diff --git a/Doc/library/ipaddress.rst b/Doc/library/ipaddress.rst
index 86d84af..ed23217 100644
--- a/Doc/library/ipaddress.rst
+++ b/Doc/library/ipaddress.rst
@@ -393,7 +393,7 @@
    .. attribute:: is_link_local
 
       These attributes are true for the network as a whole if they are true
-      true for both the network address and the broadcast address
+      for both the network address and the broadcast address
 
    .. attribute:: network_address
 
@@ -452,7 +452,7 @@
    .. method:: overlaps(other)
 
       ``True`` if this network is partly or wholly contained in *other* or
-      or *other* is wholly contained in this network.
+      *other* is wholly contained in this network.
 
    .. method:: address_exclude(network)
 
@@ -582,7 +582,7 @@
    .. attribute:: is_site_local
 
       These attribute is true for the network as a whole if it is true
-      true for both the network address and the broadcast address
+      for both the network address and the broadcast address
 
 
 Operators
diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst
index 30c2429..7e5f04f 100644
--- a/Doc/library/stdtypes.rst
+++ b/Doc/library/stdtypes.rst
@@ -2637,7 +2637,7 @@
          >>> z.nbytes
          48
 
-      Cast 1D/unsigned char to to 2D/unsigned long::
+      Cast 1D/unsigned char to 2D/unsigned long::
 
          >>> buf = struct.pack("L"*6, *list(range(6)))
          >>> x = memoryview(buf)
diff --git a/Doc/library/unittest.mock.rst b/Doc/library/unittest.mock.rst
index dc6ca1b..ec316db 100644
--- a/Doc/library/unittest.mock.rst
+++ b/Doc/library/unittest.mock.rst
@@ -988,7 +988,7 @@
     you pass in `create=True`, and the attribute doesn't exist, patch will
     create the attribute for you when the patched function is called, and
     delete it again afterwards. This is useful for writing tests against
-    attributes that your production code creates at runtime. It is off by by
+    attributes that your production code creates at runtime. It is off by
     default because it can be dangerous. With it switched on you can write
     passing tests against APIs that don't actually exist!