From 7b96509a9852603de6912ec55a7b2603677a5183 Mon Sep 17 00:00:00 2001 From: David Sounthiraraj Date: Mon, 22 May 2023 23:19:30 -0500 Subject: [PATCH 1/6] added wheel --- .gitignore | 1 - dist/pytutor-1.0.0-py3-none-any.whl | Bin 0 -> 29320 bytes 2 files changed, 1 deletion(-) create mode 100644 dist/pytutor-1.0.0-py3-none-any.whl 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 0000000000000000000000000000000000000000..4164980aa8e990330bfdefe9d22d307c7e4f32ed GIT binary patch literal 29320 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 literal 0 HcmV?d00001 From 1eab7933dc7f331b393fedb0c8621908443532e9 Mon Sep 17 00:00:00 2001 From: DavidSRaj Date: Mon, 26 Jun 2023 21:50:11 -0400 Subject: [PATCH 2/6] added function to support input --- pytutor/generate_trace.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pytutor/generate_trace.py b/pytutor/generate_trace.py index 9885fa9..571b1d0 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: generate_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 From 4311e3b1e3d445218aa3f360c090f70966e8edd4 Mon Sep 17 00:00:00 2001 From: DavidSRaj Date: Tue, 5 Sep 2023 23:51:14 -0500 Subject: [PATCH 3/6] made setup optional --- pytutor/generate_trace.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pytutor/generate_trace.py b/pytutor/generate_trace.py index 571b1d0..e5e0852 100644 --- a/pytutor/generate_trace.py +++ b/pytutor/generate_trace.py @@ -40,12 +40,12 @@ def run_logger(source, setup, modules=None): custom_modules={'pg_setup': setup}, extra_modules=modules) -def run(source, raw_input, setup, modules=None): +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: generate_trace.json_finalizer(code, trace, modules) + 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) From e86421268b3eda1e6a5a6840579fa2f545276607 Mon Sep 17 00:00:00 2001 From: DavidSRaj Date: Tue, 5 Sep 2023 23:53:58 -0500 Subject: [PATCH 4/6] updated wheel --- dist/pytutor-1.0.0-py3-none-any.whl | Bin 29320 -> 29357 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/dist/pytutor-1.0.0-py3-none-any.whl b/dist/pytutor-1.0.0-py3-none-any.whl index 4164980aa8e990330bfdefe9d22d307c7e4f32ed..511867ff61666322ec7aa7d9144fe29eccb6ce1f 100644 GIT binary patch delta 1775 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 UxKR&7!O?#Y7*t7t0`k7)FEY$K^Z)<= From 36b812bde0669a17e57d65a86d6d175560efce26 Mon Sep 17 00:00:00 2001 From: DavidSRaj Date: Tue, 5 Sep 2023 23:54:27 -0500 Subject: [PATCH 5/6] added sample main.py --- main.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 main.py 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 From c0e7a598ff18765c21caebe2287d1a6228ce1147 Mon Sep 17 00:00:00 2001 From: Lalith-343 Date: Wed, 23 Jul 2025 14:50:21 +0530 Subject: [PATCH 6/6] feat: updated the whl due to imp not available for python3 --- dist/pytutor-1.0.1-py3-none-any.whl | Bin 0 -> 29424 bytes pytutor/pg_logger.py | 3 +-- setup.py | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) create mode 100644 dist/pytutor-1.0.1-py3-none-any.whl 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 0000000000000000000000000000000000000000..a4778ac099a4d7d6bfb2a367ab4acb2e3ff0f4b6 GIT binary patch literal 29424 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 Mf0$a@{o~vJ1N%Jq=l}o! literal 0 HcmV?d00001 diff --git a/pytutor/pg_logger.py b/pytutor/pg_logger.py index 62dc707..6403074 100644 --- a/pytutor/pg_logger.py +++ b/pytutor/pg_logger.py @@ -29,7 +29,6 @@ # of all in-scope data structures after each executed instruction. -import imp import sys import bdb # the KEY import here! import re @@ -1353,7 +1352,7 @@ def _runscript(self, script_str): # which emulates "from import *" 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__) diff --git a/setup.py b/setup.py index 8f53e54..0cd63a2 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ setup( name='pytutor', packages=['pytutor'], # this must be the same as the name above - version='1.0.0', + version='1.0.1', description='An interface to run Phillip Guo\'s Python Tutor', author='Sumukh Sridhara', author_email='sumukh@berkeley.edu',