pytorch/test/dynamo/cpython/3_13/test_range.diff
2025-09-04 02:33:03 +00:00

125 lines
4.6 KiB
Diff

diff --git a/test/dynamo/cpython/3_13/test_range.py b/test/dynamo/cpython/3_13/test_range.py
index 3870b153688..4d3a3d136e4 100644
--- a/test/dynamo/cpython/3_13/test_range.py
+++ b/test/dynamo/cpython/3_13/test_range.py
@@ -1,3 +1,23 @@
+# ======= BEGIN Dynamo patch =======
+# Owner(s): ["module: dynamo"]
+
+# ruff: noqa
+# flake8: noqa
+
+# Test copied from
+# https://raw.githubusercontent.com/python/cpython/refs/tags/v3.13.5/Lib/test/test_range.py
+
+import sys
+import torch
+import torch._dynamo.test_case
+import unittest
+from torch._dynamo.test_case import CPythonTestCase
+from torch.testing._internal.common_utils import run_tests, skipIfTorchDynamo
+
+__TestCase = CPythonTestCase
+
+# ======= END DYNAMO PATCH =======
+
# Python test set -- built-in functions
import unittest
@@ -21,7 +41,7 @@ def pyrange_reversed(start, stop, step):
return pyrange(stop - step, start - step, -step)
-class RangeTest(unittest.TestCase):
+class RangeTest(__TestCase):
def assert_iterators_equal(self, xs, ys, test_id, limit=None):
# check that an iterator xs matches the expected results ys,
# up to a given limit.
@@ -74,18 +94,6 @@ class RangeTest(unittest.TestCase):
self.assertNotIn(-b, seq)
self.assertEqual(len(seq), 2)
- self.assertRaises(TypeError, range)
- self.assertRaises(TypeError, range, 1, 2, 3, 4)
- self.assertRaises(ValueError, range, 1, 2, 0)
-
- self.assertRaises(TypeError, range, 0.0, 2, 1)
- self.assertRaises(TypeError, range, 1, 2.0, 1)
- self.assertRaises(TypeError, range, 1, 2, 1.0)
- self.assertRaises(TypeError, range, 1e100, 1e101, 1e101)
-
- self.assertRaises(TypeError, range, 0, "spam")
- self.assertRaises(TypeError, range, 0, 42, "spam")
-
self.assertEqual(len(range(0, sys.maxsize, sys.maxsize-1)), 2)
r = range(-sys.maxsize, sys.maxsize, 2)
@@ -354,7 +362,7 @@ class RangeTest(unittest.TestCase):
self.assertEqual(range(1, 2**100, 2).count(2**87), 0)
self.assertEqual(range(1, 2**100, 2).count(2**87+1), 1)
- self.assertEqual(range(10).count(ALWAYS_EQ), 10)
+ # self.assertEqual(range(10).count(ALWAYS_EQ), 10)
self.assertEqual(len(range(sys.maxsize, sys.maxsize+10)), 10)
@@ -403,6 +411,7 @@ class RangeTest(unittest.TestCase):
it = pickle.loads(d)
self.assertEqual(list(it), data[1:])
+ @skipIfTorchDynamo("infinite loop")
def test_iterator_pickling_overflowing_index(self):
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
with self.subTest(proto=proto):
@@ -653,28 +662,18 @@ class RangeTest(unittest.TestCase):
ranges_ne = [a != b for a in test_ranges for b in test_ranges]
self.assertEqual(ranges_ne, [not x for x in ranges_eq])
- # Equal ranges should have equal hashes.
- for a in test_ranges:
- for b in test_ranges:
- if a == b:
- self.assertEqual(hash(a), hash(b))
-
# Ranges are unequal to other types (even sequence types)
self.assertIs(range(0) == (), False)
- self.assertIs(() == range(0), False)
+ # self.assertIs(() == range(0), False)
self.assertIs(range(2) == [0, 1], False)
# Huge integers aren't a problem.
self.assertEqual(range(0, 2**100 - 1, 2),
range(0, 2**100, 2))
- self.assertEqual(hash(range(0, 2**100 - 1, 2)),
- hash(range(0, 2**100, 2)))
self.assertNotEqual(range(0, 2**100, 2),
range(0, 2**100 + 1, 2))
self.assertEqual(range(2**200, 2**201 - 2**99, 2**100),
range(2**200, 2**201, 2**100))
- self.assertEqual(hash(range(2**200, 2**201 - 2**99, 2**100)),
- hash(range(2**200, 2**201, 2**100)))
self.assertNotEqual(range(2**200, 2**201, 2**100),
range(2**200, 2**201 + 1, 2**100))
@@ -710,19 +709,6 @@ class RangeTest(unittest.TestCase):
self.assertIs(type(rangeobj.stop), int)
self.assertIs(type(rangeobj.step), int)
- with self.assertRaises(AttributeError):
- rangeobj.start = 0
- with self.assertRaises(AttributeError):
- rangeobj.stop = 10
- with self.assertRaises(AttributeError):
- rangeobj.step = 1
-
- with self.assertRaises(AttributeError):
- del rangeobj.start
- with self.assertRaises(AttributeError):
- del rangeobj.stop
- with self.assertRaises(AttributeError):
- del rangeobj.step
if __name__ == "__main__":
- unittest.main()
+ run_tests()