Skip to content
Snippets Groups Projects
Commit f871b746 authored by tuhe's avatar tuhe
Browse files

updates

parent 09241609
No related branches found
No related tags found
No related merge requests found
Pipeline #32450 failed
Metadata-Version: 2.1
Name: codesnipper
<<<<<<< HEAD
Version: 0.1.18.11
=======
Version: 0.1.18.10
>>>>>>> 6fce20d6e5d8194b6a072056a9a906939d4ee070
Version: 0.1.18.15
Summary: A lightweight framework for censoring student solutions files and extracting code + output
Home-page: https://lab.compute.dtu.dk/tuhe/snipper
Author: Tue Herlau
......
......@@ -18,11 +18,12 @@ def o_block_funlines(lines, art, output, all_lines=None):
l2 += [id + f"sys.stdout = open('{outf}', 'w')"]
l2 += lines
l2 += [indent(lines[-1]) + "sys.stdout.close()"]
l2 += [indent(lines[-1]) + "sys.stdout = sys.__stdout__"]
return l2
pass
def run_o(lines, file, output,package_base_dir=None):
def run_o(lines, file, output,package_base_dir=None, verbose=True):
# def block_fun(lines, start_extra, end_extra, art, output, **kwargs):
# id = indent(lines[0])
# outf = output + ("_" + art if art is not None else "") + ".txt"
......@@ -50,6 +51,8 @@ def run_o(lines, file, output,package_base_dir=None):
# ex = b['name']
# o_block_fun(b['block'], None, )
l2 = o_block_funlines( b['block'], b['name'], output, all_lines=lines)
art = b['name']
output_file = output + ("_" + art if art is not None and art != "" else "") + ".txt"
lines2 = b['first'] + l2 + b['last']
lines = b['first'] + b['block'] + b['last']
......@@ -61,6 +64,7 @@ def run_o(lines, file, output,package_base_dir=None):
else:
with open(file_run, 'w', encoding="utf-8") as f:
f.write("\n".join(lines2))
python = sys.executable
if package_base_dir is None:
cmd = f"cd {os.path.dirname(file_run)} && {python} {os.path.basename(file_run)}"
......@@ -69,8 +73,23 @@ def run_o(lines, file, output,package_base_dir=None):
rp = os.path.relpath(file_run, package_base_dir).replace("\\", "/").replace("/", ".")[:-3]
cmd = f"cd {package_base_dir} && {python} -m {rp}"
if verbose:
print(cmd)
print("File that will be run contains:", file_run)
with open(file_run, 'r') as f:
print(f.read())
s = subprocess.check_output(cmd, shell=True)
if verbose:
print("> After I ran it I got the output")
print(s)
if os.path.isfile(output_file):
print("> Then Lets read the output file", output_file)
with open(output_file, 'r') as f:
print(f.read())
print(">> WAS THAT WHAT YOU EXPECTED???")
else:
print("No output file produced", output_file)
os.remove(file_run)
......@@ -80,16 +99,3 @@ def run_o(lines, file, output,package_base_dir=None):
print("I was cutting the #!o tag")
print("\n".join( lines) )
raise(e)
# if didfind:
# fp, ex = os.path.splitext(file)
# file_run = fp + "_RUN_OUTPUT_CAPTURE" +ex
# if os.path.exists(file_run):
# print("file found mumble...")
# else:
# with open(file_run, 'w', encoding="utf-8") as f:
# f.write("\n".join(lines2) )
# cmd = "python " + file_run
# import subprocess
# s = subprocess.check_output(cmd, shell=True)
# os.remove(file_run)
\ No newline at end of file
......@@ -17,7 +17,6 @@ def get_s(lines):
pass
if 'dse' in c['start_tag_args']:
print("asdfasdfs")
# print(c['start_tag_args'])
if 'nodoc' in c['start_tag_args'] and c['start_tag_args']['nodoc']:
c['block'] = rm_docstring(c['block'])
print("No documentation!")
......@@ -26,25 +25,6 @@ def get_s(lines):
output = {}
for name, co in blocks.items():
slines = [l for c in co for l in c['block']]
# full_strip("")
# c['block']['args']
# slines = slines[ 23]
# co.
# if slines[f.lineno].strip().startswith('"' * 3):
# print("got a docstrnig")
# for k in range(f.lineno, f.end_lineno + 1):
# l = slines[k] if k != f.lineno else slines[k].strip()[3:]
# if l.find('"' * 3) >= 0:
# break
# else:
# k = -1
# if k > 0:
# print("Docstring detected")
# for i in range(f.lineno, k + 1):
# ll2[i] = None
output[name] = slines
return output
......@@ -59,7 +39,8 @@ def rm_docstring(lines):
ll2 = slines.copy()
def rm_ds(f, ll2):
if slines[f.lineno].strip().startswith('"' * 3):
lstart = slines[f.lineno].strip()
if lstart.startswith('"' * 3) or lstart.startswith('r' + '"' * 3):
# print("got a docstrnig")
for k in range(f.lineno-1, f.end_lineno + 1):
l = slines[k] if k != f.lineno else slines[k].strip()[3:]
......
......@@ -49,9 +49,10 @@ def censor_file(file, run_files=True, run_out_dirs=None, cut_files=True,
package_base_dir=None):
if str(file).endswith("rst"):
assert not run_files and not cut_files and not censor_files
# print(file)
# if str(file).endswith("md"):
# assert not run_files and not cut_files
if str(file).endswith(".md"):
license_head=None
if references == None:
references = {}
......
<<<<<<< HEAD
__version__ = "0.1.18.11"
=======
__version__ = "0.1.18.10"
>>>>>>> 6fce20d6e5d8194b6a072056a9a906939d4ee070
__version__ = "0.1.18.15"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment