def test_call_not_traced_func_return_val(set_new_recorder): def call_test(a: int = 2): a **= a return a @tracer('a', 'b') def main(): a = '' a = call_test() main() result = [{ 'accesses': None, 'line': 0, 'variables': { 'main\u200b@a': { 'color': '#A6CEE3', 'repr': None, 'type': 'init' } } }, { 'accesses': None, 'line': 529, 'variables': None }, { 'accesses': None, 'line': 530, 'variables': { 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4341716592, 'repr': "''", 'type': 'String' } } }, { 'accesses': None, 'line': 531, 'variables': { 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4341528880, 'repr': '4', 'type': 'Number' } } }] assert RecorderResultParser(result) == RecorderResultParser( tracer.get_recorder().get_processed_change_list()) pprint(tracer.get_recorder().get_processed_change_list())
def test_end_of_func_modify(set_new_recorder): @tracer('a') def main(): a = '' a = 1 main() result = [{ 'accesses': None, 'line': 0, 'variables': { 'main\u200b@a': { 'color': '#A6CEE3', 'repr': None, 'type': 'init' } } }, { 'accesses': None, 'line': 456, 'variables': None }, { 'accesses': None, 'line': 457, 'variables': { 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4374603376, 'repr': "''", 'type': 'String' } } }, { 'accesses': None, 'line': 458, 'variables': { 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4374415664, 'repr': '1', 'type': 'Number' } } }] assert RecorderResultParser(result) == RecorderResultParser( tracer.get_recorder().get_processed_change_list()) pprint(tracer.get_recorder().get_processed_change_list())
def test_call_not_traced_func_return_none(set_new_recorder): def call_test(a: int = 2): a **= a @tracer('a', 'b') def main(): a = '' call_test() main() result = [{ 'accesses': None, 'line': 0, 'variables': { 'main\u200b@a': { 'color': '#A6CEE3', 'repr': None, 'type': 'init' } } }, { 'accesses': None, 'line': 563, 'variables': None }, { 'accesses': None, 'line': 564, 'variables': { 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4509455984, 'repr': "''", 'type': 'String' } } }, { 'accesses': None, 'line': 565, 'variables': None }] assert RecorderResultParser(result) == RecorderResultParser( tracer.get_recorder().get_processed_change_list()) pprint(tracer.get_recorder().get_processed_change_list())
def test_one_func_assign(set_new_recorder): @tracer('a') def main(): a = 10 main() result = [{ 'accesses': None, 'line': 0, 'variables': { 'main\u200b@a': { 'color': '#A6CEE3', 'repr': None, 'type': 'init' } } }, { 'accesses': None, 'line': 442, 'variables': None }, { 'accesses': None, 'line': 443, 'variables': { 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4334516816, 'repr': '10', 'type': 'Number' } } }] assert RecorderResultParser(result) == RecorderResultParser( tracer.get_recorder().get_processed_change_list()) pprint(tracer.get_recorder().get_processed_change_list())
class TempClass: recorder = tracer.get_recorder() def __init__(self): self.value = 0 @tracer.look_at def get_value(self): # TODO warp all the record write/read into functions, since the number of fields is limited # TempClass.recorder.add_ac_to_last_record('get value %s' % self.value) return self.value # TODO in the graph objects, I think you can start will getters first. # setters can wait # TODO create a decorator that does this @tracer.look_at def set_value(self, value): # TODO same as noted above # TempClass.recorder.add_ac_to_last_record('set value %s' % self.value) self.value = value
def test_call_traced_func_default_var_return_val(set_new_recorder): @tracer('a') def call_test(a: int = 2): a **= a return a @tracer('a', 'b') def main(): a = '' a = call_test() main() result = [{ 'accesses': None, 'line': 0, 'variables': { 'call_test\u200b@a': { 'color': '#1F78B4', 'repr': None, 'type': 'init' }, 'main\u200b@a': { 'color': '#A6CEE3', 'repr': None, 'type': 'init' } } }, { 'accesses': None, 'line': 651, 'variables': None }, { 'accesses': None, 'line': 652, 'variables': { 'call_test\u200b@a': { 'color': '#1F78B4', 'repr': None, 'type': 'init' }, 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4435457648, 'repr': "''", 'type': 'String' } } }, { 'accesses': None, 'line': 653, 'variables': None }, { 'accesses': None, 'line': 646, 'variables': { 'call_test\u200b@a': { 'color': '#1F78B4', 'python_id': 4435269968, 'repr': '2', 'type': 'Number' }, 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4435457648, 'repr': "''", 'type': 'String' } } }, { 'accesses': None, 'line': 647, 'variables': { 'call_test\u200b@a': { 'color': '#1F78B4', 'python_id': 4435270032, 'repr': '4', 'type': 'Number' }, 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4435457648, 'repr': "''", 'type': 'String' } } }, { 'accesses': None, 'line': 648, 'variables': None }, { 'accesses': None, 'line': 653, 'variables': { 'call_test\u200b@a': { 'color': '#1F78B4', 'python_id': 4435270032, 'repr': '4', 'type': 'Number' }, 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4435270032, 'repr': '4', 'type': 'Number' } } }] assert RecorderResultParser(result) == RecorderResultParser( tracer.get_recorder().get_processed_change_list()) pprint(tracer.get_recorder().get_processed_change_list())
def test_call_traced_func_default_val_no_return(set_new_recorder): @tracer('a') def call_test(a: int = 2): a **= a @tracer('a', 'b') def main(): a = '' call_test() main() result = [{ 'accesses': None, 'line': 0, 'variables': { 'call_test\u200b@a': { 'color': '#1F78B4', 'repr': None, 'type': 'init' }, 'main\u200b@a': { 'color': '#A6CEE3', 'repr': None, 'type': 'init' } } }, { 'accesses': None, 'line': 593, 'variables': None }, { 'accesses': None, 'line': 594, 'variables': { 'call_test\u200b@a': { 'color': '#1F78B4', 'repr': None, 'type': 'init' }, 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4449818224, 'repr': "''", 'type': 'String' } } }, { 'accesses': None, 'line': 595, 'variables': None }, { 'accesses': None, 'line': 589, 'variables': { 'call_test\u200b@a': { 'color': '#1F78B4', 'python_id': 4449630544, 'repr': '2', 'type': 'Number' }, 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4449818224, 'repr': "''", 'type': 'String' } } }, { 'accesses': None, 'line': 590, 'variables': { 'call_test\u200b@a': { 'color': '#1F78B4', 'python_id': 4449630608, 'repr': '4', 'type': 'Number' }, 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4449818224, 'repr': "''", 'type': 'String' } } }, { 'accesses': None, 'line': 595, 'variables': None }] assert RecorderResultParser(result) == RecorderResultParser( tracer.get_recorder().get_processed_change_list()) pprint(tracer.get_recorder().get_processed_change_list())
def test_end_of_func_new_var(set_new_recorder): @tracer('a', 'b') def main(): a = '' b = 1 main() result = [{ 'accesses': None, 'line': 0, 'variables': { 'main\u200b@a': { 'color': '#A6CEE3', 'repr': None, 'type': 'init' }, 'main\u200b@b': { 'color': '#1F78B4', 'repr': None, 'type': 'init' } } }, { 'accesses': None, 'line': 484, 'variables': None }, { 'accesses': None, 'line': 485, 'variables': { 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4514518640, 'repr': "''", 'type': 'String' }, 'main\u200b@b': { 'color': '#1F78B4', 'repr': None, 'type': 'init' } } }, { 'accesses': None, 'line': 486, 'variables': { 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4514518640, 'repr': "''", 'type': 'String' }, 'main\u200b@b': { 'color': '#1F78B4', 'python_id': 4514330928, 'repr': '1', 'type': 'Number' } } }] assert RecorderResultParser(result) == RecorderResultParser( tracer.get_recorder().get_processed_change_list()) pprint(tracer.get_recorder().get_processed_change_list())
def test_recursive(set_new_recorder): result = [{ 'accesses': None, 'line': _anything, 'variables': { 't\u200b@a': { 'color': '#A6CEE3', 'repr': None, 'type': 'init' } } }, { 'accesses': None, 'line': _anything, 'variables': None }, { 'accesses': None, 'line': _anything, 'variables': { 't\u200b@a': { 'color': '#A6CEE3', 'python_id': _anything, 'repr': [], 'type': 'List' } } }, { 'accesses': None, 'line': _anything, 'variables': None }, { 'accesses': None, 'line': _anything, 'variables': { 't\u200b@a': { 'color': '#A6CEE3', 'python_id': _anything, 'repr': [{ 'color': '#828282', 'python_id': _anything, 'repr': [{ 'color': '#828282', 'python_id': _anything, 'repr': '1', 'type': 'Number' }, { 'color': '#828282', 'python_id': _anything, 'repr': '2', 'type': 'Number' }, { 'color': '#828282', 'python_id': _anything, 'repr': '3', 'type': 'Number' }, { 'color': '#828282', 'python_id': _anything, 'repr': None, 'type': 'reference' }], 'type': 'List' }], 'type': 'List' } } }, { 'accesses': None, 'line': _anything, 'variables': { 't\u200b@a': { 'color': '#A6CEE3', 'python_id': _anything, 'repr': [{ 'color': '#828282', 'python_id': _anything, 'repr': [{ 'color': '#828282', 'python_id': _anything, 'repr': '1', 'type': 'Number' }, { 'color': '#828282', 'python_id': _anything, 'repr': '2', 'type': 'Number' }, { 'color': '#828282', 'python_id': _anything, 'repr': '3', 'type': 'Number' }, { 'color': '#828282', 'python_id': _anything, 'repr': None, 'type': 'reference' }], 'type': 'List' }, { 'color': '#828282', 'python_id': _anything, 'repr': '4', 'type': 'Number' }], 'type': 'List' } } }] @tracer('a') def t(): a = [] b = [1, 2, 3, a] a.append(b) a.append(4) t() assert RecorderResultParser(tracer.get_recorder( ).get_processed_change_list()) == RecorderResultParser(result)
def test_call_traced_func_direct_return(set_new_recorder): @tracer('c') def call_test(c): return c**c @tracer('a', 'b') def main(): a = '' b = call_test(3) main() result = [{ 'accesses': None, 'line': 0, 'variables': { 'call_test\u200b@c': { 'color': '#1F78B4', 'repr': None, 'type': 'init' }, 'main\u200b@a': { 'color': '#A6CEE3', 'repr': None, 'type': 'init' }, 'main\u200b@b': { 'color': '#B2DF8A', 'repr': None, 'type': 'init' } } }, { 'accesses': None, 'line': 858, 'variables': None }, { 'accesses': None, 'line': 859, 'variables': { 'call_test\u200b@c': { 'color': '#1F78B4', 'repr': None, 'type': 'init' }, 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4490438256, 'repr': "''", 'type': 'String' }, 'main\u200b@b': { 'color': '#B2DF8A', 'repr': None, 'type': 'init' } } }, { 'accesses': None, 'line': 860, 'variables': None }, { 'accesses': None, 'line': 854, 'variables': { 'call_test\u200b@c': { 'color': '#1F78B4', 'python_id': 4490250608, 'repr': '3', 'type': 'Number' }, 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4490438256, 'repr': "''", 'type': 'String' }, 'main\u200b@b': { 'color': '#B2DF8A', 'repr': None, 'type': 'init' } } }, { 'accesses': None, 'line': 855, 'variables': None }, { 'accesses': None, 'line': 860, 'variables': { 'call_test\u200b@c': { 'color': '#1F78B4', 'python_id': 4490250608, 'repr': '3', 'type': 'Number' }, 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4490438256, 'repr': "''", 'type': 'String' }, 'main\u200b@b': { 'color': '#B2DF8A', 'python_id': 4490251376, 'repr': '27', 'type': 'Number' } } }] assert RecorderResultParser(result) == RecorderResultParser( tracer.get_recorder().get_processed_change_list()) pprint(tracer.get_recorder().get_processed_change_list())
def test_call_traced_func_new_var(set_new_recorder): @tracer('b') def call_test(c): b = c**c return b @tracer('a', 'b') def main(): a = '' b = call_test(3) main() result = [{ 'accesses': None, 'line': 0, 'variables': { 'call_test\u200b@b': { 'color': '#1F78B4', 'repr': None, 'type': 'init' }, 'main\u200b@a': { 'color': '#A6CEE3', 'repr': None, 'type': 'init' }, 'main\u200b@b': { 'color': '#B2DF8A', 'repr': None, 'type': 'init' } } }, { 'accesses': None, 'line': 787, 'variables': None }, { 'accesses': None, 'line': 788, 'variables': { 'call_test\u200b@b': { 'color': '#1F78B4', 'repr': None, 'type': 'init' }, 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4430603888, 'repr': "''", 'type': 'String' }, 'main\u200b@b': { 'color': '#B2DF8A', 'repr': None, 'type': 'init' } } }, { 'accesses': None, 'line': 789, 'variables': None }, { 'accesses': None, 'line': 782, 'variables': None }, { 'accesses': None, 'line': 783, 'variables': { 'call_test\u200b@b': { 'color': '#1F78B4', 'python_id': 4430417008, 'repr': '27', 'type': 'Number' }, 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4430603888, 'repr': "''", 'type': 'String' }, 'main\u200b@b': { 'color': '#B2DF8A', 'repr': None, 'type': 'init' } } }, { 'accesses': None, 'line': 784, 'variables': None }, { 'accesses': None, 'line': 789, 'variables': { 'call_test\u200b@b': { 'color': '#1F78B4', 'python_id': 4430417008, 'repr': '27', 'type': 'Number' }, 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4430603888, 'repr': "''", 'type': 'String' }, 'main\u200b@b': { 'color': '#B2DF8A', 'python_id': 4430417008, 'repr': '27', 'type': 'Number' } } }] assert RecorderResultParser(result) == RecorderResultParser( tracer.get_recorder().get_processed_change_list()) pprint(tracer.get_recorder().get_processed_change_list())
def test_call_traced_func_no_default_val(set_new_recorder): @tracer('a') def call_test(a): a **= a return a @tracer('a', 'b') def main(): a = '' a = call_test(3) main() result = [{ 'accesses': None, 'line': 0, 'variables': { 'call_test\u200b@a': { 'color': '#1F78B4', 'repr': None, 'type': 'init' }, 'main\u200b@a': { 'color': '#A6CEE3', 'repr': None, 'type': 'init' } } }, { 'accesses': None, 'line': 719, 'variables': None }, { 'accesses': None, 'line': 720, 'variables': { 'call_test\u200b@a': { 'color': '#1F78B4', 'repr': None, 'type': 'init' }, 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4500768368, 'repr': "''", 'type': 'String' } } }, { 'accesses': None, 'line': 721, 'variables': None }, { 'accesses': None, 'line': 714, 'variables': { 'call_test\u200b@a': { 'color': '#1F78B4', 'python_id': 4500580720, 'repr': '3', 'type': 'Number' }, 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4500768368, 'repr': "''", 'type': 'String' } } }, { 'accesses': None, 'line': 715, 'variables': { 'call_test\u200b@a': { 'color': '#1F78B4', 'python_id': 4500581488, 'repr': '27', 'type': 'Number' }, 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4500768368, 'repr': "''", 'type': 'String' } } }, { 'accesses': None, 'line': 716, 'variables': None }, { 'accesses': None, 'line': 721, 'variables': { 'call_test\u200b@a': { 'color': '#1F78B4', 'python_id': 4500581488, 'repr': '27', 'type': 'Number' }, 'main\u200b@a': { 'color': '#A6CEE3', 'python_id': 4500581488, 'repr': '27', 'type': 'Number' } } }] assert RecorderResultParser(result) == RecorderResultParser( tracer.get_recorder().get_processed_change_list()) pprint(tracer.get_recorder().get_processed_change_list())