Index: Modules/_struct.c =================================================================== --- Modules/_struct.c (revision 70541) +++ Modules/_struct.c (working copy) @@ -2028,7 +2028,6 @@ PyModule_AddObject(m, "__version__", ver); - PyModule_AddIntConstant(m, "_PY_STRUCT_RANGE_CHECKING", 1); #ifdef PY_STRUCT_FLOAT_COERCE PyModule_AddIntConstant(m, "_PY_STRUCT_FLOAT_COERCE", 1); #endif Index: Lib/test/test_struct.py =================================================================== --- Lib/test/test_struct.py (revision 70541) +++ Lib/test/test_struct.py (working copy) @@ -14,10 +14,8 @@ try: import _struct except ImportError: - PY_STRUCT_RANGE_CHECKING = 0 PY_STRUCT_FLOAT_COERCE = 2 else: - PY_STRUCT_RANGE_CHECKING = getattr(_struct, '_PY_STRUCT_RANGE_CHECKING', 0) PY_STRUCT_FLOAT_COERCE = getattr(_struct, '_PY_STRUCT_FLOAT_COERCE', 0) def string_reverse(s): @@ -289,22 +287,15 @@ self.assertRaises((struct.error, TypeError), unpack, format, b'\x01' + got) - else: - # x is out of range -- verify pack realizes that. - if not PY_STRUCT_RANGE_CHECKING and code in self.BUGGY_RANGE_CHECK: - if verbose: - print("Skipping buggy range check for code", code) - else: - deprecated_err(pack, ">" + code, x) - deprecated_err(pack, "<" + code, x) + else: #Expect error in case of out of range values + self.assertRaises((struct.error, TypeError), pack, code, x) # Much the same for unsigned. code = self.unsigned_code if self.unsigned_min <= x <= self.unsigned_max: # Try big-endian. format = ">" + code - expected = x - expected = hex(expected)[2:] # chop "0x" + expected = hex(x)[2:] # chop "0x" if len(expected) & 1: expected = "0" + expected expected = unhexlify(expected) @@ -338,14 +329,8 @@ self.assertRaises((struct.error, TypeError), unpack, format, b'\x01' + got) - else: - # x is out of range -- verify pack realizes that. - if not PY_STRUCT_RANGE_CHECKING and code in self.BUGGY_RANGE_CHECK: - if verbose: - print("Skipping buggy range check for code", code) - else: - deprecated_err(pack, ">" + code, x) - deprecated_err(pack, "<" + code, x) + else: #Expect error in case of out of range values + self.assertRaises((struct.error, TypeError), pack, code, x) def run(self): from random import randrange @@ -443,21 +428,6 @@ big = math.ldexp(big, 127 - 24) self.assertRaises(OverflowError, struct.pack, ">f", big) - if PY_STRUCT_RANGE_CHECKING: - def test_1229380(self): - # SF bug 1229380. No struct.pack exception for some out of - # range integers - import sys - for endian in ('', '>', '<'): - for fmt in ('B', 'H', 'I', 'L'): - deprecated_err(struct.pack, endian + fmt, -1) - - deprecated_err(struct.pack, endian + 'B', 300) - deprecated_err(struct.pack, endian + 'H', 70000) - - deprecated_err(struct.pack, endian + 'I', sys.maxsize * 4) - deprecated_err(struct.pack, endian + 'L', sys.maxsize * 4) - def XXXtest_1530559(self): # XXX This is broken: see the bug report # SF bug 1530559. struct.pack raises TypeError where it used to convert.