1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
import functools
import sys
import os
def test_partial_stack():
# issue 3988
stack = []
def multiply(a, b):
frame = sys._getframe()
while frame:
stack.append(frame.f_code.co_name)
frame = frame.f_back
return a * b
penta = functools.partial(multiply, 5)
assert penta(2) == 10
assert len(stack) > 1
# Make sure partial.__call__ is not in the first few stack functions
assert all([f != "__call__" for f in stack[:3]])
def test_lru_cache_stack():
# issue 3988
stack = []
@functools.lru_cache
def multiply(a, b):
frame = sys._getframe()
while frame:
stack.append(frame.f_code.co_name)
frame = frame.f_back
return a * b
assert multiply(2, 5) == 10
assert len(stack) > 1
print(stack)
# Make sure _lru_cache.wrapper is not in the first few stack functions
assert all([f != "wrapper" for f in stack[:3]])
|