def collect_smart_step_into_variants(*args, **kwargs): try: return pydevd_bytecode_utils.calculate_smart_step_into_variants( *args, **kwargs) except: # In a failure, rerun with DEBUG! debug = pydevd_bytecode_utils.DEBUG pydevd_bytecode_utils.DEBUG = True try: return pydevd_bytecode_utils.calculate_smart_step_into_variants( *args, **kwargs) finally: pydevd_bytecode_utils.DEBUG = debug
def test_smart_step_into_bytecode_info(): from _pydevd_bundle.pydevd_bytecode_utils import Variant def function(): def some(arg): pass def call(arg): pass yield sys._getframe() call(some(call(some()))) generator = iter(function()) frame = next(generator) found = pydevd_bytecode_utils.calculate_smart_step_into_variants( frame, 0, 99999, base=function.__code__.co_firstlineno) check(found, [ Variant(name=('_getframe', 'sys'), is_visited=True, line=8, offset=20, call_order=1), Variant(name='some', is_visited=False, line=9, offset=34, call_order=1), Variant(name='call', is_visited=False, line=9, offset=36, call_order=1), Variant(name='some', is_visited=False, line=9, offset=38, call_order=2), Variant(name='call', is_visited=False, line=9, offset=40, call_order=2), ])
def test_smart_step_into_bytecode_info_024(): def function(): yield sys._getframe() a ** b a * b # a @ b -- syntax error on Python 2.7, so, removed from this test. a / b a // b a % b a + b a - b a >> b a << b a & b a | b a ^ b generator = iter(function()) frame = next(generator) found = pydevd_bytecode_utils.calculate_smart_step_into_variants( frame, 0, 99999, base=function.__code__.co_firstlineno) names = set(x.name for x in found) assert names == { '_getframe', '__pow__', '__mul__', '__div__', '__floordiv__', '__mod__', '__add__', '__sub__', '__lshift__', '__rshift__', '__and__', '__or__', '__xor__'}
def test_smart_step_into_bytecode_info_00eq(): from _pydevd_bundle.pydevd_bytecode_utils import Variant def function(): a = 1 b = 1 if a == b: pass if a != b: pass if a > b: pass if a >= b: pass if a < b: pass if a <= b: pass if a is b: pass yield sys._getframe() generator = iter(function()) frame = next(generator) found = pydevd_bytecode_utils.calculate_smart_step_into_variants( frame, 0, 99999, base=function.__code__.co_firstlineno) if sys.version_info[:2] < (3, 9): check(found, [ Variant(name='__eq__', is_visited=True, line=3, offset=18, call_order=1), Variant(name='__ne__', is_visited=True, line=5, offset=33, call_order=1), Variant(name='__gt__', is_visited=True, line=7, offset=48, call_order=1), Variant(name='__ge__', is_visited=True, line=9, offset=63, call_order=1), Variant(name='__lt__', is_visited=True, line=11, offset=78, call_order=1), Variant(name='__le__', is_visited=True, line=13, offset=93, call_order=1), Variant(name='is', is_visited=True, line=15, offset=108, call_order=1), Variant(name=('_getframe', 'sys'), is_visited=True, line=18, offset=123, call_order=1), ]) else: check(found, [ Variant(name='__eq__', is_visited=True, line=3, offset=18, call_order=1), Variant(name='__ne__', is_visited=True, line=5, offset=33, call_order=1), Variant(name='__gt__', is_visited=True, line=7, offset=48, call_order=1), Variant(name='__ge__', is_visited=True, line=9, offset=63, call_order=1), Variant(name='__lt__', is_visited=True, line=11, offset=78, call_order=1), Variant(name='__le__', is_visited=True, line=13, offset=93, call_order=1), Variant(name=('_getframe', 'sys'), is_visited=True, line=18, offset=123, call_order=1), ])
def test_smart_step_into_bytecode_info_023(): def function(): yield sys._getframe() tuple(x for x in c() if x == d()) generator = iter(function()) frame = next(generator) found = pydevd_bytecode_utils.calculate_smart_step_into_variants( frame, 0, 99999, base=function.__code__.co_firstlineno) names = set(x.name for x in found) assert names == {'_getframe', 'c', 'd', 'tuple', '__eq__'}
def test_smart_step_into_bytecode_info_017(): def function(): yield sys._getframe() call([x for x in y if x == call2()]) generator = iter(function()) frame = next(generator) found = pydevd_bytecode_utils.calculate_smart_step_into_variants( frame, 0, 99999, base=function.__code__.co_firstlineno) names = set(x.name for x in found) assert names == {'_getframe', 'call', '__eq__', 'call2'}
def test_smart_step_into_bytecode_info_013(): def function(): yield sys._getframe() (lambda a:a,)[0](1) generator = iter(function()) frame = next(generator) found = pydevd_bytecode_utils.calculate_smart_step_into_variants( frame, 0, 99999, base=function.__code__.co_firstlineno) names = set(x.name for x in found) assert names == {'_getframe', '__getitem__().__call__', '__getitem__'}
def test_smart_step_into_bytecode_info_003(): def function(): yield sys._getframe() bbb = foo.bar( Something(param1, param2=xxx.yyy), {} ) call() generator = iter(function()) frame = next(generator) found = pydevd_bytecode_utils.calculate_smart_step_into_variants( frame, 0, 99999, base=function.__code__.co_firstlineno) names = set(x.name for x in found) assert names == {'_getframe', 'bar', 'Something', 'call', 'yyy'}
def test_smart_step_into_bytecode_info_021(): def function(): yield sys._getframe() a, b = b, a a, b, c = c, a, b a, b, c, d = d, c, a, b a() generator = iter(function()) frame = next(generator) found = pydevd_bytecode_utils.calculate_smart_step_into_variants( frame, 0, 99999, base=function.__code__.co_firstlineno) names = set(x.name for x in found) assert names == {'_getframe', 'a'}
def test_smart_step_into_bytecode_info_014(): def function(): yield sys._getframe() try: raise RuntimeError() except Exception: call2() finally: call3() generator = iter(function()) frame = next(generator) found = pydevd_bytecode_utils.calculate_smart_step_into_variants( frame, 0, 99999, base=function.__code__.co_firstlineno) names = set(x.name for x in found) assert names == {'_getframe', 'RuntimeError', 'call2', 'call3'}
def test_smart_step_into_bytecode_info_019(): def function(): yield sys._getframe() class Foo(object): def __init__(self): pass f = Foo() generator = iter(function()) frame = next(generator) found = pydevd_bytecode_utils.calculate_smart_step_into_variants( frame, 0, 99999, base=function.__code__.co_firstlineno) names = set(x.name for x in found) assert names == {'_getframe', 'Foo'}
def test_smart_step_into_bytecode_info_020(): def function(): yield sys._getframe() for a in call(): if a != 1: a() break elif a != 2: b() break else: continue else: raise RuntimeError() generator = iter(function()) frame = next(generator) found = pydevd_bytecode_utils.calculate_smart_step_into_variants( frame, 0, 99999, base=function.__code__.co_firstlineno) names = set(x.name for x in found) assert names == {'_getframe', 'call', 'a', 'b', 'RuntimeError', '__ne__'}