import sys def test_python_iterator(depth): class I: def __init__(self, it): self.it = it def __iter__(self): return self def __next__(self): return next(self.it) next = __next__ x = iter([1]) for i in range(depth): x = I(x) next(x) def test_python_call(depth): class X: def __call__(self, n): if n: return self(n-1) return None X()(depth) def test_python_getitem(depth): class X: def __getitem__(self, n): if n: return self[n-1] return None X()[depth] sys.setrecursionlimit(2**18)