Issue 14814: Explain how to get more error detail in the ipaddress tutorial, and tweak the display for octet errors in IPv4 (noticed the formatting problem when adding to the docs)
diff --git a/Lib/ipaddress.py b/Lib/ipaddress.py
index bd79e2a..e788c0a 100644
--- a/Lib/ipaddress.py
+++ b/Lib/ipaddress.py
@@ -1048,7 +1048,7 @@
             raise ValueError("Ambiguous leading zero in %r not permitted" %
                               octet_str)
         if octet_int > 255:
-            raise ValueError("Octet %d > 255 not permitted" % octet_int)
+            raise ValueError("Octet %d (> 255) not permitted" % octet_int)
         return octet_int
 
     def _string_from_ip_int(self, ip_int):
@@ -1591,7 +1591,8 @@
         hextet_int = int(hextet_str, 16)
         if hextet_int > 0xFFFF:
             # This is unreachable due to the string length check above
-            raise ValueError("Part %d > 0xFFFF not permitted" % hextet_int)
+            msg = "Part 0x%X (> 0xFFFF) not permitted"
+            raise ValueError(msg % hextet_int)
         return hextet_int
 
     def _compress_hextets(self, hextets):
diff --git a/Lib/test/test_ipaddress.py b/Lib/test/test_ipaddress.py
index 61ec0d6..2ac37e1 100644
--- a/Lib/test/test_ipaddress.py
+++ b/Lib/test/test_ipaddress.py
@@ -126,8 +126,8 @@
 
     def test_octet_limit(self):
         def assertBadOctet(addr, octet):
-            msg = "Octet %d > 255 not permitted in %r"
-            with self.assertAddressError(msg, octet, addr):
+            msg = "Octet %d (> 255) not permitted in %r" % (octet, addr)
+            with self.assertAddressError(re.escape(msg)):
                 ipaddress.IPv4Address(addr)
 
         assertBadOctet("12345.67899.-54321.-98765", 12345)
@@ -310,7 +310,7 @@
         assertBadAddress("google.com", "Expected 4 octets")
         assertBadAddress("10/8", "Expected 4 octets")
         assertBadAddress("::1.2.3.4", "Only decimal digits")
-        assertBadAddress("1.2.3.256", "256 > 255")
+        assertBadAddress("1.2.3.256", re.escape("256 (> 255)"))
 
     def test_netmask_errors(self):
         def assertBadNetmask(addr, netmask):