diff --git a/.gitignore b/.gitignore index 66df0ed..0fcd685 100644 --- a/.gitignore +++ b/.gitignore @@ -20,7 +20,6 @@ tmp # pip-related files *.egg-info -dist pip-selfcheck.json # ok-related files diff --git a/dist/pytutor-1.0.0-py3-none-any.whl b/dist/pytutor-1.0.0-py3-none-any.whl new file mode 100644 index 0000000..de29d51 Binary files /dev/null and b/dist/pytutor-1.0.0-py3-none-any.whl differ diff --git a/dist/pytutor-1.0.1-py3-none-any.whl b/dist/pytutor-1.0.1-py3-none-any.whl new file mode 100644 index 0000000..a6bf5ff Binary files /dev/null and b/dist/pytutor-1.0.1-py3-none-any.whl differ diff --git a/dist/pytutor-1.0.1.tar.gz b/dist/pytutor-1.0.1.tar.gz new file mode 100644 index 0000000..2d9809b Binary files /dev/null and b/dist/pytutor-1.0.1.tar.gz differ diff --git a/main.py b/main.py new file mode 100644 index 0000000..38c7692 --- /dev/null +++ b/main.py @@ -0,0 +1,13 @@ +import json +from pytutor import generate_trace, server + +code = """ +num = input("Enter a number: ") +print(num) +""" +trace = generate_trace.run(code, "[]") +print(trace) + +print("=========================================") +trace = generate_trace.run(code, "[10]") +print(trace) \ No newline at end of file diff --git a/pytutor/generate_trace.py b/pytutor/generate_trace.py index 9885fa9..e5e0852 100644 --- a/pytutor/generate_trace.py +++ b/pytutor/generate_trace.py @@ -40,3 +40,18 @@ def run_logger(source, setup, modules=None): custom_modules={'pg_setup': setup}, extra_modules=modules) +def run(source, raw_input, setup="", modules=None): + modules = modules or {} + # Add current directory to path to make sure that imports work consistently + sys.path.append(os.getcwd() + '/') + + finalizer = lambda code,trace: json_finalizer(code, trace, modules) + return pg_logger.exec_script_str_local(source, + raw_input, # JSON list of strings for simulated raw_ + True, # output cumulative trace (to display exited frames) + False, # render primitives as heap objects + finalizer, + separate_stdout_by_module=False, + disable_security_checks=True, + custom_modules={'pg_setup': setup}, + extra_modules=modules) \ No newline at end of file diff --git a/pytutor/pg_logger.py b/pytutor/pg_logger.py index 62dc707..a72480f 100644 --- a/pytutor/pg_logger.py +++ b/pytutor/pg_logger.py @@ -1354,6 +1354,7 @@ def _runscript(self, script_str): for mn in self.custom_modules: # http://code.activestate.com/recipes/82234-importing-a-dynamically-generated-module/ new_m = imp.new_module(mn) + # new_m = types.ModuleType(mn) exec(self.custom_modules[mn], new_m.__dict__) # exec in custom globals user_globals.update(new_m.__dict__)