diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000000000000000000000000000000000000..2a3721fa1238fd60e23b697c19ec77574966b219 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,8 @@ +include src/unitgrade_private/autolab/lab_template/src/README +include src/unitgrade_private/autolab/lab_template/src/driver_python.py +include src/unitgrade_private/autolab/lab_template/src/Makefile +include src/unitgrade_private/autolab/lab_template/src/driver.sh +include src/unitgrade_private/autolab/lab_template/Makefile +include src/unitgrade_private/autolab/lab_template/autograde-Makefile +include src/unitgrade_private/autolab/lab_template/hello.yml +include src/unitgrade_private/autolab/lab_template/hello.rb diff --git a/docker_images/docker_tango_python/requirements.txt b/docker_images/docker_tango_python/requirements.txt index a502efe58c6c08882ca226e9022bc7cec8f3e517..e77f143c967919661b16068a437ef2794763a581 100644 --- a/docker_images/docker_tango_python/requirements.txt +++ b/docker_images/docker_tango_python/requirements.txt @@ -2,7 +2,6 @@ numpy tqdm jinja2 tabulate -compress_pickle pyfiglet colorama -unitgrade-devel>=0.1.23 \ No newline at end of file +unitgrade-devel>=0.1.24 # Required to run automatic evaluation (load tokens etc.) \ No newline at end of file diff --git a/docker_images/unitgrade-docker/home/cs103/Report3_handin_5_of_10.token b/docker_images/unitgrade-docker/home/cs103/Report3_handin_5_of_10.token deleted file mode 100644 index 45f7a30a3831f832fe9793a9c280f2d41a015048..0000000000000000000000000000000000000000 --- a/docker_images/unitgrade-docker/home/cs103/Report3_handin_5_of_10.token +++ /dev/null @@ -1,311 +0,0 @@ -# This file contains your results. Do not edit its content. Simply upload it as it is. -### Content of cs103/homework1.py ### - -def reverse_list(mylist): - """ - Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. - reverse_list([1,2,3]) should return [3,2,1] (as a list). - """ - # TODO: 1 lines missing. - raise NotImplementedError("Implement function body") - -def add(a,b): - """ Given two numbers `a` and `b` this function should simply return their sum: - > add(a,b) = a+b """ - # TODO: 1 lines missing. - raise NotImplementedError("Implement function body") - -if __name__ == "__main__": - # Example usage: - print(f"Your result of 2 + 2 = {add(2,2)}") - print(f"Reversing a small list", reverse_list([2,3,5,7])) - - -### Content of cs103/report3.py ### - -from unitgrade import UTestCase, Report -from unitgrade.utils import hide -from unitgrade import evaluate_report_student -import cs103 - -class AutomaticPass(UTestCase): - def test_automatic_pass(self): - self.assertEqual(2, 2) # For simplicity, this test will always pass - - -class Report3(Report): - title = "CS 101 Report 3" - questions = [(AutomaticPass, 10)] # Include a single question for 10 credits. - pack_imports = [cs103] - -if __name__ == "__main__": - evaluate_report_student(Report3()) ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -57177b144714135bbdfe7b4496b7bd4b437c00942c212195c048aae2867af035e66c930d1a7b982499426aa4a719f62cdbf99c8190d76cdf53288c7719bb4ba7 47804 ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file diff --git a/docker_images/unitgrade-docker/home/cs103/homework1.py b/docker_images/unitgrade-docker/home/cs103/homework1.py deleted file mode 100644 index c314aab912bd438c5947d99a871a63989dc90dcd..0000000000000000000000000000000000000000 --- a/docker_images/unitgrade-docker/home/cs103/homework1.py +++ /dev/null @@ -1,18 +0,0 @@ -def reverse_list(mylist): - """ - Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. - reverse_list([1,2,3]) should return [3,2,1] (as a list). - """ - # TODO: 1 lines missing. - raise NotImplementedError("Implement function body") - -def add(a,b): - """ Given two numbers `a` and `b` this function should simply return their sum: - > add(a,b) = a+b """ - # TODO: 1 lines missing. - raise NotImplementedError("Implement function body") - -if __name__ == "__main__": - # Example usage: - print(f"Your result of 2 + 2 = {add(2,2)}") - print(f"Reversing a small list", reverse_list([2,3,5,7])) diff --git a/docker_images/unitgrade-docker/home/cs103/report3.py b/docker_images/unitgrade-docker/home/cs103/report3.py deleted file mode 100644 index e08f7a0a7b41179d1895796b9c5e6d7c094bf6fe..0000000000000000000000000000000000000000 --- a/docker_images/unitgrade-docker/home/cs103/report3.py +++ /dev/null @@ -1,17 +0,0 @@ -from unitgrade import UTestCase, Report -from unitgrade.utils import hide -from unitgrade import evaluate_report_student -import cs103 - -class AutomaticPass(UTestCase): - def test_automatic_pass(self): - self.assertEqual(2, 2) # For simplicity, this test will always pass - - -class Report3(Report): - title = "CS 101 Report 3" - questions = [(AutomaticPass, 10)] # Include a single question for 10 credits. - pack_imports = [cs103] - -if __name__ == "__main__": - evaluate_report_student(Report3()) diff --git a/docker_images/unitgrade-docker/home/cs103/report3_complete_grade.py b/docker_images/unitgrade-docker/home/cs103/report3_complete_grade.py deleted file mode 100644 index 3f4755e6d51317f050f5f13122a21578357a14ab..0000000000000000000000000000000000000000 --- a/docker_images/unitgrade-docker/home/cs103/report3_complete_grade.py +++ /dev/null @@ -1,3 +0,0 @@ -''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' -import bz2, base64 -exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/docker_images/unitgrade-docker/home/cs103/report3_grade.py b/docker_images/unitgrade-docker/home/cs103/report3_grade.py deleted file mode 100644 index 619c0dc0aa8bea7c209ce260f3e32251b0938669..0000000000000000000000000000000000000000 --- a/docker_images/unitgrade-docker/home/cs103/report3_grade.py +++ /dev/null @@ -1,3 +0,0 @@ -''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' -import bz2, base64 -exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/docker_images/unitgrade-docker/tmp/cs103/homework1.py b/docker_images/unitgrade-docker/tmp/cs103/homework1.py deleted file mode 100644 index 3543f1ba46b63eec3a2c2e007ee998660c7136c6..0000000000000000000000000000000000000000 --- a/docker_images/unitgrade-docker/tmp/cs103/homework1.py +++ /dev/null @@ -1,21 +0,0 @@ -""" -Example student code. This file is automatically generated from the files in the instructor-directory -""" -def reverse_list(mylist): - """ - Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. - reverse_list([1,2,3]) should return [3,2,1] (as a list). - """ - # TODO: 1 lines missing. - raise NotImplementedError("Implement function body") - -def add(a,b): - """ Given two numbers `a` and `b` this function should simply return their sum: - > add(a,b) = a+b """ - # TODO: 1 lines missing. - raise NotImplementedError("Implement function body") - -if __name__ == "__main__": - # Problem 1: Write a function which add two numbers - print(f"Your result of 2 + 2 = {add(2,2)}") - print(f"Reversing a small list", reverse_list([2,3,5,7])) diff --git a/docker_images/unitgrade-docker/tmp/cs103/report3.py b/docker_images/unitgrade-docker/tmp/cs103/report3.py deleted file mode 100644 index 6b1ee3323c2059d8ae502d32fc6231957593c16a..0000000000000000000000000000000000000000 --- a/docker_images/unitgrade-docker/tmp/cs103/report3.py +++ /dev/null @@ -1,29 +0,0 @@ -""" -Example student code. This file is automatically generated from the files in the instructor-directory -""" -from src.unitgrade.framework import UTestCase, Report -from src.unitgrade import evaluate_report_student - -class Week1(UTestCase): - """ The first question for week 1. """ - def test_add(self): - from cs103.homework1 import add - self.assertEqualC(add(2,2)) - self.assertEqualC(add(-100, 5)) - - -class AutomaticPass(UTestCase): - def test_student_passed(self): - self.assertEqual(2,2) - - -import cs103 -class Report3(Report): - title = "CS 101 Report 3" - questions = [(Week1, 20), (AutomaticPass, 10)] # Include a single question for 10 credits. - pack_imports = [cs103] - -if __name__ == "__main__": - # from unitgrade_private.hidden_gather_upload import gather_upload_to_campusnet - # gather_upload_to_campusnet(Report3()) - evaluate_report_student(Report3()) diff --git a/docker_images/unitgrade-docker/tmp/cs103/report3_complete_grade.py b/docker_images/unitgrade-docker/tmp/cs103/report3_complete_grade.py deleted file mode 100644 index 376098548e35d940554f0168ce2bd99523ec9b3c..0000000000000000000000000000000000000000 --- a/docker_images/unitgrade-docker/tmp/cs103/report3_complete_grade.py +++ /dev/null @@ -1,338 +0,0 @@ - -import numpy as np -from tabulate import tabulate -from datetime import datetime -import pyfiglet -import unittest -import inspect -import os -import argparse -import time - -parser = argparse.ArgumentParser(description='Evaluate your report.', epilog="""Example: -To run all tests in a report: - -> python assignment1_dp.py - -To run only question 2 or question 2.1 - -> python assignment1_dp.py -q 2 -> python assignment1_dp.py -q 2.1 - -Note this scripts does not grade your report. To grade your report, use: - -> python report1_grade.py - -Finally, note that if your report is part of a module (package), and the report script requires part of that package, the -m option for python may be useful. -For instance, if the report file is in Documents/course_package/report3_complete.py, and `course_package` is a python package, then change directory to 'Documents/` and run: - -> python -m course_package.report1 - -see https://docs.python.org/3.9/using/cmdline.html -""", formatter_class=argparse.RawTextHelpFormatter) -parser.add_argument('-q', nargs='?', type=str, default=None, help='Only evaluate this question (e.g.: -q 2)') -parser.add_argument('--showexpected', action="store_true", help='Show the expected/desired result') -parser.add_argument('--showcomputed', action="store_true", help='Show the answer your code computes') -parser.add_argument('--unmute', action="store_true", help='Show result of print(...) commands in code') -parser.add_argument('--passall', action="store_true", help='Automatically pass all tests. Useful when debugging.') - -def evaluate_report_student(report, question=None, qitem=None, unmute=None, passall=None, ignore_missing_file=False, show_tol_err=False): - args = parser.parse_args() - if question is None and args.q is not None: - question = args.q - if "." in question: - question, qitem = [int(v) for v in question.split(".")] - else: - question = int(question) - - if hasattr(report, "computed_answer_file") and not os.path.isfile(report.computed_answers_file) and not ignore_missing_file: - raise Exception("> Error: The pre-computed answer file", os.path.abspath(report.computed_answers_file), "does not exist. Check your package installation") - - if unmute is None: - unmute = args.unmute - if passall is None: - passall = args.passall - - results, table_data = evaluate_report(report, question=question, show_progress_bar=not unmute, qitem=qitem, verbose=False, passall=passall, show_expected=args.showexpected, show_computed=args.showcomputed,unmute=unmute, - show_tol_err=show_tol_err) - - - if question is None: - print("Provisional evaluation") - tabulate(table_data) - table = table_data - print(tabulate(table)) - print(" ") - - fr = inspect.getouterframes(inspect.currentframe())[1].filename - gfile = os.path.basename(fr)[:-3] + "_grade.py" - if os.path.exists(gfile): - print("Note your results have not yet been registered. \nTo register your results, please run the file:") - print(">>>", gfile) - print("In the same manner as you ran this file.") - - - return results - - -def upack(q): - # h = zip([(i['w'], i['possible'], i['obtained']) for i in q.values()]) - h =[(i['w'], i['possible'], i['obtained']) for i in q.values()] - h = np.asarray(h) - return h[:,0], h[:,1], h[:,2], - -class UnitgradeTextRunner(unittest.TextTestRunner): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - -class SequentialTestLoader(unittest.TestLoader): - def getTestCaseNames(self, testCaseClass): - test_names = super().getTestCaseNames(testCaseClass) - # testcase_methods = list(testCaseClass.__dict__.keys()) - ls = [] - for C in testCaseClass.mro(): - if issubclass(C, unittest.TestCase): - ls = list(C.__dict__.keys()) + ls - testcase_methods = ls - test_names.sort(key=testcase_methods.index) - return test_names - -def evaluate_report(report, question=None, qitem=None, passall=False, verbose=False, show_expected=False, show_computed=False,unmute=False, show_help_flag=True, silent=False, - show_progress_bar=True, - show_tol_err=False, - big_header=True): - - now = datetime.now() - if big_header: - ascii_banner = pyfiglet.figlet_format("UnitGrade", font="doom") - b = "\n".join( [l for l in ascii_banner.splitlines() if len(l.strip()) > 0] ) - else: - b = "Unitgrade" - dt_string = now.strftime("%d/%m/%Y %H:%M:%S") - print(b + " v" + __version__ + ", started: " + dt_string+ "\n") - # print("Started: " + dt_string) - s = report.title - if hasattr(report, "version") and report.version is not None: - s += " version " + report.version - print(s, "(use --help for options)" if show_help_flag else "") - # print(f"Loaded answers from: ", report.computed_answers_file, "\n") - table_data = [] - t_start = time.time() - score = {} - loader = SequentialTestLoader() - - for n, (q, w) in enumerate(report.questions): - if question is not None and n+1 != question: - continue - suite = loader.loadTestsFromTestCase(q) - qtitle = q.question_title() if hasattr(q, 'question_title') else q.__qualname__ - q_title_print = "Question %i: %s"%(n+1, qtitle) - print(q_title_print, end="") - q.possible = 0 - q.obtained = 0 - q_ = {} # Gather score in this class. - UTextResult.q_title_print = q_title_print # Hacky - UTextResult.show_progress_bar = show_progress_bar # Hacky. - UTextResult.number = n - UTextResult.nL = report.nL - - res = UTextTestRunner(verbosity=2, resultclass=UTextResult).run(suite) - - possible = res.testsRun - obtained = len(res.successes) - - assert len(res.successes) + len(res.errors) + len(res.failures) == res.testsRun - - obtained = int(w * obtained * 1.0 / possible ) if possible > 0 else 0 - score[n] = {'w': w, 'possible': w, 'obtained': obtained, 'items': q_, 'title': qtitle} - q.obtained = obtained - q.possible = possible - - s1 = f" * q{n+1}) Total" - s2 = f" {q.obtained}/{w}" - print(s1 + ("."* (report.nL-len(s1)-len(s2) )) + s2 ) - print(" ") - table_data.append([f"q{n+1}) Total", f"{q.obtained}/{w}"]) - - ws, possible, obtained = upack(score) - possible = int( msum(possible) ) - obtained = int( msum(obtained) ) # Cast to python int - report.possible = possible - report.obtained = obtained - now = datetime.now() - dt_string = now.strftime("%H:%M:%S") - - dt = int(time.time()-t_start) - minutes = dt//60 - seconds = dt - minutes*60 - plrl = lambda i, s: str(i) + " " + s + ("s" if i != 1 else "") - - dprint(first = "Total points at "+ dt_string + " (" + plrl(minutes, "minute") + ", "+ plrl(seconds, "second") +")", - last=""+str(report.obtained)+"/"+str(report.possible), nL = report.nL) - - # print(f"Completed at "+ dt_string + " (" + plrl(minutes, "minute") + ", "+ plrl(seconds, "second") +"). Total") - - table_data.append(["Total", ""+str(report.obtained)+"/"+str(report.possible) ]) - results = {'total': (obtained, possible), 'details': score} - return results, table_data - - -from tabulate import tabulate -from datetime import datetime -import inspect -import json -import os -import bz2 -import pickle -import os - -def bzwrite(json_str, token): # to get around obfuscation issues - with getattr(bz2, 'open')(token, "wt") as f: - f.write(json_str) - -def gather_imports(imp): - resources = {} - m = imp - # for m in pack_imports: - # print(f"*** {m.__name__}") - f = m.__file__ - # dn = os.path.dirname(f) - # top_package = os.path.dirname(__import__(m.__name__.split('.')[0]).__file__) - # top_package = str(__import__(m.__name__.split('.')[0]).__path__) - - if hasattr(m, '__file__') and not hasattr(m, '__path__'): # Importing a simple file: m.__class__.__name__ == 'module' and False: - top_package = os.path.dirname(m.__file__) - module_import = True - else: - top_package = __import__(m.__name__.split('.')[0]).__path__._path[0] - module_import = False - - # top_package = os.path.dirname(__import__(m.__name__.split('.')[0]).__file__) - # top_package = os.path.dirname(top_package) - import zipfile - # import strea - # zipfile.ZipFile - import io - # file_like_object = io.BytesIO(my_zip_data) - zip_buffer = io.BytesIO() - with zipfile.ZipFile(zip_buffer, 'w') as zip: - # zip.write() - for root, dirs, files in os.walk(top_package): - for file in files: - if file.endswith(".py"): - fpath = os.path.join(root, file) - v = os.path.relpath(os.path.join(root, file), os.path.dirname(top_package) if not module_import else top_package) - zip.write(fpath, v) - - resources['zipfile'] = zip_buffer.getvalue() - resources['top_package'] = top_package - resources['module_import'] = module_import - return resources, top_package - - if f.endswith("__init__.py"): - for root, dirs, files in os.walk(os.path.dirname(f)): - for file in files: - if file.endswith(".py"): - # print(file) - # print() - v = os.path.relpath(os.path.join(root, file), top_package) - with open(os.path.join(root, file), 'r') as ff: - resources[v] = ff.read() - else: - v = os.path.relpath(f, top_package) - with open(f, 'r') as ff: - resources[v] = ff.read() - return resources - -import argparse -parser = argparse.ArgumentParser(description='Evaluate your report.', epilog="""Use this script to get the score of your report. Example: - -> python report1_grade.py - -Finally, note that if your report is part of a module (package), and the report script requires part of that package, the -m option for python may be useful. -For instance, if the report file is in Documents/course_package/report3_complete.py, and `course_package` is a python package, then change directory to 'Documents/` and run: - -> python -m course_package.report1 - -see https://docs.python.org/3.9/using/cmdline.html -""", formatter_class=argparse.RawTextHelpFormatter) -parser.add_argument('--noprogress', action="store_true", help='Disable progress bars') -parser.add_argument('--autolab', action="store_true", help='Show Autolab results') - -def gather_upload_to_campusnet(report, output_dir=None): - n = report.nL - args = parser.parse_args() - results, table_data = evaluate_report(report, show_help_flag=False, show_expected=False, show_computed=False, silent=True, - show_progress_bar=not args.noprogress, - big_header=not args.autolab) - # print(" ") - # print("="*n) - # print("Final evaluation") - # print(tabulate(table_data)) - # also load the source code of missing files... - - sources = {} - print("") - if not args.autolab: - if len(report.individual_imports) > 0: - print("By uploading the .token file, you verify the files:") - for m in report.individual_imports: - print(">", m.__file__) - print("Are created/modified individually by you in agreement with DTUs exam rules") - report.pack_imports += report.individual_imports - - if len(report.pack_imports) > 0: - print("Including files in upload...") - for k, m in enumerate(report.pack_imports): - nimp, top_package = gather_imports(m) - _, report_relative_location, module_import = report._import_base_relative() - - # report_relative_location = os.path.relpath(inspect.getfile(report.__class__), top_package) - nimp['report_relative_location'] = report_relative_location - nimp['report_module_specification'] = module_import - nimp['name'] = m.__name__ - sources[k] = nimp - # if len([k for k in nimp if k not in sources]) > 0: - print(f" * {m.__name__}") - # sources = {**sources, **nimp} - results['sources'] = sources - - if output_dir is None: - output_dir = os.getcwd() - - payload_out_base = report.__class__.__name__ + "_handin" - - obtain, possible = results['total'] - vstring = "_v"+report.version if report.version is not None else "" - - token = "%s_%i_of_%i%s.token"%(payload_out_base, obtain, possible,vstring) - token = os.path.normpath(os.path.join(output_dir, token)) - - - with open(token, 'wb') as f: - pickle.dump(results, f) - - if not args.autolab: - print(" ") - print("To get credit for your results, please upload the single unmodified file: ") - print(">", token) - # print("To campusnet without any modifications.") - - # print("Now time for some autolab fun") - -def source_instantiate(name, report1_source, payload): - eval("exec")(report1_source, globals()) - pl = pickle.loads(bytes.fromhex(payload)) - report = eval(name)(payload=pl, strict=True) - # report.set_payload(pl) - return report - - - -report1_source = 'import os\n\n# DONT\'t import stuff here since install script requires __version__\n\ndef cache_write(object, file_name, verbose=True):\n import compress_pickle\n dn = os.path.dirname(file_name)\n if not os.path.exists(dn):\n os.mkdir(dn)\n if verbose: print("Writing cache...", file_name)\n with open(file_name, \'wb\', ) as f:\n compress_pickle.dump(object, f, compression="lzma")\n if verbose: print("Done!")\n\n\ndef cache_exists(file_name):\n # file_name = cn_(file_name) if cache_prefix else file_name\n return os.path.exists(file_name)\n\n\ndef cache_read(file_name):\n import compress_pickle # Import here because if you import in top the __version__ tag will fail.\n # file_name = cn_(file_name) if cache_prefix else file_name\n if os.path.exists(file_name):\n try:\n with open(file_name, \'rb\') as f:\n return compress_pickle.load(f, compression="lzma")\n except Exception as e:\n print("Tried to load a bad pickle file at", file_name)\n print("If the file appears to be automatically generated, you can try to delete it, otherwise download a new version")\n print(e)\n # return pickle.load(f)\n else:\n return None\n\n\n\n"""\ngit add . && git commit -m "Options" && git push && pip install git+ssh://git@gitlab.compute.dtu.dk/tuhe/unitgrade_v1.git --upgrade\n"""\nimport numpy as np\nimport sys\nimport re\nimport threading\nimport tqdm\nimport pickle\nimport os\nfrom io import StringIO\nimport io\nfrom unittest.runner import _WritelnDecorator\nfrom typing import Any\nimport inspect\nimport textwrap\nimport colorama\nfrom colorama import Fore\nfrom functools import _make_key, RLock\nfrom collections import namedtuple\nimport unittest\nimport time\n\n_CacheInfo = namedtuple("CacheInfo", ["hits", "misses", "maxsize", "currsize"])\n\ncolorama.init(autoreset=True) # auto resets your settings after every output\n\ndef gprint(s):\n print(f"{Fore.GREEN}{s}")\n\nmyround = lambda x: np.round(x) # required.\nmsum = lambda x: sum(x)\nmfloor = lambda x: np.floor(x)\n\n\ndef setup_dir_by_class(C, base_dir):\n name = C.__class__.__name__\n return base_dir, name\n\n\nclass Logger(object):\n def __init__(self, buffer):\n assert False\n self.terminal = sys.stdout\n self.log = buffer\n\n def write(self, message):\n self.terminal.write(message)\n self.log.write(message)\n\n def flush(self):\n # this flush method is needed for python 3 compatibility.\n pass\n\n\nclass Capturing(list):\n def __init__(self, *args, stdout=None, unmute=False, **kwargs):\n self._stdout = stdout\n self.unmute = unmute\n super().__init__(*args, **kwargs)\n\n def __enter__(self, capture_errors=True): # don\'t put arguments here.\n self._stdout = sys.stdout if self._stdout == None else self._stdout\n self._stringio = StringIO()\n if self.unmute:\n sys.stdout = Logger(self._stringio)\n else:\n sys.stdout = self._stringio\n\n if capture_errors:\n self._sterr = sys.stderr\n sys.sterr = StringIO() # memory hole it\n self.capture_errors = capture_errors\n return self\n\n def __exit__(self, *args):\n self.extend(self._stringio.getvalue().splitlines())\n del self._stringio # free up some memory\n sys.stdout = self._stdout\n if self.capture_errors:\n sys.sterr = self._sterr\n\n\nclass Capturing2(Capturing):\n def __exit__(self, *args):\n lines = self._stringio.getvalue().splitlines()\n txt = "\\n".join(lines)\n numbers = extract_numbers(txt)\n self.extend(lines)\n del self._stringio # free up some memory\n sys.stdout = self._stdout\n if self.capture_errors:\n sys.sterr = self._sterr\n\n self.output = txt\n self.numbers = numbers\n\n\n# @classmethod\n# class OrderedClassMembers(type):\n# def __prepare__(self, name, bases):\n# assert False\n# return collections.OrderedDict()\n#\n# def __new__(self, name, bases, classdict):\n# ks = list(classdict.keys())\n# for b in bases:\n# ks += b.__ordered__\n# classdict[\'__ordered__\'] = [key for key in ks if key not in (\'__module__\', \'__qualname__\')]\n# return type.__new__(self, name, bases, classdict)\n\n\nclass Report:\n title = "report title"\n version = None\n questions = []\n pack_imports = []\n individual_imports = []\n nL = 120 # Maximum line width\n\n @classmethod\n def reset(cls):\n for (q, _) in cls.questions:\n if hasattr(q, \'reset\'):\n q.reset()\n\n @classmethod\n def mfile(clc):\n return inspect.getfile(clc)\n\n def _file(self):\n return inspect.getfile(type(self))\n\n def _import_base_relative(self):\n if hasattr(self.pack_imports[0], \'__path__\'):\n root_dir = self.pack_imports[0].__path__._path[0]\n else:\n root_dir = self.pack_imports[0].__file__\n\n root_dir = os.path.dirname(root_dir)\n relative_path = os.path.relpath(self._file(), root_dir)\n modules = os.path.normpath(relative_path[:-3]).split(os.sep)\n return root_dir, relative_path, modules\n\n def __init__(self, strict=False, payload=None):\n working_directory = os.path.abspath(os.path.dirname(self._file()))\n self.wdir, self.name = setup_dir_by_class(self, working_directory)\n # self.computed_answers_file = os.path.join(self.wdir, self.name + "_resources_do_not_hand_in.dat")\n for (q, _) in self.questions:\n q.nL = self.nL # Set maximum line length.\n\n if payload is not None:\n self.set_payload(payload, strict=strict)\n\n def main(self, verbosity=1):\n # Run all tests using standard unittest (nothing fancy).\n loader = unittest.TestLoader()\n for q, _ in self.questions:\n start = time.time() # A good proxy for setup time is to\n suite = loader.loadTestsFromTestCase(q)\n unittest.TextTestRunner(verbosity=verbosity).run(suite)\n total = time.time() - start\n q.time = total\n\n def _setup_answers(self, with_coverage=False):\n if with_coverage:\n for q, _ in self.questions:\n q._with_coverage = True\n q._report = self\n\n self.main() # Run all tests in class just to get that out of the way...\n report_cache = {}\n for q, _ in self.questions:\n # print(self.questions)\n if hasattr(q, \'_save_cache\'):\n q()._save_cache()\n print("q is", q())\n q()._cache_put(\'time\', q.time) # = q.time\n report_cache[q.__qualname__] = q._cache2\n else:\n report_cache[q.__qualname__] = {\'no cache see _setup_answers in framework.py\': True}\n if with_coverage:\n for q, _ in self.questions:\n q._with_coverage = False\n return report_cache\n\n def set_payload(self, payloads, strict=False):\n for q, _ in self.questions:\n q._cache = payloads[q.__qualname__]\n\n\ndef rm_progress_bar(txt):\n # More robust version. Apparently length of bar can depend on various factors, so check for order of symbols.\n nlines = []\n for l in txt.splitlines():\n pct = l.find("%")\n ql = False\n if pct > 0:\n i = l.find("|", pct + 1)\n if i > 0 and l.find("|", i + 1) > 0:\n ql = True\n if not ql:\n nlines.append(l)\n return "\\n".join(nlines)\n\n\ndef extract_numbers(txt):\n # txt = rm_progress_bar(txt)\n numeric_const_pattern = r\'[-+]? (?: (?: \\d* \\. \\d+ ) | (?: \\d+ \\.? ) )(?: [Ee] [+-]? \\d+ ) ?\'\n rx = re.compile(numeric_const_pattern, re.VERBOSE)\n all = rx.findall(txt)\n all = [float(a) if (\'.\' in a or "e" in a) else int(a) for a in all]\n if len(all) > 500:\n print(txt)\n raise Exception("unitgrade_v1.unitgrade_v1.py: Warning, too many numbers!", len(all))\n return all\n\n\nclass ActiveProgress():\n def __init__(self, t, start=True, title="my progress bar", show_progress_bar=True, file=None):\n if file == None:\n file = sys.stdout\n self.file = file\n self.t = t\n self._running = False\n self.title = title\n self.dt = 0.01\n self.n = int(np.round(self.t / self.dt))\n self.show_progress_bar = show_progress_bar\n self.pbar = None\n\n if start:\n self.start()\n\n def start(self):\n self._running = True\n if self.show_progress_bar:\n self.thread = threading.Thread(target=self.run)\n self.thread.start()\n self.time_started = time.time()\n\n def terminate(self):\n if not self._running:\n raise Exception("Stopping a stopped progress bar. ")\n self._running = False\n if self.show_progress_bar:\n self.thread.join()\n if self.pbar is not None:\n self.pbar.update(1)\n self.pbar.close()\n self.pbar = None\n\n self.file.flush()\n return time.time() - self.time_started\n\n def run(self):\n self.pbar = tqdm.tqdm(total=self.n, file=self.file, position=0, leave=False, desc=self.title, ncols=100,\n bar_format=\'{l_bar}{bar}| [{elapsed}<{remaining}]\')\n\n for _ in range(self.n - 1): # Don\'t terminate completely; leave bar at 99% done until terminate.\n if not self._running:\n self.pbar.close()\n self.pbar = None\n break\n\n time.sleep(self.dt)\n self.pbar.update(1)\n\ndef dprint(first, last, nL, extra = "", file=None, dotsym=\'.\', color=\'white\'):\n if file == None:\n file = sys.stdout\n\n # ss = self.item_title_print\n # state = "PASS" if success else "FAILED"\n dot_parts = (dotsym * max(0, nL - len(last) - len(first)))\n # if self.show_progress_bar or True:\n print(first + dot_parts, end="", file=file)\n # else:\n # print(dot_parts, end="", file=self.cc.file)\n last += extra\n # if tsecs >= 0.5:\n # state += " (" + str(tsecs) + " seconds)"\n print(last, file=file)\n\n\nclass UTextResult(unittest.TextTestResult):\n nL = 80\n number = -1 # HAcky way to set question number.\n show_progress_bar = True\n cc = None\n\n def __init__(self, stream, descriptions, verbosity):\n super().__init__(stream, descriptions, verbosity)\n self.successes = []\n\n def printErrors(self) -> None:\n self.printErrorList(\'ERROR\', self.errors)\n self.printErrorList(\'FAIL\', self.failures)\n\n def addError(self, test, err):\n super(unittest.TextTestResult, self).addFailure(test, err)\n self.cc_terminate(success=False)\n\n def addFailure(self, test, err):\n super(unittest.TextTestResult, self).addFailure(test, err)\n self.cc_terminate(success=False)\n\n def addSuccess(self, test: unittest.case.TestCase) -> None:\n self.successes.append(test)\n self.cc_terminate()\n\n def cc_terminate(self, success=True):\n if self.show_progress_bar or True:\n tsecs = np.round(self.cc.terminate(), 2)\n self.cc.file.flush()\n ss = self.item_title_print\n\n state = "PASS" if success else "FAILED"\n\n dot_parts = (\'.\' * max(0, self.nL - len(state) - len(ss)))\n if self.show_progress_bar or True:\n print(self.item_title_print + dot_parts, end="", file=self.cc.file)\n else:\n print(dot_parts, end="", file=self.cc.file)\n\n if tsecs >= 0.5:\n state += " (" + str(tsecs) + " seconds)"\n print(state, file=self.cc.file)\n\n def startTest(self, test):\n # j =self.testsRun\n self.testsRun += 1\n # item_title = self.getDescription(test)\n item_title = test.shortDescription() # Better for printing (get from cache).\n if item_title == None:\n # For unittest framework where getDescription may return None.\n item_title = self.getDescription(test)\n self.item_title_print = " * q%i.%i) %s" % (UTextResult.number + 1, self.testsRun, item_title)\n estimated_time = 10\n if self.show_progress_bar or True:\n self.cc = ActiveProgress(t=estimated_time, title=self.item_title_print, show_progress_bar=self.show_progress_bar, file=sys.stdout)\n else:\n print(self.item_title_print + (\'.\' * max(0, self.nL - 4 - len(self.item_title_print))), end="")\n\n self._test = test\n self._stdout = sys.stdout\n sys.stdout = io.StringIO()\n\n def stopTest(self, test):\n sys.stdout = self._stdout\n super().stopTest(test)\n\n def _setupStdout(self):\n if self._previousTestClass == None:\n total_estimated_time = 1\n if hasattr(self.__class__, \'q_title_print\'):\n q_title_print = self.__class__.q_title_print\n else:\n q_title_print = "<unnamed test. See unitgrade_v1.py>"\n\n cc = ActiveProgress(t=total_estimated_time, title=q_title_print, show_progress_bar=self.show_progress_bar)\n self.cc = cc\n\n def _restoreStdout(self): # Used when setting up the test.\n if self._previousTestClass is None:\n q_time = self.cc.terminate()\n q_time = np.round(q_time, 2)\n sys.stdout.flush()\n if self.show_progress_bar:\n print(self.cc.title, end="")\n print(" " * max(0, self.nL - len(self.cc.title)) + (" (" + str(q_time) + " seconds)" if q_time >= 0.5 else ""))\n\n\nclass UTextTestRunner(unittest.TextTestRunner):\n def __init__(self, *args, **kwargs):\n stream = io.StringIO()\n super().__init__(*args, stream=stream, **kwargs)\n\n def _makeResult(self):\n # stream = self.stream # not you!\n stream = sys.stdout\n stream = _WritelnDecorator(stream)\n return self.resultclass(stream, self.descriptions, self.verbosity)\n\n\ndef cache(foo, typed=False):\n """ Magic cache wrapper\n https://github.com/python/cpython/blob/main/Lib/functools.py\n """\n maxsize = None\n def wrapper(self, *args, **kwargs):\n key = (self.cache_id(), ("@cache", foo.__name__, _make_key(args, kwargs, typed)))\n if not self._cache_contains(key):\n value = foo(self, *args, **kwargs)\n self._cache_put(key, value)\n else:\n value = self._cache_get(key)\n return value\n\n return wrapper\n\n\ndef get_hints(ss):\n if ss == None:\n return None\n try:\n ss = textwrap.dedent(ss)\n ss = ss.replace(\'\'\'"""\'\'\', "").strip()\n hints = ["hints:", ]\n j = np.argmax([ss.lower().find(h) for h in hints])\n h = hints[j]\n ss = ss[ss.find(h) + len(h) + 1:]\n ss = "\\n".join([l for l in ss.split("\\n") if not l.strip().startswith(":")])\n ss = textwrap.dedent(ss)\n ss = ss.strip()\n return ss\n except Exception as e:\n print("bad hints", ss, e)\n\n\nclass UTestCase(unittest.TestCase):\n _outcome = None # A dictionary which stores the user-computed outcomes of all the tests. This differs from the cache.\n _cache = None # Read-only cache. Ensures method always produce same result.\n _cache2 = None # User-written cache.\n _with_coverage = False\n _report = None # The report used. This is very, very hacky and should always be None. Don\'t rely on it!\n\n def capture(self):\n if hasattr(self, \'_stdout\') and self._stdout is not None:\n file = self._stdout\n else:\n # self._stdout = sys.stdout\n # sys._stdout = io.StringIO()\n file = sys.stdout\n return Capturing2(stdout=file)\n\n @classmethod\n def question_title(cls):\n """ Return the question title """\n return cls.__doc__.strip().splitlines()[0].strip() if cls.__doc__ is not None else cls.__qualname__\n\n @classmethod\n def reset(cls):\n print("Warning, I am not sure UTestCase.reset() is needed anymore and it seems very hacky.")\n cls._outcome = None\n cls._cache = None\n cls._cache2 = None\n\n def _callSetUp(self):\n if self._with_coverage:\n if not hasattr(self._report, \'covcache\'):\n self._report.covcache = {}\n import coverage\n self.cov = coverage.Coverage()\n self.cov.start()\n self.setUp()\n\n def _callTearDown(self):\n self.tearDown()\n if self._with_coverage:\n from pathlib import Path\n from snipper import snipper\n self.cov.stop()\n data = self.cov.get_data()\n base, _, _ = self._report._import_base_relative()\n for file in data.measured_files():\n file = os.path.normpath(file)\n root = Path(base)\n child = Path(file)\n if root in child.parents:\n with open(child, \'r\') as f:\n s = f.read()\n lines = s.splitlines()\n garb = \'GARBAGE\'\n\n lines2 = snipper.censor_code(lines, keep=True)\n assert len(lines) == len(lines2)\n\n for l in data.contexts_by_lineno(file):\n if lines2[l].strip() == garb:\n if self.cache_id() not in self._report.covcache:\n self._report.covcache[self.cache_id()] = {}\n\n rel = os.path.relpath(child, root)\n cc = self._report.covcache[self.cache_id()]\n j = 0\n for j in range(l, -1, -1):\n if "def" in lines2[j] or "class" in lines2[j]:\n break\n from snipper.snipper import gcoms\n fun = lines2[j]\n comments, _ = gcoms("\\n".join(lines2[j:l]))\n if rel not in cc:\n cc[rel] = {}\n cc[rel][fun] = (l, "\\n".join(comments))\n self._cache_put((self.cache_id(), \'coverage\'), self._report.covcache)\n\n def shortDescriptionStandard(self):\n sd = super().shortDescription()\n if sd is None:\n sd = self._testMethodName\n return sd\n\n def shortDescription(self):\n sd = self.shortDescriptionStandard()\n title = self._cache_get((self.cache_id(), \'title\'), sd)\n return title if title is not None else sd\n\n @property\n def title(self):\n return self.shortDescription()\n\n @title.setter\n def title(self, value):\n self._cache_put((self.cache_id(), \'title\'), value)\n\n def _get_outcome(self):\n if not (self.__class__, \'_outcome\') or self.__class__._outcome is None:\n self.__class__._outcome = {}\n return self.__class__._outcome\n\n def _callTestMethod(self, testMethod):\n t = time.time()\n self._ensure_cache_exists() # Make sure cache is there.\n if self._testMethodDoc is not None:\n self._cache_put((self.cache_id(), \'title\'), self.shortDescriptionStandard())\n\n self._cache2[(self.cache_id(), \'assert\')] = {}\n res = testMethod()\n elapsed = time.time() - t\n self._get_outcome()[self.cache_id()] = res\n self._cache_put((self.cache_id(), "time"), elapsed)\n\n def cache_id(self):\n c = self.__class__.__qualname__\n m = self._testMethodName\n return c, m\n\n def __init__(self, *args, **kwargs):\n super().__init__(*args, **kwargs)\n self._load_cache()\n self._assert_cache_index = 0\n\n def _ensure_cache_exists(self):\n if not hasattr(self.__class__, \'_cache\') or self.__class__._cache == None:\n self.__class__._cache = dict()\n if not hasattr(self.__class__, \'_cache2\') or self.__class__._cache2 == None:\n self.__class__._cache2 = dict()\n\n def _cache_get(self, key, default=None):\n self._ensure_cache_exists()\n return self.__class__._cache.get(key, default)\n\n def _cache_put(self, key, value):\n self._ensure_cache_exists()\n self.__class__._cache2[key] = value\n\n def _cache_contains(self, key):\n self._ensure_cache_exists()\n return key in self.__class__._cache\n\n def wrap_assert(self, assert_fun, first, *args, **kwargs):\n # sys.stdout = self._stdout\n key = (self.cache_id(), \'assert\')\n if not self._cache_contains(key):\n print("Warning, framework missing", key)\n self.__class__._cache[\n key] = {} # A new dict. We manually insert it because we have to use that the dict is mutable.\n cache = self._cache_get(key)\n id = self._assert_cache_index\n if not id in cache:\n print("Warning, framework missing cache index", key, "id =", id)\n _expected = cache.get(id, f"Key {id} not found in cache; framework files missing. Please run deploy()")\n\n # The order of these calls is important. If the method assert fails, we should still store the correct result in cache.\n cache[id] = first\n self._cache_put(key, cache)\n self._assert_cache_index += 1\n assert_fun(first, _expected, *args, **kwargs)\n\n def assertEqualC(self, first: Any, msg: Any = ...) -> None:\n self.wrap_assert(self.assertEqual, first, msg)\n\n def _cache_file(self):\n return os.path.dirname(inspect.getfile(self.__class__)) + "/unitgrade_v1/" + self.__class__.__name__ + ".pkl"\n\n def _save_cache(self):\n # get the class name (i.e. what to save to).\n cfile = self._cache_file()\n if not os.path.isdir(os.path.dirname(cfile)):\n os.makedirs(os.path.dirname(cfile))\n\n if hasattr(self.__class__, \'_cache2\'):\n with open(cfile, \'wb\') as f:\n pickle.dump(self.__class__._cache2, f)\n\n # But you can also set cache explicitly.\n def _load_cache(self):\n if self._cache is not None: # Cache already loaded. We will not load it twice.\n return\n # raise Exception("Loaded cache which was already set. What is going on?!")\n cfile = self._cache_file()\n if os.path.exists(cfile):\n try:\n with open(cfile, \'rb\') as f:\n data = pickle.load(f)\n self.__class__._cache = data\n except Exception as e:\n print("Bad cache", cfile)\n print(e)\n else:\n print("Warning! data file not found", cfile)\n\n def _feedErrorsToResult(self, result, errors):\n """ Use this to show hints on test failure. """\n if not isinstance(result, UTextResult):\n er = [e for e, v in errors if v != None]\n\n if len(er) > 0:\n hints = []\n key = (self.cache_id(), \'coverage\')\n if self._cache_contains(key):\n CC = self._cache_get(key)\n for id in CC:\n if id == self.cache_id():\n cl, m = id\n gprint(f"> An error occured while solving: {cl}.{m}. The files/methods you need to edit are:") # For the test {id} in {file} you should edit:")\n for file in CC[id]:\n rec = CC[id][file]\n gprint(f"> * {file}")\n for l in rec:\n _, comments = CC[id][file][l]\n hint = get_hints(comments)\n\n if hint != None:\n hints.append(hint)\n gprint(f"> - {l}")\n\n er = er[0]\n doc = er._testMethodDoc\n if doc is not None:\n hint = get_hints(er._testMethodDoc)\n if hint is not None:\n hints = [hint] + hints\n if len(hints) > 0:\n gprint("> Hints:")\n gprint(textwrap.indent("\\n".join(hints), "> "))\n\n super()._feedErrorsToResult(result, errors)\n\n def startTestRun(self):\n # print("asdfsdaf 11", file=sys.stderr)\n super().startTestRun()\n # print("asdfsdaf")\n\n def _callTestMethod(self, method):\n # print("asdfsdaf")\n super()._callTestMethod(method)\n\n\ndef hide(func):\n return func\n\n\ndef makeRegisteringDecorator(foreignDecorator):\n """\n Returns a copy of foreignDecorator, which is identical in every\n way(*), except also appends a .decorator property to the callable it\n spits out.\n """\n\n def newDecorator(func):\n # Call to newDecorator(method)\n # Exactly like old decorator, but output keeps track of what decorated it\n R = foreignDecorator(func) # apply foreignDecorator, like call to foreignDecorator(method) would have done\n R.decorator = newDecorator # keep track of decorator\n # R.original = func # might as well keep track of everything!\n return R\n\n newDecorator.__name__ = foreignDecorator.__name__\n newDecorator.__doc__ = foreignDecorator.__doc__\n return newDecorator\n\nhide = makeRegisteringDecorator(hide)\n\ndef methodsWithDecorator(cls, decorator):\n """\n Returns all methods in CLS with DECORATOR as the\n outermost decorator.\n\n DECORATOR must be a "registering decorator"; one\n can make any decorator "registering" via the\n makeRegisteringDecorator function.\n\n import inspect\n ls = list(methodsWithDecorator(GeneratorQuestion, deco))\n for f in ls:\n print(inspect.getsourcelines(f) ) # How to get all hidden questions.\n """\n for maybeDecorated in cls.__dict__.values():\n if hasattr(maybeDecorated, \'decorator\'):\n if maybeDecorated.decorator == decorator:\n print(maybeDecorated)\n yield maybeDecorated\n# 817\n\n\nimport numpy as np\nfrom tabulate import tabulate\nfrom datetime import datetime\nimport pyfiglet\nimport unittest\nimport inspect\nimport os\nimport argparse\nimport time\n\nparser = argparse.ArgumentParser(description=\'Evaluate your report.\', epilog="""Example: \nTo run all tests in a report: \n\n> python assignment1_dp.py\n\nTo run only question 2 or question 2.1\n\n> python assignment1_dp.py -q 2\n> python assignment1_dp.py -q 2.1\n\nNote this scripts does not grade your report. To grade your report, use:\n\n> python report1_grade.py\n\nFinally, note that if your report is part of a module (package), and the report script requires part of that package, the -m option for python may be useful.\nFor instance, if the report file is in Documents/course_package/report3_complete.py, and `course_package` is a python package, then change directory to \'Documents/` and run:\n\n> python -m course_package.report1\n\nsee https://docs.python.org/3.9/using/cmdline.html\n""", formatter_class=argparse.RawTextHelpFormatter)\nparser.add_argument(\'-q\', nargs=\'?\', type=str, default=None, help=\'Only evaluate this question (e.g.: -q 2)\')\nparser.add_argument(\'--showexpected\', action="store_true", help=\'Show the expected/desired result\')\nparser.add_argument(\'--showcomputed\', action="store_true", help=\'Show the answer your code computes\')\nparser.add_argument(\'--unmute\', action="store_true", help=\'Show result of print(...) commands in code\')\nparser.add_argument(\'--passall\', action="store_true", help=\'Automatically pass all tests. Useful when debugging.\')\n\ndef evaluate_report_student(report, question=None, qitem=None, unmute=None, passall=None, ignore_missing_file=False, show_tol_err=False):\n args = parser.parse_args()\n if question is None and args.q is not None:\n question = args.q\n if "." in question:\n question, qitem = [int(v) for v in question.split(".")]\n else:\n question = int(question)\n\n if hasattr(report, "computed_answer_file") and not os.path.isfile(report.computed_answers_file) and not ignore_missing_file:\n raise Exception("> Error: The pre-computed answer file", os.path.abspath(report.computed_answers_file), "does not exist. Check your package installation")\n\n if unmute is None:\n unmute = args.unmute\n if passall is None:\n passall = args.passall\n\n results, table_data = evaluate_report(report, question=question, show_progress_bar=not unmute, qitem=qitem, verbose=False, passall=passall, show_expected=args.showexpected, show_computed=args.showcomputed,unmute=unmute,\n show_tol_err=show_tol_err)\n\n\n if question is None:\n print("Provisional evaluation")\n tabulate(table_data)\n table = table_data\n print(tabulate(table))\n print(" ")\n\n fr = inspect.getouterframes(inspect.currentframe())[1].filename\n gfile = os.path.basename(fr)[:-3] + "_grade.py"\n if os.path.exists(gfile):\n print("Note your results have not yet been registered. \\nTo register your results, please run the file:")\n print(">>>", gfile)\n print("In the same manner as you ran this file.")\n\n\n return results\n\n\ndef upack(q):\n # h = zip([(i[\'w\'], i[\'possible\'], i[\'obtained\']) for i in q.values()])\n h =[(i[\'w\'], i[\'possible\'], i[\'obtained\']) for i in q.values()]\n h = np.asarray(h)\n return h[:,0], h[:,1], h[:,2],\n\nclass UnitgradeTextRunner(unittest.TextTestRunner):\n def __init__(self, *args, **kwargs):\n super().__init__(*args, **kwargs)\n\nclass SequentialTestLoader(unittest.TestLoader):\n def getTestCaseNames(self, testCaseClass):\n test_names = super().getTestCaseNames(testCaseClass)\n # testcase_methods = list(testCaseClass.__dict__.keys())\n ls = []\n for C in testCaseClass.mro():\n if issubclass(C, unittest.TestCase):\n ls = list(C.__dict__.keys()) + ls\n testcase_methods = ls\n test_names.sort(key=testcase_methods.index)\n return test_names\n\ndef evaluate_report(report, question=None, qitem=None, passall=False, verbose=False, show_expected=False, show_computed=False,unmute=False, show_help_flag=True, silent=False,\n show_progress_bar=True,\n show_tol_err=False,\n big_header=True):\n\n now = datetime.now()\n if big_header:\n ascii_banner = pyfiglet.figlet_format("UnitGrade", font="doom")\n b = "\\n".join( [l for l in ascii_banner.splitlines() if len(l.strip()) > 0] )\n else:\n b = "Unitgrade"\n dt_string = now.strftime("%d/%m/%Y %H:%M:%S")\n print(b + " v" + __version__ + ", started: " + dt_string+ "\\n")\n # print("Started: " + dt_string)\n s = report.title\n if hasattr(report, "version") and report.version is not None:\n s += " version " + report.version\n print(s, "(use --help for options)" if show_help_flag else "")\n # print(f"Loaded answers from: ", report.computed_answers_file, "\\n")\n table_data = []\n t_start = time.time()\n score = {}\n loader = SequentialTestLoader()\n\n for n, (q, w) in enumerate(report.questions):\n if question is not None and n+1 != question:\n continue\n suite = loader.loadTestsFromTestCase(q)\n qtitle = q.question_title() if hasattr(q, \'question_title\') else q.__qualname__\n q_title_print = "Question %i: %s"%(n+1, qtitle)\n print(q_title_print, end="")\n q.possible = 0\n q.obtained = 0\n q_ = {} # Gather score in this class.\n UTextResult.q_title_print = q_title_print # Hacky\n UTextResult.show_progress_bar = show_progress_bar # Hacky.\n UTextResult.number = n\n UTextResult.nL = report.nL\n\n res = UTextTestRunner(verbosity=2, resultclass=UTextResult).run(suite)\n\n possible = res.testsRun\n obtained = len(res.successes)\n\n assert len(res.successes) + len(res.errors) + len(res.failures) == res.testsRun\n\n obtained = int(w * obtained * 1.0 / possible ) if possible > 0 else 0\n score[n] = {\'w\': w, \'possible\': w, \'obtained\': obtained, \'items\': q_, \'title\': qtitle}\n q.obtained = obtained\n q.possible = possible\n\n s1 = f" * q{n+1}) Total"\n s2 = f" {q.obtained}/{w}"\n print(s1 + ("."* (report.nL-len(s1)-len(s2) )) + s2 )\n print(" ")\n table_data.append([f"q{n+1}) Total", f"{q.obtained}/{w}"])\n\n ws, possible, obtained = upack(score)\n possible = int( msum(possible) )\n obtained = int( msum(obtained) ) # Cast to python int\n report.possible = possible\n report.obtained = obtained\n now = datetime.now()\n dt_string = now.strftime("%H:%M:%S")\n\n dt = int(time.time()-t_start)\n minutes = dt//60\n seconds = dt - minutes*60\n plrl = lambda i, s: str(i) + " " + s + ("s" if i != 1 else "")\n\n dprint(first = "Total points at "+ dt_string + " (" + plrl(minutes, "minute") + ", "+ plrl(seconds, "second") +")",\n last=""+str(report.obtained)+"/"+str(report.possible), nL = report.nL)\n\n # print(f"Completed at "+ dt_string + " (" + plrl(minutes, "minute") + ", "+ plrl(seconds, "second") +"). Total")\n\n table_data.append(["Total", ""+str(report.obtained)+"/"+str(report.possible) ])\n results = {\'total\': (obtained, possible), \'details\': score}\n return results, table_data\n\n\nfrom tabulate import tabulate\nfrom datetime import datetime\nimport inspect\nimport json\nimport os\nimport bz2\nimport pickle\nimport os\n\ndef bzwrite(json_str, token): # to get around obfuscation issues\n with getattr(bz2, \'open\')(token, "wt") as f:\n f.write(json_str)\n\ndef gather_imports(imp):\n resources = {}\n m = imp\n # for m in pack_imports:\n # print(f"*** {m.__name__}")\n f = m.__file__\n # dn = os.path.dirname(f)\n # top_package = os.path.dirname(__import__(m.__name__.split(\'.\')[0]).__file__)\n # top_package = str(__import__(m.__name__.split(\'.\')[0]).__path__)\n\n if hasattr(m, \'__file__\') and not hasattr(m, \'__path__\'): # Importing a simple file: m.__class__.__name__ == \'module\' and False:\n top_package = os.path.dirname(m.__file__)\n module_import = True\n else:\n top_package = __import__(m.__name__.split(\'.\')[0]).__path__._path[0]\n module_import = False\n\n # top_package = os.path.dirname(__import__(m.__name__.split(\'.\')[0]).__file__)\n # top_package = os.path.dirname(top_package)\n import zipfile\n # import strea\n # zipfile.ZipFile\n import io\n # file_like_object = io.BytesIO(my_zip_data)\n zip_buffer = io.BytesIO()\n with zipfile.ZipFile(zip_buffer, \'w\') as zip:\n # zip.write()\n for root, dirs, files in os.walk(top_package):\n for file in files:\n if file.endswith(".py"):\n fpath = os.path.join(root, file)\n v = os.path.relpath(os.path.join(root, file), os.path.dirname(top_package) if not module_import else top_package)\n zip.write(fpath, v)\n\n resources[\'zipfile\'] = zip_buffer.getvalue()\n resources[\'top_package\'] = top_package\n resources[\'module_import\'] = module_import\n return resources, top_package\n\n if f.endswith("__init__.py"):\n for root, dirs, files in os.walk(os.path.dirname(f)):\n for file in files:\n if file.endswith(".py"):\n # print(file)\n # print()\n v = os.path.relpath(os.path.join(root, file), top_package)\n with open(os.path.join(root, file), \'r\') as ff:\n resources[v] = ff.read()\n else:\n v = os.path.relpath(f, top_package)\n with open(f, \'r\') as ff:\n resources[v] = ff.read()\n return resources\n\nimport argparse\nparser = argparse.ArgumentParser(description=\'Evaluate your report.\', epilog="""Use this script to get the score of your report. Example:\n\n> python report1_grade.py\n\nFinally, note that if your report is part of a module (package), and the report script requires part of that package, the -m option for python may be useful.\nFor instance, if the report file is in Documents/course_package/report3_complete.py, and `course_package` is a python package, then change directory to \'Documents/` and run:\n\n> python -m course_package.report1\n\nsee https://docs.python.org/3.9/using/cmdline.html\n""", formatter_class=argparse.RawTextHelpFormatter)\nparser.add_argument(\'--noprogress\', action="store_true", help=\'Disable progress bars\')\nparser.add_argument(\'--autolab\', action="store_true", help=\'Show Autolab results\')\n\ndef gather_upload_to_campusnet(report, output_dir=None):\n n = report.nL\n args = parser.parse_args()\n results, table_data = evaluate_report(report, show_help_flag=False, show_expected=False, show_computed=False, silent=True,\n show_progress_bar=not args.noprogress,\n big_header=not args.autolab)\n # print(" ")\n # print("="*n)\n # print("Final evaluation")\n # print(tabulate(table_data))\n # also load the source code of missing files...\n\n sources = {}\n print("")\n if not args.autolab:\n if len(report.individual_imports) > 0:\n print("By uploading the .token file, you verify the files:")\n for m in report.individual_imports:\n print(">", m.__file__)\n print("Are created/modified individually by you in agreement with DTUs exam rules")\n report.pack_imports += report.individual_imports\n\n if len(report.pack_imports) > 0:\n print("Including files in upload...")\n for k, m in enumerate(report.pack_imports):\n nimp, top_package = gather_imports(m)\n _, report_relative_location, module_import = report._import_base_relative()\n\n # report_relative_location = os.path.relpath(inspect.getfile(report.__class__), top_package)\n nimp[\'report_relative_location\'] = report_relative_location\n nimp[\'report_module_specification\'] = module_import\n nimp[\'name\'] = m.__name__\n sources[k] = nimp\n # if len([k for k in nimp if k not in sources]) > 0:\n print(f" * {m.__name__}")\n # sources = {**sources, **nimp}\n results[\'sources\'] = sources\n\n if output_dir is None:\n output_dir = os.getcwd()\n\n payload_out_base = report.__class__.__name__ + "_handin"\n\n obtain, possible = results[\'total\']\n vstring = "_v"+report.version if report.version is not None else ""\n\n token = "%s_%i_of_%i%s.token"%(payload_out_base, obtain, possible,vstring)\n token = os.path.normpath(os.path.join(output_dir, token))\n\n\n with open(token, \'wb\') as f:\n pickle.dump(results, f)\n\n if not args.autolab:\n print(" ")\n print("To get credit for your results, please upload the single unmodified file: ")\n print(">", token)\n # print("To campusnet without any modifications.")\n\n # print("Now time for some autolab fun")\n\ndef source_instantiate(name, report1_source, payload):\n eval("exec")(report1_source, globals())\n pl = pickle.loads(bytes.fromhex(payload))\n report = eval(name)(payload=pl, strict=True)\n # report.set_payload(pl)\n return report\n\n\n__version__ = "0.9.0"\n\n\nclass Week1(UTestCase):\n """ The first question for week 1. """\n def test_add(self):\n from cs103.homework1 import add\n self.assertEqualC(add(2,2))\n self.assertEqualC(add(-100, 5))\n\n @hide\n def test_add_hidden(self):\n # This is a hidden test. The @hide-decorator will allow unitgrade_v1 to remove the test.\n # See the output in the student directory for more information.\n from cs103.homework1 import add\n self.assertEqualC(add(2,2))\n\nclass AutomaticPass(UTestCase):\n def test_student_passed(self):\n self.assertEqual(2,2)\n\n @hide\n def test_hidden_fail(self):\n self.assertEqual(2,3)\n\nimport cs103\nclass Report3(Report):\n title = "CS 101 Report 3"\n questions = [(Week1, 20), (AutomaticPass, 10)] # Include a single question for 10 credits.\n pack_imports = [cs103]' -report1_payload = '80049589000000000000007d94288c055765656b31947d942868018c08746573745f6164649486948c066173736572749486947d94284b014aa1ffffff4b004b047568018c0f746573745f6164645f68696464656e948694680586947d944b004b04738c0474696d6594473fda6e8700000000758c0d4175746f6d6174696350617373947d94680c473fb8d5140000000073752e' -name="Report3" - -report = source_instantiate(name, report1_source, report1_payload) -output_dir = os.path.dirname(__file__) -gather_upload_to_campusnet(report, output_dir) \ No newline at end of file diff --git a/docker_images/unitgrade-docker/tmp/cs103/report3_grade.py b/docker_images/unitgrade-docker/tmp/cs103/report3_grade.py deleted file mode 100644 index f45fe8c1776bdb869b565ab3a2b6fdd4fc968186..0000000000000000000000000000000000000000 --- a/docker_images/unitgrade-docker/tmp/cs103/report3_grade.py +++ /dev/null @@ -1,340 +0,0 @@ -""" -Example student code. This file is automatically generated from the files in the instructor-directory -""" -import numpy as np -from tabulate import tabulate -from datetime import datetime -import pyfiglet -import unittest -import inspect -import os -import argparse -import time - -parser = argparse.ArgumentParser(description='Evaluate your report.', epilog="""Example: -To run all tests in a report: - -> python assignment1_dp.py - -To run only question 2 or question 2.1 - -> python assignment1_dp.py -q 2 -> python assignment1_dp.py -q 2.1 - -Note this scripts does not grade your report. To grade your report, use: - -> python report1_grade.py - -Finally, note that if your report is part of a module (package), and the report script requires part of that package, the -m option for python may be useful. -For instance, if the report file is in Documents/course_package/report3_complete.py, and `course_package` is a python package, then change directory to 'Documents/` and run: - -> python -m course_package.report1 - -see https://docs.python.org/3.9/using/cmdline.html -""", formatter_class=argparse.RawTextHelpFormatter) -parser.add_argument('-q', nargs='?', type=str, default=None, help='Only evaluate this question (e.g.: -q 2)') -parser.add_argument('--showexpected', action="store_true", help='Show the expected/desired result') -parser.add_argument('--showcomputed', action="store_true", help='Show the answer your code computes') -parser.add_argument('--unmute', action="store_true", help='Show result of print(...) commands in code') -parser.add_argument('--passall', action="store_true", help='Automatically pass all tests. Useful when debugging.') - -def evaluate_report_student(report, question=None, qitem=None, unmute=None, passall=None, ignore_missing_file=False, show_tol_err=False): - args = parser.parse_args() - if question is None and args.q is not None: - question = args.q - if "." in question: - question, qitem = [int(v) for v in question.split(".")] - else: - question = int(question) - - if hasattr(report, "computed_answer_file") and not os.path.isfile(report.computed_answers_file) and not ignore_missing_file: - raise Exception("> Error: The pre-computed answer file", os.path.abspath(report.computed_answers_file), "does not exist. Check your package installation") - - if unmute is None: - unmute = args.unmute - if passall is None: - passall = args.passall - - results, table_data = evaluate_report(report, question=question, show_progress_bar=not unmute, qitem=qitem, verbose=False, passall=passall, show_expected=args.showexpected, show_computed=args.showcomputed,unmute=unmute, - show_tol_err=show_tol_err) - - - if question is None: - print("Provisional evaluation") - tabulate(table_data) - table = table_data - print(tabulate(table)) - print(" ") - - fr = inspect.getouterframes(inspect.currentframe())[1].filename - gfile = os.path.basename(fr)[:-3] + "_grade.py" - if os.path.exists(gfile): - print("Note your results have not yet been registered. \nTo register your results, please run the file:") - print(">>>", gfile) - print("In the same manner as you ran this file.") - - - return results - - -def upack(q): - # h = zip([(i['w'], i['possible'], i['obtained']) for i in q.values()]) - h =[(i['w'], i['possible'], i['obtained']) for i in q.values()] - h = np.asarray(h) - return h[:,0], h[:,1], h[:,2], - -class UnitgradeTextRunner(unittest.TextTestRunner): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - -class SequentialTestLoader(unittest.TestLoader): - def getTestCaseNames(self, testCaseClass): - test_names = super().getTestCaseNames(testCaseClass) - # testcase_methods = list(testCaseClass.__dict__.keys()) - ls = [] - for C in testCaseClass.mro(): - if issubclass(C, unittest.TestCase): - ls = list(C.__dict__.keys()) + ls - testcase_methods = ls - test_names.sort(key=testcase_methods.index) - return test_names - -def evaluate_report(report, question=None, qitem=None, passall=False, verbose=False, show_expected=False, show_computed=False,unmute=False, show_help_flag=True, silent=False, - show_progress_bar=True, - show_tol_err=False, - big_header=True): - - now = datetime.now() - if big_header: - ascii_banner = pyfiglet.figlet_format("UnitGrade", font="doom") - b = "\n".join( [l for l in ascii_banner.splitlines() if len(l.strip()) > 0] ) - else: - b = "Unitgrade" - dt_string = now.strftime("%d/%m/%Y %H:%M:%S") - print(b + " v" + __version__ + ", started: " + dt_string+ "\n") - # print("Started: " + dt_string) - s = report.title - if hasattr(report, "version") and report.version is not None: - s += " version " + report.version - print(s, "(use --help for options)" if show_help_flag else "") - # print(f"Loaded answers from: ", report.computed_answers_file, "\n") - table_data = [] - t_start = time.time() - score = {} - loader = SequentialTestLoader() - - for n, (q, w) in enumerate(report.questions): - if question is not None and n+1 != question: - continue - suite = loader.loadTestsFromTestCase(q) - qtitle = q.question_title() if hasattr(q, 'question_title') else q.__qualname__ - q_title_print = "Question %i: %s"%(n+1, qtitle) - print(q_title_print, end="") - q.possible = 0 - q.obtained = 0 - q_ = {} # Gather score in this class. - UTextResult.q_title_print = q_title_print # Hacky - UTextResult.show_progress_bar = show_progress_bar # Hacky. - UTextResult.number = n - UTextResult.nL = report.nL - - res = UTextTestRunner(verbosity=2, resultclass=UTextResult).run(suite) - - possible = res.testsRun - obtained = len(res.successes) - - assert len(res.successes) + len(res.errors) + len(res.failures) == res.testsRun - - obtained = int(w * obtained * 1.0 / possible ) if possible > 0 else 0 - score[n] = {'w': w, 'possible': w, 'obtained': obtained, 'items': q_, 'title': qtitle} - q.obtained = obtained - q.possible = possible - - s1 = f" * q{n+1}) Total" - s2 = f" {q.obtained}/{w}" - print(s1 + ("."* (report.nL-len(s1)-len(s2) )) + s2 ) - print(" ") - table_data.append([f"q{n+1}) Total", f"{q.obtained}/{w}"]) - - ws, possible, obtained = upack(score) - possible = int( msum(possible) ) - obtained = int( msum(obtained) ) # Cast to python int - report.possible = possible - report.obtained = obtained - now = datetime.now() - dt_string = now.strftime("%H:%M:%S") - - dt = int(time.time()-t_start) - minutes = dt//60 - seconds = dt - minutes*60 - plrl = lambda i, s: str(i) + " " + s + ("s" if i != 1 else "") - - dprint(first = "Total points at "+ dt_string + " (" + plrl(minutes, "minute") + ", "+ plrl(seconds, "second") +")", - last=""+str(report.obtained)+"/"+str(report.possible), nL = report.nL) - - # print(f"Completed at "+ dt_string + " (" + plrl(minutes, "minute") + ", "+ plrl(seconds, "second") +"). Total") - - table_data.append(["Total", ""+str(report.obtained)+"/"+str(report.possible) ]) - results = {'total': (obtained, possible), 'details': score} - return results, table_data - - -from tabulate import tabulate -from datetime import datetime -import inspect -import json -import os -import bz2 -import pickle -import os - -def bzwrite(json_str, token): # to get around obfuscation issues - with getattr(bz2, 'open')(token, "wt") as f: - f.write(json_str) - -def gather_imports(imp): - resources = {} - m = imp - # for m in pack_imports: - # print(f"*** {m.__name__}") - f = m.__file__ - # dn = os.path.dirname(f) - # top_package = os.path.dirname(__import__(m.__name__.split('.')[0]).__file__) - # top_package = str(__import__(m.__name__.split('.')[0]).__path__) - - if hasattr(m, '__file__') and not hasattr(m, '__path__'): # Importing a simple file: m.__class__.__name__ == 'module' and False: - top_package = os.path.dirname(m.__file__) - module_import = True - else: - top_package = __import__(m.__name__.split('.')[0]).__path__._path[0] - module_import = False - - # top_package = os.path.dirname(__import__(m.__name__.split('.')[0]).__file__) - # top_package = os.path.dirname(top_package) - import zipfile - # import strea - # zipfile.ZipFile - import io - # file_like_object = io.BytesIO(my_zip_data) - zip_buffer = io.BytesIO() - with zipfile.ZipFile(zip_buffer, 'w') as zip: - # zip.write() - for root, dirs, files in os.walk(top_package): - for file in files: - if file.endswith(".py"): - fpath = os.path.join(root, file) - v = os.path.relpath(os.path.join(root, file), os.path.dirname(top_package) if not module_import else top_package) - zip.write(fpath, v) - - resources['zipfile'] = zip_buffer.getvalue() - resources['top_package'] = top_package - resources['module_import'] = module_import - return resources, top_package - - if f.endswith("__init__.py"): - for root, dirs, files in os.walk(os.path.dirname(f)): - for file in files: - if file.endswith(".py"): - # print(file) - # print() - v = os.path.relpath(os.path.join(root, file), top_package) - with open(os.path.join(root, file), 'r') as ff: - resources[v] = ff.read() - else: - v = os.path.relpath(f, top_package) - with open(f, 'r') as ff: - resources[v] = ff.read() - return resources - -import argparse -parser = argparse.ArgumentParser(description='Evaluate your report.', epilog="""Use this script to get the score of your report. Example: - -> python report1_grade.py - -Finally, note that if your report is part of a module (package), and the report script requires part of that package, the -m option for python may be useful. -For instance, if the report file is in Documents/course_package/report3_complete.py, and `course_package` is a python package, then change directory to 'Documents/` and run: - -> python -m course_package.report1 - -see https://docs.python.org/3.9/using/cmdline.html -""", formatter_class=argparse.RawTextHelpFormatter) -parser.add_argument('--noprogress', action="store_true", help='Disable progress bars') -parser.add_argument('--autolab', action="store_true", help='Show Autolab results') - -def gather_upload_to_campusnet(report, output_dir=None): - n = report.nL - args = parser.parse_args() - results, table_data = evaluate_report(report, show_help_flag=False, show_expected=False, show_computed=False, silent=True, - show_progress_bar=not args.noprogress, - big_header=not args.autolab) - # print(" ") - # print("="*n) - # print("Final evaluation") - # print(tabulate(table_data)) - # also load the source code of missing files... - - sources = {} - print("") - if not args.autolab: - if len(report.individual_imports) > 0: - print("By uploading the .token file, you verify the files:") - for m in report.individual_imports: - print(">", m.__file__) - print("Are created/modified individually by you in agreement with DTUs exam rules") - report.pack_imports += report.individual_imports - - if len(report.pack_imports) > 0: - print("Including files in upload...") - for k, m in enumerate(report.pack_imports): - nimp, top_package = gather_imports(m) - _, report_relative_location, module_import = report._import_base_relative() - - # report_relative_location = os.path.relpath(inspect.getfile(report.__class__), top_package) - nimp['report_relative_location'] = report_relative_location - nimp['report_module_specification'] = module_import - nimp['name'] = m.__name__ - sources[k] = nimp - # if len([k for k in nimp if k not in sources]) > 0: - print(f" * {m.__name__}") - # sources = {**sources, **nimp} - results['sources'] = sources - - if output_dir is None: - output_dir = os.getcwd() - - payload_out_base = report.__class__.__name__ + "_handin" - - obtain, possible = results['total'] - vstring = "_v"+report.version if report.version is not None else "" - - token = "%s_%i_of_%i%s.token"%(payload_out_base, obtain, possible,vstring) - token = os.path.normpath(os.path.join(output_dir, token)) - - - with open(token, 'wb') as f: - pickle.dump(results, f) - - if not args.autolab: - print(" ") - print("To get credit for your results, please upload the single unmodified file: ") - print(">", token) - # print("To campusnet without any modifications.") - - # print("Now time for some autolab fun") - -def source_instantiate(name, report1_source, payload): - eval("exec")(report1_source, globals()) - pl = pickle.loads(bytes.fromhex(payload)) - report = eval(name)(payload=pl, strict=True) - # report.set_payload(pl) - return report - - - -report1_source = 'import os\n\n# DONT\'t import stuff here since install script requires __version__\n\ndef cache_write(object, file_name, verbose=True):\n import compress_pickle\n dn = os.path.dirname(file_name)\n if not os.path.exists(dn):\n os.mkdir(dn)\n if verbose: print("Writing cache...", file_name)\n with open(file_name, \'wb\', ) as f:\n compress_pickle.dump(object, f, compression="lzma")\n if verbose: print("Done!")\n\n\ndef cache_exists(file_name):\n # file_name = cn_(file_name) if cache_prefix else file_name\n return os.path.exists(file_name)\n\n\ndef cache_read(file_name):\n import compress_pickle # Import here because if you import in top the __version__ tag will fail.\n # file_name = cn_(file_name) if cache_prefix else file_name\n if os.path.exists(file_name):\n try:\n with open(file_name, \'rb\') as f:\n return compress_pickle.load(f, compression="lzma")\n except Exception as e:\n print("Tried to load a bad pickle file at", file_name)\n print("If the file appears to be automatically generated, you can try to delete it, otherwise download a new version")\n print(e)\n # return pickle.load(f)\n else:\n return None\n\n\n\n"""\ngit add . && git commit -m "Options" && git push && pip install git+ssh://git@gitlab.compute.dtu.dk/tuhe/unitgrade_v1.git --upgrade\n"""\nimport numpy as np\nimport sys\nimport re\nimport threading\nimport tqdm\nimport pickle\nimport os\nfrom io import StringIO\nimport io\nfrom unittest.runner import _WritelnDecorator\nfrom typing import Any\nimport inspect\nimport textwrap\nimport colorama\nfrom colorama import Fore\nfrom functools import _make_key, RLock\nfrom collections import namedtuple\nimport unittest\nimport time\n\n_CacheInfo = namedtuple("CacheInfo", ["hits", "misses", "maxsize", "currsize"])\n\ncolorama.init(autoreset=True) # auto resets your settings after every output\n\ndef gprint(s):\n print(f"{Fore.GREEN}{s}")\n\nmyround = lambda x: np.round(x) # required.\nmsum = lambda x: sum(x)\nmfloor = lambda x: np.floor(x)\n\n\ndef setup_dir_by_class(C, base_dir):\n name = C.__class__.__name__\n return base_dir, name\n\n\nclass Logger(object):\n def __init__(self, buffer):\n assert False\n self.terminal = sys.stdout\n self.log = buffer\n\n def write(self, message):\n self.terminal.write(message)\n self.log.write(message)\n\n def flush(self):\n # this flush method is needed for python 3 compatibility.\n pass\n\n\nclass Capturing(list):\n def __init__(self, *args, stdout=None, unmute=False, **kwargs):\n self._stdout = stdout\n self.unmute = unmute\n super().__init__(*args, **kwargs)\n\n def __enter__(self, capture_errors=True): # don\'t put arguments here.\n self._stdout = sys.stdout if self._stdout == None else self._stdout\n self._stringio = StringIO()\n if self.unmute:\n sys.stdout = Logger(self._stringio)\n else:\n sys.stdout = self._stringio\n\n if capture_errors:\n self._sterr = sys.stderr\n sys.sterr = StringIO() # memory hole it\n self.capture_errors = capture_errors\n return self\n\n def __exit__(self, *args):\n self.extend(self._stringio.getvalue().splitlines())\n del self._stringio # free up some memory\n sys.stdout = self._stdout\n if self.capture_errors:\n sys.sterr = self._sterr\n\n\nclass Capturing2(Capturing):\n def __exit__(self, *args):\n lines = self._stringio.getvalue().splitlines()\n txt = "\\n".join(lines)\n numbers = extract_numbers(txt)\n self.extend(lines)\n del self._stringio # free up some memory\n sys.stdout = self._stdout\n if self.capture_errors:\n sys.sterr = self._sterr\n\n self.output = txt\n self.numbers = numbers\n\n\n# @classmethod\n# class OrderedClassMembers(type):\n# def __prepare__(self, name, bases):\n# assert False\n# return collections.OrderedDict()\n#\n# def __new__(self, name, bases, classdict):\n# ks = list(classdict.keys())\n# for b in bases:\n# ks += b.__ordered__\n# classdict[\'__ordered__\'] = [key for key in ks if key not in (\'__module__\', \'__qualname__\')]\n# return type.__new__(self, name, bases, classdict)\n\n\nclass Report:\n title = "report title"\n version = None\n questions = []\n pack_imports = []\n individual_imports = []\n nL = 120 # Maximum line width\n\n @classmethod\n def reset(cls):\n for (q, _) in cls.questions:\n if hasattr(q, \'reset\'):\n q.reset()\n\n @classmethod\n def mfile(clc):\n return inspect.getfile(clc)\n\n def _file(self):\n return inspect.getfile(type(self))\n\n def _import_base_relative(self):\n if hasattr(self.pack_imports[0], \'__path__\'):\n root_dir = self.pack_imports[0].__path__._path[0]\n else:\n root_dir = self.pack_imports[0].__file__\n\n root_dir = os.path.dirname(root_dir)\n relative_path = os.path.relpath(self._file(), root_dir)\n modules = os.path.normpath(relative_path[:-3]).split(os.sep)\n return root_dir, relative_path, modules\n\n def __init__(self, strict=False, payload=None):\n working_directory = os.path.abspath(os.path.dirname(self._file()))\n self.wdir, self.name = setup_dir_by_class(self, working_directory)\n # self.computed_answers_file = os.path.join(self.wdir, self.name + "_resources_do_not_hand_in.dat")\n for (q, _) in self.questions:\n q.nL = self.nL # Set maximum line length.\n\n if payload is not None:\n self.set_payload(payload, strict=strict)\n\n def main(self, verbosity=1):\n # Run all tests using standard unittest (nothing fancy).\n loader = unittest.TestLoader()\n for q, _ in self.questions:\n start = time.time() # A good proxy for setup time is to\n suite = loader.loadTestsFromTestCase(q)\n unittest.TextTestRunner(verbosity=verbosity).run(suite)\n total = time.time() - start\n q.time = total\n\n def _setup_answers(self, with_coverage=False):\n if with_coverage:\n for q, _ in self.questions:\n q._with_coverage = True\n q._report = self\n\n self.main() # Run all tests in class just to get that out of the way...\n report_cache = {}\n for q, _ in self.questions:\n # print(self.questions)\n if hasattr(q, \'_save_cache\'):\n q()._save_cache()\n print("q is", q())\n q()._cache_put(\'time\', q.time) # = q.time\n report_cache[q.__qualname__] = q._cache2\n else:\n report_cache[q.__qualname__] = {\'no cache see _setup_answers in framework.py\': True}\n if with_coverage:\n for q, _ in self.questions:\n q._with_coverage = False\n return report_cache\n\n def set_payload(self, payloads, strict=False):\n for q, _ in self.questions:\n q._cache = payloads[q.__qualname__]\n\n\ndef rm_progress_bar(txt):\n # More robust version. Apparently length of bar can depend on various factors, so check for order of symbols.\n nlines = []\n for l in txt.splitlines():\n pct = l.find("%")\n ql = False\n if pct > 0:\n i = l.find("|", pct + 1)\n if i > 0 and l.find("|", i + 1) > 0:\n ql = True\n if not ql:\n nlines.append(l)\n return "\\n".join(nlines)\n\n\ndef extract_numbers(txt):\n # txt = rm_progress_bar(txt)\n numeric_const_pattern = r\'[-+]? (?: (?: \\d* \\. \\d+ ) | (?: \\d+ \\.? ) )(?: [Ee] [+-]? \\d+ ) ?\'\n rx = re.compile(numeric_const_pattern, re.VERBOSE)\n all = rx.findall(txt)\n all = [float(a) if (\'.\' in a or "e" in a) else int(a) for a in all]\n if len(all) > 500:\n print(txt)\n raise Exception("unitgrade_v1.unitgrade_v1.py: Warning, too many numbers!", len(all))\n return all\n\n\nclass ActiveProgress():\n def __init__(self, t, start=True, title="my progress bar", show_progress_bar=True, file=None):\n if file == None:\n file = sys.stdout\n self.file = file\n self.t = t\n self._running = False\n self.title = title\n self.dt = 0.01\n self.n = int(np.round(self.t / self.dt))\n self.show_progress_bar = show_progress_bar\n self.pbar = None\n\n if start:\n self.start()\n\n def start(self):\n self._running = True\n if self.show_progress_bar:\n self.thread = threading.Thread(target=self.run)\n self.thread.start()\n self.time_started = time.time()\n\n def terminate(self):\n if not self._running:\n raise Exception("Stopping a stopped progress bar. ")\n self._running = False\n if self.show_progress_bar:\n self.thread.join()\n if self.pbar is not None:\n self.pbar.update(1)\n self.pbar.close()\n self.pbar = None\n\n self.file.flush()\n return time.time() - self.time_started\n\n def run(self):\n self.pbar = tqdm.tqdm(total=self.n, file=self.file, position=0, leave=False, desc=self.title, ncols=100,\n bar_format=\'{l_bar}{bar}| [{elapsed}<{remaining}]\')\n\n for _ in range(self.n - 1): # Don\'t terminate completely; leave bar at 99% done until terminate.\n if not self._running:\n self.pbar.close()\n self.pbar = None\n break\n\n time.sleep(self.dt)\n self.pbar.update(1)\n\ndef dprint(first, last, nL, extra = "", file=None, dotsym=\'.\', color=\'white\'):\n if file == None:\n file = sys.stdout\n\n # ss = self.item_title_print\n # state = "PASS" if success else "FAILED"\n dot_parts = (dotsym * max(0, nL - len(last) - len(first)))\n # if self.show_progress_bar or True:\n print(first + dot_parts, end="", file=file)\n # else:\n # print(dot_parts, end="", file=self.cc.file)\n last += extra\n # if tsecs >= 0.5:\n # state += " (" + str(tsecs) + " seconds)"\n print(last, file=file)\n\n\nclass UTextResult(unittest.TextTestResult):\n nL = 80\n number = -1 # HAcky way to set question number.\n show_progress_bar = True\n cc = None\n\n def __init__(self, stream, descriptions, verbosity):\n super().__init__(stream, descriptions, verbosity)\n self.successes = []\n\n def printErrors(self) -> None:\n self.printErrorList(\'ERROR\', self.errors)\n self.printErrorList(\'FAIL\', self.failures)\n\n def addError(self, test, err):\n super(unittest.TextTestResult, self).addFailure(test, err)\n self.cc_terminate(success=False)\n\n def addFailure(self, test, err):\n super(unittest.TextTestResult, self).addFailure(test, err)\n self.cc_terminate(success=False)\n\n def addSuccess(self, test: unittest.case.TestCase) -> None:\n self.successes.append(test)\n self.cc_terminate()\n\n def cc_terminate(self, success=True):\n if self.show_progress_bar or True:\n tsecs = np.round(self.cc.terminate(), 2)\n self.cc.file.flush()\n ss = self.item_title_print\n\n state = "PASS" if success else "FAILED"\n\n dot_parts = (\'.\' * max(0, self.nL - len(state) - len(ss)))\n if self.show_progress_bar or True:\n print(self.item_title_print + dot_parts, end="", file=self.cc.file)\n else:\n print(dot_parts, end="", file=self.cc.file)\n\n if tsecs >= 0.5:\n state += " (" + str(tsecs) + " seconds)"\n print(state, file=self.cc.file)\n\n def startTest(self, test):\n # j =self.testsRun\n self.testsRun += 1\n # item_title = self.getDescription(test)\n item_title = test.shortDescription() # Better for printing (get from cache).\n if item_title == None:\n # For unittest framework where getDescription may return None.\n item_title = self.getDescription(test)\n self.item_title_print = " * q%i.%i) %s" % (UTextResult.number + 1, self.testsRun, item_title)\n estimated_time = 10\n if self.show_progress_bar or True:\n self.cc = ActiveProgress(t=estimated_time, title=self.item_title_print, show_progress_bar=self.show_progress_bar, file=sys.stdout)\n else:\n print(self.item_title_print + (\'.\' * max(0, self.nL - 4 - len(self.item_title_print))), end="")\n\n self._test = test\n self._stdout = sys.stdout\n sys.stdout = io.StringIO()\n\n def stopTest(self, test):\n sys.stdout = self._stdout\n super().stopTest(test)\n\n def _setupStdout(self):\n if self._previousTestClass == None:\n total_estimated_time = 1\n if hasattr(self.__class__, \'q_title_print\'):\n q_title_print = self.__class__.q_title_print\n else:\n q_title_print = "<unnamed test. See unitgrade_v1.py>"\n\n cc = ActiveProgress(t=total_estimated_time, title=q_title_print, show_progress_bar=self.show_progress_bar)\n self.cc = cc\n\n def _restoreStdout(self): # Used when setting up the test.\n if self._previousTestClass is None:\n q_time = self.cc.terminate()\n q_time = np.round(q_time, 2)\n sys.stdout.flush()\n if self.show_progress_bar:\n print(self.cc.title, end="")\n print(" " * max(0, self.nL - len(self.cc.title)) + (" (" + str(q_time) + " seconds)" if q_time >= 0.5 else ""))\n\n\nclass UTextTestRunner(unittest.TextTestRunner):\n def __init__(self, *args, **kwargs):\n stream = io.StringIO()\n super().__init__(*args, stream=stream, **kwargs)\n\n def _makeResult(self):\n # stream = self.stream # not you!\n stream = sys.stdout\n stream = _WritelnDecorator(stream)\n return self.resultclass(stream, self.descriptions, self.verbosity)\n\n\ndef cache(foo, typed=False):\n """ Magic cache wrapper\n https://github.com/python/cpython/blob/main/Lib/functools.py\n """\n maxsize = None\n def wrapper(self, *args, **kwargs):\n key = (self.cache_id(), ("@cache", foo.__name__, _make_key(args, kwargs, typed)))\n if not self._cache_contains(key):\n value = foo(self, *args, **kwargs)\n self._cache_put(key, value)\n else:\n value = self._cache_get(key)\n return value\n\n return wrapper\n\n\ndef get_hints(ss):\n if ss == None:\n return None\n try:\n ss = textwrap.dedent(ss)\n ss = ss.replace(\'\'\'"""\'\'\', "").strip()\n hints = ["hints:", ]\n j = np.argmax([ss.lower().find(h) for h in hints])\n h = hints[j]\n ss = ss[ss.find(h) + len(h) + 1:]\n ss = "\\n".join([l for l in ss.split("\\n") if not l.strip().startswith(":")])\n ss = textwrap.dedent(ss)\n ss = ss.strip()\n return ss\n except Exception as e:\n print("bad hints", ss, e)\n\n\nclass UTestCase(unittest.TestCase):\n _outcome = None # A dictionary which stores the user-computed outcomes of all the tests. This differs from the cache.\n _cache = None # Read-only cache. Ensures method always produce same result.\n _cache2 = None # User-written cache.\n _with_coverage = False\n _report = None # The report used. This is very, very hacky and should always be None. Don\'t rely on it!\n\n def capture(self):\n if hasattr(self, \'_stdout\') and self._stdout is not None:\n file = self._stdout\n else:\n # self._stdout = sys.stdout\n # sys._stdout = io.StringIO()\n file = sys.stdout\n return Capturing2(stdout=file)\n\n @classmethod\n def question_title(cls):\n """ Return the question title """\n return cls.__doc__.strip().splitlines()[0].strip() if cls.__doc__ is not None else cls.__qualname__\n\n @classmethod\n def reset(cls):\n print("Warning, I am not sure UTestCase.reset() is needed anymore and it seems very hacky.")\n cls._outcome = None\n cls._cache = None\n cls._cache2 = None\n\n def _callSetUp(self):\n if self._with_coverage:\n if not hasattr(self._report, \'covcache\'):\n self._report.covcache = {}\n import coverage\n self.cov = coverage.Coverage()\n self.cov.start()\n self.setUp()\n\n def _callTearDown(self):\n self.tearDown()\n if self._with_coverage:\n from pathlib import Path\n from snipper import snipper\n self.cov.stop()\n data = self.cov.get_data()\n base, _, _ = self._report._import_base_relative()\n for file in data.measured_files():\n file = os.path.normpath(file)\n root = Path(base)\n child = Path(file)\n if root in child.parents:\n with open(child, \'r\') as f:\n s = f.read()\n lines = s.splitlines()\n garb = \'GARBAGE\'\n\n lines2 = snipper.censor_code(lines, keep=True)\n assert len(lines) == len(lines2)\n\n for l in data.contexts_by_lineno(file):\n if lines2[l].strip() == garb:\n if self.cache_id() not in self._report.covcache:\n self._report.covcache[self.cache_id()] = {}\n\n rel = os.path.relpath(child, root)\n cc = self._report.covcache[self.cache_id()]\n j = 0\n for j in range(l, -1, -1):\n if "def" in lines2[j] or "class" in lines2[j]:\n break\n from snipper.snipper import gcoms\n fun = lines2[j]\n comments, _ = gcoms("\\n".join(lines2[j:l]))\n if rel not in cc:\n cc[rel] = {}\n cc[rel][fun] = (l, "\\n".join(comments))\n self._cache_put((self.cache_id(), \'coverage\'), self._report.covcache)\n\n def shortDescriptionStandard(self):\n sd = super().shortDescription()\n if sd is None:\n sd = self._testMethodName\n return sd\n\n def shortDescription(self):\n sd = self.shortDescriptionStandard()\n title = self._cache_get((self.cache_id(), \'title\'), sd)\n return title if title is not None else sd\n\n @property\n def title(self):\n return self.shortDescription()\n\n @title.setter\n def title(self, value):\n self._cache_put((self.cache_id(), \'title\'), value)\n\n def _get_outcome(self):\n if not (self.__class__, \'_outcome\') or self.__class__._outcome is None:\n self.__class__._outcome = {}\n return self.__class__._outcome\n\n def _callTestMethod(self, testMethod):\n t = time.time()\n self._ensure_cache_exists() # Make sure cache is there.\n if self._testMethodDoc is not None:\n self._cache_put((self.cache_id(), \'title\'), self.shortDescriptionStandard())\n\n self._cache2[(self.cache_id(), \'assert\')] = {}\n res = testMethod()\n elapsed = time.time() - t\n self._get_outcome()[self.cache_id()] = res\n self._cache_put((self.cache_id(), "time"), elapsed)\n\n def cache_id(self):\n c = self.__class__.__qualname__\n m = self._testMethodName\n return c, m\n\n def __init__(self, *args, **kwargs):\n super().__init__(*args, **kwargs)\n self._load_cache()\n self._assert_cache_index = 0\n\n def _ensure_cache_exists(self):\n if not hasattr(self.__class__, \'_cache\') or self.__class__._cache == None:\n self.__class__._cache = dict()\n if not hasattr(self.__class__, \'_cache2\') or self.__class__._cache2 == None:\n self.__class__._cache2 = dict()\n\n def _cache_get(self, key, default=None):\n self._ensure_cache_exists()\n return self.__class__._cache.get(key, default)\n\n def _cache_put(self, key, value):\n self._ensure_cache_exists()\n self.__class__._cache2[key] = value\n\n def _cache_contains(self, key):\n self._ensure_cache_exists()\n return key in self.__class__._cache\n\n def wrap_assert(self, assert_fun, first, *args, **kwargs):\n # sys.stdout = self._stdout\n key = (self.cache_id(), \'assert\')\n if not self._cache_contains(key):\n print("Warning, framework missing", key)\n self.__class__._cache[\n key] = {} # A new dict. We manually insert it because we have to use that the dict is mutable.\n cache = self._cache_get(key)\n id = self._assert_cache_index\n if not id in cache:\n print("Warning, framework missing cache index", key, "id =", id)\n _expected = cache.get(id, f"Key {id} not found in cache; framework files missing. Please run deploy()")\n\n # The order of these calls is important. If the method assert fails, we should still store the correct result in cache.\n cache[id] = first\n self._cache_put(key, cache)\n self._assert_cache_index += 1\n assert_fun(first, _expected, *args, **kwargs)\n\n def assertEqualC(self, first: Any, msg: Any = ...) -> None:\n self.wrap_assert(self.assertEqual, first, msg)\n\n def _cache_file(self):\n return os.path.dirname(inspect.getfile(self.__class__)) + "/unitgrade_v1/" + self.__class__.__name__ + ".pkl"\n\n def _save_cache(self):\n # get the class name (i.e. what to save to).\n cfile = self._cache_file()\n if not os.path.isdir(os.path.dirname(cfile)):\n os.makedirs(os.path.dirname(cfile))\n\n if hasattr(self.__class__, \'_cache2\'):\n with open(cfile, \'wb\') as f:\n pickle.dump(self.__class__._cache2, f)\n\n # But you can also set cache explicitly.\n def _load_cache(self):\n if self._cache is not None: # Cache already loaded. We will not load it twice.\n return\n # raise Exception("Loaded cache which was already set. What is going on?!")\n cfile = self._cache_file()\n if os.path.exists(cfile):\n try:\n with open(cfile, \'rb\') as f:\n data = pickle.load(f)\n self.__class__._cache = data\n except Exception as e:\n print("Bad cache", cfile)\n print(e)\n else:\n print("Warning! data file not found", cfile)\n\n def _feedErrorsToResult(self, result, errors):\n """ Use this to show hints on test failure. """\n if not isinstance(result, UTextResult):\n er = [e for e, v in errors if v != None]\n\n if len(er) > 0:\n hints = []\n key = (self.cache_id(), \'coverage\')\n if self._cache_contains(key):\n CC = self._cache_get(key)\n for id in CC:\n if id == self.cache_id():\n cl, m = id\n gprint(f"> An error occured while solving: {cl}.{m}. The files/methods you need to edit are:") # For the test {id} in {file} you should edit:")\n for file in CC[id]:\n rec = CC[id][file]\n gprint(f"> * {file}")\n for l in rec:\n _, comments = CC[id][file][l]\n hint = get_hints(comments)\n\n if hint != None:\n hints.append(hint)\n gprint(f"> - {l}")\n\n er = er[0]\n doc = er._testMethodDoc\n if doc is not None:\n hint = get_hints(er._testMethodDoc)\n if hint is not None:\n hints = [hint] + hints\n if len(hints) > 0:\n gprint("> Hints:")\n gprint(textwrap.indent("\\n".join(hints), "> "))\n\n super()._feedErrorsToResult(result, errors)\n\n def startTestRun(self):\n # print("asdfsdaf 11", file=sys.stderr)\n super().startTestRun()\n # print("asdfsdaf")\n\n def _callTestMethod(self, method):\n # print("asdfsdaf")\n super()._callTestMethod(method)\n\n\ndef hide(func):\n return func\n\n\ndef makeRegisteringDecorator(foreignDecorator):\n """\n Returns a copy of foreignDecorator, which is identical in every\n way(*), except also appends a .decorator property to the callable it\n spits out.\n """\n\n def newDecorator(func):\n # Call to newDecorator(method)\n # Exactly like old decorator, but output keeps track of what decorated it\n R = foreignDecorator(func) # apply foreignDecorator, like call to foreignDecorator(method) would have done\n R.decorator = newDecorator # keep track of decorator\n # R.original = func # might as well keep track of everything!\n return R\n\n newDecorator.__name__ = foreignDecorator.__name__\n newDecorator.__doc__ = foreignDecorator.__doc__\n return newDecorator\n\nhide = makeRegisteringDecorator(hide)\n\ndef methodsWithDecorator(cls, decorator):\n """\n Returns all methods in CLS with DECORATOR as the\n outermost decorator.\n\n DECORATOR must be a "registering decorator"; one\n can make any decorator "registering" via the\n makeRegisteringDecorator function.\n\n import inspect\n ls = list(methodsWithDecorator(GeneratorQuestion, deco))\n for f in ls:\n print(inspect.getsourcelines(f) ) # How to get all hidden questions.\n """\n for maybeDecorated in cls.__dict__.values():\n if hasattr(maybeDecorated, \'decorator\'):\n if maybeDecorated.decorator == decorator:\n print(maybeDecorated)\n yield maybeDecorated\n# 817\n\n\nimport numpy as np\nfrom tabulate import tabulate\nfrom datetime import datetime\nimport pyfiglet\nimport unittest\nimport inspect\nimport os\nimport argparse\nimport time\n\nparser = argparse.ArgumentParser(description=\'Evaluate your report.\', epilog="""Example: \nTo run all tests in a report: \n\n> python assignment1_dp.py\n\nTo run only question 2 or question 2.1\n\n> python assignment1_dp.py -q 2\n> python assignment1_dp.py -q 2.1\n\nNote this scripts does not grade your report. To grade your report, use:\n\n> python report1_grade.py\n\nFinally, note that if your report is part of a module (package), and the report script requires part of that package, the -m option for python may be useful.\nFor instance, if the report file is in Documents/course_package/report3_complete.py, and `course_package` is a python package, then change directory to \'Documents/` and run:\n\n> python -m course_package.report1\n\nsee https://docs.python.org/3.9/using/cmdline.html\n""", formatter_class=argparse.RawTextHelpFormatter)\nparser.add_argument(\'-q\', nargs=\'?\', type=str, default=None, help=\'Only evaluate this question (e.g.: -q 2)\')\nparser.add_argument(\'--showexpected\', action="store_true", help=\'Show the expected/desired result\')\nparser.add_argument(\'--showcomputed\', action="store_true", help=\'Show the answer your code computes\')\nparser.add_argument(\'--unmute\', action="store_true", help=\'Show result of print(...) commands in code\')\nparser.add_argument(\'--passall\', action="store_true", help=\'Automatically pass all tests. Useful when debugging.\')\n\ndef evaluate_report_student(report, question=None, qitem=None, unmute=None, passall=None, ignore_missing_file=False, show_tol_err=False):\n args = parser.parse_args()\n if question is None and args.q is not None:\n question = args.q\n if "." in question:\n question, qitem = [int(v) for v in question.split(".")]\n else:\n question = int(question)\n\n if hasattr(report, "computed_answer_file") and not os.path.isfile(report.computed_answers_file) and not ignore_missing_file:\n raise Exception("> Error: The pre-computed answer file", os.path.abspath(report.computed_answers_file), "does not exist. Check your package installation")\n\n if unmute is None:\n unmute = args.unmute\n if passall is None:\n passall = args.passall\n\n results, table_data = evaluate_report(report, question=question, show_progress_bar=not unmute, qitem=qitem, verbose=False, passall=passall, show_expected=args.showexpected, show_computed=args.showcomputed,unmute=unmute,\n show_tol_err=show_tol_err)\n\n\n if question is None:\n print("Provisional evaluation")\n tabulate(table_data)\n table = table_data\n print(tabulate(table))\n print(" ")\n\n fr = inspect.getouterframes(inspect.currentframe())[1].filename\n gfile = os.path.basename(fr)[:-3] + "_grade.py"\n if os.path.exists(gfile):\n print("Note your results have not yet been registered. \\nTo register your results, please run the file:")\n print(">>>", gfile)\n print("In the same manner as you ran this file.")\n\n\n return results\n\n\ndef upack(q):\n # h = zip([(i[\'w\'], i[\'possible\'], i[\'obtained\']) for i in q.values()])\n h =[(i[\'w\'], i[\'possible\'], i[\'obtained\']) for i in q.values()]\n h = np.asarray(h)\n return h[:,0], h[:,1], h[:,2],\n\nclass UnitgradeTextRunner(unittest.TextTestRunner):\n def __init__(self, *args, **kwargs):\n super().__init__(*args, **kwargs)\n\nclass SequentialTestLoader(unittest.TestLoader):\n def getTestCaseNames(self, testCaseClass):\n test_names = super().getTestCaseNames(testCaseClass)\n # testcase_methods = list(testCaseClass.__dict__.keys())\n ls = []\n for C in testCaseClass.mro():\n if issubclass(C, unittest.TestCase):\n ls = list(C.__dict__.keys()) + ls\n testcase_methods = ls\n test_names.sort(key=testcase_methods.index)\n return test_names\n\ndef evaluate_report(report, question=None, qitem=None, passall=False, verbose=False, show_expected=False, show_computed=False,unmute=False, show_help_flag=True, silent=False,\n show_progress_bar=True,\n show_tol_err=False,\n big_header=True):\n\n now = datetime.now()\n if big_header:\n ascii_banner = pyfiglet.figlet_format("UnitGrade", font="doom")\n b = "\\n".join( [l for l in ascii_banner.splitlines() if len(l.strip()) > 0] )\n else:\n b = "Unitgrade"\n dt_string = now.strftime("%d/%m/%Y %H:%M:%S")\n print(b + " v" + __version__ + ", started: " + dt_string+ "\\n")\n # print("Started: " + dt_string)\n s = report.title\n if hasattr(report, "version") and report.version is not None:\n s += " version " + report.version\n print(s, "(use --help for options)" if show_help_flag else "")\n # print(f"Loaded answers from: ", report.computed_answers_file, "\\n")\n table_data = []\n t_start = time.time()\n score = {}\n loader = SequentialTestLoader()\n\n for n, (q, w) in enumerate(report.questions):\n if question is not None and n+1 != question:\n continue\n suite = loader.loadTestsFromTestCase(q)\n qtitle = q.question_title() if hasattr(q, \'question_title\') else q.__qualname__\n q_title_print = "Question %i: %s"%(n+1, qtitle)\n print(q_title_print, end="")\n q.possible = 0\n q.obtained = 0\n q_ = {} # Gather score in this class.\n UTextResult.q_title_print = q_title_print # Hacky\n UTextResult.show_progress_bar = show_progress_bar # Hacky.\n UTextResult.number = n\n UTextResult.nL = report.nL\n\n res = UTextTestRunner(verbosity=2, resultclass=UTextResult).run(suite)\n\n possible = res.testsRun\n obtained = len(res.successes)\n\n assert len(res.successes) + len(res.errors) + len(res.failures) == res.testsRun\n\n obtained = int(w * obtained * 1.0 / possible ) if possible > 0 else 0\n score[n] = {\'w\': w, \'possible\': w, \'obtained\': obtained, \'items\': q_, \'title\': qtitle}\n q.obtained = obtained\n q.possible = possible\n\n s1 = f" * q{n+1}) Total"\n s2 = f" {q.obtained}/{w}"\n print(s1 + ("."* (report.nL-len(s1)-len(s2) )) + s2 )\n print(" ")\n table_data.append([f"q{n+1}) Total", f"{q.obtained}/{w}"])\n\n ws, possible, obtained = upack(score)\n possible = int( msum(possible) )\n obtained = int( msum(obtained) ) # Cast to python int\n report.possible = possible\n report.obtained = obtained\n now = datetime.now()\n dt_string = now.strftime("%H:%M:%S")\n\n dt = int(time.time()-t_start)\n minutes = dt//60\n seconds = dt - minutes*60\n plrl = lambda i, s: str(i) + " " + s + ("s" if i != 1 else "")\n\n dprint(first = "Total points at "+ dt_string + " (" + plrl(minutes, "minute") + ", "+ plrl(seconds, "second") +")",\n last=""+str(report.obtained)+"/"+str(report.possible), nL = report.nL)\n\n # print(f"Completed at "+ dt_string + " (" + plrl(minutes, "minute") + ", "+ plrl(seconds, "second") +"). Total")\n\n table_data.append(["Total", ""+str(report.obtained)+"/"+str(report.possible) ])\n results = {\'total\': (obtained, possible), \'details\': score}\n return results, table_data\n\n\nfrom tabulate import tabulate\nfrom datetime import datetime\nimport inspect\nimport json\nimport os\nimport bz2\nimport pickle\nimport os\n\ndef bzwrite(json_str, token): # to get around obfuscation issues\n with getattr(bz2, \'open\')(token, "wt") as f:\n f.write(json_str)\n\ndef gather_imports(imp):\n resources = {}\n m = imp\n # for m in pack_imports:\n # print(f"*** {m.__name__}")\n f = m.__file__\n # dn = os.path.dirname(f)\n # top_package = os.path.dirname(__import__(m.__name__.split(\'.\')[0]).__file__)\n # top_package = str(__import__(m.__name__.split(\'.\')[0]).__path__)\n\n if hasattr(m, \'__file__\') and not hasattr(m, \'__path__\'): # Importing a simple file: m.__class__.__name__ == \'module\' and False:\n top_package = os.path.dirname(m.__file__)\n module_import = True\n else:\n top_package = __import__(m.__name__.split(\'.\')[0]).__path__._path[0]\n module_import = False\n\n # top_package = os.path.dirname(__import__(m.__name__.split(\'.\')[0]).__file__)\n # top_package = os.path.dirname(top_package)\n import zipfile\n # import strea\n # zipfile.ZipFile\n import io\n # file_like_object = io.BytesIO(my_zip_data)\n zip_buffer = io.BytesIO()\n with zipfile.ZipFile(zip_buffer, \'w\') as zip:\n # zip.write()\n for root, dirs, files in os.walk(top_package):\n for file in files:\n if file.endswith(".py"):\n fpath = os.path.join(root, file)\n v = os.path.relpath(os.path.join(root, file), os.path.dirname(top_package) if not module_import else top_package)\n zip.write(fpath, v)\n\n resources[\'zipfile\'] = zip_buffer.getvalue()\n resources[\'top_package\'] = top_package\n resources[\'module_import\'] = module_import\n return resources, top_package\n\n if f.endswith("__init__.py"):\n for root, dirs, files in os.walk(os.path.dirname(f)):\n for file in files:\n if file.endswith(".py"):\n # print(file)\n # print()\n v = os.path.relpath(os.path.join(root, file), top_package)\n with open(os.path.join(root, file), \'r\') as ff:\n resources[v] = ff.read()\n else:\n v = os.path.relpath(f, top_package)\n with open(f, \'r\') as ff:\n resources[v] = ff.read()\n return resources\n\nimport argparse\nparser = argparse.ArgumentParser(description=\'Evaluate your report.\', epilog="""Use this script to get the score of your report. Example:\n\n> python report1_grade.py\n\nFinally, note that if your report is part of a module (package), and the report script requires part of that package, the -m option for python may be useful.\nFor instance, if the report file is in Documents/course_package/report3_complete.py, and `course_package` is a python package, then change directory to \'Documents/` and run:\n\n> python -m course_package.report1\n\nsee https://docs.python.org/3.9/using/cmdline.html\n""", formatter_class=argparse.RawTextHelpFormatter)\nparser.add_argument(\'--noprogress\', action="store_true", help=\'Disable progress bars\')\nparser.add_argument(\'--autolab\', action="store_true", help=\'Show Autolab results\')\n\ndef gather_upload_to_campusnet(report, output_dir=None):\n n = report.nL\n args = parser.parse_args()\n results, table_data = evaluate_report(report, show_help_flag=False, show_expected=False, show_computed=False, silent=True,\n show_progress_bar=not args.noprogress,\n big_header=not args.autolab)\n # print(" ")\n # print("="*n)\n # print("Final evaluation")\n # print(tabulate(table_data))\n # also load the source code of missing files...\n\n sources = {}\n print("")\n if not args.autolab:\n if len(report.individual_imports) > 0:\n print("By uploading the .token file, you verify the files:")\n for m in report.individual_imports:\n print(">", m.__file__)\n print("Are created/modified individually by you in agreement with DTUs exam rules")\n report.pack_imports += report.individual_imports\n\n if len(report.pack_imports) > 0:\n print("Including files in upload...")\n for k, m in enumerate(report.pack_imports):\n nimp, top_package = gather_imports(m)\n _, report_relative_location, module_import = report._import_base_relative()\n\n # report_relative_location = os.path.relpath(inspect.getfile(report.__class__), top_package)\n nimp[\'report_relative_location\'] = report_relative_location\n nimp[\'report_module_specification\'] = module_import\n nimp[\'name\'] = m.__name__\n sources[k] = nimp\n # if len([k for k in nimp if k not in sources]) > 0:\n print(f" * {m.__name__}")\n # sources = {**sources, **nimp}\n results[\'sources\'] = sources\n\n if output_dir is None:\n output_dir = os.getcwd()\n\n payload_out_base = report.__class__.__name__ + "_handin"\n\n obtain, possible = results[\'total\']\n vstring = "_v"+report.version if report.version is not None else ""\n\n token = "%s_%i_of_%i%s.token"%(payload_out_base, obtain, possible,vstring)\n token = os.path.normpath(os.path.join(output_dir, token))\n\n\n with open(token, \'wb\') as f:\n pickle.dump(results, f)\n\n if not args.autolab:\n print(" ")\n print("To get credit for your results, please upload the single unmodified file: ")\n print(">", token)\n # print("To campusnet without any modifications.")\n\n # print("Now time for some autolab fun")\n\ndef source_instantiate(name, report1_source, payload):\n eval("exec")(report1_source, globals())\n pl = pickle.loads(bytes.fromhex(payload))\n report = eval(name)(payload=pl, strict=True)\n # report.set_payload(pl)\n return report\n\n\n__version__ = "0.9.0"\n\n\nclass Week1(UTestCase):\n """ The first question for week 1. """\n def test_add(self):\n from cs103.homework1 import add\n self.assertEqualC(add(2,2))\n self.assertEqualC(add(-100, 5))\n\n\nclass AutomaticPass(UTestCase):\n def test_student_passed(self):\n self.assertEqual(2,2)\n\n\nimport cs103\nclass Report3(Report):\n title = "CS 101 Report 3"\n questions = [(Week1, 20), (AutomaticPass, 10)] # Include a single question for 10 credits.\n pack_imports = [cs103]' -report1_payload = '80049568000000000000007d94288c055765656b31947d942868018c08746573745f6164649486948c066173736572749486947d94284b014aa1ffffff4b004b04758c0474696d6594473fb1eb1c00000000758c0d4175746f6d6174696350617373947d946808473fa78d300000000073752e' -name="Report3" - -report = source_instantiate(name, report1_source, report1_payload) -output_dir = os.path.dirname(__file__) -gather_upload_to_campusnet(report, output_dir) diff --git a/examples/02631/instructor/week5/__pycache__/report1intro.cpython-38.pyc b/examples/02631/instructor/week5/__pycache__/report1intro.cpython-38.pyc index 973212c8b860749648a8babf5e0b932a0ff87cc0..fbaa15d315d2c8ab276a8238abeca56a9e792bb4 100644 Binary files a/examples/02631/instructor/week5/__pycache__/report1intro.cpython-38.pyc and b/examples/02631/instructor/week5/__pycache__/report1intro.cpython-38.pyc differ diff --git a/examples/02631/instructor/week5/report1intro_grade.py b/examples/02631/instructor/week5/report1intro_grade.py index 88d3b50635572dae8039a5c5f38620eecf1f8a49..b57b0fdbeef0c3b899a410dae5dde7b6fa050162 100644 --- a/examples/02631/instructor/week5/report1intro_grade.py +++ b/examples/02631/instructor/week5/report1intro_grade.py @@ -1,3 +1,3 @@ -'''WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt.''' +''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' import bz2, base64 -exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file +exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/02631/instructor/week5/unitgrade_data/Bacteria.pkl b/examples/02631/instructor/week5/unitgrade_data/Bacteria.pkl index de4d8915d32620e36c2dce736a4f5d79b7117274..158944a2063b2c7a5980afbebd1dfdd93bada6bb 100644 Binary files a/examples/02631/instructor/week5/unitgrade_data/Bacteria.pkl and b/examples/02631/instructor/week5/unitgrade_data/Bacteria.pkl differ diff --git a/examples/02631/instructor/week5/unitgrade_data/ClusterAnalysis.pkl b/examples/02631/instructor/week5/unitgrade_data/ClusterAnalysis.pkl index 36635371f6e86d5f841a3827696a5909e766532b..6769431fae0db63cb19979f2f83158dc97da4c02 100644 Binary files a/examples/02631/instructor/week5/unitgrade_data/ClusterAnalysis.pkl and b/examples/02631/instructor/week5/unitgrade_data/ClusterAnalysis.pkl differ diff --git a/examples/02631/instructor/week5/unitgrade_data/FermentationRate.pkl b/examples/02631/instructor/week5/unitgrade_data/FermentationRate.pkl index 9f5cea13c96d67ff2704de398cd66b78a2db463b..65842dc98428444ad7a0e6a3b677a291a0350dc0 100644 Binary files a/examples/02631/instructor/week5/unitgrade_data/FermentationRate.pkl and b/examples/02631/instructor/week5/unitgrade_data/FermentationRate.pkl differ diff --git a/examples/02631/instructor/week5/unitgrade_data/RemoveIncomplete.pkl b/examples/02631/instructor/week5/unitgrade_data/RemoveIncomplete.pkl index 30edf2db7bc0e41f0ada9c1c7443ac1d487a6d9a..51a6605910f84c2a930851fb0a440a8c3d923bb8 100644 Binary files a/examples/02631/instructor/week5/unitgrade_data/RemoveIncomplete.pkl and b/examples/02631/instructor/week5/unitgrade_data/RemoveIncomplete.pkl differ diff --git a/examples/02631/students/week5/looping.py b/examples/02631/students/week5/looping.py index 6ac0b737a5e93238be1ec098709d7405439bbef8..3d7e4c00dab24105de998e74d8814e97ae520ca0 100644 --- a/examples/02631/students/week5/looping.py +++ b/examples/02631/students/week5/looping.py @@ -13,8 +13,9 @@ def bacteriaGrowth(n0, alpha, K, N): :param N: :return: """ - # TODO: 7 lines missing. - raise NotImplementedError("Implement function bod") + # TODO: 6 lines missing. + raise NotImplementedError("Implement function body") + return t+1 def clusterAnalysis(reflectance): reflectance = np.asarray(reflectance) diff --git a/examples/02631/students/week5/report1intro_grade.py b/examples/02631/students/week5/report1intro_grade.py index 88d3b50635572dae8039a5c5f38620eecf1f8a49..b57b0fdbeef0c3b899a410dae5dde7b6fa050162 100644 --- a/examples/02631/students/week5/report1intro_grade.py +++ b/examples/02631/students/week5/report1intro_grade.py @@ -1,3 +1,3 @@ -'''WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt.''' +''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' import bz2, base64 -exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file +exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/02631/students/week5/unitgrade_data/Bacteria.pkl b/examples/02631/students/week5/unitgrade_data/Bacteria.pkl index de4d8915d32620e36c2dce736a4f5d79b7117274..158944a2063b2c7a5980afbebd1dfdd93bada6bb 100644 Binary files a/examples/02631/students/week5/unitgrade_data/Bacteria.pkl and b/examples/02631/students/week5/unitgrade_data/Bacteria.pkl differ diff --git a/examples/02631/students/week5/unitgrade_data/ClusterAnalysis.pkl b/examples/02631/students/week5/unitgrade_data/ClusterAnalysis.pkl index 36635371f6e86d5f841a3827696a5909e766532b..6769431fae0db63cb19979f2f83158dc97da4c02 100644 Binary files a/examples/02631/students/week5/unitgrade_data/ClusterAnalysis.pkl and b/examples/02631/students/week5/unitgrade_data/ClusterAnalysis.pkl differ diff --git a/examples/02631/students/week5/unitgrade_data/FermentationRate.pkl b/examples/02631/students/week5/unitgrade_data/FermentationRate.pkl index 9f5cea13c96d67ff2704de398cd66b78a2db463b..65842dc98428444ad7a0e6a3b677a291a0350dc0 100644 Binary files a/examples/02631/students/week5/unitgrade_data/FermentationRate.pkl and b/examples/02631/students/week5/unitgrade_data/FermentationRate.pkl differ diff --git a/examples/02631/students/week5/unitgrade_data/RemoveIncomplete.pkl b/examples/02631/students/week5/unitgrade_data/RemoveIncomplete.pkl index 30edf2db7bc0e41f0ada9c1c7443ac1d487a6d9a..51a6605910f84c2a930851fb0a440a8c3d923bb8 100644 Binary files a/examples/02631/students/week5/unitgrade_data/RemoveIncomplete.pkl and b/examples/02631/students/week5/unitgrade_data/RemoveIncomplete.pkl differ diff --git a/examples/autolab_example/autolab_example.py b/examples/autolab_example/autolab_example.py index f0c2ad5561d0f4e2782f8da224b201b7849fee2b..738abe66bddd5a9e87c2c571c959fb1a560b2cb2 100644 --- a/examples/autolab_example/autolab_example.py +++ b/examples/autolab_example/autolab_example.py @@ -1,38 +1,7 @@ import os -from unitgrade_private.autolab.autolab import format_autolab_json, docker_build_image +from unitgrade_private.autolab.autolab import format_autolab_json from unitgrade_private.autolab.autolab import deploy_assignment -""" -Semantic score formatting. See. - -https://docs.autolabproject.com/lab/https://docs.autolabproject.com/features/formatted-feedback/ - -{ - "_presentation": "semantic", - "stages": ["Build","Test","Timing"], - "Test": { - "Add Things": { - "passed": true - }, - "Return Values": { - "passed": false, - "hint": "You need to return 1" - } - }, - "Build": { - "compile": { - "passed": true - }, - "link": { - "passed": true - } - }, - "Timing": { - "Stage 1 (ms)": 10, - "Stage 2 (ms)": 20 - } -} -{"scores": {"Correctness": 20, "TA/Design/Readability": 40}} -""" +from unitgrade_private.docker_helpers import download_docker_images if __name__ == "__main__": wdir = os.getcwd() @@ -44,22 +13,21 @@ if __name__ == "__main__": from unitgrade_private import load_token # data, _ = load_token("../example_framework/instructor/cs102/Report2_handin_18_of_18.token") data, _ = load_token("../example_framework/students/cs102/Report2_handin_3_of_16.token") - format_autolab_json(data, indent=2) - # import sys - # sys.exit() - + download_docker_images("./docker") + autograde_image = 'tango_python_tue' + dockerfile = f"./docker/docker_tango_python/Dockerfile" for bdir, name, instructor, student in args: instructor_base = f"{wdir}/../{bdir}/instructor" student_base = f"{wdir}/../{bdir}/students" - output_tar = deploy_assignment(name, INSTRUCTOR_BASE=instructor_base, INSTRUCTOR_GRADE_FILE=f"{instructor_base}/{name}/{instructor}", STUDENT_BASE=student_base, STUDENT_GRADE_FILE=f"{student_base}/{name}/{student}", - output_tar=None, - autograde_image='tango_python_tue') + autograde_image_tag=autograde_image) print(output_tar) - docker_build_image() # Make sure docker grading image is up-to-date. - docker_build_image() # Make sure docker grading image is up-to-date. \ No newline at end of file + from unitgrade_private.docker_helpers import compile_docker_image + + compile_docker_image(Dockerfile=dockerfile, tag=autograde_image) # Make sure docker grading image is up-to-date. + compile_docker_image(Dockerfile=dockerfile, tag=autograde_image) # Make sure docker grading image is up-to-date. \ No newline at end of file diff --git a/examples/autolab_example/cs101.tar b/examples/autolab_example/cs101.tar index 4db9ded111212595bd4deb7ee97176e75a6f2fbd..01fc54860b1c13b57b72885b1ba2dde22b2cbf00 100644 Binary files a/examples/autolab_example/cs101.tar and b/examples/autolab_example/cs101.tar differ diff --git a/examples/autolab_example/cs102.tar b/examples/autolab_example/cs102.tar index 90a71cce231462003fe19de4a7df3cf803b0486b..a5fa13781017d090972112c99971c1e5f8a1de50 100644 Binary files a/examples/autolab_example/cs102.tar and b/examples/autolab_example/cs102.tar differ diff --git a/examples/autolab_example/cs103.tar b/examples/autolab_example/cs103.tar index f319bb69cf750c5c0e034878aadeed5df2e592ca..41471237cd8b014ebb671dfaba8c1791d031ea4e 100644 Binary files a/examples/autolab_example/cs103.tar and b/examples/autolab_example/cs103.tar differ diff --git a/examples/autolab_example/docker/docker_tango_python/Dockerfile b/examples/autolab_example/docker/docker_tango_python/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..e081c74465e0b3f3a0e933f16f5a1f180c8740c3 --- /dev/null +++ b/examples/autolab_example/docker/docker_tango_python/Dockerfile @@ -0,0 +1,40 @@ +# syntax=docker/dockerfile:1 + +FROM python:3.8-slim-buster +MAINTAINER Autolab Team <autolab-dev@andrew.cmu.edu> + +RUN apt-get update && apt-get install -y \ + build-essential \ + gcc \ + git \ + make \ + sudo \ + python \ + procps \ + && rm -rf /var/lib/apt/lists/* + +# Install autodriver +WORKDIR /home +RUN useradd autolab +RUN useradd autograde +RUN mkdir autolab autograde output +RUN chown autolab:autolab autolab +RUN chown autolab:autolab output +RUN chown autograde:autograde autograde +RUN git clone --depth 1 https://github.com/autolab/Tango.git +WORKDIR Tango/autodriver +RUN make clean && make +RUN cp autodriver /usr/bin/autodriver +RUN chmod +s /usr/bin/autodriver + +# Do the python stuff. +COPY requirements.txt requirements.txt +RUN pip3 install -r requirements.txt + +# Clean up +WORKDIR /home +RUN apt-get remove -y git && apt-get -y autoremove && rm -rf Tango/ + +# Check installation +RUN ls -l /home +RUN which autodriver diff --git a/examples/autolab_example/docker/docker_tango_python/requirements.txt b/examples/autolab_example/docker/docker_tango_python/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..a502efe58c6c08882ca226e9022bc7cec8f3e517 --- /dev/null +++ b/examples/autolab_example/docker/docker_tango_python/requirements.txt @@ -0,0 +1,8 @@ +numpy +tqdm +jinja2 +tabulate +compress_pickle +pyfiglet +colorama +unitgrade-devel>=0.1.23 \ No newline at end of file diff --git a/examples/autolab_example/docker/unitgrade-docker/Dockerfile b/examples/autolab_example/docker/unitgrade-docker/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..98a40077104bfe3274ee00062beac6769934e1a4 --- /dev/null +++ b/examples/autolab_example/docker/unitgrade-docker/Dockerfile @@ -0,0 +1,21 @@ +# syntax=docker/dockerfile:1 + +FROM python:3.8-slim-buster + +RUN apt-get -y update +RUN apt-get -y install git + +WORKDIR /home + +# Remember to include requirements. +COPY requirements.txt requirements.txt +RUN pip3 install -r requirements.txt + +# Not required. +# RUN pip install git+https://git@gitlab.compute.dtu.dk/tuhe/unitgrade.git + +COPY . . + +ADD . /home + +# CMD [ "python3", "app.py"] diff --git a/examples/autolab_example/docker/unitgrade-docker/requirements.txt b/examples/autolab_example/docker/unitgrade-docker/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..0a73d686e2bf43229199808a9ffaa11c00d85f8a --- /dev/null +++ b/examples/autolab_example/docker/unitgrade-docker/requirements.txt @@ -0,0 +1,7 @@ +numpy +tqdm +jinja2 +tabulate +compress_pickle +pyfiglet +colorama \ No newline at end of file diff --git a/examples/autolab_example/tmp/cs101/autograde.tar b/examples/autolab_example/tmp/cs101/autograde.tar deleted file mode 100644 index b0c641a793ca34a9bea8aab4eae253946f725d95..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example/tmp/cs101/autograde.tar and /dev/null differ diff --git a/examples/autolab_example/tmp/cs101/cs101-handout.tar b/examples/autolab_example/tmp/cs101/cs101-handout.tar deleted file mode 100644 index b0c641a793ca34a9bea8aab4eae253946f725d95..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example/tmp/cs101/cs101-handout.tar and /dev/null differ diff --git a/examples/autolab_example/tmp/cs101/cs101-handout/Makefile b/examples/autolab_example/tmp/cs101/cs101-handout/Makefile deleted file mode 100644 index 6d094e3a3869dfe9ee9e51a06150c6999c402286..0000000000000000000000000000000000000000 --- a/examples/autolab_example/tmp/cs101/cs101-handout/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -# Makefile for the Hello Lab -all: - echo "Makefile called... it is empty so far. " - #gcc hello3.c -o hello3 - -clean: - rm -rf *~ hello3 diff --git a/examples/autolab_example/tmp/cs101/cs101-handout/README b/examples/autolab_example/tmp/cs101/cs101-handout/README deleted file mode 100644 index 8eea4bef3abb4665581173c4843b6155b3dc59d2..0000000000000000000000000000000000000000 --- a/examples/autolab_example/tmp/cs101/cs101-handout/README +++ /dev/null @@ -1,15 +0,0 @@ -This directory contains all of the code files for the Hello Lab, -including the files that are handed out to students. - -Files: - -# Autograder and solution files -Makefile Makefile and ... -README ... README for this directory -driver.sh* Autograder -hello.c Solution hello.c file - -# Files that are handed out to students -Makefile-handout Makefile and ... -README-handout ... README handed out to students -hello.c-handout Blank hello.c file handed out to students diff --git a/examples/autolab_example/tmp/cs101/cs101-handout/Report1_handin.token b/examples/autolab_example/tmp/cs101/cs101-handout/Report1_handin.token deleted file mode 100644 index ca16ac4aa865f72adb0f380c2ab7795f57d25190..0000000000000000000000000000000000000000 --- a/examples/autolab_example/tmp/cs101/cs101-handout/Report1_handin.token +++ /dev/null @@ -1,191 +0,0 @@ -# This file contains your results. Do not edit its content. Simply upload it as it is. -### Content of cs101/report1.py ### - -import unittest -from unitgrade import Report, evaluate_report_student -import cs101 -from cs101.homework1 import reverse_list, add - -class Week1(unittest.TestCase): - def test_add(self): - self.assertEqual(add(2,2), 4) - self.assertEqual(add(-100, 5), -95) - - def test_reverse(self): - self.assertEqual(reverse_list([1,2,3]), [3,2,1]) - -class Report1(Report): - title = "CS 101 Report 1" - questions = [(Week1, 10)] # Include a single question for a total of 10 credits. - pack_imports = [cs101] # Include all .py files in this folder - -if __name__ == "__main__": - evaluate_report_student(Report1()) - # unittest.main(verbosity=2) # Uncomment to run everything as a regular unittest - - -### Content of cs101/homework1.py ### - -def reverse_list(mylist): - """ - Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. - reverse_list([1,2,3]) should return [3,2,1] (as a list). - """ - # TODO: 1 lines missing. - raise NotImplementedError("Implement function body") - -def add(a,b): - """ Given two numbers `a` and `b` this function should simply return their sum: - > add(a,b) = a+b """ - # TODO: 1 lines missing. - raise NotImplementedError("Implement function body") - -if __name__ == "__main__": - # Example usage: - print(f"Your result of 2 + 2 = {add(2,2)}") - print(f"Reversing a small list", reverse_list([2,3,5,7])) ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -eb9da76a1e7a395c1f3516d4b038c32e3d0d2cfce1ed36315a690955abeb5ccb3e7faa69b0e528465e71805049b8e7c6268b49ce2099794375b6a4f6fac2dcf6 25472 ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -./Td6WFoAAATm1rRGAgAhARYAAAB0L+Wj4Gt7Sl9dAEABDnTTyrg+9NNr6wxzmezcR+L3mJcv6ceUP1qtGirAr8d2QvF5G9xkxfiWTnF8I3a3lr9eWfjFHNkrVy5ZyOJO7vTJqZNSHImZHCchYvDXGVhJfg07PP5U9U23U0GCUALDUDDIn/x -/V4uKI+X4SAjRgzzh8VtOLtH+1Ky+kC8m4JrcCyP/mNDbdqp8ICGKt3lnmH7K48h4iVg4JmG3uvsez0w2VhuRgJcjkh2d0EumlQIo3FF1N65zatMQy6xw5RDcReR4UiAQ3s5HsgBGIhZm/j/FYP362zVCiKk1sV2/qe5UdRbW6Sc/EuXIom+ -zsyZyJJ914HDGNM8RN7JaGYffuXoIeEc+20W+UanxfyA2iV4cPgEM+GX7Fd2Y+36mx7bGFGXNzwZxGaEilEd44Z3j5GzsiGa5I5fTEdcxAr7qT7y4ZXRBhYoM67ka/rEbj8ZqLMrRF4RZNIGCE+e7l8hCvW10bbb+YryrCDNHC36fdcgj5Cn -40k8fq8A8/hFNCahsaJrfuPs4tLryz6DVO9cWUYUYz0t4u83P90lYuL8Hn+lSPnNWK27ovR23YDsrFBRiuCi+CO2n8YaqkP3TRHVn18PtPS02YxB6/rxyDmxqfKrQ5bDCcGixutcZjkjjVlaHSLsDBUNFPv+1eW1D6fASmMgk5oPU/TIR/tA -5WZNfaMxoweiTr9mddM87drVczBzFyRBgi2Ux60/pGL5a3Ji54R3zXggjbxXm8K0baIcF7XRk30DmkpuJUrnpISC0HLybKSRzfgktmaWFDB88XFC2DPqnbvZEiJ2ASmvxjzB8opbuIHuszcsQ3TwsRbjWuLzlr45dRMbRvmELkqwtdQstdEX -0KnB3b+L5ZI+LBh2UqvD5s6SYzaGLpi+6QMUpCLraz64E7tRpgIrlFBktVBaCbrOGj4X+JkafmaM0v6P8LFBO+H4rCIE38AcNJg098FDpVpXruvr1330dSNtOHSNH7blFzA0KAsTfXbqlo51MAZFx/n+Vdttus5dQs1ENpTjSYTp7aktvHte -XT+W6Qn9nhMld6/w8d1JKhJUrz62tjTlt+L5XAXhuIQbLH6ANvs0+D0XxIR/Xmgv5INeauFEU7i/f3glZPsZSJgJbE4g8HX1g8Gbfq2DRQQvurFD/S5eIiACC959ql0NGYLKXJ84LS88Dh1Zb54YasO+GqHjD0eC8oOdwnALTzIoCa93Ya3E -yxjgjB8LnutemMJlTsCdi/5EYxGftm+9deuCMFhwX0DFE1mkWejoGJ6mzkcZg2RTR3kLbS0YqTFdov/wOYnObsMeIiB6BnYG2lEUDY4wK6TVB3m+yGI3Ds1qzf5JUCzvGmeDeaa4qiWl8RWtB6q0xTfzVE+xD+NJoaRgEZ4lZUdoJZTiW0fF -3M8JKNpyfJEuGILG9mbVFtQUYQR24A638v1zV84u1e14saEpyitnx8SsK/xdgBhehI0u+ZLSlpCGQwP0OSxwrGyBgzUswtfhKqwLQR47YFIj5IprXVwxMGN/lI+tCltMI5IdJyDaTWXlf+3aEUMAb5cnoYYZkex2Viq5W2NLQEprotROBb5M -OuDlhwJdZzT31ktElWoPh3Zw94l6O8o+m0lmUKC+Jsa6eycbn25A7P227WJMHQOlK7dTaO9J2H77/LYJml481ojBKsPkot4tTG/zMa/NHd7DN1FeREYDQ7ddoOaawuIVziqsmMMMt1ou+RXs39wRmQXc3DNHsrWR89Xs0jEJFtMC4H7k/+BP -xe8gmzOYBsORRUg/MEvqwLQL/DgMVU8tVJFNE7AcCFpHMLZccIF4PUZpJI+hugwe1O5Uz3nB/NgZaTOKrTg63QOKB1bN/CLFM88glUa6H4pFiJCcKdD0veefdhLhla9YkxElE8EytJxESCM51ck57yKc7m4zkNxJssa4E9Rj8UBz2YNUcrHK -V9Pl7d6e850GYMAJPgsG+tGU9/3rLZDxhzMzoy0ZzNzclXt93lfgUq4hnKlriWE8XS2wG5qjgn18KcDnKK0U/ZCFHntVWRCyAKlTMwg6YViXvp31C5OTdCR2maWcEH9Tim3gterNKA0WHsetlv+KfqPgGopdm2gGr8j7BT7HNxo8wIaV2Q3e -eIJlwcJ1Xu4c+I3Wj+/ftbHyrn73/iMVUDgVx4NLmdLhG3SV37TvWoLzj4ZhFC1T3cVSqrXT9KuYKTPJKlVsnmpKM7zM5K6qQh2NhTFPSN8LaENFQddvS0Kv+B2gtw3lJaw4J+E3xI20o1Rxzo9WfM9DiCQkMasO8me20NITUJc0l6N8KKv5 -6ywUyDqRK6IBMPU4VtdW5AQKi/s585Jtqlgtxvw0waBRKGOSfktYX/Ss/RwNRCpHKMrsPX6SdBzLULB68UDEZT7Rq8BX6S2QfuD8vO0Y+4zjnW7rXg9rMhofjhxN7wI+jw1l9w/3/j/ZlbdmAJMABM2isGH0Wm4JsPfp8kNnLoXnfRu7S/L9 -1GUWJezGw91LdtwoHihkafj+plN8u2t6LMj98txbccdOzcqqROVHNKbWD72XeH4ry87tQx5OYKu6DJDNzxkd3sE9Oa/lDOBJ2jGxew7gjDEoEcLRuphAgvBRuI8vRL2Q1XYDKNIpm9l2HEI7cTQ3B7G7yUtQ2ClTN7tdjlnLphV3F1RHxlyE -mkybkg+A/JUTaePcmLFx+PNdHyGTxLBoXkKl33+1uIkXRJoLAaI6/JjltGulc2umw1OksA3Z0CgWmZOX1JsA24NzFClKcQHEymjbVy/eck7uPdLVHL8P8KxZgSPEErwHOn/SGHbpVJYp3g8r9/WGAAAUBUaKJpJEQgpc4mlt1e0Bh9EYDuWX -uLIEteM5Mf2Ve8TQ/FSiOR5dekd16MRlYJngNAXP35+fpnhZvOzYFm1AR2aqA8gG4I254zb1ws4QN0mEYLH/tN5y7k263xrcR92GvZhCTV1WMeZVRpcM+q5xynbfeovDO9bfBgAut9nqOkp6+RMuxTnW9AgjGbPp0Wfh4ohKofDiAPhrK7Rq -K2Iyzlzk0MNK0c2mmiltm/gw3s3inrxkVX5BefvkmrtnNsnjdaQmBYLaCQSPMO72nyvK2APvxHQkqBU4tTQ3hepBz+QiZdJIYzVX0TS47Quk4VCgZm74B2/zVE2pvUHx5mftQ/wVj5qfIeLUTl64JfzTCpY2+e71hfnNjICur34LEupV7hsb -6fP7Eu71jTRw2JZUa1R/mbqJ1HRH+mg9Pq0xWj75d1qhj13EUVP7VsVRj/OqR/sWHkToOjH0u3EGifvhHS6JhTcj9Uky0N0zHAFhkBXnE5kN4FtDiMhvPQqdMx9Kt+WHh7lnoMcLT4qG7K2COefKzXbbfvtLgY3JCJ7J/f39SJxV1vv2V4DC -8Ld39bSeiczEoEsYi3w3HcdoiHbwbyWs1bwlHkUg+cxos61C0OG5AOZu23+F1G72XeFDq5NuvTJ2utMmQrZ7783NV7BCtIO5A9j4j7eQJc/8CrlSLb+8Xj44aJzRz5TCTVmdiqiAEESKADFOwmU9BZd6htdueXpfA8rjX/SVlFhHbSEpvLLC -BCs053Pnl0TRtbHADiYpR69QGsyS+6eVYvlcdwk44m3LCmrTYkYuHFcxUXFD2whUe1S9h9SdDGnbxB3PG8S+KVhKQ7pJWnqfDpk6cz72/lI4PBb/beLhH2NC3Gl/jvN6lAhB2eGfWZrJl42S+d0wM5xaqXQ55ZOayLXsf0qvsXb1EQkxh8A4 -w3wccj2Gh8aUcEykGcahxS9SrYWbQ1eXfiDRzR1uKDYbzczPkgVosSfPj+8Py+Lavqyqp5ZthFlb2Hfddtr62mt/A/Gvr5tUBILJKcia/HFGocUeQpyoWKRgIx55gF6E4s2mx6N82iUW24L+B3By0nOypmszB+vu/v8wFIULGim+Ac5ei0r5 -q15f1SYcHG0w7LPA/Lkq65kHcxewPmZlNS/15M/rQ6U4++ylzh4YDX3xgQDSQiw3oFx2LPpdrXUBRVn3QGAP854W+BZsrxk4hRXihrKAFG+A4pBOk5pdG1T+oE3uFzXVYQpyaHxeL6jnzk3n+MRc994X7BkYcQ5VTTTvsj9xjJ1aXvPY741O -kOTfBrggJUwwMqjkMH2PV3OTjgm6OCwYQezOwcul2gkO/k6CacK1O/2AiyK/9OukdBwcxyw5uU8SjN8i5A0JUg47grzjH4SfZMT1bEd/guqWjqSvceTpUCPTplsYJ2CgBaMbY9oUvT326I9gNEHAdTyUOmOSWXSfeCk1+K3tIJovp/GFnz5S -oQrQVLpTt34WpbBBzxL606ry97OchHSMUEUXCo6G3Tpri9LbRC6Fw4HXQGIs4b/hp2USZWMsMqWBj9QbwB4oN44uadNuii3ICs6azkHtkld3Gji5dGbRSqHraImTd+fWeTavQtWI/uRyX2zTfI9Sqs64da9zHK6uH96liA6QMbClX915uRIp -h2jZJ8Zl21cU+t1XVtu+4eGqTBCsIWkyouh/5sxWyB2JtnGuMU05B3S6kNqLFYrFmI9I54ijypMrXqmZ3RoOv3AwhUoCSaf4x2R1eCv3wfOap3yNYnYsk7FnqfYC95YJZJIQ+m8e8dojtB8SPFcDTiNHnUxFkfwbgpro2vqsVjqn4j+kOcVs -RQUgxfQ62LnqW46P5lEbXFNQA8x2LzZYy8XCE65uACwb1Z1oZP68jni4OhjXAJ81KpQt1qGqAnDkTPJL3HXVUhpPETQKf9ZtTR5RDdHcPF8Nk/BWEimdevx8DA7ShQDwRtRSN6xNrFQ6KxLrymO4xiA+8CwlZV4NJ7JlHVPk9tatRAi0iFjY -e1sqd4HyBO86r2tid1Yt9i2ZqNuIdlHD5zhKoSyy0xTpXIpUINcjk6O6XWRSgIMfadCBLJI6APk1LgUdSHC+7Q3DDYbczB/f0JgeL9ot/aUynsxfvUtzHJS2PIl85ae31RwPrFU5jCKN4nFWcfBRpTI7kGgvyFokMlx27pSI5RH6wLNfhaHS -jc1HPWgwuJ0IoeAG5ybZfwIi5ADJ3v7Ba6aBWqfE5PDoby9q2A8m1Vjp/FGpI5RvltQpFXipNE0owX3Ety8hHyOZzkuhMiHVKnVG9yMwa1FMK0plzNZwAnelt+kpAEfcIM5V7KfjL7jQa4bpsayjf5Pw5wkQfoBBiLOHnuF2A/PX864V3GQI -usDhrS3/3Wep37VzrRZ535hHRAZFIM2kKCivELn1iO5VVankvxE2H78Fu1fMy6otn/okJIhNBVtIQlN0eqVqBquOG3c3KRIZ3iSRsN1k5FswY3Hs1xyTpG6gzKPOTjGWvF5WkJbw0uJqsz2TAJUAaYnldF7o7RHh+FAAhwDDWZ6Uc1KVUBX6 -X7swHoNxrLHd7N2dZXHS8ilv7TtrrBENbusL/ritfTEAnx15pWfJr/ZlM/GIDPQkRX0vlrNmYxs+S6bE3BQ8E071x/whHBUROEPkHyEwHHxWc3PfAtjpBlNcn4a0xmQuuRgvqZUgU312xe4qjcYhQ8ymqKngTV/tBg6sWCkkTQJ0+PP/bVRS -DW7XIl58zkEl0MAqpxKDuq6eevyHSwoOxm3nZ21QbfkE1kg9XTS+nWXr+e3gcCaXKl+wAAh7t0LY5NxE/CXb/tfbJjQDHv8A3ntDg2riz2HOHSfnGrGcydNHxPDSB3lIC4zG0trVtvqVFc/+P1NalWqmGyJ9t+g7/lGa/ifBp84La06r+0Fi -7XEEaT8GPiU5ayUhmOoC9VorNlZ/fJN8ftVYJgri11DGCtgb4eV8xMFQ+blihpT/LktBNkLTg9b+sFj/Z3tXQzcbbFX2WssjKDx85pptXn9fSANiptqGSnSiF/lTQMM18ra4ei+wFp9u91rtb55r727oteBa1jR9wqk2JdrKq7ZJVcrX6x1C -1Lvsrtq+adQgKwKjWYW7kv+jfJVJUXzzdr08V24Hn7E3HhSfdPekZKYlLt+bX+9ktnKoTanZdTt1AdIb7AZSqVaYWv/cTvIgqvUtBH/Ub1eBTlUgSC+aBXTY9ApfhNt6ak7DEIAhZC9AMeX5Lk+dbCLCABRvVo2puM7cVSWuyQPPgkWriq8i -Fau12DqVhrxcofb5UG7kWhJHmA5cTQkrFCR51NNOs2Uu7EpXQsXN8zPlaC+EacbG90mfOou2KrY56U+ZHn+1ylZvkN+WI7gUmI6cm7LEr4/+hch5xlkmOEyxTlFMYU8fKXBS/JnqLRqMwtEvWqEB2Ca2Vj/TL5ODzSMkE3QllYr6NFYBRCru -un+ig9WyDvPN38SwQwBAemzYMvmzbs1aX67nUTO2P9EWYdpfWSOhxzubFtknQYpAiBBWLimyyklIooSIAqstIBm1htQIrhZczsCkLdozRhTuaKkNG8jZ394H1HNzs0nhS0Ksi8bxXGz5LFgx7p4zabSd69NZwB4qvnIe8bue0e+jtiZwfReK -2ci5jJMuQw/Me0k6Zs0DqI2gOM4gVIE9b0aT4ZA40fCp8AY9k6CfBpIvlLvcowXmLyqj54/l8yOgZ0nbE75Kk3IZ4tT0N8aaFSZyHkiXXeLQRas2VEtwTNnXC00/g3gk77jvcITSESkYLekqX8awU9fhlpKBS5e/psLz3AkSk8iVFTV4yKLs -sqzdfrMqN/a5LNxrPMF7MUWb5fVqDVDClxzbTzlrXKm9ilq/ErlDlpiyCS5rM6Euz/8xe6EXufi0XRSqLfTb3EfUnWBbAQLRyNcxg93OwRh0JX+s0NBCP65XHdwaZUxQkWU8l+C6vzz8cn6OiMwNXgyYhr0xwBW4V5X/V6H5Ae2Jk9ukbrtU -Qpcqc9s46ciN20uLcal/J9ByUbXCVOVAvZn6W5L+lsyK6fG/NR+v/heMNjEGsgp3CLWilS2R3VVJBJcM0I5NoQTN8O47qcjaCjkUrClc3+K5t87fa18cyDYUoCD5BIf7CcKcdjgcGMCLV/cTGNXyadjcS9Tui+Sgp7Xtl37Xf1+XZ3P8kVQv -tnYnkaQ9evma5LBm4k+7uIAlTFR5U0+9Sfr/EsRQlehYGXWH2WNcxlCFoPEm84734mj00fd4WRFA0U51iOgvSRV9AtRZIog5igkEQK3t+G0FlFC1dnKPVeLnBg5nbGOfrQ2i5cBSZCeTBPGFf9UzEuor7FWIPtwNRjSLwWmsJMHxbWYUiedW -D0HPE4j+cACMzZSgE8/K9buHOwnJjqEPJECGpBzKQCwkPdlhkKNt4k4mXCCFS+eIMHLWd3jjfZv3d+W1beIeWZJday5+C02Qy+CzBSxMeSW6L+ZoejdnbznZcWJBCz7qj4pVdXG9g8KxJbdsga5pMeRzQoZ+V0KEEGTagkv0ghYFPKN7fn5t -czkvQfJ6X35Zf+FsY8WoCOeJ0zJAPsOv3oa3+c8C/zkJRfLtzSW6b3i6NPHFM3eDQbiIGehH4f/+B8d5lUZsTl1KM875rVn7fgoVHW/ZsHCekDOA7/tDIEJLc3bBMEnwcdNK5NrE04Mw9ApBldBunoruxISOIXK9tALzJt3bdt2XlYtkwa47 -WdqNLRoo0xRAC9KckyGWkyFqBaZVsYuHdpATdg8Ynvr8qh5c7jeBPJncVJB6KSCeZ764wwl1+wWOgJ366QmVYDBCMX42DL5vG+r/4nCqUI2c+BMMOTQQJEls58hZrxENVgsgj+nRe80+xLtb8deV1xUJcII1Oi8VyqKW/mdjpxIAEXVkcqzr -o68JDD3s3JCeePziJE3llm4AhvKe3a506gGY6FdTpfvM95hM/k7c3IvKLId5tOsrpbGJ+uYnN0kOFZ0nZU+qwIVclgMkwt3M1WXOg8YNsmTtVEqYdYUKkdCJaI+1B37Lxt9fnrk3HCqCAHQ8OQLENdhEWICNICuAirSo/l7RBNePMPlu1DCO -FYcn2wi70Qk+5+WvKlhBj84RlG9aWOhqnAOHrSdlls4zeO779+Eb3ykpkA2tvCokUV0dbgmN2+da2HX0EZlO3y/UbVT7jkwNRoq4xixSghwbqnBjqNOm5qq24onJ0tLAWfvEOIW2iNcaI4ySsVMt98UJotSlghwtIRhYMhNeApdCA7MJy8lv -3ScEK21W2AvC+r/cfWxxKNy5ieMLvuLJYmaLn8J414TuPUbOU/7GU/FdybsB6kdtlu8Ga1F/QtL0Ex+xwjT/tBnz44twNcOkgKzVHXpnRSlDAqZDTnoLh3dRKVwPi5+mWRLEejiRnXMvPTV3L4TqIuf6iRD9MYEJxONGZA6WBFYWA0fLVpZv -u7Uh7r7szPKfIpfBV92+KmdmtaumoNgpdIMjL44RH8+m0ZYOeB8cudEDy7qu2PHqlLj6qRDTmVYcK7OKL9K9+rZrwhldvrveKPAo/Uj61YKMJKk9Yq3k/nVvSLOzTSNCjWkFf82FAsw3o3/kL+PHTgpuubzoEjNj/2t32wKTeJcI7Un4ddK3 -DvQwjyOxes3Jp4r3/ENBWAn7g3rJsGbO4PcZaeC7uQtK7j3o0krYSPtbI9/9tExG3TxsGDsq0wa8uc5891UT4MmLHn8xDjrZZg7mIC3lYBUc6gfbN86wE8aBAYXmHq7wg/ZBAj0OSaazn9QVfScQZC6lea+46ZGOAWq8nBgIdzOWeG/S3Bju -rP1381dQmdlPxiWR9yA4EYOSSgv9tyGwKIsq2K/lvwe6Pc6T0W7jEZL15sb5fyy71xqVY+4FffH85cIRSSSxJb9AXMWSR1PeF6oaeQ8yV1nScSPduixgHVnleKO+rDbA3apzJJgi1EogCpuHS9V1s8L+un2sj22s/1ljK20OybPhidJFicBy -4Imz6fB6WNTtIINpK8BSHJjE57l2pVI3TxyQ8fOqaAV/+yOt2OMrBFmJ4Mr4ukRwnw7Pz7prbtO/cCyQs/y2HN4CHfUQjNNFcS7AUfuMwM83scHuHSZggcqD4o0cuBmJHdsWymycOS8gbUTh2hwZXb2zgvPTD1OC6qmHr1+GBUw7pBsgjvg6 -G0frsKJbXZcZTDCiwLCi0G58VIHWzwOOxtYTq/gKg8sqh6T9SrRr08nyk4WJ2Z7J4lYpa2PZmb6+qsLp1Xw8BkO/7FLfyUqjpgaiWMnUWEYpAWQMujLjQcdXyrmvd02ITdjfmsy9vHzSafHFBuwgnwLpItXif7eMejSs03LpfhlSKjkTUfvt -iuW9gFHPBuHv17VNBginDqont/FCFUQIQmz5cEsX+CW1wMy4cNFAOsdLtp+1cUsVzIeq0w7UVP3FboiB3zth1+KKek9SbWTW9xZ2NO2V5xy4q+IFVjqA6s4e4XWkCLipWySgiwlH5eQk17r6fB+q96h4Tj1uKUDOSM5SfwtjY/iCCFVHYUng -Kx5vqRuUKSgg2gl9Ozq87QHFV30wL8vIZCNQOumFFsE6YzCEe5FrXFA1H44CAn9IC59eonZeoqEjrvszb1UYHwutnrSptXu/nMZll3UqG8dfKSa0a6dUJNo8b/4mGgvI0UorqDFHBrTi8b/IZkRQOKAKABtG82mLltTYknAh05g9fkzc2B5f -4wqAPNS+dKGwKk0jCfg9FdNSQ+TfDVht+gqog2Pi1lL3hHixnlBmu36LklbC/8yKCaIWtGlS+k6qtzSG5d+pfLilbFfAwqxTio687Ist1kUienJRQqqMGXlPDLXNRhHRXVNWcr6odk3FOEayZ+vzjYOxmdyU4q4qaOgC2/aJwEU8DrcMa4Po -3S5QDPj5V9xiZEurVf58I5dhEz0O5rdsdgOZZJz6DfBcwsor3ABlpGXTiMMp0npRLVRR3VG/kUfu+NEBpdeiA3LCY6ARBI6SUvLGMEy3Pojc1fm8XU1+VpS2sTE19AzzNphlfjf5n1ayhJeYmbQUKCI5Ad6i30UBwoi9QbUA0E9HW90Qm+td -feKVzdiwl7Fs9DH6D27OfSXOOWibHsni5OQiCrARhBv+e+TC7bLHyUwm1Q7O9kfjz6KVRedWPo5jlwrAJqm/hI5e5B/3DZys+hstgK6+DAUMgbX/P9W9IMFTGOUTtOsML9oZ9W8eUB4KLn9UkGRCY3n2Otarvu5jHG1EtfdWTFR2cy+AJmWS -bxY9ac+gzUYRfEBbA17dZd0LLUn4EiAHqtDo+DJ/1qDEu9XmSFtKu4HXsYrgBCVqjb/h7X9bThqTau3fSYddxpRLJvbL9M6wkksDTZiW0QgD7VfAdGrW/ENAkcPEMLcIhgNOUn+eKLUezG1OBsQFa8qiv565eAaBAUZM3Cvb90QDMjwAWL5N -yhni+qK6iwIRm7lY2EQ3TTcBzQNOpxFZm0dFDFnRHRok9SgATYtHWjxCL6KDCS56o0PlHKYkcSPp9G8yQdc6M4ou4ySyNMOe/6rI1UICJH7FlwkmRj6u9cpKuI4AjhS+q1nVAiz+dzxGUN5Ij0Egora8wiSs21Ytl6DWw95tRa0L3W1tZ1eK -ZAgBXNJcOeUbLbn5CFJ/+SEhBhV9K3uP7bG4BVu5zstIUp7ORqUkp7EqJSCQTplY1838qQJ89YlsNnOEtnHsWLBUmQJ7Vp6UNlKqkKIkCxcR8InPbz/IbQYKGBZ+ry6s6yjrB0My54We+qITvJu9++3hey4wNOaSF+Z+tj5bLuifL02gShmJ -6ENl65tP+Xq7yga0ZMZ4Azeyfj0yKu9DA37PhLLC78K6av9MBANwTxlZajRaXNqHg2RfQItIFYQadIKXi+mYduZS1PtalL6zC0rPAh5soq2k4PbzGW5ZGbkFWQn+1RkPHUGvBebrXACgWM3NFL8eaGHd1r6kLRVTtBHMTuAYHkZ/kc9Rdffe -xexq+Fgjelw8fXiv/w5tDxEa2aSbb0357bBSE/hYK0c3V8uw+Qib7zz+mOp42pRb+NfjDBS1x1G2VlAoHR1jb8peaxT0/UK4Cw2KG3KvhkdDRVxa4bzpOg41/y1h0xjI5nVx8Ei8RPDYYgJXiRWoX+1iDQyxfZIj4OUWcy9FNLGUwmivT3t9 -xiOpRn/i5Y7JHB/Pzf3A1f0xhREANoFeJDQd/lfzgH6BbazqfhwGITIm6cmJIJTipkdWs3K1o/nQ+Fiz6XsqINECjofviaQ7vCJfSftpDppgNXIZptJ+6FR1RqbBvfEmmmNMaDthcMAW/cCj5XNsyOG8aPNljGuH0zDrM0Hlba9sipOl3EnN -Cepj/Srq+IyuOgchfXbuLJfjHK/+2NAd9zYANDqm4GN3fYE5N/JDIIs/SpGfrWzmbj96n4ZFrkghrSZ/25jgffHfTdp9juH+Bd8uzSgDHiVPJZyJlTOcr3+NXFSlqxPv1S5wG2zPbenj0f0x7g0sRrm5EjGi5K1n/MZD4jS7PeKqWaosR2Ua -SwUVsbc6rR8j9CtDusBZAlra0iOUqgjr5oRvZo+NGzBDDSwMvCZmA1kTF5roTIYnOwEVZmZ0jwbyDNVrTM9L0XgWxnQB52eiFccLdg/QZ5gBk6MuP9Z2EsSDR33L5dxFi3f5dguM+X6rsdlMAC8PB9GTZSLcGx/a/CcQsovXO93Z51B/9sT1 -ZgqyGSn5D/aLrzLrvrhU2oXDOUcKPJVM0OlP3fs3UUxtqgXOwMUSxnCrxUQuHaczZTg5QiuibKFnsw+psNnRvCmRk1qIUFW7QS1jnYigpUQyrj8/9ZsaVP49/fVdLcWACDJL/nkir9f50YfSUDfrY5cVNZ/9z45Don1vktCVO4n2P/j1XRxm -zh27ydsHgQI9V0/xoyTHZ94wR+0kUuIkfQgqsN5CkufQ4chuvD0OUaWIi4RPPwPlL6IeCFOoN+W83RfZ9XpBfQspoeWrF5woFjCVYR6Tk8q3yEjI6PhhfEuBh1P5N+dJ070HA3Q86EjUEuRw6ZPpr0eQOr6v5JINuvQv2OwwxcbK4h45nBhZ -4F8OQt8Cm/Qz1MRopA1BTNg0UMtz7gaASuUTheyfoB1N+Hy41xmQPr8lly24RU2bQXslUoKD8QhZn430wPUTIqD7tWMRcmy5MLz81K+9TYjsq6rfzixA7TnXsor5dT8hsB29WFMWHQ4OLRXj2rhrxIkptR71/HnzRw6slLD4yYf5aQeiK/3K -D7sqW27oNn+VuN/0ngbg+J7nKJSzotkZx53NxfO3EpkRQpDAMduX5hu8IyqV9fHW5TkoNa6jR4w9doVDvuNEHnJlJe6C4RcuqgdCsPey1NibpmnkYffAPZGTNN2PVxf7yJxe5HnU0eFN4RiueBHCS6d7oGv0Fdw4l4ModLrjKmnAzB7F+NkV -INnVVmql8JJdrtbg3PWOZCZhABoEN+R5uOBPzqIrPH8zMvPsOsxxM8M93vLshDoiCuvUoEWW0a+ILhgkIlb7IpAGoOZPfsxtRyytNCqKub2sDhTGtoBT6R9hnGJlplgwLci0RA74Tm1zpbmei3AzLmiuTaAMCOaIXWWFsFpxA2StniCkZkSW -3XL/m42bPbAmU9dmnxNBgkqW/OOL58fK6VPAQ6dnMMzsH0uQMXzrSdT6OaC2W+HPOWciSMzeQJmZjDOXQqgL/7fp6UkT6VZLIEoeWKPWqpBo/LZjuDgFo+Du8nqAcyCxYdq8mz461D8V5EXLOamGHa59g5Ydk1K6wwWgjkxaYEP0jGK3k18v -OP3Qtsu6Wl8OYVZql3fNQF468MuQcr0Gkr97Ao+PsUefvBCkXXh0sGIowuFX6BfVfHK5AcdTTQvyeEfap/yNDAK1fACXpetZRy1hS9kmlBiQnjXY/wMRum2Sx81USEa7VwTjssGCgVCfzcAm23lsp0PblF2ro1jdxwcZF1WoKKFc5cMb/iQ6 -DQvI5irk7KayZ0f+QQLM0TBPNqErmkxceBrmTc9vpGcI0rGW9Eqb4P5tqMR7FSY9tN/epom8Un4R709O6E14/+Tx2MKhjBQChAAsX2oYpnlPeljMU2aMHLdQcpBX3t+5v0WkxtMW+W03l7Dww1dd92xYVTV+hoSUhBB85zmHRBgWaa6Ak+Es -LNERR+FgCJhglCa+CA8Ii84xr7g5EWirxthkKfHg9W94KDsCMExf9pZ4Z2yq58IqwX3YB8dpgOWKm1M+1wFqyIE06I6nMKQjK8kYoJlVjGU9phy5qBWr/wEoiJ8oxppVvSTLXl+nwx7aG4KwAuWgcaQ0gKg/oHVNNXJNFsNa4FVkfvnfgsiZ -6q7Bfn9tslVC8rV0UNcXEHr1nOe3N0wZ5zHORJyv/W3h8C5fOmgBe4bTm+Ml+88hUsi4PmyhYSYkL718ZlhmjfstqAWaKUz6YPwHfILDoap5mQGWhih0sjdL5V/U4UK/3c1yT+mh6xQE3/2Wc5flOaX3V9DbfT+N+mSQKZI+r7B2fGI+UOh3 -PadlkQMTZBJjvgqM9yH44TmiVKBdY70kyWkEQ37xIXBCGnCl2Sn61JkRo7MiIT6szkpBFYtIypRJuC5NxRaiGwdWWIRDvJQdJedNBLAR7W4sIPc2qhMysGtKSoswdlIdN2NAhA2f5vdeN8NXMIVp+vv642fCuAEhKD2HzLkbUImJNIz/Xzr9 -jg50v9xi5rWHaFOlH/LMq77IAQ64Epd0npjP8agvMre2qwHMtlUciB2CeqE0q6vHQCHjUl0VWErh8saAScjCv21e3jLcTm9k47Sndu/kf9WzmA+gDQ6mgLvuRBkRkZNVBvpxMoqKpU/Q1zQu6G/PB7N/OfmkmY17QOYwAtd6w+giYoOfcf8+ -DUbNWjquryiBfxBAUQJOnQCBLSrHB0Djn0nRcsUW30pPC383rSmzCBeeZOj0Qchc5X7f5rA6+naOt8lvT9AQexzz+i5stURVALY1mRvFlHOoSF+ZBE6c7DBepYmoSnzyMsWq4TtItrF4X04X/tldZURyUTQBWP5UAbw2fBNdh/+AOK6OAX/H -2RCqO7JvDVcbnJU0Xw6UlITjvtchY6Oq2b3RP4tFhUCM+JSBnjn4mYeaXhoHuSuUEzce2w2eSBJOXYpVnFjJeMoGpvNpD5Ep9i1CH//LTjDF76j+emKknKYOdoTEjCEkwjlInEP9UmHzDHIiNGyjPV4Kbgw2Mjt8m+AeviEpV9Wy4j7sY4SU -StkIBc0CU/BlSqL3goyqdqj1+nR1EcSBYQRD5P28wltKBfTNpQi4CUosmyaLxSlZd314a+clql4f41ZpYk3NJtdTKjWLFrIWHeCMQwYPgxMPI5EKBGzcoRhjkJAc4MOCh5j/BDPgOES0ZA6efUyNiRnG5nXwa+BOJO/zrRP+s8b0HZhhf8cO -2Ajvp4GYqlLW+hmUI3v2xtW3lxh1o48L17i2eybL29VDBvg5cXF/gALPcmd7TXvrJznC/tOWQAz5S+t3NNZncKaM4G6ZT0LywUnNhwAY4LrVAYiVtKZpwG8d4IYxQc1jJW+W/gDIGoJAux6b6/l5ZkymUCkvIowEBi55Ik086k50WlBBQ171 -8FtBMEeYI6nGI78gmKO5qqYg/gm6qOifGVvvdQ7eWjdpiw8SD1THJ0jkkE0NFqEOqJQF60AjP8oaKg6zGSgjOaYhTVdVTi+cNKAJ4dUrsTrZgx0jcLR7fi4CKroM1sSLfmdaCXRHBqkz70/6tUqYpCw3MyqDO674kaYCDXit18bCJMDLwVGV -sH+yyxo0RdMjLcOV9kokwkqt4oafHbh49pDQXwbtpiApcd8mp+7VnbbHkFKHr7gQAI2D9nKljgx/p5JOqlEq4VINFppqv5FDm3X/wx99G5nCW9tAPkfu2CblFMB8EpggmPXlXcNzN1VmThBLLkOMxmWJxx4CWIhcqD506jccGBWiXPO3kQGI -OlMcrc84RqJn7fCzEk6q4rUBGhP5bJIhNiueU1Y913wbxk9URfSJ9slNJkA1pAu0ZYhr3OOXx05niD8ONUaGvqr/iwM5sI+EV8wVLmV2+Ee+MbcrYGB0FOahZhNVmzJfbRK4sasfhvHMixFj65JtufkZB74HN2PrF3IlMCFqRAxzAE4l0+6Q -KnZLmKtjCItHlvKI9WFRToT+6U+phelFNnqVBIWJL9l8J+hIL1DDmBZ+lfWkxKcQ8cZi6LFpLY4+KMxpITx2DGZ6zzi+hdS+kduADCC4YmYIXzfQhjpePK7LJAHV7Qu/BJUSz+FheasKOh0tl9cyx2gtgHzoFpfm0iXyO42tG8bsi3/STvVo -75dEd0EyvAX2LjE3NBcpNcCGjJCaD5a6i8GNzwzT/1PdBWNqdnu3liFuaeVeJTmcNVlEoib2FY0Fpp1wVE7QiNXv5CX2O4fHX6IWHDtzmLxB0uHi92w7ckE3hE7VWBAg2zL1gCGgIG5m0aFgFRNvna048zvbC/zHGimlQTnbihs8aupNCYK2 -k9C0SzA4Ng+WPRQmN9N7jE8H1s69ATPEUKSPFN/pGsET2XD3jGCAQ1EfRJB5T4ASOsXepRBiS7itqpU/BaSn7jFnMC/JIpJ+Fo8E4JG3tc5uJ2usRDXPKMPF9HI9+AUcokirWH3yN4HhXb/njmAdHUepb4rhQxX8oxy+w5ZTMLEhoVvB5l2n -uz8ubCklnFIeVxdM9OAVRwjHjrClIQeYY7QyaHe5CKZoBEkMkmOciHKh1NpSd8pDi+OP9sdYp9JLZqrl6G7GmqNgBaUv0heO+BHFkDGm0ol8Ed46CQaELuwnJ5s3FiBmtRWuFJ46nXyjlc+G/TXICaJlwmsPdfgNABr7Y1b5L+uOgJVMR8/L -otE5m3unBYl0e4YY0dkgO8YGC5p+Cq/w55+knzbT+MqFc5kI7+Vo1gqSiTnoJQn5hugv+WinwwVB9U9VkHZ507jvVg8xMdwrb72F9lLoDYdc/XR62p0XD9nIDZUYt6t+MBD+QyjblHrS9gUYTAkxm1RKDn8AS2D/2hUgX54RhLhfR4WNrOif -g8oG2TeHarx9UWJ+n7d6iEPMDRUTSmp6N5Iiz7zrYV6WgA4qmodzoKr2r3GHa1KObP/Lq1NPpibPwk1mDoGlSQ2t53qLV3BiXLYKdrUfSYSiF+ud2wGnLu18/uhfXiezULTjzExcOAHEnmer2I3NmUYerVXWQXwFJYUtzoGbmkXam3CiuxQM -FlMQDfXOrKHpsSwctYgE70lHSyE/qa4/vGUboqx3OpDD6DDmnNFwum7qYlIchHSXMwDM+0rKWJznO+ZAHPNYILonpWoL/msr2Ra4dbRFLBlzUXKC1fBHjIZHugP7QEtuLC3sv6+E/KXrC1V/7TidX1E0XMD/bkEwiEYgV5SYZIpB3YMjjFEZ -Wle2qVh8Sosm5bth7oC5Pqn/qtWq3CKzYULgs2PqM9kDfklkGBRmgeHOGQWpeAPvDwMa4Cw9oa/uBayhpAv7H8Qp3b7U7PPIO3dTcxmiiYocUyAwrfjaDS0/Ev+7/QDmS8Agjd/1yES5MDcExYfWnKhvf+htwUMpk0nZx93uu7NYmW/7TlyO -BFeYXUvc0BS/yH4k3fiynZxKCJAk6wSOTLSq59HsA0EDnDOuqtBUvaXdP/34hit/JeZnDfFZ1rnfoEjqUQhHOIsm90IafT+4QofP4/z5iwwaw2zBAhJQnjpkIU9h9hxbm2SmU59PlKsZYBeRn+u2Qslc/2EoBaXONn0BUjHCqp9TSoVHVQnU -3KHgPwrFEckRgxtt4r3WIh5yud8IiaA6x5u6MJZH6Mc0zMbM3tTUld3Ku+reb6hClwZEW+sgj0xeCUbtARpg1lWvj81VMgp5kPqngaPNiZop8FLctD38rpK00BVzLj61+64pxQwoL7zwtdI6MMmgP76IJSL4+mKdhGAgCdQDl1pl6djUIJX7 -lDPHjGAcYiD8QumItU12ecaH9hp0mo+VsPsLNcqDTiPAaYvdozOSk+sgbrUkgcZV/CPr73YDSBAdKrJGXUatitAKi1wpzIPvsbrFGkHum34AJ9QtHCjeNeBNNzbh8/6jI/bFMATXgUFvafQyT8rH0SQeO+HYWGIovVy/fnRywGwr5rViAMc9 -4Ee3dPE1QxW5FWnt0HLCVFP1n1AVD/Kg24u9aJxUkkjmXYA4HZeV5VyDYz3/SmzL9GWEas8fnVE3eSW4QvtB7ICrGzokSI3r2VHuN2op5chgjKdZLFUUY+MDYyIA0FGASWDnxQMyyUe6TDiWSfxNh3GR/QSrLk7C0G+790QPJQkd5Eo5ECCl -Bfi7vTfV2Pry6mKLseIJ/axGPkf7dzeF3XNK0pTWat5IZ7PevIHobh52hvDK5qpDLA5jkDvF9YXyL2cBRgSJD93X7dBOnEHGg3DsWWPNLHCZkl7yp+1iiEEScXFGupon36dmMLFb6f6ZoSE4aFq3nfISRl3TYjFV5A1GN69hfxNblCkCkp9Q -rC5UPz/apslauG7thPwG41F9TY58ofOYmM9JxncI8xc1Y9EUvGB7TnMPOc3Jqh4WK0UakrqBseOxfl3qGpp2Z4H2Wq3+BmchnBvvjepJxHnl6gVbPyIAkanjml7KJFQDY5+T3mwI/BINGbzNSaz69XMaRD+bDF9cDBEIL9ciNEPACy03PRm9 -ydATLUKDtRtyrP60zWVNQ3UDzzIZtCsQT7GoUNqo+vf0GVE41vpW6Rt6L4V9PhmFC6g4BKBEZCagHh/l66EXTngO6cs0Bo+I7BXnOt45/ZveM9f9i6vCZvgkTvfxBSwjJyllFh8NyT2vNTwEYeaKdzsHsCFynELO1bl1NNO1H6sRjDCuSQ1J -T1P3/vzw59vJWCV5l88zynw3zvppl+gmhhchWfVE69NXYva78A7Gb2p8ObBpNEgMDU8UZUhH8YHGIf0+4tIN6cVPuI4XiKyDJXY578z7f0w/9dRF1Wqjfi/cTHS0BrUYRwHa5MpjulfYHS7smwpKg6cwlSMVIkXZD+z4tDiC1VH6nWZMF1wH -5rjfXUT1Eccp7YLXhBsjNRB4mD+hpiS7upUpIzMkKkEUbr6oN8DIuVm0APTkIGOTaMOY7+tI0Sbp/TtG61lj4pglHv+cuZhZPwLJ/ZBON8tVfOnK0344yqzWYBIsf/53nzHQ7yxb3gHTIzTIFpEhbfsqBSWUqs29aToEmdLBp7oDMicF0qzf -1V+nSPf7cpRkt0knbdE4NE1z1ImrtWu7gjLyED+CHqpUHzzYNeQP1FPsk9QL0XpgqVBJ9hxfc/hUuWjAafhkE6aCshYS97ZPNakFSSY3YQxV7rAKrnxjY2DuEpCd645Le+bkx2dr54zMRFQwQx6veCnLb/oSz09q6KsTcWAgaw1jeIdESxPJ -rsGTUAhw8mbJQJr6jh9Y62crkt7zCA6mloqbYIUThGWPGthuJjEKh2FYJv2o3LutJkpB1RLUHoEv2nMeXQi96tUP4uTga4H1mp+TuYVtFueciE74gl2zjrhs/nSLr7Jy+wQRbGlkJHd2m0HqSzo/bSc7R9i1s2YOedmAq0oS1qeaP73Yyzc3 -o4NQotWUiZ56ni/veySzqenvH6x8tUjBFqmayH1q5W8CQTIl5x3yU6w7gfoVzEMCGEobypZpwPy6E0X2EQPOaxj6q3BViBRD+LxWlxj7F8vQrw/Jn8uMVsb6VaAvNBKtj/0WP+OZPkj4BDTeTLEKwlu29GU2kxoi9GL2ZdBBxUJvRLX83QoB -SMAjONlsRr+rMHsb6rvK8JvLfkkc0RSVkIQaD1xyYqUveoJvAgyaC4ll5kNn8qfQX2aJaK67dh1nm5o11v71HzfxikAzkhs9fScdaJjLsrL2E0y3Q7LMxDRilfQQCy6quAxmnJmF/N8fMsvoYWXvXEn211piMLmTTyj9HBX1vcm2Kcc5oPBW -tNHqtV7ZlgDX4RBsZaUmScDBXt/7JpVyDdmIYE4mDhPNLyHgqiv4B2trJhO2+nrXQ0pDwOkHZBqylbIhT8Z84VjR3M30l57HBK/Uk4JVAXMER5v7nuVKu3VO4meimEWA704YbdrVk0YI+4oU+/ica0/cWPqtu3zUxHFKWIyGdwFHqKABlY6K -Ds5/sm6Gpr0YCirPTTQCUEyLVycnQA1aVh5OLq2g/yxS/EwCO05U9d/0f7UmLrjXXa6sMHklYhBSiX5UKWpPuMhuKzo5Nchj1jK3TM5tzf+U08vyJwgLXTbnTfE0vBOoVaN86sj9kO4oGacmOvEj/nOmkb/TYOTViHDY5wL9L9BtGoXCDjU9 -Amro7GBz1GW2MwoI9RgzDE9ehs3OS7tdjFKXq1c87XmlEOslTnzdgmUkihiwK4W1vdTrgHvBKWC5gbsdNLbUvU25oPPD4rxOWzBGVi0by4I+BWRlILRxCV1kDs/CCaLNfzCsTwl+2a+lU0eJNDS6RrJqHVkkJbRGQrct5j31CQkXLMroT9Ye -uI1fAVmEE6mHlP8nkzc0mo0e34jg02UIBh1taK1gXhuRMLyPhNVr61iCsd6Ms+38JJNn7ObdFVryl5lUnIAfanTkJx5Bi23N0wBrF7ZLzMAQigTIii2EcJQyVo1TDO1Qd3g7ylZmdyQYVvKv+Mxu99vd+mnORCPe9h5uY0Kznaue0NYsBe9+ -OuqUoMm3lUPHVbKNY+wYdr4JZeAkTwj0hwtkgeu1E4x2MlYhp4UhPt+XmYVTfntU7wNPtAc3qKgiGHypv9p7OAablD0CIcmAMqpRGyjhttLIjDmUnO63fNO5TUGT2sfAzPV96PtpKZXeCbOt4jHBNMSsST4LnS4Doo/dUGuzzpTlXehwwkKa -DTxEN0MHYDt8uK5to5bmA+dgGBEA4i8iRwsihLyyShY/+hPbzHrno4U7bUL4zVziXqSSXs6M6WwxP02jKNPUguKBcw/0C3V+4pdMk5xubufxVbvsKa+zdwiXD4EWN5hteAX5Im/Scm/lHVoOKjRE1svtjo12qjtu2UqBNd8TILVG1Dewybnp -oWY4vCnncjnXNfSvsQiKvzXR2wX/+Mnilqroacpc16tara4PaxAxVkw914oXlOlqr/Dd8D13NnZBr106HBiMRpKwkZQMYNA2LI+q8WK+hahunMAP6uSxaMNQKAuWk+oNjqv6wRLzyq9i8q95he7xaRDhuoOUMySUDKoi6v+EwhAgRksfwpqJ -yGOc+jmR+qGDBmKKaVEaVY4Iw1VwBdu7b1/zMzAKNd+5pTqGgZlFkPYUuH8U1KypZ/fIIY7lN+DmBNo5O9AFQvjAINFElnjlZsYcM0MX+/XfqGl9NV0AAAGSWsQ0rC6KqHcMW+ZPfrbMgcipwol1cnkJLXOYR5TFThteq4g2x19O39hTxaEj -nlWduQLiHyg/A//ymyfzR9jV5PIWEnpsjZKU7iqhln+gBoy5GMDB3kkHqRzHXV1//TX9U0tuJKrTyu01MxJF4EMFJYa2SnBPZIqdf2xYyr4JMLiWc5xR92s/AxaCywD1w1P2JlfoLH1Zt9zT1C9sqnPc8GcNN5FYBUhsptlyeY7nu91LH1Gq -4RusCaIaJWIXnQRLIXFiFlstlf/BoWePlIxVcJhvZAMJ1VvoBYnpRBYAq10uNo5CorfBTQbcy8JVpUmBVrZECvjEaZACH99k9L/21ChooLDNd6M8xjPyhi8Hcx83tKZtiSexX9NtmoI6MCzvmyEmvQFg6yEz/sHVljjxYZ/Oe7KSSy8dA5YP -YjnvHeZDOgoPM266Qrp0a7Pxc+DwvJA5wkuNC3LVdSkvVBL4QJR2qdx4sbNHMrNkDW75Ir9KIb6lnF/8xML7NLz7Y/71QmqIuclL/KgMlfynW4V4Weay8B1aCyAUas2EuSFhSoKlcs/6bLCoDFkN+f2wiCYr1r+ru+u0QD+7jKFF9tjFAk+W -X6I9GhYZiRVVfrkfNkUceFKalWXtWyyOrx2dsAIZOCJNcNnUx3q1P923bobjZg9wkTfh2sNkf2REHrdgT25TE2AqIYJ/zgEiFwuFJaeM0EPdpMWNIrpYwGqDJ7K4BK06+Bf28lGW8Ka5HEuusS/4nw0gjUVFVf/YMuB8++pAGGdahaDOxSw9 -TyTAAKtn9KaC58y61oyX8j6fUtc+1koEY3+Jwh/RhIeVSxv0lbGJxa6DPKoqq+KRTpdsq5nPkBrU2FGtbCQn4TtH3v4CRW3+h+zQeSKzS8o+KfSCUTdDdyy6JiGJ8DLXo+NlLXV2C7o/k9uKWq5P5gewDn9cRIzyTPQjz6Cj4AT7/Yvacczm -OAU74fKHS3b6EZHl4DaJCA5DtWhTKgVd3ZMKzH0zQRFoLeKPJtVXk+n/LpchcV5xLNJ3C/5pSCPnrabCLnEgN1VIUOOMS9uclsLkYNcS/aqsnNZrNW1MAb3Wgyq+Sm5TTHs0dXSg6RzK/fpwc2yVjy48eCGHrrzkr9T+A77GqyZ2bRYzEuhI -4bHVjRHrpGUobWwGjNzlb4CjUAL63QtsQFgdOKm6hxUS5LHQmygDVk+4rWndkv1CvjzyjeAb/McMYwYCzz+odMBCyBgt8oAG/qlimUGUGWtxQrVZ7A9PW0K5l4vgUF+88plqrcNJDMAdHM8AcCbRWGkJMglfz7WeIUTvXYFNrHq14WqevFIV -jXk1PwCg3Sl9Mv6gJvRnXnO3JhKdmYgSO1njxNf+tKUqkNtCDfRnPs0poFxX4AwxT/9QRuhqrehZT7QYj9uyggPsIOqY2fRQCx71A7Z4dvVVwWMzFS/HQicZfIqtWPI2+/809GA8g2eqR+JFslCPjeqyZIRZ/9gWyDOVif9yxWbOI6FQE7nt -B8B8LdPfe5yZiHsWoN4TuploYUAFcsZOTaHx4hU+z3GiKOjhmy0dVfqFtS5sH8SdBu6VYA51UPBZesA5vbQnDfCmi3fcm9i4bFdu2UlldQPEArW2WzgWYhA/purCMP24j8mDZNTelHaP2aLbL2F30ZOjZJVKyrKEPNCiTJ55lxYa5c6NfY71 -5ASOdzfGYeCci/U5FIpyy4kOWQkOIl50WYwcSk66Bh1EJFT0kCVKXskznG1Oj3xqmoI3IxVM4nry4BKBq/A0qhNjHTplyTaCI8WYxXuB+5f1vD8TbyReRxxtqE53fALQQ2cLjLEJC/i9wgWA+IZ8FrNlYc5xvdCqiGoBpEFIjudpjJZvWWcT -hq2yQc5vPKqxeCNf6sMuG4pE29L1RykuDCBxI7uMiZNbMlzdDSoXBwdf3iKAeE25tMSMGbiRw59Avw3O/YVzQcwHq19wbLn6crCl99zyPi2z6XDdJxBQNqJomQUCk4YlnhDo+1ep4hZEZsKzkcFeyxd/TYO3akAfyYRLZS0+zLrE7laqSFdE -/D8rdxg+7YTMRh9/QfPhZj1XlYdt3d1bEL39G1urzw3IApi5vJ8LLrnyhoVKcsOthVbdVsdGBTIyh17ZspdGg07RqbtNxrnpv+gfcxs07Z0e9G6vtQJfo3RdX0sgp5mhOhU8QE3Z4cWod4m4iAg3Ym859Wb6KAnbtBTSd8ERcSCHLblVxGK4 -mjYF0Hyc7LECsNrzriXdZMuVKfN3rtMDATZGcBUVwW2uUu0gziAhJXJP4OqUN8Cjb0AAqGcCYideQB/vKezclh3JafdvcC6OVs5LGinuHu4wyrKh+Qo3zhezRdt57kTGrpZuKHl9zGymhxrXhCAUgst7BKpTf3GJY9NkONapR+3cKUDnLQ1W -dcaxS8ndbHHN7tZKNou3OtuMDNSMOhleroaoLThTsLq1xJJAZMPCw2Jpf2zoyCQ85RIlWycZR2PCgUChv6APtL0myqNvZGxRQQqfgrqInvZ6tT1crvgb31mu9pVNhTCW1yeMhFcTgBmT6TjbUOyu3ioc8+UmXjcCRX63nCwWFmaN+S11wngf -xC1ABpDpUxYuSKTCJyVWjt4zU+o6DqOXtm7NmR0Ag/nmijuWWR2YWrHhElancq/bsQTriEX0izm6DM5pP9cIdVM3o/BPz+nVafMUqs0oiIsT01vnQ24Mst9SRD+u207C89wcoLroH4yo0kQHej/MWujqXkLu0YqVq20eH9E8tl25aiOh9v3c -OpZZ6ZiPQ606K3VbvaCpYLaVf9Crj4teenO/TAQXp1u1RSvvt7BwIilHOf2AftAT6zhV+86/UAcbCrG1PsxPgi94IcCgykyG83jxyKro97tNzN5IzpizdvoKoB9KC6T/kOU5MjClDs/SZrnUy4enBKvAwOFtrEyjiRJ9VjeomIWUCT3qhlJK -zX9uAm/5mId1SxvvUC0iTIm1cpn2m7UJvbtffV1oISM4KzdC/HLIIIBjuCUOT6gBA5YvUEy0lRFfajHTpTt3/gZSLfD02n3BwhBBBzamj7yk3qW5GTPh+htEGFtItc3Q2+6/mqNFLh0VgIaFLyMBlbuvaxilbkKE3YL+2/xEVkTgEwNoLiS9 -o66ofKA8hyxZw7NaYvU3cozAJUp6uj6qg2hha6JQqMwctgpFoEjKbqqTiaygwT1HeYrt5mQ30YfY7BXqkjNmvlC7Gwp7eKdmSUWY0AwVsmAp0VC/HhLmE3HYRAzX8UJQy5sYFp+Sc/mYstj0irzisncvBUb6ddffm0l5vfVc0kV88bkzp3aU -83gPTRRlLldlggk5DG16I4xsWX9HiGJi6SpK4afbk8acfF76l8qBSPTOqFHXzW/tONcRh7XjORotZTXqUye/N95TudjzuM2x7aLpiX/wsqfCJD/EOmGDaAtF84L+CCUBq4RyU/+FbcDf8VAF4wYpocKPO5V8v1bYUOxOnXXslMqSOv1vt0KY -qYSUc2a4IanewygfibWwkvj/3zuQ75uNmBwG9uBdTcz90YDHe8IFa13Lijx4ku7PT1LJMhmZDgn33PpKX3PD+4+NQNogmAcNZbXdHoUti0aLwKAhZ0n+uYf1ssNlU92vLGPeDjQXbnjcFQXnw0b7T4vuK3Cr7LskzMYscXzkHUEe47G4jrv5 -u2nf1omZ6iZdxvbsG7z/oQV65LnTQrdG8/N8DasRSJ0NLlSoKtabgiRTnY8ps+yPBI5S/N4IXypuIu5eVMfrmOi65PydRQ/MuiRdki80TtnAnogkBFKolTrZLyQM7tS5bH6nhb4004Q5BtX0kjf+b2dt34rsxqZ9NHltcVV+P1WkWzCjKiVs -4JhCmyOruI3xZfbhDfrmkJyjL1j6NSclT0i8/dOuuHMQ2tOub1DFPAKNP27gKHT6Kj+Q1kIpV/W/4pPVQ3qQf4dDIfEh4rrIn2vX4Zn0OlA+phb7XOjQwswMnqTFkCZl/UytKDI5mBfRgU/e30ewDTUtX5eEPd2wW3s+AtI81sTm8FcDZh+l -Xs25BhAFsJ8jR22kfMVbI3Jpo3wH9VOhIk3goZC59nXJWpJutpVGn0XAwg1uPAka8zjTkmJYbAxwpkEOeo+/MvVEoiEkLxLuW0v+KCQzF2DBhJ8MtDzczoXp391xAilwufev6tdO5WHJb+xIhMDgNAIzf+C3awMVjiVGFWx6ZTngU6L53GMc -NI/lIzgZei+tl+zEgvRpz9LI8AXVV4vNvBykTvaM8LaMviBeaP7Qaeerri5KGL3Pjs73wdhCU8lTTwRIaku06l0na0tdYUEcqj8JHBp4SnsHTbd9BMaVcz3nZAgy+G9/tWEvFRXpkDB3rFMY7AnXnWXc2VjpKs8xtw+BdCeHdaAKOH5i1kdy -uhzEzPiddShVmoG81Ny/Bo6VMCVcDC1OA3C7vMfzUF7KMU0P6cUCs1asPgnNxqgRyZbTteiCGf8421nv+sRHbp31RaZ8bI+xPflUVYQjUhsfi1g1ZQ73oh6Zw6z/VRm6Z1cu+na5ASms4/C5FiDzRdbbIqj6V0gxH7zq5nbOeTT//g0R36FD -d2E5p3/DrCiDwew5HJhZC63rTLQqREQMd5EgtND4qJm3AhdvonShMFE/QVfxjzX9S3gcngT9P0vHEB2ooDVmK7wjye5tFP0RVTNY+CkT94/AGp5IC6We1rICTIXEMRBh2FcSrVhLimJZWuuNFkFssseXedkiVRlUT3Mv7UIYh1Dy3sSlUQof -cs6BB62D2nVrL6z/c6Al/1vLKNtLx4yq3WabmrvOxrbPBZNC6xXFYeX7BMeifc26b/vHzN2PxyfWJxqsbO1iw1uj+Hqs80ftlB/Ck/M71q4zB8ptNnKJnf/dqQlEvMcCB4csPoi7M8vNrJMaurh6wtTC6OTTf/YzXNdbvsEXuv1sU/sW1Y0l -j6tJ6wagiAWj/9EpYyYNfhrEoCj5HAyVlpeZohfowVELtHY6tAIT/3SsRH1ofE+XyLUGwpStbyWapVnEcJ5pPdFi4rz9vwbejOMQhAojT8Vqt0E+zGps7pG9cIpUKWlCyfZQ5pqcL+c60Y3TOHtnPK5/uMctf6h0mJ8TZKchU0SRHBNE/pRv -L4jpUkKwdAhHl0wo9CDss2+gVp6B1k1mVmc+zGzn52/ID75yltde0EY61LzxKZRqAzM0OO18YixxZoAyV28M2jlbQT9n11sh+IZpVSyVdDd0x4drXIZg1t9hzF2l0Gr7BwrUnkVGKQiKkU5AHpl/oesl2oI1Y4fmXP5VFaY9hxvl8Ho+Sc8z -xZ9hJ90hg6LGGyUxfJNYnTsMtmGRbD7hZ1SZPQXz7DMbACQ4AAKVc4KIXIm1SAAH7lAH81gEJA4E8scRn+wIAAAAABFla. \ No newline at end of file diff --git a/examples/autolab_example/tmp/cs101/cs101-handout/docker_helpers.py b/examples/autolab_example/tmp/cs101/cs101-handout/docker_helpers.py deleted file mode 100644 index b6fdf76538c9cc454a6dbf3add2d9deac58e8310..0000000000000000000000000000000000000000 --- a/examples/autolab_example/tmp/cs101/cs101-handout/docker_helpers.py +++ /dev/null @@ -1,146 +0,0 @@ -# from cs202courseware.ug2report1 import Report1 - -import pickle -import os -import glob -import shutil -import time -import zipfile -import io -import inspect -import subprocess - -def compile_docker_image(Dockerfile, tag=None): - assert os.path.isfile(Dockerfile) - base = os.path.dirname(Dockerfile) - if tag == None: - tag = os.path.basename(base) - os.system(f"cd {base} && docker build --tag {tag} .") - return tag - - -def student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination): - """ - - Use by autolab code. - - :param Dockerfile_location: - :param host_tmp_dir: - :param student_token_file: - :param ReportClass: - :param instructor_grade_script: - :return: - """ - assert os.path.exists(student_token_file) - assert os.path.exists(instructor_grade_script) - start = time.time() - from unitgrade_private import load_token - results, _ = load_token(student_token_file) - # with open(student_token_file, 'rb') as f: - # results = pickle.load(f) - sources = results['sources'][0] - - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - # Done extracting the zip file! Now time to move the (good) report test class into the location. - - gscript = instructor_grade_script - print(f"{sources['report_relative_location']=}") - print(f"{sources['name']=}") - - print("Now in docker_helpers.py") - print(f'{gscript=}') - print(f'{instructor_grade_script=}') - gscript_destination = host_tmp_dir + "/" + grade_file_relative_destination - print(f'{gscript_destination=}') - - shutil.copy(gscript, gscript_destination) - - # Now everything appears very close to being set up and ready to roll!. - d = os.path.normpath(grade_file_relative_destination).split(os.sep) - d = d[:-1] + [os.path.basename(instructor_grade_script)[:-3]] - pycom = ".".join(d) - - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker python3 -m cs202courseware.ug2report1_grade - """ - pycom = "python3 -m " + pycom # pycom[:-3] - print(f"{pycom=}") - - token_location = host_tmp_dir + "/" + os.path.dirname( grade_file_relative_destination ) + "/*.token" - - elapsed = time.time() - start - # print("Elapsed time is", elapsed) - return pycom, token_location - - -def docker_run_token_file(Dockerfile_location, host_tmp_dir, student_token_file, tag=None, instructor_grade_script=None, fix_user=True): - """ - This thingy works: - - To build the image, run: - docker build --tag python-docker . - - To run the app run: - - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker > output.log - - """ - # A bunch of tests. This is going to be great! - assert os.path.exists(Dockerfile_location) - start = time.time() - - # with open(student_token_file, 'rb') as f: - # results = pickle.load(f) - from unitgrade_private import load_token - results, _ = load_token(student_token_file) - - sources = results['sources'][0] - - if os.path.exists(host_tmp_dir): - shutil.rmtree(host_tmp_dir) - - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - # Done extracting the zip file! Now time to move the (good) report test class into the location. - gscript = instructor_grade_script - - student_grade_script = host_tmp_dir + "/" + sources['report_relative_location'] - instructor_grade_script = os.path.dirname(student_grade_script) + "/"+os.path.basename(gscript) - shutil.copy(gscript, instructor_grade_script) - - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/home python-docker python3 -m cs202courseware.ug2report1_grade - """ - if tag is None: - dockname = os.path.basename( os.path.dirname(Dockerfile_location) ) - else: - dockname = tag - - tmp_grade_file = sources['name'] + "/" + sources['report_relative_location'] - - pycom = ".".join( sources['report_module_specification'][:-1] + [os.path.basename(gscript)[:-3],] ) - pycom = "python3 -m " + pycom - - if fix_user: - user_cmd = ' --user "$(id -u):$(id -g)" ' - else: - user_cmd = '' - tmp_path = os.path.abspath(host_tmp_dir).replace("\\", "/") - dcom = f"docker run {user_cmd} -v {tmp_path}:/home {dockname} {pycom}" - cdcom = f"cd {os.path.dirname(Dockerfile_location)}" - fcom = f"{cdcom} && {dcom}" - print("> Running docker command") - print(fcom) - init = time.time() - start - # thtools.execute_command(fcom.split()) - subprocess.check_output(fcom, shell=True).decode("utf-8") - host_tmp_dir +"/" + os.path.dirname(tmp_grade_file) + "/" - tokens = glob.glob( os.path.dirname(instructor_grade_script) + "/*.token" ) - for t in tokens: - print("Source image produced token", t) - elapsed = time.time() - start - print("Elapsed time is", elapsed, f"({init=} seconds)") - return tokens[0] diff --git a/examples/autolab_example/tmp/cs101/cs101-handout/driver_python.py b/examples/autolab_example/tmp/cs101/cs101-handout/driver_python.py deleted file mode 100644 index ac69f8d95b6e5fe2d25d6a08fe0edc51aca88000..0000000000000000000000000000000000000000 --- a/examples/autolab_example/tmp/cs101/cs101-handout/driver_python.py +++ /dev/null @@ -1,98 +0,0 @@ -import os -import glob -import sys -import pickle -# import io -import subprocess -from unitgrade_private.docker_helpers import student_token_file_runner -from unitgrade_private import load_token - -# import docker_helpers -import time - -verbose = False -tag = "[driver_python.py]" - -if not verbose: - print("="*10) - print(tag, "Starting unitgrade evaluation...") - -sys.stderr = sys.stdout -wdir = os.getcwd() - -def pfiles(): - print("> Files in dir:") - for f in glob.glob(wdir + "/*"): - print(f) - print("---") - -student_token_file = 'Report1_handin.token' -instructor_grade_script = 'report1_grade.py' -grade_file_relative_destination = "cs101/report1_grade.py" - -# with open(student_token_file, 'rb') as f: -# results = pickle.load(f) -host_tmp_dir = wdir + "/tmp" - -if not verbose: - pfiles() - print(f"{host_tmp_dir=}") - print(f"{student_token_file=}") - print(f"{instructor_grade_script=}") - -command, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination) -command = f"cd tmp && {command} --noprogress --autolab" - -def rcom(cm): - # print(f"running... ", cm) - # start = time.time() - rs = subprocess.run(cm, capture_output=True, text=True, shell=True) - print(rs.stdout) - - if len(rs.stderr) > 0: - print(tag, "There were errors in executing the file:") - print(rs.stderr) - # print(rs) - # print("result of running command was", rs.stdout, "err", rs.stderr, "time", time.time() - start) - -# results, _ = load_token(student_token_file) -# sources = results['sources'][0] - - -start = time.time() -rcom(command) -# pfiles() -# for f in glob.glob(host_tmp_dir + "/programs/*"): -# print("programs/", f) -# print("---") -ls = glob.glob(token) -# print(ls) -f = ls[0] -# with open(f, 'rb') as f: -# results = pickle.load(f) - -results, _ = load_token(ls[0]) - -# print("results") -# print(results.keys()) -if verbose: - print(f"{token=}") - print(results['total']) -# if os.path.exists(host_tmp_dir): -# shutil.rmtree(host_tmp_dir) -# with io.BytesIO(sources['zipfile']) as zb: -# with zipfile.ZipFile(zb) as zip: -# zip.extractall(host_tmp_dir -# print("="*10) -# print('{"scores": {"Correctness": 100, "Problem 1": 4}}') -## Format the scores here. - - -# sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] -# ss = ", ".join([f'"{t}": {s}' for t, s in sc]) -# scores = '{"scores": {' + ss + '}}' -# print('{"_presentation": "semantic"}') -# print(scores) - -from unitgrade_private.autolab.autolab import format_autolab_json -format_autolab_json(results) \ No newline at end of file diff --git a/examples/autolab_example/tmp/cs101/cs101-handout/report1_grade.py b/examples/autolab_example/tmp/cs101/cs101-handout/report1_grade.py deleted file mode 100644 index 43da14b77ba5b271afb542e4ae2e098397dc3fd8..0000000000000000000000000000000000000000 --- a/examples/autolab_example/tmp/cs101/cs101-handout/report1_grade.py +++ /dev/null @@ -1,3 +0,0 @@ -''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' -import bz2, base64 -exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/autolab_example/tmp/cs101/cs101-handout/student_sources.zip b/examples/autolab_example/tmp/cs101/cs101-handout/student_sources.zip deleted file mode 100644 index 05c4f8a40e320734b494a8f9a64e6f69cbe83561..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example/tmp/cs101/cs101-handout/student_sources.zip and /dev/null differ diff --git a/examples/autolab_example/tmp/cs101/src/Report1_handin.token b/examples/autolab_example/tmp/cs101/src/Report1_handin.token index ca16ac4aa865f72adb0f380c2ab7795f57d25190..07bb48e8591f6be65007302b6c5b203ecb7f15b4 100644 --- a/examples/autolab_example/tmp/cs101/src/Report1_handin.token +++ b/examples/autolab_example/tmp/cs101/src/Report1_handin.token @@ -1,5 +1,27 @@ # This file contains your results. Do not edit its content. Simply upload it as it is. -### Content of cs101/report1.py ### +### Content of cs101\homework1.py ### + +def reverse_list(mylist): + """ + Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. + reverse_list([1,2,3]) should return [3,2,1] (as a list). + """ + # TODO: 1 lines missing. + raise NotImplementedError("Implement function body") + +def add(a,b): + """ Given two numbers `a` and `b` this function should simply return their sum: + > add(a,b) = a+b """ + # TODO: 1 lines missing. + raise NotImplementedError("Implement function body") + +if __name__ == "__main__": + # Example usage: + print(f"Your result of 2 + 2 = {add(2,2)}") + print(f"Reversing a small list", reverse_list([2,3,5,7])) + + +### Content of cs101\report1.py ### import unittest from unitgrade import Report, evaluate_report_student @@ -22,170 +44,149 @@ class Report1(Report): if __name__ == "__main__": evaluate_report_student(Report1()) # unittest.main(verbosity=2) # Uncomment to run everything as a regular unittest - - -### Content of cs101/homework1.py ### - -def reverse_list(mylist): - """ - Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. - reverse_list([1,2,3]) should return [3,2,1] (as a list). - """ - # TODO: 1 lines missing. - raise NotImplementedError("Implement function body") - -def add(a,b): - """ Given two numbers `a` and `b` this function should simply return their sum: - > add(a,b) = a+b """ - # TODO: 1 lines missing. - raise NotImplementedError("Implement function body") - -if __name__ == "__main__": - # Example usage: - print(f"Your result of 2 + 2 = {add(2,2)}") - print(f"Reversing a small list", reverse_list([2,3,5,7])) ---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -eb9da76a1e7a395c1f3516d4b038c32e3d0d2cfce1ed36315a690955abeb5ccb3e7faa69b0e528465e71805049b8e7c6268b49ce2099794375b6a4f6fac2dcf6 25472 +83d63cccaf57bcf93a92ecaf339ca42b77e2ff00cf0ce798bb293f511473af5afd4f045436f43ba92ae06c6eaefee02a3445dbfd941e74175ef3f9c8181bceb0 25628 ---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file +.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. \ No newline at end of file diff --git a/examples/autolab_example/tmp/cs101/src/docker_helpers.py b/examples/autolab_example/tmp/cs101/src/docker_helpers.py index b6fdf76538c9cc454a6dbf3add2d9deac58e8310..d25500f840df4acd5522542811fb6086a8b9dc7b 100644 --- a/examples/autolab_example/tmp/cs101/src/docker_helpers.py +++ b/examples/autolab_example/tmp/cs101/src/docker_helpers.py @@ -1,14 +1,40 @@ -# from cs202courseware.ug2report1 import Report1 - -import pickle import os import glob import shutil import time import zipfile import io -import inspect import subprocess +import urllib.request + + +def download_docker_images(destination=None): + if destination is None: + destination = os.getcwd() + if not os.path.exists(destination): + os.makedirs(destination) + + print('Beginning file download with urllib2...') + url = 'https://gitlab.compute.dtu.dk/tuhe/unitgrade_private/-/archive/master/unitgrade_private-master.zip?path=docker_images' + result, headers = urllib.request.urlretrieve(url) + + ex = result +"_extract" + zf = zipfile.ZipFile(result) + zf.extractall(path=ex) + dockers = [f for f in zf.namelist() if f[-1] == "/" and len( [s for s in f if s == "/"] ) == 3] + for f in dockers: # zf.namelist(): + tmp_dir = ex + "/" + f + if os.path.isdir(tmp_dir): + dest = destination +"/"+os.path.basename(tmp_dir[:-1]) + + if os.path.isdir(dest): + print("> Destination for docker image", dest, "exists. Skipping download.") + else: + print("> Extracting docker image", os.path.basename(f[:-1]), "to", dest) + shutil.copytree(tmp_dir, dest) + # zf.extract(f, path=destination) + a = 234 + def compile_docker_image(Dockerfile, tag=None): assert os.path.isfile(Dockerfile) diff --git a/examples/autolab_example/tmp/cs101/src/driver_python.py b/examples/autolab_example/tmp/cs101/src/driver_python.py index ac69f8d95b6e5fe2d25d6a08fe0edc51aca88000..95cc2b1955810b2abe92b7cc4265b488a9d1b285 100644 --- a/examples/autolab_example/tmp/cs101/src/driver_python.py +++ b/examples/autolab_example/tmp/cs101/src/driver_python.py @@ -1,13 +1,10 @@ import os import glob import sys -import pickle -# import io import subprocess +from unitgrade_private.autolab.autolab import format_autolab_json from unitgrade_private.docker_helpers import student_token_file_runner from unitgrade_private import load_token - -# import docker_helpers import time verbose = False @@ -28,10 +25,7 @@ def pfiles(): student_token_file = 'Report1_handin.token' instructor_grade_script = 'report1_grade.py' -grade_file_relative_destination = "cs101/report1_grade.py" - -# with open(student_token_file, 'rb') as f: -# results = pickle.load(f) +grade_file_relative_destination = "cs101\report1_grade.py" host_tmp_dir = wdir + "/tmp" if not verbose: @@ -44,40 +38,24 @@ command, token = student_token_file_runner(host_tmp_dir, student_token_file, ins command = f"cd tmp && {command} --noprogress --autolab" def rcom(cm): - # print(f"running... ", cm) - # start = time.time() rs = subprocess.run(cm, capture_output=True, text=True, shell=True) print(rs.stdout) - if len(rs.stderr) > 0: print(tag, "There were errors in executing the file:") print(rs.stderr) - # print(rs) - # print("result of running command was", rs.stdout, "err", rs.stderr, "time", time.time() - start) - -# results, _ = load_token(student_token_file) -# sources = results['sources'][0] - start = time.time() rcom(command) -# pfiles() -# for f in glob.glob(host_tmp_dir + "/programs/*"): -# print("programs/", f) -# print("---") ls = glob.glob(token) -# print(ls) f = ls[0] -# with open(f, 'rb') as f: -# results = pickle.load(f) - results, _ = load_token(ls[0]) -# print("results") -# print(results.keys()) if verbose: print(f"{token=}") print(results['total']) + +format_autolab_json(results) + # if os.path.exists(host_tmp_dir): # shutil.rmtree(host_tmp_dir) # with io.BytesIO(sources['zipfile']) as zb: @@ -87,12 +65,8 @@ if verbose: # print('{"scores": {"Correctness": 100, "Problem 1": 4}}') ## Format the scores here. - # sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] # ss = ", ".join([f'"{t}": {s}' for t, s in sc]) # scores = '{"scores": {' + ss + '}}' # print('{"_presentation": "semantic"}') # print(scores) - -from unitgrade_private.autolab.autolab import format_autolab_json -format_autolab_json(results) \ No newline at end of file diff --git a/examples/autolab_example/tmp/cs101/src/driver_python.py-handout b/examples/autolab_example/tmp/cs101/src/driver_python.py-handout index ac69f8d95b6e5fe2d25d6a08fe0edc51aca88000..95cc2b1955810b2abe92b7cc4265b488a9d1b285 100644 --- a/examples/autolab_example/tmp/cs101/src/driver_python.py-handout +++ b/examples/autolab_example/tmp/cs101/src/driver_python.py-handout @@ -1,13 +1,10 @@ import os import glob import sys -import pickle -# import io import subprocess +from unitgrade_private.autolab.autolab import format_autolab_json from unitgrade_private.docker_helpers import student_token_file_runner from unitgrade_private import load_token - -# import docker_helpers import time verbose = False @@ -28,10 +25,7 @@ def pfiles(): student_token_file = 'Report1_handin.token' instructor_grade_script = 'report1_grade.py' -grade_file_relative_destination = "cs101/report1_grade.py" - -# with open(student_token_file, 'rb') as f: -# results = pickle.load(f) +grade_file_relative_destination = "cs101\report1_grade.py" host_tmp_dir = wdir + "/tmp" if not verbose: @@ -44,40 +38,24 @@ command, token = student_token_file_runner(host_tmp_dir, student_token_file, ins command = f"cd tmp && {command} --noprogress --autolab" def rcom(cm): - # print(f"running... ", cm) - # start = time.time() rs = subprocess.run(cm, capture_output=True, text=True, shell=True) print(rs.stdout) - if len(rs.stderr) > 0: print(tag, "There were errors in executing the file:") print(rs.stderr) - # print(rs) - # print("result of running command was", rs.stdout, "err", rs.stderr, "time", time.time() - start) - -# results, _ = load_token(student_token_file) -# sources = results['sources'][0] - start = time.time() rcom(command) -# pfiles() -# for f in glob.glob(host_tmp_dir + "/programs/*"): -# print("programs/", f) -# print("---") ls = glob.glob(token) -# print(ls) f = ls[0] -# with open(f, 'rb') as f: -# results = pickle.load(f) - results, _ = load_token(ls[0]) -# print("results") -# print(results.keys()) if verbose: print(f"{token=}") print(results['total']) + +format_autolab_json(results) + # if os.path.exists(host_tmp_dir): # shutil.rmtree(host_tmp_dir) # with io.BytesIO(sources['zipfile']) as zb: @@ -87,12 +65,8 @@ if verbose: # print('{"scores": {"Correctness": 100, "Problem 1": 4}}') ## Format the scores here. - # sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] # ss = ", ".join([f'"{t}": {s}' for t, s in sc]) # scores = '{"scores": {' + ss + '}}' # print('{"_presentation": "semantic"}') # print(scores) - -from unitgrade_private.autolab.autolab import format_autolab_json -format_autolab_json(results) \ No newline at end of file diff --git a/examples/autolab_example/tmp/cs101/src/student_sources.zip b/examples/autolab_example/tmp/cs101/src/student_sources.zip index 05c4f8a40e320734b494a8f9a64e6f69cbe83561..5c534a2a9dd368e3b46691167b3447b3e11b66c4 100644 Binary files a/examples/autolab_example/tmp/cs101/src/student_sources.zip and b/examples/autolab_example/tmp/cs101/src/student_sources.zip differ diff --git a/examples/autolab_example/tmp/cs102/autograde.tar b/examples/autolab_example/tmp/cs102/autograde.tar deleted file mode 100644 index 9a0ec1b66ecc0e3bbf5bb98f2bb21f023ebd37bd..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example/tmp/cs102/autograde.tar and /dev/null differ diff --git a/examples/autolab_example/tmp/cs102/cs102-handout.tar b/examples/autolab_example/tmp/cs102/cs102-handout.tar deleted file mode 100644 index 9a0ec1b66ecc0e3bbf5bb98f2bb21f023ebd37bd..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example/tmp/cs102/cs102-handout.tar and /dev/null differ diff --git a/examples/autolab_example/tmp/cs102/cs102-handout/Makefile b/examples/autolab_example/tmp/cs102/cs102-handout/Makefile deleted file mode 100644 index 6d094e3a3869dfe9ee9e51a06150c6999c402286..0000000000000000000000000000000000000000 --- a/examples/autolab_example/tmp/cs102/cs102-handout/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -# Makefile for the Hello Lab -all: - echo "Makefile called... it is empty so far. " - #gcc hello3.c -o hello3 - -clean: - rm -rf *~ hello3 diff --git a/examples/autolab_example/tmp/cs102/cs102-handout/README b/examples/autolab_example/tmp/cs102/cs102-handout/README deleted file mode 100644 index 8eea4bef3abb4665581173c4843b6155b3dc59d2..0000000000000000000000000000000000000000 --- a/examples/autolab_example/tmp/cs102/cs102-handout/README +++ /dev/null @@ -1,15 +0,0 @@ -This directory contains all of the code files for the Hello Lab, -including the files that are handed out to students. - -Files: - -# Autograder and solution files -Makefile Makefile and ... -README ... README for this directory -driver.sh* Autograder -hello.c Solution hello.c file - -# Files that are handed out to students -Makefile-handout Makefile and ... -README-handout ... README handed out to students -hello.c-handout Blank hello.c file handed out to students diff --git a/examples/autolab_example/tmp/cs102/cs102-handout/Report2_handin.token b/examples/autolab_example/tmp/cs102/cs102-handout/Report2_handin.token deleted file mode 100644 index 2525f056eb68e1cf7e2ffbefdbb2a28282c1a5fb..0000000000000000000000000000000000000000 --- a/examples/autolab_example/tmp/cs102/cs102-handout/Report2_handin.token +++ /dev/null @@ -1,252 +0,0 @@ -# This file contains your results. Do not edit its content. Simply upload it as it is. -### Content of cs102/report2.py ### - -from unitgrade.framework import Report -from unitgrade.evaluate import evaluate_report_student -from cs102.homework1 import add, reverse_list -from unitgrade import UTestCase, cache - -class Week1(UTestCase): - def test_add(self): - self.assertEqualC(add(2,2)) - self.assertEqualC(add(-100, 5)) - - def test_reverse(self): - self.assertEqualC(reverse_list([1, 2, 3])) - - def test_output_capture(self): - with self.capture() as out: - print("hello world 42") # Genereate some output (i.e. in a homework script) - self.assertEqual(out.numbers[0], 42) # out.numbers is a list of all numbers generated - self.assertEqual(out.output, "hello world 42") # you can also access the raw output. - -class Week1Titles(UTestCase): - """ The same problem as before with nicer titles """ - def test_add(self): - """ Test the addition method add(a,b) """ - self.assertEqualC(add(2,2)) - print("output generated by test") - self.assertEqualC(add(-100, 5)) - # self.assertEqual(2,3, msg="This test automatically fails.") - - def test_reverse(self): - ls = [1, 2, 3] - reverse = reverse_list(ls) - self.assertEqualC(reverse) - # Although the title is set after the test potentially fails, it will *always* show correctly for the student. - self.title = f"Checking if reverse_list({ls}) = {reverse}" # Programmatically set the title - - def ex_test_output_capture(self): - with self.capture() as out: - print("hello world 42") # Genereate some output (i.e. in a homework script) - self.assertEqual(out.numbers[0], 42) # out.numbers is a list of all numbers generated - self.assertEqual(out.output, "hello world 42") # you can also access the raw output. - - -class Question2(UTestCase): - @cache - def my_reversal(self, ls): - # The '@cache' decorator ensures the function is not run on the *students* computer - # Instead the code is run on the teachers computer and the result is passed on with the - # other pre-computed results -- i.e. this function will run regardless of how the student happens to have - # implemented reverse_list. - return reverse_list(ls) - - def test_reverse_tricky(self): - ls = (2,4,8) - ls2 = self.my_reversal(tuple(ls)) # This will always produce the right result, [8, 4, 2] - print("The correct answer is supposed to be", ls2) # Show students the correct answer - self.assertEqualC(reverse_list(ls)) # This will actually test the students code. - return "Buy world!" # This value will be stored in the .token file - - -import cs102 -class Report2(Report): - title = "CS 102 Report 2" - questions = [(Week1, 10), (Week1Titles, 6)] - pack_imports = [cs102] - -if __name__ == "__main__": - evaluate_report_student(Report2(), unmute=True) - - -### Content of cs102/homework1.py ### - -def reverse_list(mylist): - """ - Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. - reverse_list([1,2,3]) should return [3,2,1] (as a list). - """ - # TODO: 1 lines missing. - raise NotImplementedError("Implement function body") - -def add(a,b): - """ Given two numbers `a` and `b` this function should simply return their sum: - > add(a,b) = a+b """ - # TODO: 1 lines missing. - raise NotImplementedError("Implement function body") - -if __name__ == "__main__": - # Example usage: - print(f"Your result of 2 + 2 = {add(2,2)}") - print(f"Reversing a small list", reverse_list([2,3,5,7])) ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -4a1695ef1eef9700c3f56f94a20514c7948f8f78b59a251471f50253d05ed006ab3b7e6b459f2a01e7e2851c26d0e6b2482e640c2423c63c4ecb9212b25653b0 28136 ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file diff --git a/examples/autolab_example/tmp/cs102/cs102-handout/docker_helpers.py b/examples/autolab_example/tmp/cs102/cs102-handout/docker_helpers.py deleted file mode 100644 index b6fdf76538c9cc454a6dbf3add2d9deac58e8310..0000000000000000000000000000000000000000 --- a/examples/autolab_example/tmp/cs102/cs102-handout/docker_helpers.py +++ /dev/null @@ -1,146 +0,0 @@ -# from cs202courseware.ug2report1 import Report1 - -import pickle -import os -import glob -import shutil -import time -import zipfile -import io -import inspect -import subprocess - -def compile_docker_image(Dockerfile, tag=None): - assert os.path.isfile(Dockerfile) - base = os.path.dirname(Dockerfile) - if tag == None: - tag = os.path.basename(base) - os.system(f"cd {base} && docker build --tag {tag} .") - return tag - - -def student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination): - """ - - Use by autolab code. - - :param Dockerfile_location: - :param host_tmp_dir: - :param student_token_file: - :param ReportClass: - :param instructor_grade_script: - :return: - """ - assert os.path.exists(student_token_file) - assert os.path.exists(instructor_grade_script) - start = time.time() - from unitgrade_private import load_token - results, _ = load_token(student_token_file) - # with open(student_token_file, 'rb') as f: - # results = pickle.load(f) - sources = results['sources'][0] - - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - # Done extracting the zip file! Now time to move the (good) report test class into the location. - - gscript = instructor_grade_script - print(f"{sources['report_relative_location']=}") - print(f"{sources['name']=}") - - print("Now in docker_helpers.py") - print(f'{gscript=}') - print(f'{instructor_grade_script=}') - gscript_destination = host_tmp_dir + "/" + grade_file_relative_destination - print(f'{gscript_destination=}') - - shutil.copy(gscript, gscript_destination) - - # Now everything appears very close to being set up and ready to roll!. - d = os.path.normpath(grade_file_relative_destination).split(os.sep) - d = d[:-1] + [os.path.basename(instructor_grade_script)[:-3]] - pycom = ".".join(d) - - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker python3 -m cs202courseware.ug2report1_grade - """ - pycom = "python3 -m " + pycom # pycom[:-3] - print(f"{pycom=}") - - token_location = host_tmp_dir + "/" + os.path.dirname( grade_file_relative_destination ) + "/*.token" - - elapsed = time.time() - start - # print("Elapsed time is", elapsed) - return pycom, token_location - - -def docker_run_token_file(Dockerfile_location, host_tmp_dir, student_token_file, tag=None, instructor_grade_script=None, fix_user=True): - """ - This thingy works: - - To build the image, run: - docker build --tag python-docker . - - To run the app run: - - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker > output.log - - """ - # A bunch of tests. This is going to be great! - assert os.path.exists(Dockerfile_location) - start = time.time() - - # with open(student_token_file, 'rb') as f: - # results = pickle.load(f) - from unitgrade_private import load_token - results, _ = load_token(student_token_file) - - sources = results['sources'][0] - - if os.path.exists(host_tmp_dir): - shutil.rmtree(host_tmp_dir) - - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - # Done extracting the zip file! Now time to move the (good) report test class into the location. - gscript = instructor_grade_script - - student_grade_script = host_tmp_dir + "/" + sources['report_relative_location'] - instructor_grade_script = os.path.dirname(student_grade_script) + "/"+os.path.basename(gscript) - shutil.copy(gscript, instructor_grade_script) - - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/home python-docker python3 -m cs202courseware.ug2report1_grade - """ - if tag is None: - dockname = os.path.basename( os.path.dirname(Dockerfile_location) ) - else: - dockname = tag - - tmp_grade_file = sources['name'] + "/" + sources['report_relative_location'] - - pycom = ".".join( sources['report_module_specification'][:-1] + [os.path.basename(gscript)[:-3],] ) - pycom = "python3 -m " + pycom - - if fix_user: - user_cmd = ' --user "$(id -u):$(id -g)" ' - else: - user_cmd = '' - tmp_path = os.path.abspath(host_tmp_dir).replace("\\", "/") - dcom = f"docker run {user_cmd} -v {tmp_path}:/home {dockname} {pycom}" - cdcom = f"cd {os.path.dirname(Dockerfile_location)}" - fcom = f"{cdcom} && {dcom}" - print("> Running docker command") - print(fcom) - init = time.time() - start - # thtools.execute_command(fcom.split()) - subprocess.check_output(fcom, shell=True).decode("utf-8") - host_tmp_dir +"/" + os.path.dirname(tmp_grade_file) + "/" - tokens = glob.glob( os.path.dirname(instructor_grade_script) + "/*.token" ) - for t in tokens: - print("Source image produced token", t) - elapsed = time.time() - start - print("Elapsed time is", elapsed, f"({init=} seconds)") - return tokens[0] diff --git a/examples/autolab_example/tmp/cs102/cs102-handout/driver_python.py b/examples/autolab_example/tmp/cs102/cs102-handout/driver_python.py deleted file mode 100644 index ef526b72b4b833026771966c6c3fae653ea1f70c..0000000000000000000000000000000000000000 --- a/examples/autolab_example/tmp/cs102/cs102-handout/driver_python.py +++ /dev/null @@ -1,98 +0,0 @@ -import os -import glob -import sys -import pickle -# import io -import subprocess -from unitgrade_private.docker_helpers import student_token_file_runner -from unitgrade_private import load_token - -# import docker_helpers -import time - -verbose = False -tag = "[driver_python.py]" - -if not verbose: - print("="*10) - print(tag, "Starting unitgrade evaluation...") - -sys.stderr = sys.stdout -wdir = os.getcwd() - -def pfiles(): - print("> Files in dir:") - for f in glob.glob(wdir + "/*"): - print(f) - print("---") - -student_token_file = 'Report2_handin.token' -instructor_grade_script = 'report2_grade.py' -grade_file_relative_destination = "cs102/report2_grade.py" - -# with open(student_token_file, 'rb') as f: -# results = pickle.load(f) -host_tmp_dir = wdir + "/tmp" - -if not verbose: - pfiles() - print(f"{host_tmp_dir=}") - print(f"{student_token_file=}") - print(f"{instructor_grade_script=}") - -command, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination) -command = f"cd tmp && {command} --noprogress --autolab" - -def rcom(cm): - # print(f"running... ", cm) - # start = time.time() - rs = subprocess.run(cm, capture_output=True, text=True, shell=True) - print(rs.stdout) - - if len(rs.stderr) > 0: - print(tag, "There were errors in executing the file:") - print(rs.stderr) - # print(rs) - # print("result of running command was", rs.stdout, "err", rs.stderr, "time", time.time() - start) - -# results, _ = load_token(student_token_file) -# sources = results['sources'][0] - - -start = time.time() -rcom(command) -# pfiles() -# for f in glob.glob(host_tmp_dir + "/programs/*"): -# print("programs/", f) -# print("---") -ls = glob.glob(token) -# print(ls) -f = ls[0] -# with open(f, 'rb') as f: -# results = pickle.load(f) - -results, _ = load_token(ls[0]) - -# print("results") -# print(results.keys()) -if verbose: - print(f"{token=}") - print(results['total']) -# if os.path.exists(host_tmp_dir): -# shutil.rmtree(host_tmp_dir) -# with io.BytesIO(sources['zipfile']) as zb: -# with zipfile.ZipFile(zb) as zip: -# zip.extractall(host_tmp_dir -# print("="*10) -# print('{"scores": {"Correctness": 100, "Problem 1": 4}}') -## Format the scores here. - - -# sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] -# ss = ", ".join([f'"{t}": {s}' for t, s in sc]) -# scores = '{"scores": {' + ss + '}}' -# print('{"_presentation": "semantic"}') -# print(scores) - -from unitgrade_private.autolab.autolab import format_autolab_json -format_autolab_json(results) \ No newline at end of file diff --git a/examples/autolab_example/tmp/cs102/cs102-handout/report2_grade.py b/examples/autolab_example/tmp/cs102/cs102-handout/report2_grade.py deleted file mode 100644 index 90155184105bf95b700d6eaa30487d9ae8045eab..0000000000000000000000000000000000000000 --- a/examples/autolab_example/tmp/cs102/cs102-handout/report2_grade.py +++ /dev/null @@ -1,3 +0,0 @@ -''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' -import bz2, base64 -exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/autolab_example/tmp/cs102/cs102-handout/student_sources.zip b/examples/autolab_example/tmp/cs102/cs102-handout/student_sources.zip deleted file mode 100644 index 4f23b80e2a4ed036191e6513bce179757f1687d8..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example/tmp/cs102/cs102-handout/student_sources.zip and /dev/null differ diff --git a/examples/autolab_example/tmp/cs102/src/Report2_handin.token b/examples/autolab_example/tmp/cs102/src/Report2_handin.token index 2525f056eb68e1cf7e2ffbefdbb2a28282c1a5fb..f3f224f6ad987d8995434e349f6fc3f9bab8abff 100644 --- a/examples/autolab_example/tmp/cs102/src/Report2_handin.token +++ b/examples/autolab_example/tmp/cs102/src/Report2_handin.token @@ -1,5 +1,27 @@ # This file contains your results. Do not edit its content. Simply upload it as it is. -### Content of cs102/report2.py ### +### Content of cs102\homework1.py ### + +def reverse_list(mylist): + """ + Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. + reverse_list([1,2,3]) should return [3,2,1] (as a list). + """ + # TODO: 1 lines missing. + raise NotImplementedError("Implement function body") + +def add(a,b): + """ Given two numbers `a` and `b` this function should simply return their sum: + > add(a,b) = a+b """ + # TODO: 1 lines missing. + raise NotImplementedError("Implement function body") + +if __name__ == "__main__": + # Example usage: + print(f"Your result of 2 + 2 = {add(2,2)}") + print(f"Reversing a small list", reverse_list([2,3,5,7])) + + +### Content of cs102\report2.py ### from unitgrade.framework import Report from unitgrade.evaluate import evaluate_report_student @@ -68,185 +90,164 @@ class Report2(Report): if __name__ == "__main__": evaluate_report_student(Report2(), unmute=True) - - -### Content of cs102/homework1.py ### - -def reverse_list(mylist): - """ - Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. - reverse_list([1,2,3]) should return [3,2,1] (as a list). - """ - # TODO: 1 lines missing. - raise NotImplementedError("Implement function body") - -def add(a,b): - """ Given two numbers `a` and `b` this function should simply return their sum: - > add(a,b) = a+b """ - # TODO: 1 lines missing. - raise NotImplementedError("Implement function body") - -if __name__ == "__main__": - # Example usage: - print(f"Your result of 2 + 2 = {add(2,2)}") - print(f"Reversing a small list", reverse_list([2,3,5,7])) ---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -4a1695ef1eef9700c3f56f94a20514c7948f8f78b59a251471f50253d05ed006ab3b7e6b459f2a01e7e2851c26d0e6b2482e640c2423c63c4ecb9212b25653b0 28136 +946a5df4159cf8d49493ec1c104df7a38fef1e4afb46eb74f8037d59a2ec0d1338aef97a4c6e5bf6d341f3060ecda5d2f1d69133b7d94d0dd01c22606d75072b 28424 ---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file +./Td6WFoAAATm1rRGAgAhARYAAAB0L+Wj4IfzUwNdAEABDnyUW7561cV3uyv9rA3VXYLFhUS3T/okILaefeqBH7m5UH1VJ6yo4H95hUEkLauA2HcMpkutjy/qfAHHmCdKaLrheeTJ6VLPEVpb/2zlWh7PfndGxzU1Kp+/yWeZvVm+A8IXYAo +9M2na6wn1mYkX4e4t+v26oEpkdEZLhJJ9Sx4Fy+YNVOXoKoQ9t02ZB3UW2lH5/f0TAH0jUwH7DrviYQ1LseoZ/ELUWph2w5hlNVKp0teDl4BfPJJBbpscINCy2jHwhvp+ffXscgdttuvYzRTcAxztv3M1XDTofFXqV8SMhCGqPfEK7RxDJn9 +xolpVGNqK2WD8I6KKdUcAquakEStmdW5U2IaYT4WDRo0q/fXXucIn07MxKx+9N9+cWvEun6wWYjhtcv/1kLb1a6xu5vh44FhfCF9VLyvmT5P1HonstQTvz1mU9QyGA0il/aIhBSa+Hnqr+7YuyXfUdJJWJwVk9b+N3NXAxE/oPsEdWdNXJSK +0U4MM5o3gmVdvWtKO5fN7a7RDCuGTagSNw3D/mfVFyW7Pc5aE9MBgadd1xq4QCayxT4y0NdMnlvNGhkLtr8/qxGqxYcY2x4Zw6Yc+FrRX+NPDGcgZOKEs/LJBXiI8cdYTUQcN1tsrspjV8yb6LMLdLqimwgMqNcjdlW4mkpn2HGGzatbIGnP +fqZvonIastmYmmR/poyOcnt0LjLw/XhMiK2/Cwy1Rt1FiDSk+n7N4K24oJiI28RxewusJT6QmAba2jO10pshpwTfI6IU/FICPtQXyMFN13wgy6eejmH94NBTxbIp4GLvhXoIvY+JR3q8fyD4jE7OGN5N/IeZpWDgpecyAY7O7roQvhdbXWkg +1F/dyReS6WMotki4srUEkK+n1B0I4yYIZ3J3EbQMviBKNs+pcyk1AEWXoarYfYpqMMq7mNesEHBOQlMU1kfHW47ye8bjou9vMwQh2puih+MNXs4Dl5gKZ9N6bEWK03L9CwG3kd3bYurA6lFZRi5/NnMfCUB/jOwD5WrPsoo8n9bLxs7JTPMs +mYWtNc1ZXGhsmrh8Q4pLJtZ1E8d1PhfogC5wzDAHENZCwpmsdWgpm57maatjsyJcCgp+XZYw2nRLQX6sBwZIqe1cIJcv7IywUIA390HqxHH5fwu5OBUVsMWQSWgovr1wu3Y1aSJGCp5plLWHRUfL/Cj3Vd9GtNgt6j5cz5Uy/N3wsvoPJBc7 +9QXes/lYmqtQz/2FPQz02e7DtK0W0MYdkQJIqEsZu7YxnSITG18n5MCYIhSbK3v3GQP3kkuCg6m6u2YD+JmHYG5sfdZx5VY2aqgbsKEZlrkXt/SU2xhl+idyBcsOyCUywvZiomoe3U09PSfolXmhFHsFDdakI/1y1NAMAMb7jOLQ7E0yXbpF +AsnzzWbo59iWVVln8zSUZRGv30piUpjPYmiPBzV7mfZmAgaN1wGtcdhXkxMhRMYdvvmlpClhXsqq0t8ZG/XgF3iVeyL1EVdlWHvgDEi/y9uQFVcH6J11OkHQ1dQXwc5BQl49k9CTqifW0EdcQdm+S2dcI3ed356txVJxERzSkPlQhsRcEGvQ +8w7o0arX3AKCB8E72XZV2rHoojJY6BHjQPn+qqfp2fNhm6z9e8PtbMpbQn2915naTjMMMZvhrpFi1JB7dZ/2QBFJtv7hHVBZDM+g0P7zUNsrJw5mbhdNGleK6x3D2PC1gQlliA08DiG8IGYvBgC3VOsGPyEjSsmPj01CZQHBmsaFsholwEYt +hKa1N3Q9/KFkPrpjH0cmYPe+KeYyFM6aqWl3i+Wsw2Vjvvd+RPhmBtw+hCZw7pou3icKQa0t+oo3dguMcraOaRmsaAZBUCuIsBWKQCHKyfHJolvp2lHis0kzA0hWB2/0a5QdcnQ4t15iIAR0FzCrp/GpBD9bgmWwbuS1AQGj4UF7LXZz10sN +zw4n/huK0ZLldvKNoOt247YxfDWWmdGxpLxtrk9W1OoAxo8WPOW0z95SyhQnhIRcTg7ktOg7K98jUNzg0+UulvlHMW+jgEitl8OnqwTjT0dyRD1FlS/D7eapj0AF0FF/OsBnVqGcE2kLJNfu/xqCkZk9D0S8KG20fRTD0TR76ZRgxeh33jht +aUGlSJ5RFN5sd399qj5x/oQuxInXzNxwlXXwUIliIHot8nCZDPCJ//iZjoJNgmlyfK6efZM6+MBNXRaZac/pF5MrqnovQDc+5qNMunhW6ErahUnJFXVvvdSzO0uY3fguqDrsmahN51VtXeURBzaXRCU9FkZ+aIYa03dWB6g65czRjQl3qzG0 +rEoKM4yJjU2vaKpvLL2jRSdN79AoQ85DIwbqYeHOenmJX3pRXE92keFKffDVNMkswuwyWxmdTBJeotSEH5LJ9G99BzWrp2yc+Kd83ZGwDaFgf9TKMGnUlKYBhG3ovETCGdquUgsMN0TOU7d63/5NK6GYeoUbo2BirGYtQjs5IWyGhHOio01Q ++gG25ysn3tRcaU88+LKSX/ZU5MyZo/JJaRiYFpkj1kmIo3/gtUbaV5Pb/0Q4AdC7H9uoqkgcXrXzDTj6ljFsCx5jIexQPZWk3a/2xx369sV+L8m1nJD6hZ1/Te4NbooBfH4rv95uTFOsXKyBwbUKWdLhroQLBmsKFoMdfAuYw+bVO3thWUYy +MRzw0chGFKPkxtw+BiBvVn667VRTXPENXTI4wGBvfzUbJEacdlaJa1frGRHzW92xHkegl7FiVff5GsNdrU2sWoPf5FIBgeZqpns1nLQIqxeHdi8W6Vn1Vp8DgJmcqtJ29Yob8F0kAKcQAb5IPb1ECqVMo4ONBT3K+OkeeAQ0I289pTarjsSV +wuGDRfHhnisoWvuzEmkBLCEpv3eosHy6Bu6KVf1hwd2uiMTL/NSXW18yvu3a6u5s48Mp0QVg4JpBmc9Dghz8TDVhf688cN9+YodFftKXwKCVjWdN6M2BwcwmG8VlDC/tohE9cqT0FOnflyYdZ5IA3qjYSuJQdcg2UZbZQn8ccu0qathA1MNH +1EU0ah07zS5lSSUNPoXO4eHHC7kzcIwf4lhnC4UytL3Er+ZWJUellnoPcRwW7/Zkf3LulZVygjbq12YlnJ9uuYLT+iQIfzlw7T5I+5xBpdYQzoRfTv9ftHq9uRwSzQQ3B/FSfE9nVnkMdE6SycGFdGveSr6fxfc3/G4zmbSMXAYJrvZFsb5Q +CgEHGCjbTzsCxf8PMB1VO0tq6tOfj5ihL9WfsJgxgEPswJdPY+Itb5kauWR1U5czUbp7IoZJ2MAzEZQiiTuesqqS9FVe55MZKLuL9ogF/v3tB67rlOozvS71EJ0EGFLcD90nbn99KLFxOmk/vEuefF0CjyEbxmtGKQhb2sGYU3w4L1Csb5Jc +JColS2kLVhvatKvZ3jqKE71iTaSyB8oP8dhve0EZLUl2bYL3ue6w2Hrz5ARYSOtIF0CjlvgkUkPYqJJe3PxzNINA8WU7lB0LX9WnreRnsNmPZuz7MdRLsHcjh57gnOLeIDAxZ+yHq55P/UHhiBO/lY9Z8p9XAjDtfcRhpDgNU0LRKI+01v5K +sbqzRNoqZ8mNdVBA1yBsC3kmVR7aSgCnWugMJxONu9Zh8yK4/Tif2F4OORCveH9yXhpGc+MDL8Mc2c+dlAKwawgam7aTnTYqbPZhY64KTzZwm0SEpV9JZ7l19ns3Q2hM3sk3Xx0LuLtutsk0mExmv1Ip+wVqAtt36+0WldZ3ZEPxo/9tz+X3 +CsquXLzdQVoUlrN/peEqc8bzH8j0iN+xlkvo50jPT7ZvsEBYhur4lwo3RF02IJBEHHFLyFuIPP/DEURa6wtsaFgtWlKijXOTifmI9EJrwtk42973GHIbAfD5DuI2eNyfly3obExiXJ/SfAMeNJm1E78DuFi5H8LGJxlUBygH0oWjDsVctPNH +aQj7b/2QO0TH7jAZE9YRRbTeosZOjQjEPzjA50cVn3/xHAjB/+LZ8cikH59NvFJ4E4wbf9YbPMhs3KqWWEIKUlrZO8DB5+1AwflQCkjDWYFTNxJPrY2+3zAqmqLm9aPRiKKeM2N4Gm0h8lhO+rN7gtQEUHrQIEJ8VFpLASTYKoW8N96iL6nZ +c17xJOmWg884Ss0yFMjuGoN3qTBtvN4ngRnNrZDnCDFKMHKGJ+01KZ6zD9Vxys9+QAEZ5coXAnnuQAPe2681BYnP2WBZkJ8RrIabtTJT0pWj3uQfBpJdWqhVr2HwNSlssv4FSZBtzcNRK/VTZoo+hu3HO7gL3n1WNbdqos6NCrTgn2IBPABV +rBUqRUBgEbC3MAGUSRc6KR3wPdVh3D4HsuHA/FlfHAEKvSuX8GUH2e0RPeersDN+y6Tiy/ZgspYyYBW9RHyCOCuRCxakHGvMAZ3QrIRw3++mrv/4cffYc8XYePokSrVrWoXNvUsNAbdqBq0NxnEUWOFt5XG+8hqk4RvjpcScYhdByhoNYtXq +qDc/FqQCWZedddbKcsni8WfjNhBRW04azihxAij0LYUOhv7AQulc4DqucUrPy0YuavmwsWzVbyRlO6vbiRrJ4hmvpY+Lz15Nxr3LxYt+XW7rry3BeSohcQouaKLBjBQccux1/Q9aC6X7xwuBPEeEE1Pe9jrHb5NADGZ0BjnFdVOSWjOdnNpY +KsSnMxVp5yT8WTsYUW20QpHGXPZgVjKsXXIYZ2wqxw0wJGnb7fEmrdniZN+lRVGlk2Mkrp0VWLczfgl6Uyh/MdlpP725eiXsCn7Pm2qPWyN02Rh7bdjRZ0jkep2D6Jm2vYO33JsopOOouCE+JEH+xuqx4uXdd0t1D1AvfKkareGdyExsmIdn +n0hpp2ZeozJggYL4gJHT9yqDNIyBRAJS/Ibsqnu7pjKdj+dkObG/2G6gaDdoOWO14mKkM+oqU2jDAJi5xeIC8wwMrdTU3cVsqsKx9sQQ2lWe3RWhojmdQ0syJ0S8WBLC2bPHcL6MmXfpMQ50BfskG7nnbTU2DpPhA/jnj7F8OhDZAqwW9nCR +COVIpKKiAE27rpilHsUCqKud/RTNVhqB8ajvByfza5SxTIh9htEC14fSBwu7J7dQ7ov9NPOkJUE8BN1/8/WbKRnovr99OvojcLzWWz1+MXqesIKDfed8b3GnMIoUruuOWEOswUcLGKblD26ZwgOeVGNYzv43K9ZUAnGphnKNB6okpCFScwef +Aq/wXXERGmXhqEL7+/nnCaYTbg32rbyh/SM+VQg7e4T50KqIBCRiRUU7JxRb8ahWCRkifIuPs9X+yvB5WE9LjahcBSo2QJGpmN2Gc1tz6TdLuFvK4/8/SGt/sZkL+wgg8MQXvDl0O7YFOd9fQuuZeXCxQcPtr/MLC+GYbr4O6Usgkd3cfCUE +s7zYWuv2ENWept2YtbMDkInXk/i/YLxySSli8aD53iR/oWP5LwB0YdXTUW+PLJkWI62S8vuvsfAK6MfIWKVVP3fO/6BdgCMhTwEDOStd3tmUvdz3caTQzs30NlMoOVaYQGXTbsJnM3t5NzkmpLMwvM2/f5JwvQEumu6LHmx0EIr24OG5SQjR +abwdUk/B7iTyGFPCvJ5j3uSvgn1nCDwfSn6Uoo5M+ZjEijiMrBOCmhcpvcABUcGbE77gkre3wXUzB9FgUdF270n4OXVpzxJwQZJAzibAi7tfM7jYx3+aigM/tyYdYbUTWl9yj5PAk+Ag+g77ZWm7L1L5bB0o4joy82lfgCLGv0+jFT4HEbpB +0WozjOb8df77jmfDrSSbDXd4Vx6YiHOoS3G2u+1UuQ4Zdj+z+D8cUMVLNmxny/K9E87Ua4kWlYQXKP7tsFBj5sLHk9nbC5AKMPv3wO7bLHDfDLqwWuEMb6z7HtzyAC6Fp2lsxVhmW+qRprTWOa4GUZJThM+YBE3caxQUKZx0ArWwHpPCfXQQ +SpPshGVj6HeR37LJmSri4KFegXfcklsCL9wRFWjrwwhek2mBp8NoQ43qlLTExydzrJRTlkWf6RkzMhR7vU2lksNAY74THZrrEmaphpAud1Oemz8a1v1TATtq43hWRu+5yo3DlWyukpRIWX7fK03Qw6m8tKblV0pbtKvXXUqC5/REKwStj3m1 +0FnvNr3VSYaoDd+Yx7KXnVLvzkmdnrRtIAC9uvYoiQwryZ8QYU10iy5DGM1ST79x+10LEsoP2RYcrns7VVYIWV0Hu5/jkO3v2Jn+CrSFtaqIVlDzGe6hGB8bXMkqFTABp8P1TfQ0FUN0QOa1G/+Fichng/zmYXBayt0e0lGb1KU2jNrUZG/O +k5v8+5f9SaLJYRoNILzwpysMtByeje5gR0sFW4xnNXHYUrp4Xo8EPCK+AnGpBqHuBWPK5qFzv8f8ii/fzvIsUPt01HPltXKpMvmucbxZJ/qSOJAIaBvBXzrhaiqMI5ZmxMG+BeM+2NA2OL4ibvSMxZF3AsYOdfiUEbQtPaiQE0VAPnQxpVH2 +DmMPutHe8RiwQU9pjr6cMydWPsYmTNKo0a/WynaV+ZvGOguQUZ4dfmYR4AeI4+MWxLsfgMNJV69kHzGCTq3o9/Qq2gQjabudvEC+xXNfOkBlNH1gFMtpUQfZ0YcO4QZkeR3eLIMqkfqys7taVpnpGlSnMLXVbYsp8z0SDX1/K3EPGuMXiseV +CNP/ox/44UFNU0IIfV5PRfaHcPIpxBCGILhlsm81SO6YFI6NHMS9q7xNxakiYAN7sceyxhUlslefRwqsu4Mr+/oIEZxRSHbPqWW2ipQiD7r+yo1vJOoFKZYqiBUldNyupm/YE9TX9dzw4ynBDCCy1Uh8YVCgCmPrg+QfpDBGm0Wr6Hh0RsHM +pNz9OcPKJhwdcY2WoOi1nFTx0H7TyDrLqRNZjznFUrklqvbqnwGYdpWozNcA+0jFckl/aJVN154WWYwWpIx4rn0ZY3Rmihrxb6G5rVdFzQZudiFG+YxHsXL+Nlq3eTQiCVudtObLLmvrZqjifuyxashkj4WgAK4z3eS72yX9mEAHqPdtWOGp +q9PcXE8592TUcH8gzl0b+2tF1crK9EqxmcTrD3MTiHLDRHQjGzC6qd9NK4C07mV6GpC2eVzIA6016baBxzN3qNDjbNhFCGjLIipvQNs5MQvN98GXgOn2z/6T1eLVhGFJe/HVzwwibmlIWws9uYSbtOz2eDfuOgo9kzsMsQHmZOyiP8TE2zy4 +lUutq56Ub7GweZa0oACi1NeZFCRsUy/Ug9vkTQQFdMZj3Dl1uLkRHeSI7C5i4tjPxoMv0fIfc+nasA3wuBRwFNqGynKylDCP4Or8bBTQzMFcJcH+KqgS9lU34ea/A8BENIn0DE2uAulZJ2l+TZHT0bsLE4aOrmhDnXPL8FO5kEMSyrUfiYGF +jrNeTM7fy9ifvQRxN2p/9gUKOfRwamgfTb+914aWNa8zXIt1cR/SHkPeJkSIqc3r48Pr9qFA8EhVujo6K6QbaYgbEQIoDFrEOrQ0/S2GPnsZ9kuS6gFT5I95PRuYKxGt/BhlOMWVshFcLEA1/0pyc9DGhPbdvDKioGzIN5mz9bN1i5EsrE/d +D3Xb5cSP//d3pUvYfYOGAcLVClJDTEILohAT2vFF3r00ESeagsIC8GQvxU38y40FiGX8FavyDPBmj5qYZs9LMbQ7CwiPvZuZ67v5t3Be+GmdmMcyfYxwiIeQumo4wN63nwAICp2pRY9YUuUtBXLtZ9FRfzB1W6ce3vXvmecg00VvTY9qo2S7 +RmKgjlzJ6tYRzDuz4uB7wx2V8hfBTVwbYyo2LgTeBAr/aDbL7KYpKy/SZCCDjzzyH+4jIqz+yWC069W5i7aXuPovqDjfDCSmF1o5eClDNbsVhnj0h00VT3zSNuiPm5iwukWXmn+u4KIDeiC54g3LbfZhJ9Bob6DdfYTlDla0vVQ0b9mnfihg +SqrgY2pMIBAwf6PqVWSeyL/PV/MY98EhsnxbPnvEkPhcGu+MKOuak2PqiZQGPTWFu1xHt+weJ90rkW8QamrS6+Unx8noyw5W4ncixjW0csaWD00mK3q0hJuN13jAv3ZyoXwFh24WMjpU/WeZUTGSWSN/Y4GiHe+8e/W8YATN913pwR4aIZpM +3vABwGhGDcaokvLDYJPZxj9P6oBnlFmV+dN2JNTa7HRw4T4L1SMadXs461OCQw9W0HTkC32iAtWTpptxhVz7ts+1yBvjzCfaMX8mYqbs3f2Tf+PYdBWQMVw8olWfYjCWGuKmXp0jcflY0WqFvGoKCqSaGr5jeK45q2W0vxCj9Jta4HJE7a0p +btuX152rUYT63wDo2Og/lmPcAawcOixvDX1Yx1sPH3bEfgQPhaDt7Krm3snE2JhX8WmYi3p/eol5pCHPtFUBzpbw/P7j7uM8PIu+PL6graoDJ3EwVz4EPlc3VDb4KsAyJg+19xBnuGhRj7eg1ziswWq4XIRLmwCImTQnqJQEW5Vf3AFon526 ++XfafILBrh/L2cjJxqv4x07DEeCQsxoKBQVh0DQOjkPu3vDxals2P2IF3GMzOt6lqYAbfq3L9ZXAK/KK4eGTNXASWQruKLNL9uQfMcZ75Jq9XS4OKfCU6pcP5A/X+Ze/+jLZd3CD3eBN3ogkfPAPihpw898ul5e5esHi+B5lRKQKwdArFN7/ +9Zhw55rgS6OAT1iSLaiv+4JEE1kFjA/WwpYKEdoAj1N8pMK47vUkB0t8S4Nl1cpYv2dogpVcEWZEybNt3Qh2PtQpJR7PSq8h/47LBehCMS/AF49ZYie8uvStQdehro2oKygFUN30uSrQi03ChRBgme3d1XK7pDJgdcNkhtF/CRq8aDEzj3XK +CX8XaIXQnQ/Or/pj+cblpM0FLY8897yruO28Kk7gbFA8iG3xIzUonnFK5zmXC7WwoI+2wBLopkzaHyMibnsvbg0A1cTQF2yIgiLPwwXs3vVULcmukI2Z6ikI5iGcytrbEb2YINVS2GJ6jwhdtppGNCtgjL09+UHdy2Vb279rSDaU8j8c1dS/ +9umoR4baT2ZVa5ZSEcCPdOuLgp/A7Ez+zYPQsjB/U9yCkxO1vBXyizskQIELc3f3/onEqMXKeawrw5MtRWSZINKrEsjoyffBRRjp2vu51wpNoeoqIauhJywC5wvhXhFAYN6D49F735WpP8gXvBSPrnFMkFhSfoIJOcn2suCpQZ+wpobO1XtV +VxbLfOjt1H6lvCegGhGIzxTH0vO2vbAOgbPcnfYbd39OgxPmisYrJ4rGLrIg98lBhsQ0NF2mG+pT4UVPD5DR34++uK72/31CFZ+s45cb8O3gYyU+4nY/CCC9o64mF+eqGDh/VI8GJMP2RyzJf/CWCbitpxZtG2p05nkP9DgCD3S45BN6ZbU6 +2oaiVOSZ37tW/d8KGuMSQOLE3O+S7Qp6QMQPPt60s1eeUx5hb1anM+esnxIyZTk3kQAV0UTrrJqXqVAWUW5qiK9hUjpDjEJvkFyDVax63gCYJVp1RgJAvhJ9Ct/JzCNZEZZrxwLtxE8zW2FiJnueLIUyJHITPmSd+Dr2axc3IZ0gaTrdHANf +CCxvTLouTAEION0oX/hWzZRwRdyZcTl5dw9vX+r2PR8KuheYk6GbRw8/lMZxO94jxq1PmDWyI8Au25d1AJVuVgcZIMquk4PJgEDX0abtU8Ru21fKklnWTZCxptQp+fY4EW1lAEwGzJcKOqGaWFBou1vXUVn/CkVs1Z/XolI9SQXxQ6N5qeO/ +y8vSM2K9NTc63xHmnrsKR/0bqJBYueQ1OGh9PkAPDmEEhzeQ8xZH8KNWH9lELVEkz5htMvdFFw1lXoE9GtP60/6XSBmRE2Rvcr7CRznscelThN6mkOAGba8v9KCkrAScIXKniG2dExmehuzLomV3hEHfj2sQy64qqIk9PaPZe9piExhGEEn9 +JdeyBp1xRv34trpKgRqNhtVBMxHrHbk1Kdtajx0huN3pKeiLtmOVQxJlKRmS/29Uhcle8soqkajXnkE2/34Bi+7MLS/5KJR13UchKkyM5nfdwK9mKg74vA1joSU4CZDvnB02Afd6dl668VBuQ5Qf+Qx1C5rK92Dr6+yKv8v7kLAfBJrOyG0G +rZ8ERHuR2tqbHp6K6L1TOJ62JaoHHHQ6tucdwyInAQu2qpmR7cz7EuOgtfmoRyAaMWju5pXJ9hIuLLVly4VSNmeOrgFpoC+yE98H9co6fwA8+FF+UgShcASQCA/kKiaiCYX4aMzdQyVa6KHej2dHXqVoQVuCHKoG2hRIDuhycqThqOgos1hw +1wZQDAfqUwNbWnlu+c2QOOR1cHi75kC/+BWi8KuAdDvxyWcj7LRhhouiUwUD2cL70OR0tCFv+ejX3p4I3ZIoZePDPUWFTxWX+v9Nx/sHvnbVgW9BwrkDalxXzILZ4bTG88zmqLYqpWy0YfTF7SRkapKOjd4XLLW7SI/+Iz116hsBxqFmyU+I +NkKNAj0ynienosxLNNsNubniFK2snxl2bQlz5jVeebYMOJtjnpfqT3gUpvanDGbCdu3FWz9OIuFuXjIZG4Tk/MY1V8hf7edWZkzRbx4epekUufEeaNTuUpxjiLacyq67uVppONYVXqNQP4ZRGcIwDygMqVp4wzGDPv7edlaSJ/KkCtLxhmrn +k/1kv7qyGfxADiDiDugE8rZBDkaYb5yd2HbIfrRNtedgZd6yLQe3ete3aBA4ZllF374Inn1uq0By4DvBfeLWGhB6vCYV+Hx3NVtCY+/dnKegqqpxQVGNd4YQHcUz/fnU57xvU/dhDT7afQZFsbdoEd7MSFKMdACVdKy85csBIDvGpU/WQNo9 +uP5TEOHlgjABjhY9YmkyzEWy5DsM8NZ6KbT3FNiyufSH83jDv9epicU21DEguuff3rc1lXVh1Kw3LyLjEoPO33wNe6Y1dbCs1frOcqqchXVeuJhS5X2MHj5TI2cFqXaLjFJVt7rI8NYMtzseA3Xe4VSBSmVcwwkFnURDrkDzY7VYenongHcM +rQmS9GKZ9c/tXHnUxX81604Aw6sQDbCuK2WDHknOczJU02489MZzfLWYjM5MbRzZ/7wckXO3Bri4uyWEjAJmXzTk3psJ7ob8hTd7yw2Ti4cbY1ibu8EGslJIxnBGaT7RlzvFXLcQfe15rjnfn2u7PCBYYNJaARyCBN1VrrCeLMC8esub4h3E +g0BK1HUs9NGO5qFcwzZ8R9Kl53ybiVtSDvPDytPKs1xthEnWDHmsOHzCyUpSeof4c1BmUULxjjAi/khq9+72VS+eRBya2/5UrEUgsInrnrik6VTCJW0EtZhHQpTn4m9KoWQCMTfrkZ3I48mzAOtrl3rh08qkKXvc4Uvm71vGtKgwmycIY9bl +1adSPDQMOtZabXw8IWD7do3gVg4L2ZIS8kcQ5t+WfKPKjyOm8Hi0lcdi9EkHqeJqSFGQpXcd6tOg9fbyOa44w4pRkUp0jCkZmMK8jIDyyyqrmVUY7UPVC1RSJwZ3CoEYp9p0L6rmJL6DcBgCgR/FhLt0t2kl994QjaWlrlykkOu5lZNckxlg +mSE/sUuzAGF7AJFZenJ4cFeIFKCLK7t8LyMaDZOcHjHTu4BLs1G7X+/9OVxaZU0KY4W4JWvMD/J47pZYC5qcxqXaOm4cZ99s/L9jVN9npT0aUaqoOa6q4dlpNTq77yXn+pbBtq1erC7bDMmGnAcsY4p8QaYaSVcaEiRwCFHtxXlyi12otMMK +ugoLCFGZx48t9PHCygrj8UVWTDHs/QGYP/Fo2lReQI6NC5W1trMHP8dbxE5VXPqz9FsXBwUiZfLrA89Isj+XUD+lhblvbKYeCpaLWmFwB/gFGFpE4WrLWV3FlG15++If3GviGc+k2dDbIZ1DoqKnnxkIJCcxr1AiomJqFbeOZqmQ1FI2luKQ +YqO/BuRjvN5/L134SoFbX4NY83Emqv1hd/k0C5UgEpgw8Kfs06nMQtkw/RO+pYHSPoVAZr9jIoXptbkoVCqijrTQEWc/ChOZB5JYS4zoetFMk0LDxcBAf7pa9V2Lj/ImLfMuZKLq+P3rmsDqYT3QcanW134STrfsM5Tg7+2D8vxUrx0mREGx +NosgC4yidgRqWYbB/UcdF5mnhhuW1fIpTMcyaBhR0Y90Mwryv37/RuDCyzQ06sweJkEQM8pUObmvC5l4HFJxqAmo6MI9dfUgHDZ/DOKJtFs4OURkIhwYk8lxzTx+nenonmBWoaxXFleVKcuAJ9Fms1D/yaqWOWFwA/RjzkA5nHuTJ5wxfKrQ +7XLMdM+PgVvJOkQmU4vQL97lUSeqp8cro23nFWq9t8uUL4vapRvOLoF6iAU55LA+hPZYIwrZUgqdevEcpPff2rSersKVDhYLvAao0f78CAQXnHcRSXmM/S7BT9AvxFf/m2D9tU5GD91IHlwbMYR1doga8sDas+O8IfNfFhNH7bmgr7a3fpxP +4j8E0F5P58RXJyFK8FftxnNvsyfj/ITbj7+1p41iXzhdrRdmKDZL9H0EWvyHCUEM5DbZvXRRqqg8VyBUf0JYlvi5WtF0Atc0SbKmute8UuLPW+8i/r2Riep8BYktPl/cTykh/RaVlzit1/01CW1Jr1TQxyiQmjd1qguJppVmAGljK8BPoG1n +ka2bUWcJDIsE4saMLg4yuKoRQ3cYtlairpp0XFOBH9h4n5gUfhaTXhx+mHaidfoYpOJIWTL2q6KiXzBSnCpST28ItOHK6CLRDPle2kKQqtvctVnHy8P6nqe8IFfkiPiCKvT7rfq0q4JcaCVu3VBY50r11VEh4v0fWGQRR8u4JI502pVA1Fhx +OJmEf9vqLhAy3MddshTFcrfoNj6S+9sx8rMfyD5vEmmVGcG1gBmcyHJHNkb03IizeBd+PQM7fkG8Jlzc38/Sl18k6mJinApqLbre794V/KgX/st9HJAODfi9UBfgFKz0sfq/SG6s8iBYEWtnfHQydkxRqMvVq+B93hDnFD0AxKOWyVxQMHBu +LzJ9LY7DYY8AjFUdZZN+Lk1i4snBl1nL/BcDSYE9zOjJez87NzGPQ7lVsoFb7c/xhOQSEBp8j5kHAdcNPQlcFP5aYoj4xHRivbLkvVItejdZV72aVpUzRsD+A22ynr+YtEAd6PteYg0wpV4wiGpQgcQE+kClDM/iQNW+/WT6gy9mnDs43m0r +kaDG0c9eOnaLlLyFCsP/17l8/djW6GiXuUMkD0xXSlFcnVVLUv7WxAAaWKzhjfELuYP8Y8BwD4OgTOm5Ez8z8DpckSruKiOLXozM5MsBBKkTP/F1i63mUexGcs0xMTljFyBhJB0BOdfVczDJC+wFd+BiCLJ+rRF9NwjkFGfdihpMNSQwnyq+ +vrm9zBtRdKr5iASUSRT6bkND5tMMb86NJ/NoixozJQ3n/1Z1kv66NVymXJUEfOYZ4S2/74+WATrmN+yqPQfCiHL1Djmh8sA9Z/MlIE0z6/lwzvR4Dm6ZbMqXNBO3RNkCR+fXKnKUYkYAWWHZplM/cFzh5OaGcFfMnABYu8cQPEG72aadG1DP +W9PlgaKkjnYxD3LNAxTAPXahWAMRm4aiOn9zG9OrHzCI462NaAAYS/CTNSAPgySjqk5w0jIdCGR/DiqJAUpfJ1oc4vEd4arXAPAOzAtv4Vpw3c01kD2Hn6arUHty/ko3ikobJ/fjyJqHoKQan7/841Gi61KCRtBIP740Q0B+HOcSalIQ1uCW +zy0NqR9ZEADnWbMsbFGPEE+THdBXYzXBJ5dyjhx7QJkTN/jSPa6jgwrCnWsXxZAr7PjDYpLYP87gv0bYpocFeDibTG+VD0Zd0W+pjjQ4fpcWjEbilX4N2kXjHoxORkqIz+YX+J7mHMTzT4eOVgIZvy19vHgp8GCGRkH+xqcKsEgNWotX5mk/ +l1+W67YEZDMeIQlgxUyoRM8qONgXB3e/DhdV6Uw01M3TaF3WBdbBWwS/ZVdZ3R1D7CvP9aXROIQBjU9sNniB9SDr/N6AZvxS7i/7DT7L54MiK2R6/xgh7GMGqFfNR9tgXBzrBn4RHPi+w35ru90TA4vwMUEN+5TOKOlkdVf4bERR4WRSXMcf +Nu0WTl249F81f2jJRYufcGBI6ULXxnbCRzJebgW+d0yJxnGVxczqlqdcByu/W2c0aTkKY+UvgF2YfD8htI1af/d1Cc0abUGf+eGCnKQ1O0DdUANPGYcFOuWisoajE2JkP2kquD1w+YTpzp9IX3iVk6klPK7RkD3Agy2XyPKxFfRGKwE6z8Hv +A/xcOiTV3f3h489Kg3zPljblVQLCkz0UBH4R1/mIvm6TDp7/0bu/oVSWmbPUAoRg/eiP8GhDlwjbgwaDPy0odaD57qL7uyCpz/P/LcLtgvkjyD+l2//kEUn6sg978QW7RSXjA0Tviu5+2Fggh0hiIXQItvbCRB13MF0jTKnZ/MPuis/ld2cz +LtwvIjDpVPHODa6vKLtzK9O/GGU1hvfLvMptt2x1KRVEQLI4Q2xeIoNVDLZE5GwXyGZjmq6We73oK0QwfTov54zdTx2fSUD+dTn88SHPtD5jTQjpcevkYk78hoZ5IKehAPD5xtY4wLbWtwfVtLUcsllWxlYnSgUDW/lT2F1JE3OyfSaHAnqQ +jmS9w+OxhnoSPZsL+1qPFbUGGKl/tScaI/IUimeYbJPTvRkz/zQpoa+eZ1u/JCsP/IWfByi8YLFlvTM0hZt475v4M+Q1WTsTnEq+X9OgEJBk895UYDvwaX+pGT7V7tRyODlCehLJKEkWOk3L79oMPk34kA22zI0PRs8g7WQ0WtIBsbB08HAb +tVCE8oeL/zC9kBvoPpLJNHWW0R3MdaSndLinvGsHceLVTj1o+uOplpHXxbSfkKC1VzYYKzNp/WZmBX6GCyrjJ4gwxgOJI5p/sZyrCOqm9Eu4gzdxIb4QOZ0UHHHdR1ofe2JFFfG/Wh5vUgIwQaEcl7O7o1aovY9Dr2s9SD64U2OF1XctsvGj +F9izMnWTspJZJ5QLh5gHHNQfQGIej31dH0dl6UnYAI3tN8xhKiewEDoJqcnalcennn4+mqS71ZqUg/3W1PvejwfZJqoAxGY6c6wCW0UguyXKUGfTUYGhCIdRE2g+K7/v5gc9G0CAK4uxfPAqxGVpgm/ATrB9QaOzw6KcB9bboUaO98jvUvn6 +9rqMPpu4NhvUaCSDKAHuAiGKbWs3xmVcbvOglkYDmRxGRrpPJBBNX2+ulNQQhG29IYR8rsLgQxWtNlXNsjMUB6T5Bms5tUq5gbPJEBJea9SJxLBaro6eeH5ciYJTWUWN18KYjNoTfOlNGnBn4KeEXORCKi37ycluDE+29As0bgiiq97VD47z +YpA3rM5NUDY9IwORpN/fzXcTcIzud/jaChMNyANWynfZTawl7NmxEkqzCWRXMFdes19iXVmVTAncAoynSkL3rxJePEz40aqG9DJbeQFqyUfU6MmaZHtWoNh26OKvOO1PC/zYBHeZ0duXPkFuWJaPPuG6pjjgLhy5S9ufghy3qRfK44gZiEl2 +5XIn+yysKzCryzLiEC44xzf7Vq91vU0BZcpvRdvoHgID+rac1SKo4i6YP44NCc4fQ1VJ/JtJFCcxLIKgY/LZmsbBBXQmE087Dr+trf8pQGpRmFQLBwuOVyksgUMz1b43Ob/ri4p9aPK2AkUWy0zoMtKtFvKroO2AAm2ygE6Q0yKd8R7OVqS2 +IlXJRRhRH5O+u+ZKfSCDzI0CM1sstGobzEinebmZZxPT5IpJyLaWLbwMA1Z5c+SHKjAz+70Lj3iWoiVv6S200/2H3+/R1JCofOCYpf2W/8KQiZQWO1Y+DoPbuzwj4X3mt773HjWyJtuMKAcstTdO6g60VKWj0Bi8n/997hS3WQQ9lgaMiDkU +JzXv8Vags3OUInnq5yXXkflAFUnyV0Ki8He1RYahedaKA9JCWVrO8T+6Sj61A5TkMT1zQ+JHe1VoahPCdQgYbsNdGLpdiwy7Ds0aNLwxmMlmjvLbIFnANMz4GgcV9JUCvUPQTRoHWBAeq5qAUamVnTHNNUsDttNWUduGWSUfTSYcQYTEuqhK +9Kt8rZX7dQ5hYHNWjum24m/iQ+YmHZMO74ew2on+mvqteZ+qMT89Z2Vq0Dv2DosJAWA45GuNg+7vQJF6v0cUsRqOwUaI4ktaHZqtSVaeKdWn9RjAV+EVsh60vgaZj54TEYodfZnXYZ22FAefSLELczvu6wbCbCvGLUb+JzY2AU5K99D1M91/ +sXt7AtAwBV2dvKrXNH0WqLJKZMUuKxJoaRCLBWRbsR2C1piydbwmDm4ah33BtlfVz0zkeNyJlUqqctumE5BvIFYQxids6lcTRubXTHB7S70ZAg4r/if1tYuDKnm2xbzY4HCdXJ3Twugoj9SZI/cHUIbgp9UejVlXPk7fj8ywrWw52TRfGrfe +eW0lf2M3GG1XUp25klB95GNdkj0PvKMHqgM92OCOSuKoX+BJXNFiOfdnKlGuiIR6BzdXdD3yigGmGTO9aL0LjHyY0aL0f4wE9eDWworstg5aPtPwU47L2gkBuKmAwDdhafnjxLFQP20VRmjGfl+zaRNceOcBu6FuoiSfJWaQmqmVzsqGphw3 +zQNHntQLZ+/PTtjqJV9JRcIK5lgo/Vt6wbsWn6zOyYExHVZduS2yEgwoxMutdjBXeYvV8f7DRb9nWNNUf8jOhGMW5dWtkxAZXVT6SSQUXty9gzq8VoJB4Yz/cWu/nLt3AavoAaqvk0LmIfFamkcKIZd9F3GkRxqobzXLhX6PmkIlKdYvM02M +rzN0qWPMNnBF6ocxCz2QEvVMsH4/R2Jt0S9enqCc0tYDRvuaqOGZ8m4WT885qX6K8HWm2NUdGVuq1wAd2E5+JgK3dExkJQzNrqpZ7nS44lxhXQbbx5ScPCldr6iPc5Ao0O3oxVu0701kdk5EsaT9noTq4i1jqG2uNHmjWIurb2J7FlKzRrYV +cFt9iUgJq7p2ZJjZbPMUQG2ebASES4iocaX+e0OnkkvbLhT3gM5tXWaFzPg1bsu3CpuDipJOSG25EyN0RcZhtu3QIGIP4g/4+D3BeXgqyou7PinXhmToC8oQRsrX8YUKucb5YAQ/VdPtFZPS4l8ySrKga2XU1VYd4TAUaf/6PUUROVd22D+/ +ZIUG0CxryE5jCyN6jaZx9UEKBYoGaTQtQ/b8pTNRIXfuOT9UrXdmOsy/ftojrMMOrw4VdjYy4DuvN5/DmeqR9a6Ske/b894DoW5MOqRdW8fz6wEc9oQr/GmuVtIBFfbfTJQD19sUUoanEUVjjIsJdajhD7q/kVkGHICvnz63EpBIKYCnpl8C +uQXD2Fozu2lc8/5VR+1kvrbtZe6oFs8unKV8pHsoHoZjGothfkzC5PWWlcVPga9V/7OCUfYJRlNiESKBs22O3OaaPm9iuZnNspz+C1/R7HoQwUlAg5lEBBjCuHKWCMC+KVSY+mSSbc9DW5vyAILkW2ytc6pZlQ2Mh8I+u/bZ2SA0sT8H+LKm +tSKBG4db0Vdl+p7YIUwz/tW3v9/Jf++VAkPoBKIIZsh1cyjywmLrlnH6811rcWfsNgXeuSzHx3Z5hsM2xpQpkmWqyvoDbvCF/pupBDawGfBW0zFMBmjkd/j7wWV/Nb1aMXtEa31ZiBXHyS98eB7b+clVKXXVzA4WXp0YaVPBqSAVu+EYNEG8 +wz9Z3ZfQ2kOhqbWlwBUvyqBSxoNmEM9+Fwt9yXhSAqq0TRcAG9aFQsMgqGJiG9AkPHj/8TpkpXKUHXUnI4nDZJtNchF0dXJTt9eRSauP5Hag9jGDVpEAuqYyMnA7awzrl/LzupaBpbtAjvqjWarPzAPFQisaK/05uZk5n/TR8DjffQHnY+e7 +mDBRENOUv6lXy0wUaBuMVUG7/l1X48WXfrY61XLi1WMpnqtVcYNDEtc9YlF8/9MXTHGq0HTHAG2zJVeLdJB4OoomxsMWf8zYvyLjUJ9SL5TPzjMvRI7hEmn+YSGAqpEg8q42Tz0K8y66zNLo8Z3F1jGrMc5dsFjOfUV3JpxfG8hfciyCuSIO +gYKH3N0Q730htc+Zohtq8HEsbg0AoK7Z1aQCsyshH7w7q3y09ktPKv7vY9F6nkf7EfCxYTjDzvTl3l9ye8KjXitcqf0urgFC2if72GU3e+tfpNgdRnmF6k7rTQdceG5Q2qWB09xewSAvR50lpRwqFA+6FvSqq6vRbg3moR2yjCQPx8kwvb53 +UN2RcSw55EqTlnd9Xzo0/CExlc3bFcVLvDE/d3eIN8b8IlloA92pFoP4sgnP4GgXbAvxydGxCEY6gF/JZkmrEw/vWf1D6O0rnf3XNfzZHsBeBqezr8ae20Cf4FQMoE+ttQ2e5M1W1mfqmuUDZ5OToxvCRSJsg+8386CK1/IAHIJZqsVjDlEz +pm0PDhHDRoWba8Hd4Oz3UaQA7m+imQYFY4vTmdVZJ4cCi3uXyW0WHb/oCuHfaX3i8ZLyapW8I0xFzJpUgR1rzJ6XfxGuL8BT3Dy1sObOLYGZi+ee8C7pVvf+GUj7dWQAkCK8WwFfWJdSOYhXN36yNU3u01N7P64fNWLc0N2HlEuqwEjydYqu +EjTI3baDHqbDQjG6s7gUvDqRlWfR5gv/PUfcFUupdm+51XSEDn5COoBgblG8+V312OjZVWy4i0ewClIhZi4ZS9VwlwUv7HmD5aN8cE4N+81b/TWyFCb5HDoe0Wom3tvebVKohobkAzGVhwAv2Hz96wnoYeFX0X0ll7Weo/QeSFnHyYn9pcBP +MWLn9L5AKE42gWWy6msO+nkK3KqtWno7QdAQurxSi8vlDh0SmhOBfUoA2vmI95gmoiccfHs+Lj2YC2vUlCgJTZxZDFt/yUJ3hk5dSbxwqAgeYnNzkbyhNJ0nktszsUE5zL1M9BHglWOjt5UFUfgfQnilhn7q6BvMnB3967G8Gf28W/cRNmYH +hNB3Sy8Y8Y3kvvdUVwCBr+wBeuDB34im+qbNtDbg7kqTiYjhixlDGTep7MddoHWaxmB33Mgm+0NVesVnZFq2hvw4AA9W5hq6OolouvV+qPm3Sv5C/iwHe41yTtHV2AUtlGxV8s8Whl8n7YY6/m7r4hubtsWIeM2rUk53V+z7ZPH0BtNSZdOG +rLEK//5hD3ykb5HjGBpnCjOP6Znlj5J8Hz+rNIKqR9Tte+15jnEoFmd4/SQ4H6lXBCLVwBx7X47+1dgNddOE9KvcBAq7aIalAsVDPQhNe+s2msHeHpQtF5zmn/rFX6H5Q4bEPdJFkr6cwZ2WtEzqYv83G8eka7y4mrsAJ2hwqBJdLgMiqkum +DAGsfK+1cszys/I4tEqo74UpK5gatxuXl+5R42jsI3zk0eJTelEbG+ZB+Hu4GLOQiJyW9RoS1pR6ONdwjIyKTyO3RMPx+1g6Ac4qqgi3MImBCFma12SOsvers3sSfh2aSYgh0JTVp7knBP3/Dz660Q+5G46mt9fBMSzqRid5N4bXrq4M6tQ5 +li0WsAz3lMdolp5uPVb/fXQCIIZqFP57E7b0WqPzQtKT5jQd6E6m0HSov5ZuqK6VfMGFwSWTMZxpGMNZci+0MIDcLNved4yPdjWDNGcMAqL0KtULnkvkniEZG+h9Gvm6d6X7M054FEcGDW4oCpI5ygmMe+UPDHmXB0E1ee/FcaT+tJmnaDnO +duxzFvPH7zPH8dkhkpXz888y7Fg8dYP5BUz2yhEsnIKG7jmviiJhEGe2rsOCjuoWZKgiAecASXaMivJ9MgnCl7ttwG89ghp/+gpIk5G2ZBVr46qaWeRWyzGFZqYFLMunBh5w90mF+cH1JJRJIMiNZQxVSZNlT0kDc1+T/vWCaaRzx5XdmSvs +a5qjI0R6/7SQmiAI+WNj/n5By9sHLr2YLhW8XGyvwqF5V5Ki63aqnozDGKzmVJFqAF3qz2wSHJaPtprMTK4KyN4kxN3jBMYGtWRPdo239cGKUzXdiAKd3ZlRsh/WvvYYdhXgW0nNA61kik6w1QobgRz3R6cpyFmx2Ff48d42jxH4DRMupqXY +sZSvCO+p84BX/WstFprViUav6mf/lDeYYrD1ytdkwLnziTTLn8noWbCyp907ZKJpcHLvFRqeD5+9GDyoJnyQlUlv+bx2cAFYv5I2tysGZJFoJu1x7+DaP9b6be2oYtF7TFbqMxN4fIjvkHSLZMzIdWCsJ2qcWzD7CULkjPwbswrnV5MokgN5 +2ae7DcXixZi0hh21kNB3mf31qBreEw5Mnw8g9IwF7Y0ugaoj4eEdz9i/r6ZnV2EguoaSMV/tlmbpdpSP/Ee7v/wIaq1MArqzatIqDfPu4r/IYfa8LCpC7tA1ajmnfeerykHBHvjOX0l6Z2mls0hLb6S5cTkQ+pWZ1FrYp3k7X/51YnI/b/Jt +dyfg5LD/AGXNEipdSFiidg8NSRfDjPiCYq72DRPUkcDoAI/o3ls8s11KRwXtsgIfE3Eaf9FUE+fyM+1kIh2vIYeQvLCdUgr2yAJSR3HqFci9kERhCCerM3YCQqCuf3VICDbZUu5x84NJnHNaYBGm7pDdkczjySXr+FAxk9kPZqmYaYN6k4QA +BLPqnwZQsqP5FJxnFRW8wzS9Udm8nwWYY33QPxGUND996tJfyTjyCM1kLQaZj3N+EExb370Sl4R0SbettjLkNUHKuCwHJDEskD713rFSHrmlUGoT8gEIKT2N99QL2ZYqFXEyebNgTf0VuaRiP/i6PbJdOz3DdjglDeTIjwFlMa98zhL9JIel +ZvlN+JvcgmvzbSz4EIvteMrT+BxvSYh9NZ4OQd+1jPTzSACg0NjDF6zn0YGQIAzUw1h3hD4GBF5wIeP+a1KDigb6VLbyBau5qJ2E2p8kA64/5dSYH7Go8DUxIIu++65S8yNaLB6libSQ+ZXc78rGcLWLRpfqFXmstJ1Vsj99xILsXGbOf4Vr +cwctgf0ELzS+Twq4s0yC6DwuRRQk9NRGop4XLErp1GWAYNPsdk43PJXffTWph+n9EXMInQsP41vk2ZHuQDWNfUqOgb+G2EfQjkNrzlJmLUAAEyVXjzmZCEMaoYR52MjyXvZNyIcClcw5s9i5+4qXnw8UezLgbxt84j+ZyB/vJz4UjdaGu0HM +FlJl1JejQGIEeK6A7UtAkVIC6Po3/TGNRHcoDmMQ3i9Ahm/3ceI47MOptYMISY871MoQbZoB4MSFVeYkwEaPGRuswsOXry3O8gGmw05Lyin2rj9G7tUJmQpqT6hFy/d5ydJgl0J9mWikJRCzuxwLzJCaOvAnGePU2T7+DHQTc7Djmg1NETp8 +X3ff7WZTpizLOHFOnU8WSLIAGfpEBz70shPZygfBWwgBht5qveZI+CFW7t9+nPJwEkbZSvGfux6VsPiufJY7WARPQPOveQqf1C6nwgbcBMeFCAoVY96KFCk6UGofb9zfjsHqtuYgi/M5ONcJyxyDdDUB49C0JPYW61WyGSzMFWyxGeUQhvIU +HN/FyQ64x0aPtIDqxbz3O0uQ+SXLU3FyBtCf0NhyCnrvHwwEK135ezOOLZQMTzReg0YMXMWwVQE6Ei3X9XE4Ka4Rvg4QV6dkZo34cQQ1mBkRqixgXrO8Zi60LKNe+Eg79NZa5Gnkrd9amnJRNj3n9U4oQA0H6bCKqY5zvs1H3WNHALfeKR7y +wmePIXxPuvQe5K+eu80jAJflgJK8nPhxIyWG+htW4GqqIcWMVVVKr4qRyAOlyCMliUsPtt23blhnhlBDfBQjvg3nv/od8hYk4xZlHvCKqwAgRTBnFxzy3bYe2lEkoLKlt8nm7MlHtw4s56XZwPjRlszOyMwxNUeHY00D8G1TF+AoyaWMi6kr +jqNWM9BEQJ3K+B2RlJ16DG1cDf+fiijtZlrtI4/ja72kMrTAnlpsPjlE0zyAHaTufl7zh7iZB5lI+CppFRaMAHvSCvzyipjp5UBKxIbAY4UqFTJrV25xBgpz5Gr4KgppuEY/hdZr3Ehx/6Ufi4gDZfiQFVoSlSakphoIELAL8LqldURc6UY6 +i/n7y5A+/y6T7WF6rOeYck56/w5S8dtllaj24ybs+yxxi5hRO4+SUiXRpWzHz+OHH3PE17myMFuOSIkYBVPa+SOAXbcL1/ruc2fjlGJigNMjeI1sywNCpYXIe5RgRxQzzt1aOzdlfshMX3MslY6O+uX9E/R+qfVRiw6o/1C0x20iH1DFLyxp +JRl9pIGdR8ESWhGpB7E0gNbgCUknpgXC/hhl9b6brMHkSL8AItV4dyJ0ek5Ezs+U39bSdZg580/5FhOGUsjC++FLv6dCkeeQQwEQ4cQ9BuwFqMwIBIfElCMumoeJ7e554OWJxDbONavW9X5Aet9Xx9/gpF6nXyutbo58RytVefYkLhXY776B +zwxmXT+0QMhPjo1nWX9iNUWfyL4cyh4DOqsfjBcUSwtaapE6hFu+xcAQKSe81VRDQlD1NfhzbDOZV33mmDLb3LlNgObU8P8brSCVCRaiSCh2JFbEo6lZtPKtFIB6kfcZrTwNTudcjrncPAzDogMW+wCdRUhL4je3Qz44yYrP8tcZdJwQoHi9 +fgcjGNi0Escjdu96oCo41n5wHdT8Hev9LWfqrFcyEvdOMUK6sYDMIL29Oir/zztVtDvpiTvUFSr247mkzhAnli0FHHX+3pes0j4RfP0P3ol546JbRrkPjxiFVaTvvIw5BNpULd8RoZOXlWOVI6Tk8u2ldX3/4C3XotTkOHIEJlQ1JJr5xvvp +u1TOcAromZjxiKp+bczZ78F3L1Zp7Ri7PINvRbtFSlbq3l0KS9D0BlO0oxre2l8ONXjSwjDO0Wn1szbD8xsEnCZ4mW/5mZrqJdb+6aSWQ73Vi5uWS/c5vDDmRIpUmrYHtkoURWJ5zy8FvU0MFUkTE7+7lm5XiaNwYBiPwxqF8b9TquV6sDTl +4+jOHDLwQ0uiuK4ypZycMPVu99QhN08DljZECiuuF9KdrTNeN/+t+nE0ih7F3MV57tcWJKmD3HRUKlXM5y60e3+ONlnL7erv+GTvqrordc5h+AK4jXDehw/PnxlygoP0f2wq1I2po37DyFJ2NDMCR42/l3Yx+M6ivJyuPwYIylAf76X3y4uR +YFXdZgMvNTKPxnDSiEN4+aDuYCCLb3wzKfUCQkuY5qFfAx8b1O34fOvAhvGHLovBsI0KE9xkQHOhTBIxWrjPy0DZ3YP7+qj4QiL3k550TcB25J5zpg5MT7h/4BSNL8x6//6Pzdtrt9STEyhTtEJ0mh+wvY24Uk23Wi1IsBKZMuB2mq4uoYAC +nLdNQQtdfWCTDKjPEWYlSS5uDIYjBjkAuSYmDxILX3VvUptp+IwNvnm0S+u3prwE/KFrISI5sSpMZb5Yt6taPBG/C8dEJz6j93BkozCM235sxkf4k36zdzs6XPfcqqU9LgSEl62eMSpP3iJRA44laaF3N3P+1DB140IsqvmvEctPVfwnxU17 +sOTHMP/kXkLC/M/PLtgVRWeuagE6EYp36kkzLpQQaycZtRFuTI5oFC9I2W4B1+xVTb7aNymoh+LhN8s14vAWsRUxna4XEj8e1l4BrNJkmLNBAuJq+ZuPMZCKdjeIpYEf3nHRc4Q0vgDHfNGGACvxmVmwTczG0n6xdahCSXVMPcBvQ4nBn9RM +U+ROK9OWh2WwPFEi91Jzkx0paY7aCGoGH6GWLCLyyevxQNoaIV6VrmvHVYhBqQrmyhbpz09awLwaYHQF/OH5XA0WrBo4UvGvOdHbmNI94D8eWvQAzAYVvjvbeR70mpuntwVcEYXOPc7RDNR7zetusfjQGvxkntoPPNZWKv8lxrDiGzpD8/iV +fklbB/vSsyJ8Bzm1iu9F2kTpQyuL4JZh6MtJbo3i0QNLTSBWszv75RZoFXxILRFu2oIrsPv372qgAjHsRpNMc7XSd5piCTPcDDjxWqvi1s+WwRfs003sKd1vtiiCG/Wq5Y2iXVgnUulKGF2qyMsWMD4h/0cz+TtW6u/Joi3um4fzyZW45SJw +whDv7YeVwxTmjmPcjYErKMkLuCME1voUvrBEaOKmaZz8qJTNeim/xI6HFDZ1+7b3TDixOg8W4QlKYwOSfwVSAzEV+ZJgkYymFaAhPVoA3zVDt3se3g7E6JMdDZcfBK+IZNDJcgRO6DO9CYCrO1ct8A7pORkcPQDH0iEJ6iRotsemBFBLiHvS +5S7KhgYi25BlnqjslEz0MZ425UIA/rOFpWY3tNSdq8WqLBfgvIijnDF1uHpPbwgpUTYjHqf8/jSfWoU9hUcWQt+qvhlg+xIxmpTyzPTcgMkt2zlOMHR+AwkxcPL9UNrDsdlxNkSA30EnmfM5bBiKXNog+eEmECN3Gy5NtZ3JqGVOXt4YEDia +2k9C+awwfttv54J2U8zhJ/iZhWbicZq3S8BH5iTovEoJYbafyDfAAazEN12NeLuU6UJdFkSyCGsW5lOhYL7AjKiWJcmzA4imf+67pXGNTeFXR3UJ2ydYh1Xt3pf+gIxGDEgDe5r2XL6uHryK6WQcWGvMAS3fcj/P3Z/Z1ySd1ct7H50MkkNL +Kmh+DM0hYtmwRX0mzowmVje+pn3LeV68O9PXjIauXa0i2lcpywaMT1Dwsa5pJdmWWHA1KV6GoYcGwP5oruzzqGFgTBdRElQucOisJDPkxSrskensZ21byDnC91LAUcKg6jYog5V5Eap75KGgRDR/i7wCoyFxdhVO+/dzcTKu7Tws+x0MChBw +zJCNW9hcUHrX1InwOKfGTMMQjvj60Qf3emNh90D3/z10CfMYdQvGK5GqN4rhkJp98JYj1BFytRZyqnhmjyqslqMUOcanlrM6sCKNmMwVehrPeKWajerG7L3W0RwnaPgIyoWxR/2vyem7UaRwOKP6KQc0skA6Va650320CHOH+tvbDgyQrH4O ++jvN3TXn0zjzv8AA0LhOn/Y1KEulAjgu3v/v0QqkhVV8wjQ+aXTOZy86LnXCNeuUmnMdlbBkuRwIKjbN6HL1YdMNSm3VqZ+0eZgldVwrxfDCzsFKx2IJIVBikTvchxcwRUTYo3bFoyyzgyHHBtCNH7BF+vY9IxlLIjoTyXAqv3DVstjequxK +3KYsD8RS9SeoJ03gBDM6jiSXWJLY2EyxWyCu1m2khDYc3FGj+crRsNqky3G/YNimutBfkgrKzO3EGJPLgHG0eFGaOvaHbCZ/1NMswdZP9zdB8oDL00sni8Qb2MkuJkdVxNjaoa9U50ts4a6B/OUUM72S2EJuFdxo+nPNi93jWh41P3GyYTSQ +F221fPGlRoU8xdhyYalO4JnPqRPhU6LkUWNTiPxCtmNJWr4oIVkC+33CoMuuB1b1pQUP6exUV83SxmueBy65jJVzH7z5aCscbmeMCMfxp/mTpLPlxmrfIzpOHm+Gq6qlWBRpYKQN5r+rqhKERvoO/lfiyhnOpKHKSX7HNjjvpUnHZwSPBygy +EoJXO/rgq+txUkDFzC0F/BajomFl+AI808UfloW0Wm+/n+4LfGATCVsXhPDp+tcE9442Z/Z5+QgXtu5lSDw2XWhCDvz8g3LA5/0Z/j6w8pQFzoyBSBWF/UvUqBMmKZA3deSlviUjNk6D7QlonokMukTi6cmjQwZsnrZt7jKWYQ5u4jrzB6dG +fgukg1i3LuWYtpN3IaqfhUse6fInxnx3BzJKgxPzbfNLK66/WurgdfVJGqIaiVF6HIFemdxd8dLfjh1sKdxBCFEFyiwBIPl0YHPj5XH2LpghBCw80TnKGbG64FrxB2DPp4O7KqnsUMdVMJhYF8WXbCGJChcUFEQHITVLR8kvQjKVRqpIdBBU +NEgRO+2Pekxc4ye7NzA+o8ZTXOeMQ8lndetYp8kF/kEdWhlWsRSIHt8dcZ0MTqiEfWDkvxTaBh4P67oPAI2f+NfCQeqWIEex9ZhRgu8Iz7JrHmGbmzMUoL8HUSeJcfm2Bla0KHNiEs7lZ6Bm6tNNcbzfmdV0LR13VeEyxcHhVwvVzXN7JxDO +8LC4Vn1A2kgyndM7awkvSNpqD4WwV4yq0DrgMFA3GhjknPpxi/PGv5xZXqMVcqSp+MJs9QVsaPu9/86LdlTSC2aL2tpdWyAHOBjOjboiYQyib27qfcQXL1kxh7uTT46Cp6HK8u9PHfRU6uVux2r2+TYqLOADmhc92s3ff9tXfIuuKmzMfjU/ +YKYq78r2UYP9eZw/AUL9qjfwJLAIfcSmPbFit78TR3juWUAJtviHNgtnnLqvaUGJ5lHqZwIv38EIqv0oVMwKQRRcITJF5SaSY2uTFJCYpLP+BiVgCYX6iXCJVtiy5h5tOEvUDKrJ7gDc1dEUnyTDxVrYN9SutvAjV7LjV/PRU2qWrzHQTGnU +O7yaFllsQmAbtGWQdqd6kiK8TrhrkZTSLmyNW1vcDtmw8B1hwT/Ew3ORw1/jPJM5IGRGaAOKcb1Ly/Qf1xfAvbGVco+Lp+0wQ2BNWaWojogh0jZgMzOFuWS4zBemZnr0dM7EY0U6BpRu3whhi/fcxmnRshluwaAmedOrdP6RGJZn/VfZONbo +Dd92wRotQUMqqsMBZDss1jzgNEl9vmEeysOeMiH0DQEnviA5X4CMZTFYAuEWMsUj+PypTtfIABnCD4clCpisd6Lh4+Eaabj6jax4AMwJHNOdNU5SW1B2EHAA4aDT8ZZ4fMgGdGqfalSxB8OfN6Ureiu77EQWGXwy3+a/MkqHExcLU+LUuOee +Q4pXI5hWl8/Jg/NNiN1mqABHRiJu7xhRytco4PyGjW+WuvDFKkLU3GYD97g+xXEucf7J3rmkzSZbbJd/5k9izB+q6+cwfcB9WT2TCSQy78qJQuI0wJoceC7HFK9qH2aKzDFBwHozD77EO7mkxTr8BwHY0weBynV7l7AfXxQlX/5GhDXyZ2VD +r/vTcdS08Nty1UguktVjApTNktgdMoX1DC5KO8s62MTVNTeAynKCFjT2ZPVpjliQVc6NnzqPIDwWkm1wrb0t5JvwDQ06QU4ZQoG1ek/Umpf/JAsmZhKHw85PYNYW7Ct5B4XWAjNfne1Aslfsf47oBPJTPIxaPFVdOk4FubuMRf1uvObeMxmF +e5bY5Ix6X4fykiM2GF22X1zCYX8n+n2saHwGqZe8hoe7OK+MyrHTC0NtKvOawgozFaB0iZfexwfYOV2WNrw9vugH3Bi9Wpe0wZShy+iMraTv3pXHxMEr/xry9shTQdkyoIK4IArDrvACvsKLHB4BCIbNOm9EbzFPQy/HUVNx77XHZ2pwp2fd +KBKEfLdR++NmjqDnbqMVBTawCmP4AoWAVH2PmTOylzDHkerEfzTLlv8P0xzRRGh+7gAhPhCqUSTFNl/2QQvl+HgoxxuyR6/m5mVL9M+mp1gV2gQBKcuWR3B2TIemcTybLq8KQXFAGQrfqqgJJQKQQ7HPFrweKeeS7ItXpkxR30DXLUXLwuR0 +ZR0/x8/BvCOLZapri6oyvsWyOzvNp1qPJ3GLoWsOR5ty09P6CJmYGqsiL+VW4AEEz5IXt83enyG7MerWnhapxztmfxQ5tDEgT0s2wKR2f+KWJ1gMd6eT8KhwhNfQLKijls1XQSUZR7i+gnxqfnccZyFStX85neFOCAsgP0Eks2f2xQUJQWrc +OLIP34wbqDNutcKBxmWEm8bhGRVZ2uFEGJzQWQNuaXCkrqd2RMVnF3wMvhCO5ve5uphozcCr7GB1hpJNCFe469eKtfWvORElNyGfCBtsRYSyFvQglwrCztwLsDTxhMK0zhb/sNalIureklwT9bbs0cDq5V8rizJq7TReknITbLhfPTzPANEq +VreFH3xVsavHgrcUwCtUKWX0+zulIOGTZR/cd22F06xbfJM8K8irUYbg4uaDw+aayOuq5HzGSP/gLV5qzfvW8eVaUJEgFzwbOLkSz9LiNK0QSfnBZjYbOONHAC30C30GclyptAP/HsJh0P/vKe7soYe5fTKvTSqEKR1FIem9ZuIdGIqSoM5Q +0+JY55OkUXbuZ6ODtiKGt8QtGg6LVBoBx26dYrIqXu54HK+xlhzxeaH7JtsEbK8FNkDS9bBAyhEljzgtWEkgxaxAywtUtgao/vzjUip/v53hShuFk7pPyZl1WRWfSPbmnBBtsJH2/5/m+BNWjP3l7IDfwBV+zexp4FCC/PLrJz4Bgv/3tsQe +D9buGosT+GWc1lmwYs61vAcAi4TYy3eZgKqaYEtg2kNcIOnGUabJ09skb+Wos2ZIONOqWOGot5/0UBrbijojOJdCtZcZzfH80TO3DavZqiJq1fnGBY0cWFa7pwgL7qQ1qOG0wTAj8Mg7KVkrSRGyyHRc24GRXyxMidsZQ8ofus12OvBVs9H8 +2JC3cT0Umi75oIiqJ6MfPWefNe51vKIH4+Tg1xcd24hIj2aDgYtA7Qd9D317N9X29ka2pjf8mtlI0paa4yDScYbujt1gyURYIc7HGrQH0XFuGymqPFKpMAAByY/g51gSNawABn6YB9I8CvENmiLHEZ/sCAAAAAARZWg==. \ No newline at end of file diff --git a/examples/autolab_example/tmp/cs102/src/docker_helpers.py b/examples/autolab_example/tmp/cs102/src/docker_helpers.py index b6fdf76538c9cc454a6dbf3add2d9deac58e8310..d25500f840df4acd5522542811fb6086a8b9dc7b 100644 --- a/examples/autolab_example/tmp/cs102/src/docker_helpers.py +++ b/examples/autolab_example/tmp/cs102/src/docker_helpers.py @@ -1,14 +1,40 @@ -# from cs202courseware.ug2report1 import Report1 - -import pickle import os import glob import shutil import time import zipfile import io -import inspect import subprocess +import urllib.request + + +def download_docker_images(destination=None): + if destination is None: + destination = os.getcwd() + if not os.path.exists(destination): + os.makedirs(destination) + + print('Beginning file download with urllib2...') + url = 'https://gitlab.compute.dtu.dk/tuhe/unitgrade_private/-/archive/master/unitgrade_private-master.zip?path=docker_images' + result, headers = urllib.request.urlretrieve(url) + + ex = result +"_extract" + zf = zipfile.ZipFile(result) + zf.extractall(path=ex) + dockers = [f for f in zf.namelist() if f[-1] == "/" and len( [s for s in f if s == "/"] ) == 3] + for f in dockers: # zf.namelist(): + tmp_dir = ex + "/" + f + if os.path.isdir(tmp_dir): + dest = destination +"/"+os.path.basename(tmp_dir[:-1]) + + if os.path.isdir(dest): + print("> Destination for docker image", dest, "exists. Skipping download.") + else: + print("> Extracting docker image", os.path.basename(f[:-1]), "to", dest) + shutil.copytree(tmp_dir, dest) + # zf.extract(f, path=destination) + a = 234 + def compile_docker_image(Dockerfile, tag=None): assert os.path.isfile(Dockerfile) diff --git a/examples/autolab_example/tmp/cs102/src/driver_python.py b/examples/autolab_example/tmp/cs102/src/driver_python.py index ef526b72b4b833026771966c6c3fae653ea1f70c..6b4defcd42d585ce3f7cfdb0d4af2e96ac841675 100644 --- a/examples/autolab_example/tmp/cs102/src/driver_python.py +++ b/examples/autolab_example/tmp/cs102/src/driver_python.py @@ -1,13 +1,10 @@ import os import glob import sys -import pickle -# import io import subprocess +from unitgrade_private.autolab.autolab import format_autolab_json from unitgrade_private.docker_helpers import student_token_file_runner from unitgrade_private import load_token - -# import docker_helpers import time verbose = False @@ -28,10 +25,7 @@ def pfiles(): student_token_file = 'Report2_handin.token' instructor_grade_script = 'report2_grade.py' -grade_file_relative_destination = "cs102/report2_grade.py" - -# with open(student_token_file, 'rb') as f: -# results = pickle.load(f) +grade_file_relative_destination = "cs102\report2_grade.py" host_tmp_dir = wdir + "/tmp" if not verbose: @@ -44,40 +38,24 @@ command, token = student_token_file_runner(host_tmp_dir, student_token_file, ins command = f"cd tmp && {command} --noprogress --autolab" def rcom(cm): - # print(f"running... ", cm) - # start = time.time() rs = subprocess.run(cm, capture_output=True, text=True, shell=True) print(rs.stdout) - if len(rs.stderr) > 0: print(tag, "There were errors in executing the file:") print(rs.stderr) - # print(rs) - # print("result of running command was", rs.stdout, "err", rs.stderr, "time", time.time() - start) - -# results, _ = load_token(student_token_file) -# sources = results['sources'][0] - start = time.time() rcom(command) -# pfiles() -# for f in glob.glob(host_tmp_dir + "/programs/*"): -# print("programs/", f) -# print("---") ls = glob.glob(token) -# print(ls) f = ls[0] -# with open(f, 'rb') as f: -# results = pickle.load(f) - results, _ = load_token(ls[0]) -# print("results") -# print(results.keys()) if verbose: print(f"{token=}") print(results['total']) + +format_autolab_json(results) + # if os.path.exists(host_tmp_dir): # shutil.rmtree(host_tmp_dir) # with io.BytesIO(sources['zipfile']) as zb: @@ -87,12 +65,8 @@ if verbose: # print('{"scores": {"Correctness": 100, "Problem 1": 4}}') ## Format the scores here. - # sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] # ss = ", ".join([f'"{t}": {s}' for t, s in sc]) # scores = '{"scores": {' + ss + '}}' # print('{"_presentation": "semantic"}') # print(scores) - -from unitgrade_private.autolab.autolab import format_autolab_json -format_autolab_json(results) \ No newline at end of file diff --git a/examples/autolab_example/tmp/cs102/src/driver_python.py-handout b/examples/autolab_example/tmp/cs102/src/driver_python.py-handout index ef526b72b4b833026771966c6c3fae653ea1f70c..6b4defcd42d585ce3f7cfdb0d4af2e96ac841675 100644 --- a/examples/autolab_example/tmp/cs102/src/driver_python.py-handout +++ b/examples/autolab_example/tmp/cs102/src/driver_python.py-handout @@ -1,13 +1,10 @@ import os import glob import sys -import pickle -# import io import subprocess +from unitgrade_private.autolab.autolab import format_autolab_json from unitgrade_private.docker_helpers import student_token_file_runner from unitgrade_private import load_token - -# import docker_helpers import time verbose = False @@ -28,10 +25,7 @@ def pfiles(): student_token_file = 'Report2_handin.token' instructor_grade_script = 'report2_grade.py' -grade_file_relative_destination = "cs102/report2_grade.py" - -# with open(student_token_file, 'rb') as f: -# results = pickle.load(f) +grade_file_relative_destination = "cs102\report2_grade.py" host_tmp_dir = wdir + "/tmp" if not verbose: @@ -44,40 +38,24 @@ command, token = student_token_file_runner(host_tmp_dir, student_token_file, ins command = f"cd tmp && {command} --noprogress --autolab" def rcom(cm): - # print(f"running... ", cm) - # start = time.time() rs = subprocess.run(cm, capture_output=True, text=True, shell=True) print(rs.stdout) - if len(rs.stderr) > 0: print(tag, "There were errors in executing the file:") print(rs.stderr) - # print(rs) - # print("result of running command was", rs.stdout, "err", rs.stderr, "time", time.time() - start) - -# results, _ = load_token(student_token_file) -# sources = results['sources'][0] - start = time.time() rcom(command) -# pfiles() -# for f in glob.glob(host_tmp_dir + "/programs/*"): -# print("programs/", f) -# print("---") ls = glob.glob(token) -# print(ls) f = ls[0] -# with open(f, 'rb') as f: -# results = pickle.load(f) - results, _ = load_token(ls[0]) -# print("results") -# print(results.keys()) if verbose: print(f"{token=}") print(results['total']) + +format_autolab_json(results) + # if os.path.exists(host_tmp_dir): # shutil.rmtree(host_tmp_dir) # with io.BytesIO(sources['zipfile']) as zb: @@ -87,12 +65,8 @@ if verbose: # print('{"scores": {"Correctness": 100, "Problem 1": 4}}') ## Format the scores here. - # sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] # ss = ", ".join([f'"{t}": {s}' for t, s in sc]) # scores = '{"scores": {' + ss + '}}' # print('{"_presentation": "semantic"}') # print(scores) - -from unitgrade_private.autolab.autolab import format_autolab_json -format_autolab_json(results) \ No newline at end of file diff --git a/examples/autolab_example/tmp/cs102/src/student_sources.zip b/examples/autolab_example/tmp/cs102/src/student_sources.zip index 4f23b80e2a4ed036191e6513bce179757f1687d8..9a8c9292ea76fbee2968d4c54ccd2bb7623384fa 100644 Binary files a/examples/autolab_example/tmp/cs102/src/student_sources.zip and b/examples/autolab_example/tmp/cs102/src/student_sources.zip differ diff --git a/examples/autolab_example/tmp/cs103/autograde.tar b/examples/autolab_example/tmp/cs103/autograde.tar deleted file mode 100644 index bb913e78a6cccf5c4d4d99979a1f1213e330915e..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example/tmp/cs103/autograde.tar and /dev/null differ diff --git a/examples/autolab_example/tmp/cs103/cs103-handout.tar b/examples/autolab_example/tmp/cs103/cs103-handout.tar deleted file mode 100644 index bb913e78a6cccf5c4d4d99979a1f1213e330915e..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example/tmp/cs103/cs103-handout.tar and /dev/null differ diff --git a/examples/autolab_example/tmp/cs103/cs103-handout/Makefile b/examples/autolab_example/tmp/cs103/cs103-handout/Makefile deleted file mode 100644 index 6d094e3a3869dfe9ee9e51a06150c6999c402286..0000000000000000000000000000000000000000 --- a/examples/autolab_example/tmp/cs103/cs103-handout/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -# Makefile for the Hello Lab -all: - echo "Makefile called... it is empty so far. " - #gcc hello3.c -o hello3 - -clean: - rm -rf *~ hello3 diff --git a/examples/autolab_example/tmp/cs103/cs103-handout/README b/examples/autolab_example/tmp/cs103/cs103-handout/README deleted file mode 100644 index 8eea4bef3abb4665581173c4843b6155b3dc59d2..0000000000000000000000000000000000000000 --- a/examples/autolab_example/tmp/cs103/cs103-handout/README +++ /dev/null @@ -1,15 +0,0 @@ -This directory contains all of the code files for the Hello Lab, -including the files that are handed out to students. - -Files: - -# Autograder and solution files -Makefile Makefile and ... -README ... README for this directory -driver.sh* Autograder -hello.c Solution hello.c file - -# Files that are handed out to students -Makefile-handout Makefile and ... -README-handout ... README handed out to students -hello.c-handout Blank hello.c file handed out to students diff --git a/examples/autolab_example/tmp/cs103/cs103-handout/Report3_handin.token b/examples/autolab_example/tmp/cs103/cs103-handout/Report3_handin.token deleted file mode 100644 index 6be6aef2778f106dc78cf7909fde42544a5f3e3b..0000000000000000000000000000000000000000 --- a/examples/autolab_example/tmp/cs103/cs103-handout/Report3_handin.token +++ /dev/null @@ -1,186 +0,0 @@ -# This file contains your results. Do not edit its content. Simply upload it as it is. -### Content of cs103/report3.py ### - -from unitgrade import UTestCase, Report -from unitgrade.utils import hide -from unitgrade import evaluate_report_student -import cs103 - -class AutomaticPass(UTestCase): - def test_automatic_pass(self): - self.assertEqual(2, 2) # For simplicity, this test will always pass - - -class Report3(Report): - title = "CS 101 Report 3" - questions = [(AutomaticPass, 10)] # Include a single question for 10 credits. - pack_imports = [cs103] - -if __name__ == "__main__": - evaluate_report_student(Report3()) - - -### Content of cs103/homework1.py ### - -def reverse_list(mylist): - """ - Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. - reverse_list([1,2,3]) should return [3,2,1] (as a list). - """ - # TODO: 1 lines missing. - raise NotImplementedError("Implement function body") - -def add(a,b): - """ Given two numbers `a` and `b` this function should simply return their sum: - > add(a,b) = a+b """ - # TODO: 1 lines missing. - raise NotImplementedError("Implement function body") - -if __name__ == "__main__": - # Example usage: - print(f"Your result of 2 + 2 = {add(2,2)}") - print(f"Reversing a small list", reverse_list([2,3,5,7])) ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -551383e60aa99c5591ddb4e8ed60c3ba58937d9e732302032caca6a245c82cbfc151362619ca762508d918de8a38dacf6e13bf4e4e05d9195e59847d7c807632 25276 ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file diff --git a/examples/autolab_example/tmp/cs103/cs103-handout/docker_helpers.py b/examples/autolab_example/tmp/cs103/cs103-handout/docker_helpers.py deleted file mode 100644 index b6fdf76538c9cc454a6dbf3add2d9deac58e8310..0000000000000000000000000000000000000000 --- a/examples/autolab_example/tmp/cs103/cs103-handout/docker_helpers.py +++ /dev/null @@ -1,146 +0,0 @@ -# from cs202courseware.ug2report1 import Report1 - -import pickle -import os -import glob -import shutil -import time -import zipfile -import io -import inspect -import subprocess - -def compile_docker_image(Dockerfile, tag=None): - assert os.path.isfile(Dockerfile) - base = os.path.dirname(Dockerfile) - if tag == None: - tag = os.path.basename(base) - os.system(f"cd {base} && docker build --tag {tag} .") - return tag - - -def student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination): - """ - - Use by autolab code. - - :param Dockerfile_location: - :param host_tmp_dir: - :param student_token_file: - :param ReportClass: - :param instructor_grade_script: - :return: - """ - assert os.path.exists(student_token_file) - assert os.path.exists(instructor_grade_script) - start = time.time() - from unitgrade_private import load_token - results, _ = load_token(student_token_file) - # with open(student_token_file, 'rb') as f: - # results = pickle.load(f) - sources = results['sources'][0] - - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - # Done extracting the zip file! Now time to move the (good) report test class into the location. - - gscript = instructor_grade_script - print(f"{sources['report_relative_location']=}") - print(f"{sources['name']=}") - - print("Now in docker_helpers.py") - print(f'{gscript=}') - print(f'{instructor_grade_script=}') - gscript_destination = host_tmp_dir + "/" + grade_file_relative_destination - print(f'{gscript_destination=}') - - shutil.copy(gscript, gscript_destination) - - # Now everything appears very close to being set up and ready to roll!. - d = os.path.normpath(grade_file_relative_destination).split(os.sep) - d = d[:-1] + [os.path.basename(instructor_grade_script)[:-3]] - pycom = ".".join(d) - - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker python3 -m cs202courseware.ug2report1_grade - """ - pycom = "python3 -m " + pycom # pycom[:-3] - print(f"{pycom=}") - - token_location = host_tmp_dir + "/" + os.path.dirname( grade_file_relative_destination ) + "/*.token" - - elapsed = time.time() - start - # print("Elapsed time is", elapsed) - return pycom, token_location - - -def docker_run_token_file(Dockerfile_location, host_tmp_dir, student_token_file, tag=None, instructor_grade_script=None, fix_user=True): - """ - This thingy works: - - To build the image, run: - docker build --tag python-docker . - - To run the app run: - - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker > output.log - - """ - # A bunch of tests. This is going to be great! - assert os.path.exists(Dockerfile_location) - start = time.time() - - # with open(student_token_file, 'rb') as f: - # results = pickle.load(f) - from unitgrade_private import load_token - results, _ = load_token(student_token_file) - - sources = results['sources'][0] - - if os.path.exists(host_tmp_dir): - shutil.rmtree(host_tmp_dir) - - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - # Done extracting the zip file! Now time to move the (good) report test class into the location. - gscript = instructor_grade_script - - student_grade_script = host_tmp_dir + "/" + sources['report_relative_location'] - instructor_grade_script = os.path.dirname(student_grade_script) + "/"+os.path.basename(gscript) - shutil.copy(gscript, instructor_grade_script) - - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/home python-docker python3 -m cs202courseware.ug2report1_grade - """ - if tag is None: - dockname = os.path.basename( os.path.dirname(Dockerfile_location) ) - else: - dockname = tag - - tmp_grade_file = sources['name'] + "/" + sources['report_relative_location'] - - pycom = ".".join( sources['report_module_specification'][:-1] + [os.path.basename(gscript)[:-3],] ) - pycom = "python3 -m " + pycom - - if fix_user: - user_cmd = ' --user "$(id -u):$(id -g)" ' - else: - user_cmd = '' - tmp_path = os.path.abspath(host_tmp_dir).replace("\\", "/") - dcom = f"docker run {user_cmd} -v {tmp_path}:/home {dockname} {pycom}" - cdcom = f"cd {os.path.dirname(Dockerfile_location)}" - fcom = f"{cdcom} && {dcom}" - print("> Running docker command") - print(fcom) - init = time.time() - start - # thtools.execute_command(fcom.split()) - subprocess.check_output(fcom, shell=True).decode("utf-8") - host_tmp_dir +"/" + os.path.dirname(tmp_grade_file) + "/" - tokens = glob.glob( os.path.dirname(instructor_grade_script) + "/*.token" ) - for t in tokens: - print("Source image produced token", t) - elapsed = time.time() - start - print("Elapsed time is", elapsed, f"({init=} seconds)") - return tokens[0] diff --git a/examples/autolab_example/tmp/cs103/cs103-handout/driver_python.py b/examples/autolab_example/tmp/cs103/cs103-handout/driver_python.py deleted file mode 100644 index dbd65acdc0c7dd488e1e2745cfdbadb1926ecac7..0000000000000000000000000000000000000000 --- a/examples/autolab_example/tmp/cs103/cs103-handout/driver_python.py +++ /dev/null @@ -1,98 +0,0 @@ -import os -import glob -import sys -import pickle -# import io -import subprocess -from unitgrade_private.docker_helpers import student_token_file_runner -from unitgrade_private import load_token - -# import docker_helpers -import time - -verbose = False -tag = "[driver_python.py]" - -if not verbose: - print("="*10) - print(tag, "Starting unitgrade evaluation...") - -sys.stderr = sys.stdout -wdir = os.getcwd() - -def pfiles(): - print("> Files in dir:") - for f in glob.glob(wdir + "/*"): - print(f) - print("---") - -student_token_file = 'Report3_handin.token' -instructor_grade_script = 'report3_complete_grade.py' -grade_file_relative_destination = "cs103/report3_complete_grade.py" - -# with open(student_token_file, 'rb') as f: -# results = pickle.load(f) -host_tmp_dir = wdir + "/tmp" - -if not verbose: - pfiles() - print(f"{host_tmp_dir=}") - print(f"{student_token_file=}") - print(f"{instructor_grade_script=}") - -command, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination) -command = f"cd tmp && {command} --noprogress --autolab" - -def rcom(cm): - # print(f"running... ", cm) - # start = time.time() - rs = subprocess.run(cm, capture_output=True, text=True, shell=True) - print(rs.stdout) - - if len(rs.stderr) > 0: - print(tag, "There were errors in executing the file:") - print(rs.stderr) - # print(rs) - # print("result of running command was", rs.stdout, "err", rs.stderr, "time", time.time() - start) - -# results, _ = load_token(student_token_file) -# sources = results['sources'][0] - - -start = time.time() -rcom(command) -# pfiles() -# for f in glob.glob(host_tmp_dir + "/programs/*"): -# print("programs/", f) -# print("---") -ls = glob.glob(token) -# print(ls) -f = ls[0] -# with open(f, 'rb') as f: -# results = pickle.load(f) - -results, _ = load_token(ls[0]) - -# print("results") -# print(results.keys()) -if verbose: - print(f"{token=}") - print(results['total']) -# if os.path.exists(host_tmp_dir): -# shutil.rmtree(host_tmp_dir) -# with io.BytesIO(sources['zipfile']) as zb: -# with zipfile.ZipFile(zb) as zip: -# zip.extractall(host_tmp_dir -# print("="*10) -# print('{"scores": {"Correctness": 100, "Problem 1": 4}}') -## Format the scores here. - - -# sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] -# ss = ", ".join([f'"{t}": {s}' for t, s in sc]) -# scores = '{"scores": {' + ss + '}}' -# print('{"_presentation": "semantic"}') -# print(scores) - -from unitgrade_private.autolab.autolab import format_autolab_json -format_autolab_json(results) \ No newline at end of file diff --git a/examples/autolab_example/tmp/cs103/cs103-handout/report3_complete_grade.py b/examples/autolab_example/tmp/cs103/cs103-handout/report3_complete_grade.py deleted file mode 100644 index 3f4755e6d51317f050f5f13122a21578357a14ab..0000000000000000000000000000000000000000 --- a/examples/autolab_example/tmp/cs103/cs103-handout/report3_complete_grade.py +++ /dev/null @@ -1,3 +0,0 @@ -''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' -import bz2, base64 -exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/autolab_example/tmp/cs103/cs103-handout/student_sources.zip b/examples/autolab_example/tmp/cs103/cs103-handout/student_sources.zip deleted file mode 100644 index 6cc5fa95ab48be4616cc34cdbd487377fb5e0f6b..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example/tmp/cs103/cs103-handout/student_sources.zip and /dev/null differ diff --git a/examples/autolab_example/tmp/cs103/src/Report3_handin.token b/examples/autolab_example/tmp/cs103/src/Report3_handin.token index 6be6aef2778f106dc78cf7909fde42544a5f3e3b..d71c262cba1efe0065e284d35210cc8295abbc44 100644 --- a/examples/autolab_example/tmp/cs103/src/Report3_handin.token +++ b/examples/autolab_example/tmp/cs103/src/Report3_handin.token @@ -1,26 +1,5 @@ # This file contains your results. Do not edit its content. Simply upload it as it is. -### Content of cs103/report3.py ### - -from unitgrade import UTestCase, Report -from unitgrade.utils import hide -from unitgrade import evaluate_report_student -import cs103 - -class AutomaticPass(UTestCase): - def test_automatic_pass(self): - self.assertEqual(2, 2) # For simplicity, this test will always pass - - -class Report3(Report): - title = "CS 101 Report 3" - questions = [(AutomaticPass, 10)] # Include a single question for 10 credits. - pack_imports = [cs103] - -if __name__ == "__main__": - evaluate_report_student(Report3()) - - -### Content of cs103/homework1.py ### +### Content of cs103\homework1.py ### def reverse_list(mylist): """ @@ -39,148 +18,170 @@ def add(a,b): if __name__ == "__main__": # Example usage: print(f"Your result of 2 + 2 = {add(2,2)}") - print(f"Reversing a small list", reverse_list([2,3,5,7])) + print(f"Reversing a small list", reverse_list([2,3,5,7])) + + +### Content of cs103\report3.py ### + +from unitgrade import UTestCase, Report +from unitgrade.utils import hide +from unitgrade import evaluate_report_student +import cs103 + +class AutomaticPass(UTestCase): + def test_automatic_pass(self): + self.assertEqual(2, 2) # For simplicity, this test will always pass + + +class Report3(Report): + title = "CS 101 Report 3" + questions = [(AutomaticPass, 10)] # Include a single question for 10 credits. + pack_imports = [cs103] + +if __name__ == "__main__": + evaluate_report_student(Report3()) ---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -551383e60aa99c5591ddb4e8ed60c3ba58937d9e732302032caca6a245c82cbfc151362619ca762508d918de8a38dacf6e13bf4e4e05d9195e59847d7c807632 25276 +48c6a225ee240523a9d937f568c5bd799b04ec40d31a46621e784172dd62c1897bc7182521385eb2f8fc2ced9384e2c2e5097a31d530d8cda253f9a217fba2e6 25424 ---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file +.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. \ No newline at end of file diff --git a/examples/autolab_example/tmp/cs103/src/docker_helpers.py b/examples/autolab_example/tmp/cs103/src/docker_helpers.py index b6fdf76538c9cc454a6dbf3add2d9deac58e8310..d25500f840df4acd5522542811fb6086a8b9dc7b 100644 --- a/examples/autolab_example/tmp/cs103/src/docker_helpers.py +++ b/examples/autolab_example/tmp/cs103/src/docker_helpers.py @@ -1,14 +1,40 @@ -# from cs202courseware.ug2report1 import Report1 - -import pickle import os import glob import shutil import time import zipfile import io -import inspect import subprocess +import urllib.request + + +def download_docker_images(destination=None): + if destination is None: + destination = os.getcwd() + if not os.path.exists(destination): + os.makedirs(destination) + + print('Beginning file download with urllib2...') + url = 'https://gitlab.compute.dtu.dk/tuhe/unitgrade_private/-/archive/master/unitgrade_private-master.zip?path=docker_images' + result, headers = urllib.request.urlretrieve(url) + + ex = result +"_extract" + zf = zipfile.ZipFile(result) + zf.extractall(path=ex) + dockers = [f for f in zf.namelist() if f[-1] == "/" and len( [s for s in f if s == "/"] ) == 3] + for f in dockers: # zf.namelist(): + tmp_dir = ex + "/" + f + if os.path.isdir(tmp_dir): + dest = destination +"/"+os.path.basename(tmp_dir[:-1]) + + if os.path.isdir(dest): + print("> Destination for docker image", dest, "exists. Skipping download.") + else: + print("> Extracting docker image", os.path.basename(f[:-1]), "to", dest) + shutil.copytree(tmp_dir, dest) + # zf.extract(f, path=destination) + a = 234 + def compile_docker_image(Dockerfile, tag=None): assert os.path.isfile(Dockerfile) diff --git a/examples/autolab_example/tmp/cs103/src/driver_python.py b/examples/autolab_example/tmp/cs103/src/driver_python.py index dbd65acdc0c7dd488e1e2745cfdbadb1926ecac7..428061094b28750e2110bf560b8760a3ae39cde9 100644 --- a/examples/autolab_example/tmp/cs103/src/driver_python.py +++ b/examples/autolab_example/tmp/cs103/src/driver_python.py @@ -1,13 +1,10 @@ import os import glob import sys -import pickle -# import io import subprocess +from unitgrade_private.autolab.autolab import format_autolab_json from unitgrade_private.docker_helpers import student_token_file_runner from unitgrade_private import load_token - -# import docker_helpers import time verbose = False @@ -28,10 +25,7 @@ def pfiles(): student_token_file = 'Report3_handin.token' instructor_grade_script = 'report3_complete_grade.py' -grade_file_relative_destination = "cs103/report3_complete_grade.py" - -# with open(student_token_file, 'rb') as f: -# results = pickle.load(f) +grade_file_relative_destination = "cs103\report3_complete_grade.py" host_tmp_dir = wdir + "/tmp" if not verbose: @@ -44,40 +38,24 @@ command, token = student_token_file_runner(host_tmp_dir, student_token_file, ins command = f"cd tmp && {command} --noprogress --autolab" def rcom(cm): - # print(f"running... ", cm) - # start = time.time() rs = subprocess.run(cm, capture_output=True, text=True, shell=True) print(rs.stdout) - if len(rs.stderr) > 0: print(tag, "There were errors in executing the file:") print(rs.stderr) - # print(rs) - # print("result of running command was", rs.stdout, "err", rs.stderr, "time", time.time() - start) - -# results, _ = load_token(student_token_file) -# sources = results['sources'][0] - start = time.time() rcom(command) -# pfiles() -# for f in glob.glob(host_tmp_dir + "/programs/*"): -# print("programs/", f) -# print("---") ls = glob.glob(token) -# print(ls) f = ls[0] -# with open(f, 'rb') as f: -# results = pickle.load(f) - results, _ = load_token(ls[0]) -# print("results") -# print(results.keys()) if verbose: print(f"{token=}") print(results['total']) + +format_autolab_json(results) + # if os.path.exists(host_tmp_dir): # shutil.rmtree(host_tmp_dir) # with io.BytesIO(sources['zipfile']) as zb: @@ -87,12 +65,8 @@ if verbose: # print('{"scores": {"Correctness": 100, "Problem 1": 4}}') ## Format the scores here. - # sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] # ss = ", ".join([f'"{t}": {s}' for t, s in sc]) # scores = '{"scores": {' + ss + '}}' # print('{"_presentation": "semantic"}') # print(scores) - -from unitgrade_private.autolab.autolab import format_autolab_json -format_autolab_json(results) \ No newline at end of file diff --git a/examples/autolab_example/tmp/cs103/src/driver_python.py-handout b/examples/autolab_example/tmp/cs103/src/driver_python.py-handout index dbd65acdc0c7dd488e1e2745cfdbadb1926ecac7..428061094b28750e2110bf560b8760a3ae39cde9 100644 --- a/examples/autolab_example/tmp/cs103/src/driver_python.py-handout +++ b/examples/autolab_example/tmp/cs103/src/driver_python.py-handout @@ -1,13 +1,10 @@ import os import glob import sys -import pickle -# import io import subprocess +from unitgrade_private.autolab.autolab import format_autolab_json from unitgrade_private.docker_helpers import student_token_file_runner from unitgrade_private import load_token - -# import docker_helpers import time verbose = False @@ -28,10 +25,7 @@ def pfiles(): student_token_file = 'Report3_handin.token' instructor_grade_script = 'report3_complete_grade.py' -grade_file_relative_destination = "cs103/report3_complete_grade.py" - -# with open(student_token_file, 'rb') as f: -# results = pickle.load(f) +grade_file_relative_destination = "cs103\report3_complete_grade.py" host_tmp_dir = wdir + "/tmp" if not verbose: @@ -44,40 +38,24 @@ command, token = student_token_file_runner(host_tmp_dir, student_token_file, ins command = f"cd tmp && {command} --noprogress --autolab" def rcom(cm): - # print(f"running... ", cm) - # start = time.time() rs = subprocess.run(cm, capture_output=True, text=True, shell=True) print(rs.stdout) - if len(rs.stderr) > 0: print(tag, "There were errors in executing the file:") print(rs.stderr) - # print(rs) - # print("result of running command was", rs.stdout, "err", rs.stderr, "time", time.time() - start) - -# results, _ = load_token(student_token_file) -# sources = results['sources'][0] - start = time.time() rcom(command) -# pfiles() -# for f in glob.glob(host_tmp_dir + "/programs/*"): -# print("programs/", f) -# print("---") ls = glob.glob(token) -# print(ls) f = ls[0] -# with open(f, 'rb') as f: -# results = pickle.load(f) - results, _ = load_token(ls[0]) -# print("results") -# print(results.keys()) if verbose: print(f"{token=}") print(results['total']) + +format_autolab_json(results) + # if os.path.exists(host_tmp_dir): # shutil.rmtree(host_tmp_dir) # with io.BytesIO(sources['zipfile']) as zb: @@ -87,12 +65,8 @@ if verbose: # print('{"scores": {"Correctness": 100, "Problem 1": 4}}') ## Format the scores here. - # sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] # ss = ", ".join([f'"{t}": {s}' for t, s in sc]) # scores = '{"scores": {' + ss + '}}' # print('{"_presentation": "semantic"}') # print(scores) - -from unitgrade_private.autolab.autolab import format_autolab_json -format_autolab_json(results) \ No newline at end of file diff --git a/examples/autolab_example/tmp/cs103/src/student_sources.zip b/examples/autolab_example/tmp/cs103/src/student_sources.zip index 6cc5fa95ab48be4616cc34cdbd487377fb5e0f6b..2e99c15a2136ad719eb8143da4069fea3cfd0d5a 100644 Binary files a/examples/autolab_example/tmp/cs103/src/student_sources.zip and b/examples/autolab_example/tmp/cs103/src/student_sources.zip differ diff --git a/examples/example_docker/instructor/cs103/Report3_handin_5_of_10.token b/examples/example_docker/instructor/cs103/Report3_handin_5_of_10.token index ea7d74deb661c0c6930a644610d4fa41b3840fd9..2b07649b9303a774068d8772566e6de298533142 100644 --- a/examples/example_docker/instructor/cs103/Report3_handin_5_of_10.token +++ b/examples/example_docker/instructor/cs103/Report3_handin_5_of_10.token @@ -1,68 +1,5 @@ # This file contains your results. Do not edit its content. Simply upload it as it is. -### Content of cs103/report3.py ### - -from unitgrade import UTestCase, Report #!s -from unitgrade.utils import hide -from unitgrade import evaluate_report_student -import cs103 - -class AutomaticPass(UTestCase): - def test_automatic_pass(self): - self.assertEqual(2, 2) # For simplicity, this test will always pass - - -class Report3(Report): - title = "CS 101 Report 3" - questions = [(AutomaticPass, 10)] # Include a single question for 10 credits. - pack_imports = [cs103] #!s - -if __name__ == "__main__": - evaluate_report_student(Report3()) - -### Content of cs103/report3_complete.py ### - -from unitgrade import UTestCase, Report #!s -from unitgrade.utils import hide -from unitgrade import evaluate_report_student -import cs103 - -class AutomaticPass(UTestCase): - def test_automatic_pass(self): - self.assertEqual(2, 2) # For simplicity, this test will always pass - - @hide # The @hide-decorator tells unitgrade_v1 to hide the test for students. - def test_hidden_fail(self): - self.assertEqual(2, 3) # For simplicity, this test will always fail. - -class Report3(Report): - title = "CS 101 Report 3" - questions = [(AutomaticPass, 10)] # Include a single question for 10 credits. - pack_imports = [cs103] #!s - -if __name__ == "__main__": - evaluate_report_student(Report3()) - -### Content of cs103/homework1.py ### - -def reverse_list(mylist): #!f #!s;keeptags - """ - Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. - reverse_list([1,2,3]) should return [3,2,1] (as a list). - """ - return list(reversed(mylist)) - -def add(a,b): #!f - """ Given two numbers `a` and `b` this function should simply return their sum: - > add(a,b) = a+b """ - return a+b - -if __name__ == "__main__": - # Example usage: - print(f"Your result of 2 + 2 = {add(2,2)}") - print(f"Reversing a small list", reverse_list([2,3,5,7])) #!s - - -### Content of cs103/deploy.py ### +### Content of cs103\deploy.py ### import os import glob @@ -110,280 +47,346 @@ if __name__ == "__main__": #!s=docker_a s += f"My independent evaluation of the students score was {checked_token['total']}" with open("docker_results.txt", 'w') as f: f.write(s) + + +### Content of cs103\homework1.py ### + +def reverse_list(mylist): #!f #!s;keeptags + """ + Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. + reverse_list([1,2,3]) should return [3,2,1] (as a list). + """ + return list(reversed(mylist)) + +def add(a,b): #!f + """ Given two numbers `a` and `b` this function should simply return their sum: + > add(a,b) = a+b """ + return a+b + +if __name__ == "__main__": + # Example usage: + print(f"Your result of 2 + 2 = {add(2,2)}") + print(f"Reversing a small list", reverse_list([2,3,5,7])) #!s + + +### Content of cs103\report3.py ### + +from unitgrade import UTestCase, Report #!s +from unitgrade.utils import hide +from unitgrade import evaluate_report_student +import cs103 + +class AutomaticPass(UTestCase): + def test_automatic_pass(self): + self.assertEqual(2, 2) # For simplicity, this test will always pass + + +class Report3(Report): + title = "CS 101 Report 3" + questions = [(AutomaticPass, 10)] # Include a single question for 10 credits. + pack_imports = [cs103] #!s + +if __name__ == "__main__": + evaluate_report_student(Report3()) + +### Content of cs103\report3_complete.py ### + +from unitgrade import UTestCase, Report #!s +from unitgrade.utils import hide +from unitgrade import evaluate_report_student +import cs103 + +class AutomaticPass(UTestCase): + def test_automatic_pass(self): + self.assertEqual(2, 2) # For simplicity, this test will always pass + + @hide # The @hide-decorator tells unitgrade_v1 to hide the test for students. + def test_hidden_fail(self): + self.assertEqual(2, 3) # For simplicity, this test will always fail. + +class Report3(Report): + title = "CS 101 Report 3" + questions = [(AutomaticPass, 10)] # Include a single question for 10 credits. + pack_imports = [cs103] #!s + +if __name__ == "__main__": + evaluate_report_student(Report3()) ---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -a659a8f1b8da55e9e05a6120c2f3db05bbbcc545d23f9fd204a4440fb482cc5c567b165a117bf70a3fe742748a516f18394e4af119164da6bd0681dfd0cbf416 49184 +09103ed917775bee240ea10ad749d07c9f520d23e7422991e14036ab436251342cd3577f914c5ef0fa95e3dd0a91605ff0b57d2a5290fd53cdbe9d5d7c10ba22 49560 ---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file +.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. \ No newline at end of file diff --git a/examples/example_docker/instructor/cs103/__pycache__/report3_complete_grade.cpython-38.pyc b/examples/example_docker/instructor/cs103/__pycache__/report3_complete_grade.cpython-38.pyc index 29600ad002bee7bcffb89098df90876e25fd7158..c5d34ff892f4e064899f3e150b6ba315b67cb3b0 100644 Binary files a/examples/example_docker/instructor/cs103/__pycache__/report3_complete_grade.cpython-38.pyc and b/examples/example_docker/instructor/cs103/__pycache__/report3_complete_grade.cpython-38.pyc differ diff --git a/examples/example_docker/students/cs103/Report3_handin_10_of_10.token b/examples/example_docker/students/cs103/Report3_handin_10_of_10.token index 6be6aef2778f106dc78cf7909fde42544a5f3e3b..d71c262cba1efe0065e284d35210cc8295abbc44 100644 --- a/examples/example_docker/students/cs103/Report3_handin_10_of_10.token +++ b/examples/example_docker/students/cs103/Report3_handin_10_of_10.token @@ -1,26 +1,5 @@ # This file contains your results. Do not edit its content. Simply upload it as it is. -### Content of cs103/report3.py ### - -from unitgrade import UTestCase, Report -from unitgrade.utils import hide -from unitgrade import evaluate_report_student -import cs103 - -class AutomaticPass(UTestCase): - def test_automatic_pass(self): - self.assertEqual(2, 2) # For simplicity, this test will always pass - - -class Report3(Report): - title = "CS 101 Report 3" - questions = [(AutomaticPass, 10)] # Include a single question for 10 credits. - pack_imports = [cs103] - -if __name__ == "__main__": - evaluate_report_student(Report3()) - - -### Content of cs103/homework1.py ### +### Content of cs103\homework1.py ### def reverse_list(mylist): """ @@ -39,148 +18,170 @@ def add(a,b): if __name__ == "__main__": # Example usage: print(f"Your result of 2 + 2 = {add(2,2)}") - print(f"Reversing a small list", reverse_list([2,3,5,7])) + print(f"Reversing a small list", reverse_list([2,3,5,7])) + + +### Content of cs103\report3.py ### + +from unitgrade import UTestCase, Report +from unitgrade.utils import hide +from unitgrade import evaluate_report_student +import cs103 + +class AutomaticPass(UTestCase): + def test_automatic_pass(self): + self.assertEqual(2, 2) # For simplicity, this test will always pass + + +class Report3(Report): + title = "CS 101 Report 3" + questions = [(AutomaticPass, 10)] # Include a single question for 10 credits. + pack_imports = [cs103] + +if __name__ == "__main__": + evaluate_report_student(Report3()) ---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -551383e60aa99c5591ddb4e8ed60c3ba58937d9e732302032caca6a245c82cbfc151362619ca762508d918de8a38dacf6e13bf4e4e05d9195e59847d7c807632 25276 +48c6a225ee240523a9d937f568c5bd799b04ec40d31a46621e784172dd62c1897bc7182521385eb2f8fc2ced9384e2c2e5097a31d530d8cda253f9a217fba2e6 25424 ---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file +./Td6WFoAAATm1rRGAgAhARYAAAB0L+Wj4Ge1SjpdAEABDniWWwoi0wwhzoiQQtW7Q4ixu070+FmCNLg9whEoY+eJzQ3UPVt/JjYSLjn4Psy6APVP4gQ7h70ivcMPjuJ5+uQvRGsoTm8W1uGQPlx0pWcpv2Tdmr2V7iw6wmVlYPRmotMRYm1 +AHADq9Ya8tAHsx10rTvmlESwKMjFgc4XDhTf6QhPlsgFS+itVYF7AcT9MVRrRVyybp8UR5ZKTScWuuMStxkwAkzL3DoyMmgiMqylK2u6iq0DHEpoSPGLaapKPacBnC68ePM2zOrfaFJ1k+SB598NuU+OAgUusP9FXszKmgiGIPRMJy3pP2KP +dC44mDSb+xp4RVHgT0N8s6sk5A7tdtTWowEoCTB0GiUT7qQVbPMJQpBbHZxNlgMQ6E81c58y3x1OHX4XXg9ehpvJ/gMGC4LAH8ajbwUAdID4OGhMv3jbLUzwxpByYeT0U61JFTa2G/ePYNxIXsGyysD2uLHnP9hSZtQY5vU1Ny14qK6Zz/b8 +FyapG76WETa0JuW/BjWX2E2Kv6QJx7ktGmyJSLxYfZl+/yX3sKVr/w+yvNQ2QRzIl5b8RR1laKfGh41jesIGqd03ODGXIsoNYJWplAVYIaiGHpucjUtNbk3bIxCVj0BlwloE/W3jbg2NjpEO22iROOwllhcTe/Pct8pzXA770vGU8zBnlr4M +RZ1aMzvHKS3DbU4wBfXy8Rl53KBhjE+bI450GvLOBQGD/Q4iv0NM+i2RlEhmj7mibE0O9dh5KdazxzWAAwCvTsz+JAO19TMWRaTDpv/7SkCGMDFIt+EMZO+yMjD19xg2l9URVkW/nzOTc9RrdlNI4aGYdcZwKV5dEbpclq9TI293jJAv27w8 +HvuanfuTciMXMUzoq1+iYS8B5HqCRwpiTTF9FpWzum12ofwHiLcDcYjeM/AU/mTPcQp7PQ7f2m7YV+5k+IyiAtpsg+4l3OXPZaM6DKKgZQHm3kMSyEYk3T6TAKA8NEjbHVgdBhSySdRLhrB9/EMMib7Ea3elYShXY+nEIKDL6j9SERyIJuwB +5p8CBxV5K1Z/5K08nBIrRZxEmQq6557l4Objm+uNVQ+LVz1x2GeBgKLrD1T0dzorLxv7oHFyvkA4Ezl8c6E9SXfYl3CoDlfEp1Lzp4N9jJO2dyOPI9FqMn13yP1cEPzvjzdwu0OKOwx9XN0QBCUKaykp5Zppn3AFeIE9XMk3bYMEGMG1WO/e +yGDt3x541KBgZ+0zPNO+zZzhB6XeJ16WTb/FZj5F56wWYdCllHpwu9riNioi7jrvvgweGB/sfhhwHuvCoPwm5hymQSjz/idkpz6e8G7tb+RAFTLJAS9bHjMfyab3l5tjhZqtPljKTow9/7vNxnhJIz6z2QjM6nUDk+0KCqFsD5aIWm+yc7Ad +BXPXp6c6qD8H9Je935nnbO460MSScIkE6s+o0jKJHqUob1jh1AuNBglIhWvJvbPdyfLX9poMJI18AYlhtNrX9pPFkd+fJCADKye7CZqiK/tPGQnSjXna+10Rs3H4V4INlK0qLMvEaL2deWeYOuVEkwOM79bkyt4cwvnHj6nRGTlOY74SAMRe +tyDD0V4TQor5r2eY1wDB0cpypk5IjWMj5KhUfMjlkd8AXamPoD6DybbrryELgpDJBfZ2zWWBf2R4uA/7Qlrwg1byw+HC3ya+gh1WCSi9AqkGDOW20hW42WEwIxr3CeGSaWhFuBOYXisLdtz51VP/UPdST9Bn/yMo7OJgLAkakfp/TMcIYAlz +FemZ15LcJng+o9VT+P0CRTMP1qCC/vUP/GRhmnOaG9EvBBTqdzKuyjWs4/N6joAbJIak4fXFy0Rus6Q+OSolH3Mp2J/WqZAAxA0eru9dyRrnW6dwDqHVa9kABOm9wt868FeafrNhMUu7ByB9w8X+9wKoCAT8MJ29p40LXVKWGGHh/r8arFbT +9mwJuYQRrCXGe+aKIv7dB8UC6GwMBgAHtMJ1QkECGDagQeRMnN8XZyzgQ5c9c2hDE3c2GTN0wmbzbYSkdDMiNqIclTEGcK1RRgNDq1qNnvPelVldxdaWtlrY266i61PVHTGI96dn1g1FUsyFKG/qtUSNdpvXKpHL8yQQTOi33tDaG1i4tIoN +cWcHBv2mshZx1/+vbCfXlarXBMN+PQnupR9fcDCMY9X/yi/3y8aedJNYxWsDcqYW+YLqt9cFjXoFCqlYszTQujgPuoeeYOOqN2ekvFgxngQDGC5rnj3Nyn93JsQAt4zuw870OHuuiy+d6PG1zoUINwmF6ZZkTZSlG5hL9ApftODWkdVxfXam +gGQvIaqDHmAL9p3irs9HRe7Wc8DsT6q4m33qlqvxwCzQvVc/MA7F9uWgIbpimw0TJWxpBFL1tSrqqK0/6dOqJgJlZTVY2Q1hW8+Na4g5Dcozq6mWcpY99foNx+I+okjN1eV11YSjFcrjjsp7zAD/aQvuW2ZC/9/Z57EK7zd7ULNd24BvDch8 +MvUX8fcXSxbxVNFcrBeUuydgsxSoQkZNlTtYhgsjZa373soxjd9cI2wjdK+EzKzliO2xnzJjfSMZQ6cbuO9varUFw0UqJO9UGRpbQxAnqJQ+ULrWLweecoT1jxf1eVcieEdiBtRinLjZPOgoTYcQR6e/HBw3LH+EY5zbeG6sP/kS9R7/QB+l +yewYxBTJyIdMFM3UHdcuaMf3L5CvvWbyPxxkoga2ciVZ79LIY4q27ROQBy9avhUg6I/POZG6NIxd2FPU31II9OIPuKTJWqRgCCsyrlEtLqfLSeXC+tzq8OXS2oRkEWpBLaO36QpC2yU/fb9LjFcbMxx7zKo6nTGczyIwRtMEXdJWPRbxBbxf +ogE9ZcfxF51ybP6JepfB1QQx98DP26JSts6HEv2eU9RD6PtqAstOUAp2CimHNY1DX6iKBsrwWK11A/nUQlsHqUhqYRqkL4IURCXnhhuUYUNL53biKL+pH2odkdBHAoi9CYgDIj1yXcguDlNEIvkl7W9Vr1GJ1rHr7IY+1OQ1RBJcBS9XdHWO +cpfhBsVSl9SFFEW7uFK/kV3pH+nkxPbtQMZaIhpFBCPUNpP3MT6fYsVxk2MSpM4DtThZwlMkN/xjv8N1ThRO3iru7WbMbOImiF6kVllGJurUXrM/pmhQG5TQwOMQ4LQCGF+6FDG2FnqOZb3nXBQ2DfIcxXA2hp/6yd2MTnhB9IhIwfYJxVZd +UKftmuU0LuAAHVeycBaZoz4hUBhkiUiBFUc/wjakGLS79q93XQnLSU1chAIrBI2uPD/AW+Js2bxncQgHEsNvLqy3+iBZp/suMtO4xe5qOKJ0y0yA96ZvkKdf6bwHHdzPQrTDlQiSxc7CWx1rIgBVNQGTDPVbfAF/EnZwEIMDkqp9DUcnL+XB +nT9WEiZrb62WBszVDANFe9bOfgkDom87WpdhD9zWaOr6BtohDioxUexMvNXFechx3nldrL+J7sW/lCNA8hT2bIc1do1kURIaAwfxlOq8z/be292Sqp/6mrGPrn6+f//5I2MX0UsL4owXIeNTjuUNSkfTTA8qZbJhOUrxgCHODw8NyEO6rX6v +OR3J+0slXTeRzpdfpXaOC86iTgs7u9jNtGEFKfp6TWD0zLUgry7f+U2lsYBFQ8DFiWBlhbGhpFK7lSXE90dc1iv9OY136IGuz3Dax4ZsbedkrDpnwd7STaHvO1D+EuzeELcOp26fvuF8zQ2tajjGN4OnnmM6tq2RhdsUaUunJjKlPFwWs4fT +Pb8S0jRlH3VkZLVtMMr0BqoNxF5/1j3/jkph3AJaQ96FbJHgUsPHQsf/lm0f0BZrBBJPC5ZuXB/qDG6zHWa6qPxeizF0TBIZRtoJjeVRtroPNwuKwwcZxKn6sVtw1dXAlLzSDoPrvXuAlURJOOChI5lWC6XYKcFjbZzP741aY9vGhClLiGdX +3kFCw15bdNtGzZUGsjzsQYG+5j/YCXkPcJZyzhMHbCnR4xlPl2bL5OAqSS3if3H3EtUeHT3rlQfRDGiMIozO+gEawJtfhiqDxoCsIOOIJeENiNcnEo0vFm1VdPVDuXzE69Oyr0FYiOJH3JNFzkzGGtvo+3eaGtv+lTUBkcKszOikr3tMxhrw +V6GFkPHUR2XSTSu/c9j6pSq2zNok6Xa5rQljlBLodzbIlSLH8GmTHtVgp3M1tHbY+ftp3RUJxsEiLFipsZWRWCJsVbeuFGVuG/y7WmrR/JYSZqcxEy9zhhZ9gbbEL6Y7NBU5j9gedRylpXliTIJ9nCAvEfwL3mwt9wo1TmZA6wQgmaDNQvUF ++x9a2/sgT5DGz/chWY9wCWWxmaqv2nEFEsFbJMNhrkpNvOTcIFPkz4+YCGJdpOSXfP7E48F4fUWL21fNfcthpzXYr2Pp1ctYQRhr/plY4gkMsnfuoxxid7aIGmlYssvqKy5SZQIETYXkOYiorgm+XDsEN5riTs8AYc1M0i4T9fJZEVweibMm +/OgW6bXUhv9R7zTp8v8tlr1+fXj599JPmIA1B8VAi5k/jiRlZ5ZyLW4DsQV42rV15a0G5E5R4SFKhcNsEnABjWewnzOj+5zk/6GnWNxBbzlrh8fVwb+JWFLqprd+o30tVn/jrOHiNStkrhweCnB7XG2Kud09i/yzLIHNbb7WDZhXedwFMBRR +wql9e2H/V0eU2PEi1R7p7R/efS2V4JCJCeWxsOseHeBZMrgAvTyDNk6iJ4XPqb4LDrlWKEDawHnjiC/bLFFDSmxWgncLhquHYL0Tnwgsafc0jVYJilyGZ4WKPaY+lyk1PUaQCBM/nd/4xl87SSknvQNaQFTFYGjif8e1aB9ZFUH+/KJS+Lsq +0gaHIc67UGSpC7ycIwyBqBZ7L2ksOJZc1lPKQjVQyCkctAPX4wMiwKHEqERLLk0QD+9zageaU+Qk62cWthQMrTTv/zmqPwNsCk6NBvJzVPmKQt0Vkuwu4CtaFcJwhl4BDNhJvoFMo9znGh6Uv0Y13yGeJpZ+vhKnymeMJ/a1XWwOPiwl+wI1 +BQOI9zdwxUUfDtZZHt73PKuONiXuCO51g1cfNe7r3ZGbCUQ0pteJTYqPVO6+iqIAB/ifTzkSqTpBsjP0iQEiE4usb+mVmoZ07zsp/qW7U8TZkkGQM7ZAiEuEeXtxrKagji1pBZueM2HOL2ivjNGwYyZE5VUf9b42pg0BBd7vLWqvH5sZtIL/ +pXFntx99+ayzdIPYN2hi5YSkhFEAhynG1TUpstkoNNjAnTNP1oFTCnovnluJqhzTiYAnp2yu8Fi/+GC4Hxrq+Pl8XdGZCqT+A/N9UHPoQX//29unraHXG8DF8BlGsw0dL5SQ7vyvb6a6VCdTL/v8V7tPiJLoQednh+ULrn7yKfJluLQ/gIbE +P5fmTPRd+H8yf9eNGwJcCdEt5HcaV38VwDlIB919Ru5tMqEmPMNdlGmvp7/z6SElvo8B/xVz4EVOgZ2EULUbLB6UreNkPT3PLpNmqzPixNnbSf4usboaWzfDaeUIUETqL2YxT2URQnD9K1XgqScZx+SkgOcN5J5hmt6ZPt5LcrEv94S+gLmx +qbsbV9S/LC4kY6DLXHz8Q9T6yQ1QhZ6KDoB3ykekKAE1IE/cfp5jKXHJDXYQaBn24i8rLDVhbo6oHA0kSYRHPyg2Ixgb7SNXeU9g6gjUKDdMGQnb4c3NNnLmYLfvoNm0DBg6UsnRn92S3o+D6DMal9hltDBN4aEY765Nccc8VeWnWHBu0iUI +6VhAvFuoFwyi91EIHibC9gclzFwPcF/1ueZfkeUOKrvkDsorFkXCySGOPp70QvkWV95lahNng/ihCPe7rvGBhnTihsweH6CAywKHY40TBxfDDBAHpfK/PMB5d2b/4fx/Mf6sxiucT3/ZLtb44pKeNiy9xuBLlN7ejhDHn4qAzDVB77rfUPFM +eAJG+zEn0QQnw9CncBlbBCdsVvizzo860dB+punSS+F9dbDXIrNfwdg0pDHqBQRII/uIjCDfNP+YJSWBHYHNMp1bsN2K0alGGlylRwWa5FH6TWUubNERU6roiRnzRfOqRAc/cvsIX55KbPt6F2ZvKK+2ssqpyxXVpLXI3FGOLp1mu5ZlEQhm +w2BPjRtbK2mz8b0xk7dD8SZHZ4g07Xp1OywJW1OYtysZieJ02gkmDscFDevvCj+J6DCTCzm+Pqgy4WZ9IXPbn6r4HM+w2R+gKIaOY6ww3T0bK6lLqEeduvg2LAqOBqEG6JB7QbU3svN93yhf23dSvOjb5QMJ0Ek64KjJqhCjA3FxFO5YdnK/ +Li6VxXIGRQKXq0hRw5W4paA27oE4F+beT9D2uIBPOKKogkebUB87hyeJWgOumU+eZsGB1DKgrHWlHI3I8Q83lhc6V5eSvtyIM5oCyr3i1wKuUe7DYMz5h2ytTBKNu8x31OOAIPETUQ3W1zhNkFk0Ug1VLVTgMm6bGVJeO2oNdNezE+pem8// +It1aujX8CJ+pNQ4/5anESkV6t8142QfWQds7TjsMMrvpHxdIcYrNG86WQmOAVGbCUj2MRuu8Tr/+fX/oaRzk0sIkunscasMnm2tK/DHS3lYOXbhDRMiiTP/ctLoPQzwED7Wpc+HxhPwifmqfDl/wIReMoTY2sPfdlzveFIgcv7Wg1MVL53GP +5B9Xg1CAUpUZpP2/vKLzPYPOhRBJGKBCkyjemicWdPUZOvcJP0IzASCWZBbkRRlVXrHjtjx20euaWiBn7lJQDU390MmipbUFbssWfXOfg4HZLaoarlRRWDLKr5/HiWlyyFEKbylLqggZ87+PvoJ4G9MkYJhSDRvgDklwhetOR6nN0D0TBLsx +IKhhYYvMFdCh7QsWBJzBKr01GT5MER6JRudm9ZB7pFB0If5Pp2UMsZMbm49yM+/MP6KsSn7B4xl+HTADYhtfC+IyhXty8LeeoxaSc//sSSr256prot1/eObQNYKlXf3y7RJ6JDkKMacgyYr9VSGYiMWavq1fwD2rRhU4z+Do3K3FcvnCya8J +BW9sCKcg4hK3OUhFbb7hDNpJRYBs67jpLsd2SxOBRpKv26fPkpv18lv5dmQb8gOnI5/B3C7a4L9DE0F2YeEgUE8Jrm/wacrhOViql3Ldz2eb/t66oJueOAXEoULQoGEtc70WswZEnm0AGR1AJ19YezraT/4EkqVJ47UJBnPKa4Ov2mibT8Ez +iBvkgZvyocvzzaXkEqnAF3jZ0QIPo52GLwgD9twu34srVpCRjwQKdW0aUFZWuH+v2SRfAawPms6HdqZYSOocDWDFqvIAydQBQyzyXoS3itcSvG84tPRQZFCKEQT5W5InzFYPU8N3GoRcXkYHv8fDgaz+jTfQZf6pOsPNCLGrMNfeTaj597q8 +L40TcG8Eq73o2lWtKRh9N8F7ID3PNWPlV6Rxch66DXZGG5QjyAB36VFj4YSMXd4ALTfxZnl5iEZeSHy7h/aiKO/zoYN3sAi3UIYFP3/Fita6ZU6UrtXi+SzivISXW/WdqShVt7CArHuAuWg8QTTzXgXnWyiraqqKCzBW/73AbspuOxwB+FPQ +DMxCUL7LHPi3gM1FPCMzlWpxsSNClvPZ/hfn3Wld+ZF8TahK85GNSqbUG3QqlZHUxzcXvKjNJGXH2hQjLZ0eCoelsvPf6OcoAdKyCa+3PDHHG7OGPkJ8bUG3sBmCKCx9cY0tdJqv1MbX9v/mD84aLiNKETCD6bcUnk+aasyd/C31lLGYLDUZ +xi4wrqjo/LcARAzCiNw9WP+umiriwn4KwTXWpMyirikV/EiFFEyHgu528g58Pt/uJzF2IEPHhjowXI/Tm4Qzxnnie/ugVMl0TvBX5qJYJozZO0QlEvYLlw5hSGTOxf/NIclk+8ah4p9uq1fhrGJCLG60FCbDFRr7qdGFZNJl0EnwIXs2JYNZ +WftPaguYtwSWmLid3aqYhJveruzx/OFf60XU5MKqRxEIHhMsPuyfoASt+YvguVl8tiTJXpX0bEVs3A+V9sL2Wqws0HX6woPeGkzgrCJnJLqJBRrygLebIIL/hWvhAjgBHtnACF1LKkgAajUu3ZpiT2J3JMh99p2LrBIlgk+F79Eb0weV2c4p +xxi/k1D8FmK6bkHSOqkXqjLigmr4Y8b/ruWVikmkNVuhanRR2JlRtrSViItCTWwQ3CXzoisMXajTeAxHibNXRedEQayhntD23P8OzXvM4dufSaIrxMXdlIvtgeMSdGH4dZJAYir6zWYEgu8K8Oc7WQA8lvidxCUAbozq41MrjO11SuVEyLLd +zBe/yQXWNjEnKyJt6ek2Llr7aE8KBmIx3nZ1b57XekalWFmASMd9sthuTRYPSh2frSq2rd3AKAopS5BnYq8IdSD0yhXa6XcWLYuUwOC0WRLPxGeUisZavNU9t2e5fJ4G6LPPv+CAaMfcUp5K5AfCg3o9k0tHod3Vs4Ww8xnd87e1Ji23bcUg +tCR4KCatjvsXmRFF9atKPtFIiQ9akDTy1Qq5dNSwo0aEyljiaHJvHD0t0/tb7uQrMFq7VOV7TTkYT0r7JMnowqQ9+mkBEc6qIUMFopDsNLdmZJxsUogNTOWPIgVdBgGho3MZSIWiLtMT6n4v3xEsPnTDlxOWXlaegnurzkHVA0sseU80qS8Q +sq+/4BEJVn29P/PpwtYLlNYWgKM/WxRUjmD4FpsdP962Uu3ga0/1B7UgGpAgG0+fjxCk7valit6z+8lTgtdTjIuva9quvAC2A+bp3ucA3+sGb43dCkcO2OSwNKWQVLrWgLJIAGkp677zE3QkUuB3okWR9evGnBjZIuc40iNN4MJsIFITI0Za +h3uRk9vNCESvTfwBQWIv4Xgkmxmjy+KD6H+VkMwjHfhxFKckESD64Dp2Dmv1x/4UR02/8WEfmdMzxwg2YAWzc9D5kiG5mkfUXLHTrCeLaYbJ2gzQiJdANLWB8SSWG8mkMY/rS98mnnSvAuQSKaWLA6u2L/bKE3FmgG+eCr13izwDzf4GlDOR +k4zewF/6+FnmXhLC7iOqP7bsTVLYaBdQ7e8peJE43S73nP+ic0N4+8j0b0A9JdDg8mM0XBoys3NdrGvv8T38jOoU4I3uRQzNOxqObdI9N0rSZRx79dnvug9Cvhq3wNNVZzLzWlqli5ra0DhUpa9Qg1APoHtE9U2X4s+lAqZ9cZXg7mECkrUU +Y1umIHchoSvVZqmCImyKmUU36e6zKbHuvNTBwC6yd9Y4s0Pssny9o4x9Cdll7DWiw9SV9GGYDXBiA+K28rLgjzNUn8sTMsopSKolhM6bGMRcZsUn94RgZG2TQP3lGLl/a6apmtgtvCYhlw+8MNqhw2OEXzbUiLa+sxRaRHdDopq9KxdcXslU +gFpRSvnF54StwyXjsfpxsl7a1mUBKXFbXYAFdmz2TA23z68WqVXqGJLDM5kuNIaZAmB4bWTqn99sBCztCUBgcbbiA3B51NIKeJk2bYRGvizNoL0v/ljuoVDmcHG/41PmZQxfRm6nYE4dglKMVdvnK15Vj/Jqm4G7HXgBYHeMUZiVHSgqMGAJ +mo3ANgLIcWVoWZL+H9vCErn7VhAF5Ci0QH70mlkYqGDitfArJDtoB9CQAHTW5kxxdr7xphuLht+cKqxOx2UG2d4SQdfVMwmLeu//tGhOxJcbnCuwSp9Emb591kf53GPuLhBEFK2XP5tmwBPhiKBwHwSdliZs39qwSkB6Uc7OQ53md75TMisI +8KmNgT2zQlKW9Atf+l8D2Vf9sD5nFaAdw7VL3YKFedSDU0dVa72Bhj+0AmvhwCF83S9BJ8iiwsQkY0BhbHydIH9bbQ6ud2i5DwkwsdoPOlW+GuspUPDWhl8WXeGlIi2aXlRClxe0IzQtY/1VkRJMfhvoPgKjN959DiEg7GnNdmHPpbC/8dws +U2nHE60kFShhjitis3/AwRnH/zF5BAQs+5k+/iQmHwFyKt8aihogvV6uAjadi8Q37MHn5roBAZCu+TziJyjgVRP7OjlzTum0bz86PanWRAT525vypTq9DgfEHbfWHRppMNKZtsNe0fIYNnWqpxWjZJvrYgC3QCNfzzbjkllOfa0oII4es8Yo +ZTtHgLvmkMCFceJMGi4ORpvP8njkf1mnxz2xfG86R0aRXLWTIFTvOsb0CsnmWtMXh2cbrb9D2ouOMEFU2jUyr7H6MC8LllvhWPvwwWdS4dq8ia4tGsuzMG9O1cNWyp7wj+J2IzD09ncZ5BHPyI7tGX5SKKbzbiMpgbhAE0FihnA6QgLXHRjV +UwQ7d6uhnN5b9XRqH/9WSee1rfap/kW31be3HM5cuaoqASfS1m+ytTxcDH7wtxjSImZNbf58Iqw+BaVAZfsvAZO/QsF0oBh1d5inHGb6//nMzNCi68PcEIEl9njREvNwDHlU4F103DFzB7ozUvjRPsWDFB4V49MZ0gwj9cK220GVp3qDBwIQ +dAaoNil9gqoym95XVNaykfVNgIiCcn/T3+nouOxdYNiWRsItD9/pOfjqFI+pHhMqzN/t2GhsWnY3syApMRtxbCLIhxuKzxNtY2lchlkkpVbo+/qgPYnzjUwS5jdHsF62Q1cbtZFG5VC1No9YpobydY85Y4AiQWdX6lxpSto/GcqZJSUR+gj6 +UFlJugV+EL7Aks/S8xRhWHIoBe9rV/i90F3tdKDBKbrWTHww4Cwl1xxV494hwcodLJIGMizgopYc90TX71EIChM6VvSU8SYOOf8g6YHTj48mq+tGao5DWkXvY6AeZWDiFQ+J9f2cgITak36evnmrWNGIpsl5CW2m1MD7CbBMfYDzJ5HsM5kA +iNJ8yTlQEecW1LZ7u/wDy1cdG0jrtZMfiPQ8AVQmSEgFlJBpYBjGieb2A4H8xujbDNA2XztC/hS1aaqVlEVteislUCRl9qy4eZVYQuiwSFZcEaEchUnHybXfYbOmG9zMsWaQLhnDIOl7VU+4bkAFdoK+R7iKhxED/qTPLZsmoktMQ6Bvpc9l +9q35Sng5DGAz1echbXV/73Mdrj7LzrVibZMv9HGLCzj/fN1UvFuN+F1gjpqWiDgYgkOd6cQAYNVvCtJy+v4Wf3MTFGP+4O8AXsUZ9dpQv7DGMOyeDxYkuF9Dp+Um/r5DlEmDSY/eSn0IepJU0CwuQ6FPhZ6yCaMkXsxBe+I97PEP6PH/gEuD +6/QUE2TQhCAEkyNKSeWB6NNHaS+Mc1bpcpj6YI0Bo2xLXSTMXFDlUqQMNW7NbPf2P+vFNCQzmmbQu/Z1kFHDzX3gwoCkqv9iiV4KmC+JrOGW8PvBIz7W5vXV3R/1xKqao0ZCN2FEEu8gos/n/iRvuP8BnpEQDVU/s10GjlNWO914JGeH10+K +dj0NL+G8xM5q9GGAXz4o4wZfZkpDmd/HYPfHlmdm4LuBiOagFbMC0PfLXv9Q5Yg1EyI7hDN8EHvwTyWd4f0ZAsuIMpjeC0Hw0JWgaxfhV4ekU0jUHY/OlGkCjtefDWHkVqTLpEoskZ9h/7VD/hBOy9lbOfmiPNo66/FwJ6m9rKpZ+aYitx3t +Kr0p1nBeNsamPIMjRrtO+0SfFeHOlkLH5kPSzAG5XhgPTPxXw3rOnnDdH2GDoneITDsMPlLmPiGMkRI9kTa4NiGC/VSO0q8QdKjduYbAo9qHdvSBgRZ9RTt+xm+SmnpbtzxR6bDKkOHyINHz2b3rRMawlU/4QEvaZyoeKqTiSvA2DKGdwEsf +2Vqit1NBbkGFdzoZIL5/7z8BxEuntol0u9aEe5QO6oM6iV9FQN5W3LMKLdVUX2z52fgJ4cv7kZimB2zXfY0dWyWsFyBaaoyQWdJxRP+XhqPcyM1KtMpT6ewFVbV5FkB3UHy413wYK9l/PT0Ry3r0EoyNx8N8Y4zHSBxe5/cuMvYLUSDmya+5 +ywCa6LeoEV3X/SdbTfzzRCn8TYz9ecE6LsN3FY8SnSyrYiIo7ejsuBYku2QRH0LCEdneyGMY7BC9HFBh4x/nJ3HEwsso6C+o/G2oGh8ewSAQLLbHM/YVnWikYKvQ46gfdNc6HmxqaCx/I7eNjIeeCZYGNo0qEwWic1umsqHpeF6pCQ0cbOXJ +26uRr++fHyB5B+qGrN8tRO5n6BB5xiaKQa4pNzGM/N5A6u3QgqFwsY+wg0xFhWKNJ96Fs8mSTVKVcYYDNsANcCfyCVNHq42Wxq/qdpDrKo5bXB9bWf3whvARZ8osuISJOqpf6MTkjHR/nHAc5pVzM4UeDg1hUfqB8Kqip8ytqbPUhb0fdaPg +iAKBoiEQO42OnWgGrvagkC6/f2r0lxI4OIuwxHNIhueLZfmoxOPVkg5pXLTLOhhQanPqjTdIQNhxN5v+5PiRjIDmHoIl0F0f6ltZiVER3Z9xWNjZYxXdq9ICsg3oeLTlAcYs3lJ2YfqvunfhHt01B2+WP3tP5SWg9W7rbv+cTw7eQDIbtl/V +y4en4VuVfYfHzEnBzDpacYq3CsUJmffvzncV2k5om67upPnT1ZGyN92W8qSlDhyOiPO7Ec1zfgvSBDUmUWJHYSdRarghHL8XVWk9YSjn60rLW/XqeZX/6+bmSTzODqSSRSRfgrg4sTxhkHHolm2YaKrfH83POtvqoWDYtM92CrI4nCQ9dkmV +dAvOzFv3ytK4lUiE4u/lHj7YsOWK7n2u2SyMuSAu/krRNaPtafuTr7fefwrDP8qB1OylfgnIcvix+GI22rYsEGJR2pX9hwc5FrzqATNrpSi6GyxZq56J0PzOyx1Jjt+mx9LbwaR89sbjTsu/1k0Yv9Gq6v5kIKjpCEB8iLmt9Usj6esKrjp9 +dFDhGl8+nqYDxUy8O8BHtddlQ3y/5kM4y6i8hmLJwKwJ53WHgAcsce/btIx0ktDhPR5/WYkqtHw+ys24exBKM1ueXJZR2KbBQ/mBHCalHdi8ZQEkItu2StPDy7ODYJoHnapt4LhDs/VCG9t98bMRbYszO4vib2ye/5o9Ku0CDaGlT3pQkWRu +9TAkmXZik/KCkhwu3x/6ufmsqy+w62GBuJqyLORmZykb7hVO+5vEmKcirP0phMPtqYEJ4LmMftNWMElRZAaCE1GmoZpQkdpunk6wr3EGF1lxIZPWlIvN1qfRyo6+bjw8P15/Cnuru2lbEoqjCionE4bIgjNSIrhts3ZW0YsUNHMm+dKgmIcI +B9h8FyjoF8bdza721QJOJR/4AC+wjPfOLjjxd3V3yGMUJRDDhush7YaH0jI7Zgpr1QvMpPoYbznGo8Bi8zephK+NpC8bgRMQXwyymnVELyiMTVry+EQQHQzOlkZ2X+bnoW0VzxOYseB+YGdrtLnsfcVrZ4n5zErnTNH+7Ghsh2Bqi681dlaF +loF9gKWgp6Rb80govhxjnFDGtTQKDL8/XSdZ60zl7bNi49TE5OVzgiIs4PJvhrWWhahX6tRbVwS3pu4gyHTq36pLO+1o6lZ0/P8T0bI9Nr6M8FtTBoBGu/yIz95QtIySSf3117QXXkdFPpkJreaAOsq+vCM8YNVpXWwcSqHCfqOBZEnDpxB4 +oby/9N1W4pHWt2zUocvFHZDwJ0kmSrvJfz7gtPh0/FdI4kRXqNjqOSGQQyt5H9Ph6CkvupGfp+BrC0S1XBUMZCDflsZrRgVwU2cwAgzM2mck5DNM1PcCNEGWynxDixPRuSvcVDojM90Lvta4X3tt1RaT/Cn0SmcUvRHjGDk0clZMEyb3nsHE +RQbkAKBYGdFtYgD6yPhTwsqgO7vwd6eH0E93SVMhr4SQDFObB03hDkhBHzoWgc5E6S491s2w3P0DSURFk6wc3JumH0f4ug5hsTXlAKUyeBQwMc7O+ChXw3bmAL2mdUY6ZzJsKQMm3BShfhaxPDgngj0X8Czz1DtHyheB3P2tL8FPNFOxFuJ2 +NByFOGayMLKDkNELD/F2kk+F0+TM3ftC6cQrEsU0CaPrcZpDbOq82kxfkNt6MpZjFeGqbMuoKhQFjxXPc/gKOMaS534ztvPMOM8BtPPNzJPfyNNKq9AZHZd6T9AuHUFRNylQr//3VzAd0rTFr3iaD0yCPkVRE8XBrQyZsvEvNBV5ytD5gF1F +veu8qpHhQL4iOJ86xCl5ZRQFD+PZ047TPohkcGyNcr+7/KOYp2Zr9wnjkiWSpQxV8sxInCg1YQYiBahHOe8HRnBAhe2MhVippyHEGRrzmavL+Pq/sC5cxmJ54QfG5ol+KEHYLoOJWaE4cjFI0PvukAeFHV8J2rQ3ncBgCxMSpRpaL91pyEJN +1KpOVkJNvLoR1fVYeACjYP4misHz42DU6cGzTJPtPOMydRUWrbiJ2P001CqbKF9Q7moKosPhQxe6UZGlWghLn6K0sofbCddsQP3xeXCkCpBlAWV84eOAgdxKUa3qzscem3FM6uCuGYLlk/aTobDHXwl3ZR7Y9Yztq6RlqoQmk+1F3sw3GK29 +9dyrY9Zj/y5Lu2enrBEknEk4Idzrff2mwucHF+XnQ8sDg1RHb2EBfnv3iB02VSygaI2Shxrca/hWMoXnp3Q1dHKjMej7HRr+Va2vjd5l8Px2pirS4ECoEsGnMARnVm/HTyqOAiH4zqZZrTuvryhTWVp5IyEyHX6MjZvRPSPfjQswZ2J12kck +C0NvbBzD0NsPZF0wX0qE9iEdcWk+ZOz+JQC/5NOV20upvQ4tj7U4LYU0CIIiuQVuYrEnU5aUxIOqoMyjfZDfF/mwTna1lnraJSpEq7aNCXHjcwSeweMRsZWISHcoSt3FYpNsIdLUtav5GS3pyMgwx4p9KsMjFPaU38myT9wr6orUxwcBRxuV +ZPTw9YAV6WwhjqkG+xRiIwmS7OmhB9r61Uq0HDaB1spV4QIjfc7quiIWxZAkZ187Sof6zEk6BfkRlDsUSqWsfnj0GYgMcC8zFQYOSJf5Qd74YZpTOJBPZRdFSdIimOnTirUe3ESG74Vk8Yy4KeWrUPorRxMisS2hW78Umc/tvCyjnQapWUZo +q0I++xXrmurMCgdVav0nibQ0TOnJrti0UQEnk02bpvyWNxeA9/bGU6iVCsRTFowtNFnn+dv5VkNT13lPTTi7Zu6j1OxjfAUlTHq8c2O1pe9vVsy0l0zifPpVQ1+t3P7F5I4DEcqNwzRWuu72oUarKAY6/ca9vG0+bomJYF1M5HnfqBxZ8cmr +4llvtc4hk18K4sUZHySXOSTnrDHZXEyB77WFLFyzUtK5PDqvHB52FsmPdZwvhrkKNBiz8vl6ZVjmAllu/S/4RQ4tLKpCS20Y+JdAMOLNHbTL5Jy6sUkKMa7y/paZWjDei1jjoK4fb91aQIYFrdtmWN+GQLJVTClvthYWrJsCYDejmcXhJ7OR +PD3To4071lItL+5MNAx9Kz1DE/f7kk/HiKq6dSMFhQyzBSgfJV6mW97pu/qQJqKXWrUf18D4USkE2faJpPAGerGERrt/0kVV0Jn82/rdPWEllaDi4eK82s4ilregAAg7x3DFySuuTABgNGBX+HbMMxmEocqLTA3SO2z6O+MeCFL6ZdJCBuBE +0cmdxP4YFhcq0SYgaXwQ2YZ7IriIuhd/dPygXz0SOEDjxtPqjcPxJZtxT2LI5OF+fH4tOmM347xnz0Tseg0Thd3fhbhdMuycYtOhOERQb9TcB8wZAlRbJZARe6syzu+/e3mhivD2tqQYaH7ii/Hndt7h9Yr7ZKRJ0tlbvXay1zBmCyl1sKla +/w5CtxORFNQPbXnWNb2QPfuYxfh0FQ2dbDCAHVJegNwEwR3nNrLP4ndTUXkPFqmTAT7w23uLSKmOP4t1myhqyl7ACDXNbYVh+7irmNCH5i9Ndl/lctNbILVCGShp7uHFoskA8LjkURYb1IwzL24FoFE1fhScNWKxGwz/mZCNRJoAQKYeuvtw +8+keJweM61Zyo4MWKsEbkSyEU5Ze8m9vo5Zm2yAAXntM8rNvA6q/xPOYxcts5ZgG2VjBtTbOoS6jyEXUyDauiQeU4Pv1pbfdcmV3XXAadV+yVr5PEv7jEbbM3FAolyvcf19A+JqjeBz2V3lOS+LAPbtZN8IDALw7wmjBlxGvMIXFSzk5cAFs +fpCvUt1X6P5mwwz5h20Fj3F+Y3nZJdH0vIuXhV7Ps5l1TaeFXS5wNLs1/uXdjx2KD1+3GIOOraRzIcQBoR+V//dNRcBXlT8v4YGhHmjUtKBRYsk4+EROQUDlmmOXpfRk5JVxTXfgDpOaNU6Mdlo4Xt5+/HZZjFiEbPVgYDLfdQqOX8QjjsJp +mZDumete1yWP+RgZBZGVlle+1Ci4u/sa/nwtHH0Qf7ug6xAGV807pMssLo0q3WqpK1jorBtZ4crQlaBs/bOfJ8iCoizZ7QZhJBtLSlr5oe9WtmBnpiL3mfCmMkz8qIm7Xlu8FROzNv3mnB6Y7NH4W67n5UbkPHsOU/OU/x+8bkHkiQ+5gZK6 +/5wKZs4aXgSDiyI772FE5LxMem6KhdukXNh9qjTMvUFefDBBHFBU72B4ZNbQxGPVxGmi8v+Yxt8PAs3J65CNs2pocmizaKXmypzU/CBOpEg3LI5FnGOsIAjBxxO0OFfayKK8i4bzAWvB3iNOKN0Hj9Cw22L2ohQHDfryd/ea4nedEoT4iw4a +TCfsEh/94Yrqi8jfX5WiW3XkSnMYqKc0ybndNvEP6A3u67Pl7KZ6LlCL/PgDuulUAjTijcpJJmj4RkfP1L74Rb0Xhw7OrCo67GNfVOAqXpY4A/h0wHgCDjrA2yq0IkRyeZNRJVn/FkPzGdYkw7N9zRVVGUvFp65X9cwnchDRLXA57Y6UWLU+ +xq1W5N7nsUE1cTukQKuIBEi+e0ekJ5g6bTKAXOZx32nPCc7DIgQhpTCYaG3sOQX+KX62kCD73SjZHgsAheDHl14I9EjcazsqNrcB7B5L3BTs4BkknnbYAXFBSzhyCeremfzw+j82F4rZ81m/UzebV3DlT9QYzKFmssB/7MD4Jn8yGjZcqSYl +QHoZGU0G78oJbbMiyafL4wTtaLmEy1zyVpAYIyOZ7U/rWiM7U/9AlsixomFXmZlg5tidv/RUa3LCz6CBNk6b2Re0EvXDJwddaBLUf2H0Jsokme6cFNXdHHoQfhRfnlWe+sfJAurkKuBizMXUDhvPC4MvWLDixTLcLOmWgYwN8l74IphK3rYk +vas9ojpz34i2m63hpF4EhjvjWTA+TUE23jJtv5Fo0iVcbOV5woCBO4N9pyOlyMrRUTFcsd0cEq8SQqOZDDBfi9hTRUiXFzjmsftnzvcbHHJBKGBLUQkN1ic5C7nUOGaZKA0SjlrPjKPn39t7065btl7iS7hZae/RyhRj6Z9dBFq9n6vBzznD +BSUX/8LqquL1Cd7ZpAcvZkGHZRtmJhCUf+JuY0H1sCXOYaoRZLm/SCx7jxONlGmewhyGejM2K2Nk+3raFzIchy6tZTHFiTQ44ne3Hgh0IxB7K1AVGqVDk2MvLN0p0lz/tQstJq49e6Wlr9IoipBJ12v9wHSfai6+xI0fUjr343B3A9IZEN9r +W9od8j1xhyPZas6uZA4A7D8ZOs8d84yPpRl30+XHQKGnOTQ9AaFJY/a4YiZBjdF/podmcFLr0u8L6mvnw8dE/X66aRznQLQr8IyTnZs3WQppbDMhYeNFDpobAEghiSPRDYj6EKrqqI1z/HGzJbrBhqgQamCyEQoM8Luui44UJLZ/yG4dZRc9 +/Iau5HrRLOOjSa+es0Lkf7dmoqeQXFkAHDPTLRUtEPKAWaQfbUNpXThPCbegD3ZolyNY4MxxbdJtxiZ+Pa3td5zPcxL7HPjDRc3JBvDMIguHw+jkyHB1hXSl3bSJgSMThmYuRY99Nrjvw5PfXak39gJsnoKtSDYMDSSy0fRQUEluLlvWjH8I +nQzQzOtD0+uMfqBjR+6b1qsj+u+VfrP+bE/9I+YEzniVttM7EzeQzyG5+Iz42EQhvlXsL0TtOTIwJsIUpBBWUtLBHAqLKKxt7tlFs/MuXMq2TKW7raScqRvW92Ow65wx7P0c/rL6WBjmJINDzRs03RN4mLZYahhFxPrEsO7pQCsK/LJ3FIIh +luJ/mK7K4DToPeHJhGGN2sOdhcgie6UMC2pLyCEQyEEB+JvVtN9aX5/NRYUKlnLtOA0gAJKwKk31eZdvPgnX2qRKp5+8uMN3hhqmWt4b4uOcQhovumLvg9+lqkwRMNPiGw2ZmFTwzsvAZqEZsNyzQSMRXTC92g8/1bcq5oH9npa1YvVSqa1B +MtjkeVN34nJiz+HDfELoqhhZa7hGOHV3A4ge+7rESLta3rw076tdy7rI7PmMFVlZ1VoBSK98Sp8AKzj4UA4Nog8w0UTAeVFnKiCrSKZjN5yJlAK9E4IiUByXrAd+l1Ptg4EkHhE/Z1mBSt3srijwP1jiHGtCcyjQa9pZzyALXhld5JRJ5G9u +KMMFQhWt+vfSQ/mminNuNE5w6eWfamylztEXTCymEih+os77HRlYuFPRBqsBn8KsEIg5hBZSzWFcx+49jeCFiHIWXMq7sNv4gZDrGIqy/nX9FnuWcPhWcTCw57tl5slUr1qpPR6R4pOUdCu1758aT5nRMxrBXv/Cjcw03sDRbnmTQJRZIAAO +v6irjO9ejRjBRI6aJmQMzyHWVqjSKNF9foD5Xs5Wx7oIGFvZef4t8gy850qbkqvwndbK7Jh7q67TlkCBaAa1vdpL36BW2wIuFte2UxFHrFipWIzQxg7Icnx/aB28d7y0Bbh+jswcRWz9yAZpc+N3A25F4UulTL/5qmdZE1obs/rbDITC4m5M +p93Vful3wYMUpwUYiarmA0Lhnt4mN1ab3TbJrBQtuknFjZ6gl1pP519KF25+zW3e8HNITYV4E5YxuViaUd94VetaMS9HUPxrYoUcFGzNf7FEgq4RzjbqLybYc2VJ2VEDC9p8E5SuBROv1PJxLf7W84bC2pkJayZj6aDKe3zdryNHj8b2OLg1 +jJzwHsshKCEbRJp6KMDixp9WwjFXMJ8vA1TURoKJQStvMeqzuuc55ef/EyFxv7akevdoC+cD2KBe3QTW5XDFxj3Iq7wkUVoUgQACIMP81VUDbD2liwA9GjMNtIYLXt41cPN+IsFcKhz4IkWAoD4EXVwrgAiqwnhbO3uO3qerYZ1Y3ov42vyD +FKtTyCu0xwYLJmHIBcUaXAsO2naVNC5zIF3I/vb4Ej0/QVjq5FQpOUHgV6sfJzSAVuvM1kBU9VSRcK2zMbZd4hMZlvwihkcuqnHg3DOf7GXfJr+mwRIx7zkBrm1VgokT17VDbSU6q+8adZbK50NVqtrIMaABomZDauroz2jqeYpV0vg1u8se +k45hHNgUywg4EIeFJrUJbgG5ha0sS8Lsy5skO+0dDc8tn4F0du+SE45UPJOWjYwf57YuueqW5oAh+fx1gFd4oVZnFU6Kdt5TcSP96urcZQCN2R1exjXoIwtj/1Z56l6SB/suNonNH3Bw+uYloTa8ti+xuRBOfgEhCuZymCDBbloKMJgNmNJH +VkXYgRELZ9iConPJfvCSOeey3xvzZ3g9Gp46AmjVlVKeic38WASLQypXxBVHehIdPVsvQM45BX0IxKK/BnkTMSEAfRQUXZdKEi8zP2gs/L6GuNmiiyj+mm2pWv0PbOHbKvU2ngaE6APOYc44WYU35FXHjVl6vhg0SlJNsrBni64q+DdqtoX7 +jwHhF07LEuXErTE9ZeUlDsbYFrmqMqIus1/5w576jzqnQeEIzifoxV5v1rwL8fV77qwO8NGvUOEtHoEu/Bcw/YunayHDHTFcYIeK+2JRUfZOZkmnoDOHXJw17k6HLSExgaH4iTXpj6gcp/VikE2U1K3YppIpE1Uu5jYQOGwlayx7sNt2KCMh +nuoWgxiY9duZ2syB2T6VabBzlJJMquAWuCffnES/IPfKLiFwGsiGXpxFoWfhBEzgJKltPdeOALHErIN+FQVyc2GmR3aAzB+8MtV3ZcDvAWHgbJ9yufwtJ8gX4UYuYdrLvls9UhpZJ7E4HiYmrwgh1Ft4AwzufR+C0KwZxyxfyi7FEUX4z6+y +ZdkKv4byvMV7nz19B2lKmOKXsGXxMqxUxYMV1oz8Vp/EKjsvmie139PTfcqrQ9RVGjs83HoQNkbCPgTITeKAIJJXEE4mbE9+oiumiH01p47tdEdQSp5TLL/e2bcE2M4S079HR3eek7v4CYskBDNSirw/8CIPuWtT1qSJoQcb0H2ItEbvQTLF +e99lVk5G3Z44QDCWCbTnWrczx7xQxm7Hgj4p2imRIicO2DS0QkYi3TIETfkrYTc4tNCUQMz4HF2axxk3lW+EXXEju23UvjiX8bOPtWcIorNJPvRy3wn3w365sYRP8V8UHbnjMdA6a5yUSXpUcJa6Qmbb0/Y85zjA6z/bLEbd9hYKeFUDlClp +HBbkWJ+79DrtIF1DSicbVpouqqRzLFanBkBFJyoIcmKeRZbxt9F+HJ48rXniuCqqL6Ov0jUp8RsXudj3riXSRoXA0z0lS8WjgTK+Myqn99IwTBlyBKyx8eSPXS8vvtb+v2/7D0ftkF/YUHuYcE81Bd8IJW+56/sYPAbsOfGAitjUSNhZ4TcC +DldDBgT8NEwS5CFCpYpPUjamwpBq+vBLYCMuhA2OhODexRkjrWK+RTyFNKce6uIWkkGKOhqqkDnHVTcdt74dH0d6EO4/Gl4doW18vKrzGE3QCSU/I/Q1ZjdHkmS/HaiwNZPX4lDKrG3Q7HWSC/XTr4LlkzGOFEW+yq55FHlB+ZbgAK+LGsT3 +25QzRpPEJdoBHbKZ6E0hhs+DT7y9wfQi5gaND2HyszTrzJJ3PMLBIwIhLQGABrX+z3si1EEUwn8s2b0M2YhiJnHM4o6xMli/qumrp2I6jSNZYRZ48jR9J4sSISEynxDWwPb1VQ6S8pcJy3vSP/bLKsI6jgPvF360cl4xmtgeZsznEQQHTEXM +bDV7uw9NpBq0t4rr9ZHWr+u1C14ItuOB9yTbka4NLNR79DueCFRP67yTHCEdety084zNGXeWSf+Nl8ZhxEJXnt77KzGaLnqIzT74UG1/6eXNj5PQDSkipR5dsHYEKkuikjCcIqiSbb3G5KWWXPXs0H+HwyvDrMZAwmFHgtRpeaarSSaDyMtI +fBFcrD0nYnmU8m1822SEuw7GjqsdOTQ0z/FVntflxujZDL7GyxAkFuyVXX/xlNL3SX/BpdcDBafmlDADkYEfxkocFR371c9hfxsacYSw152KesNQAc+F8hZTgqsD3PPC8I0a8hU6tczhISE0ndnBgPxZHryW/dpqvQljKu6CT6PxjGsvOHv/ +rhrjd2M7W4HebRNZCJ1izh347GcaxhoGIfnikT4Ga3yTGk8eFtTq+D5i4Ne4xfF86z4chKBKihDinkeqcaWlKXo394E0EF9pVsFC6Vay1rU/4EWp+PXT73pByaElReb5zwHGfdbzQ0j2+zI/XTl9F9+CrzbdjPj5A3AsZZEN7MgTzVds8HbE +YNQW0yhAEv/bUelVNdO/QTQNpmVK9VnTj29/iWp1E2GROwHffxK9QoDkB4d8uQ3OYCKX1gIhH9skglkvOwj6F4zp4yP1EuTXlaVBV2e5Rh0ZE0/7xLnuz/Nfbc6lTdCbEJfQR0Z73B6yyMcdl99Jn7d31ezOSmqhpNeER1kLwMWybdYr1SaO +zd8lta7vUJgWuUhdUlfeJBHVun+2aMNqKVvrQ9/sxiWG6iwa89O4xtuJEUXQzX9EdvDaWd7cS6jgyKAslVSSTfHRrx00PFQq7s5XmTbURNep4yeM81rvYwYUwa3YXV7tzKkqhsDC6OTXzY4dF7C7Yiw4pmKUEBTM/gpp+w8MIVDY18czkUJd +YQYLnnQDSbPMank4yYZbaMf6nt9YQ/3cs9KilCU6VC45V/HWaDAgVw+0Ph2hKWrjxarQxSHS9XP1gX8dbjGDU7j/o4YgCJFDkpu7aL8guSJKzxqKzfRZDZNgMBXOqapM7I8rC9cX7pLC1uIO3bkqlyRYuDER6VTKHcOKbZtWb4ZsvbtD6PTD +h4rgB3eSl/s9K6smWLSHkRX3r7NIpg06/t23W5GbjuqjMg9rakW4vk93BXQimWASfUtVKyL7YTX4+P2mFw0050eYMALQbK0pe1loS92FzFdpX8s6CcnUPbsDjiP3ejlO3FMjfALu8VAYgliWUbi3+jI0V24odYlZn+mkLlsAWZEK/W5943lC +BJtGc9Mm45HSCRPHNyE87OHUBj3fV+7k+AtY66WHupY7Rm0K/OjPTVT7C6SXh0y/fYlyM5isPGqhabHKBLmsBVCNsoBMB5Ab0REkaEXrK8IIqAwHbrZ0nizd9LNkt2hzH9VEDd6yM8k2EXTfqeh7IqkRjv/jhNTeoOAE0EB9UWfnA4SZxy+l +nJC9PoPe8S7RB2OT/bzwjnILqt93tJHjYBBkrCwxcMSNzJkxpX9c5wujbgLzH9EcRPvb4yC+kVmoLCYa2JrcKV59xuYXg3subtu/zD6dB+/o2ia1Brt20yjeExaY/tYlT1b4929HZO/LIqQff2LlTkNMjpEKrQl5s6yAduqtbWI8rQS1Hlm3 +X5J2aPhh5XbntFHSr5iSdB5F68FwI+3Hop6rWCNO75xu49K/v1VNc1KUHmz2785yTVJTGSE+zMvyQ4J+nciJHpK7mlJu6lWaqM54dfy75ksVL94zWscwqW+MYj95H5iyuXhDprb553CCGz34Kp9FTFk6oxEpzyCWfYHbzJqvfley54BbBX1X +ZA+xlrdTJKbxKH59aLQjvhW2c8T/GUsZWZxgCKA1vQP21fplgiVyNdBBcSBhiF6CRjhFFdC+T64kMDfDNpuCAS5vOtopqGPvcmOjCqZBsw+6MvfwSw56b8kiwOpWDA8BvMw11m3aSSseRpVW03a2bgMxzX7w/smbiIUvXYl0xd9S61YQ/7cV +PTflaksPLDPzqkbiMuJjV3aSKwtSkHSXFpgWoW3pM+1a0SY/lf+aCXPB9L9ndKPQQmCLkbWvwJNcjK2N31c3Zhqjv6gmneHNTMrCetRM+1RnajuH7FPaM06Rb934Udx6CKbGzuLdXp1z/Gvutj0af1IOaOpyWnTmgV7/RDzFzhJQJnJQQMNy +o9JkplfKZAEklIYA8DETOnwlkXJgIGBIQ3ODF8+3KLa7vUV104kiXEWybrA9jhmPZvNZp5j9vqgDDYyojY6r1Zg+gmhSCd3zNFYf+W84fAcxXpGQuoSisQZ8oQD3Fg/8hgEHKiaFb5hiEgKOp6EPyM067ZeJObncne2acl4qNrnQDwcW9+t4 +EfpQzMkxrU0B1H8D7Sd5WmgBoNtkjS14gB8igdbOaR1/mHtYwUcOJ2gzrM/DoUEL1ObviKTU0OQfpVNlx6e2E7S0ggUfmM2muj7ERaCB4s0oOQyl0fIFWS5Qfhf7v5RUxkAspIgTZWmZHQJiN3Z+XlpDnZaT0GF7kwdUs+QYyd599Bzhdyj+ +LwUAW5US32IzHOH7iTLzcsYQDYPURhi15O1fEKKk/1IouX5xZh6/DeDgBS+bSCPuw5B9GtJkIVbJa8ZooUv3ap1uDPsvU0EXPcuD8oBS3mK8Mf04ymv1/ahTaTqTWNLyR9WpTfFhkfgOvrEwBkIqcV7X2TZRl0uaroNgevFDErj8eekaYlRU +febg6D5XyZkcn7vtr7HiEcIBEgWTV1GRGyYOfld4VTfE6MUJXG3unkl2abYdNRYDbEvduKMAbLTPQcYliQbIibBKOwx+9lqVrzDuLBMry788DL6XKEzT2HfsCsiBrG1Cu92dejvyyRMicCJtpLL++jDnAubPq4RScjP4Qw3UtmX/sMJLjnne +dFe6qTEYjhEsN7NmEjT5YhMsOGxF0ptugEI33Cg++MIVxvGuBXhB0vII9nXM2OSyVD+pf0/YYjpQOuPOygSuIbowLSA5Xs712g9RVabed/JVTf5f1HbM7vSRTm9PYrVinsvtuyo67So4lHA924z7Ey2lLYrHbIss2nTvTqgOTLfqMY95gkST +PMB5UxvuNVciMT/vbXjek9kCcuv6BhyjVSPSFmeOfbJEewAtYRqHP/UMEMjkMv8lHDthEXmRBg3CW75qYw7Iu2ObjqDbHu/FKjcrQv86thmoWQpuOCTs0cQ75TseJfSPJOo1n7rvmJLyZMkvn9jE6HXcRPYblmTbp+2h5eQ5UUD9hW8DSpDM +wXGxBnaOEJnJYjaR0Bxbkto6/I0OLgLxRVax3b4GjqN/BsHQpW7p1K6SXjvE9dC8tuU2CeziwBQVMEaQDNK6fGFSVpe600EFdOq6jHrAvpIHEDwXUUEs5UGf2ZEq06plmnZ91bP9yP4Jv05TLBpyQaCPWMl7RUx5UEsVGPFXH+IUhAuz12my +eh2OPyndhyTE2us6AeZJf1kghrMmnA2GJVTh9qtNdFNJ0nRSgI+T1m9eUN/kVnCBS3tJ2NW1vSEYKkMablmnPmkXken1tW0gztkZ0PGHUE7pqh3TJZfD/LFskiQAPrN5nUpK83YRnDLXRfpQgLVhpKzoi0Et6uIxXZHvDlLCYi/QYe1hwf5Z +zsLF/xJasIyUl31GIDDM3FgZ0gFSoHukCSnFe4OILIGR05lTcoFI4M7lIwiqIvbqqqhBmjjlnIWHKd6DKCMZwkwE6kGjFZDDmwHzQJBv1gJEfAs8aeXpEiw4W3WzqUG+1o0TDgMJfvh6IbYt3M7jsNoroIcdM/voRlPItNYzN/42PMeAZRZW +WU5wPQAYIBQ2iWTRsBybxGbNU3W8i5gxEYJbZWD3CA+rXpdsWDsuLIJcPd44VibnfgVbw1P1dSCdZdxuHzoClCRRY00EV9GgoO4QlzA0Z2XoqlH9Slr1Uf9s04QiyBCWBGK8wxU2gqBofDkQLrg5FAuWPU1PVnDU2mjR6RNIyV9jRM3JCXLS +GOJpoRkHSCwXCtiP1D8xsgaphOw64EwzXeHBVoM2ta8dry+fKT0+XtfV7LGlXzhobMjd7CzcERNGBRxWlqxe4wzMXNJe9xsV5BDs8vhdrBTv9drM5/06dTPdu+JPXlvjhQVwF9ueo4W+UoBmOqSHBEeRYCCRp98MztV5qOd4BZ7wqw0a2r15 +tYDlXtst68MJkaNZYDMEi9l6XrVufNSaQQu2bxPI858ZmkjaIx28XfSQR8vVhtcesY7nawu+xdPNMEKCwQEriM6kgTvhibeEzWNiCiadrNeIZWfYBRAv7RQzvyYkvoRKwZVWt5CIx/VmenaJRP3ynHQasz1q9dmcQxIhQZqfduDKYuMQOds2 +gKkPpnksFpQdv6UCOsghWbC8KjKTrkzJnfZ0p+x0Hyvkz596tfCcveIVlhJ5J4uSpjFi70+ac6mD7ueakSemUtABmDbMlh+5n1yH/U0LtZZCO5q7yQSKS7cJH7BQ2AZd2OTqX5l4TwjJWN0GiVZXyEz8Cshuk0SiYZmdFjrReUjE93sONAAA +AAFtk3wwVW4giAAHWlAG2zwHvtL5hscRn+wIAAAAABFla. \ No newline at end of file diff --git a/examples/example_framework/instructor/cs102/Report2_handin_16_of_16.token b/examples/example_framework/instructor/cs102/Report2_handin_16_of_16.token index 053511f399a5a6ccc35651e04621bd624e39177b..93b0ae72f75c4ebfd9f4f6956986b8172ee1c0a3 100644 --- a/examples/example_framework/instructor/cs102/Report2_handin_16_of_16.token +++ b/examples/example_framework/instructor/cs102/Report2_handin_16_of_16.token @@ -1,5 +1,37 @@ # This file contains your results. Do not edit its content. Simply upload it as it is. -### Content of cs102/report2.py ### +### Content of cs102\deploy.py ### + +from cs102.report2 import Report2 +from unitgrade_private.hidden_create_files import setup_grade_file_report +from snipper.snip_dir import snip_dir + +if __name__ == "__main__": + setup_grade_file_report(Report2) + snip_dir("./", "../../students/cs102", clean_destination_dir=True, exclude=['*.token', 'deploy.py']) + # from unitgrade import evaluate_report_student + # evaluate_report_student(Report2()) + +### Content of cs102\homework1.py ### + +def reverse_list(mylist): #!f #!s;keeptags + """ + Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. + reverse_list([1,2,3]) should return [3,2,1] (as a list). + """ + return list(reversed(mylist)) + +def add(a,b): #!f + """ Given two numbers `a` and `b` this function should simply return their sum: + > add(a,b) = a+b """ + return a+b + +if __name__ == "__main__": + # Example usage: + print(f"Your result of 2 + 2 = {add(2,2)}") + print(f"Reversing a small list", reverse_list([2,3,5,7])) #!s + + +### Content of cs102\report2.py ### from unitgrade.framework import Report from unitgrade.evaluate import evaluate_report_student @@ -68,197 +100,166 @@ class Report2(Report): if __name__ == "__main__": evaluate_report_student(Report2(), unmute=True) - - -### Content of cs102/homework1.py ### - -def reverse_list(mylist): #!f #!s;keeptags - """ - Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. - reverse_list([1,2,3]) should return [3,2,1] (as a list). - """ - return list(reversed(mylist)) - -def add(a,b): #!f - """ Given two numbers `a` and `b` this function should simply return their sum: - > add(a,b) = a+b """ - return a+b - -if __name__ == "__main__": - # Example usage: - print(f"Your result of 2 + 2 = {add(2,2)}") - print(f"Reversing a small list", reverse_list([2,3,5,7])) #!s - - -### Content of cs102/deploy.py ### - -from cs102.report2 import Report2 -from unitgrade_private.hidden_create_files import setup_grade_file_report -from snipper.snip_dir import snip_dir - -if __name__ == "__main__": - setup_grade_file_report(Report2) - snip_dir("./", "../../students/cs102", clean_destination_dir=True, exclude=['*.token', 'deploy.py']) - # from unitgrade import evaluate_report_student - # evaluate_report_student(Report2()) ---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -74a7cc572ddda2da28ddc83e3a2fed6214338096b6144490f3b02df02fcae8bc1338440d8f665fe73edd49a58627c13eeadfff9a3cecf1860afc4f655199ee4c 28296 +23ddfe2ffda6dfb1d4d03a2eb6d2f036465ad3cf95fd97ab20e8e299d646a9171f8bc4067e15211d039101c3c6de8e888455c73df12274c05e2a690de2ebbf0e 28632 ---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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 -pGAABwKUBkYsCgU9uGLHEZ/sCAAAAAARZWg==. \ No newline at end of file +./Td6WFoAAATm1rRGAgAhARYAAAB0L+Wj4IXwU59dAEABDnxi5EN61cV3uyv9rA3VXYLFhUvZXlXnf9Dq39xm43toV7ImDFNVkSychjWDp9Iwno6eaPMyKjmzFiB8ckEvllk7PlbWs7SVxwHQqD8KySMpBhsZscnuIos6I7kGPZLp8B+onPX +8HF3Fpprwc7Lyr/MN/3eoM8TSXWvA4x9FhWXMpIEeMfSufBWTksYvCn25vXY6oxcpamNSIdXAO0Ku27Zf+DyJMXwAuIB3/0yqZIDeDa0Fy5mTO9ozUmkJbv/eH1335YLOo5zo8RH2+xMSxvV1JskGNLNFJ6w6v2FOMz/KCSBI7dbNpwaIaaV +stG1BgtNiHK+hEMuvGOrQ4pyVgbYSi0VzbXB6K/n0f+J+yfYCUkZPC71AD6Xo/AlVysMr9VdyUNAYtXp00ThLpmdo6qT/7Vxc+l07Y9HZvf3pZCPAwe/y141jmj062zvb76jpyG5rDQtOeeg85zV8/Az5O4X4a3gDUbx+c7dofnpVwVNfITx +tw0M+JDL/TSLV/vEDQ3uFq8o+SOUdr6ZD8DDmv8gC4m18cMMVGA0ti4/LzPu4BaLzBifU9D+dQUBI5E9KWtX4jFP/ssTk3ci3pbkmZSKRAeR0Rsdcf9d+NLPFR6Q/6LijUPNAkTjD/On1RhzSWqFbbedhh8qoOaJrzubWWIdMx3byuUNhoCD +pvMSLgqnlwVSskFiUyfOu6Wjhx+asj4Q/Clage2mnpw+VVVKqSsg7uSB1RNUhGqB1GCHz9yZLu2X1aDrL8yegwTLJocTqoE58ASJfMUalFriXhMZ+w79YIfNTCMF3gnsxfRx91vDVXrjRdSXkcmzfh50s+gOa8s96XY/SeYJIXic6Opps54l +m71A5UH1f+RP7y9p/hq8Ou9gWXpkWDZwsNUB8cVcvL0AQLKIIJCj2Z1WNZpokUL/4br1sdbXt7wh5jBl98kibhijJxe88Aa40WN0uw71tW4X7hkuAi4zdXFrYYH1AglLjUB0v3ogj97RbcSLjy9tfuVA0HX1SrqAriYoNbSQGXOgpYHGSSIa +w/PIlwYXciAYMfQHeV/AhmfzWWFxrlGjTx2LljQqZZgxYiH8/TPIM2DyO3D8G8nwWuGgzZu+mNTd8WMojAmvrXGOvXk1eRdQWp8tNo1rLz92mMw5IV5NC9sqkfsDJgjO2l9aGM5S8sOUorM4R5BMJt25+mBPqAForPMoksDhCrqGkiYR0Lpk +WLIM1pxYzK8cc8l8Szrkd72X7sR1JIJ5R6IzvuHBrpI+51A6QfhuFxQQid8ky88oUz0eJD6urVitSykrVMY1u/klGGxavyTm96TqK+Zr2Zq9ENIJudP+UN+XPFYsexQHvqhm98M5+mXsBhZRLEOkQROzW++6No0S1Nk2LX2/Bjuwf17sZsmY +jzN9cdzWmxP12fkW159jnsPLne9kUt5gEErhVust0u8+idu5D1meMri7rHQhEPKlRCvNwoKsJoodAH3jStAkqDrWbWqvQ4GKD3NEoZUAkcKp1MTQU3Hlh7BBnt1GrpFO2M8Ue8X8ilmAXdkUFaee3qfPjwCuOYbm7zm3t/cZaJz+/DBIWl6s +vqdVR/5jQgbT0w59+XcuGiTIbArcFLOCB1wg5ol0v/zvESzTGvnfKtjruox1enaUpfID7LEDSsGkRM1YwZeSfMeNwxEU+oD2flF5orFjtUDyToklnYQFoSz4r0/+SEdj9t1ZMyl3PAjbQraUDyiqGd7gCkREKSK2mSfTKVuq59qr0PLTTgD8 +W2tbLq40q9H/cyOzzAjW/IgplFdP+pJ8b+e0vd+lljbEW9Cg61LOe0MoDX5OoxlduyiBFRMWVb4VYqIt8ERh9zSI3VvgQAh6hR4oICC5zk7uxSuxSy4r/Rhh9xizGypBGe2A/yAFDA4EzLx+40gxL8Jwh11SIzAWHYyGo8z1bNGi+U6S+0Fb +crepbNOguvcIpcHboKW02Izsd0GjeqfAQLmNOCDGI1ssCeem+ojUCq4p/kOpSG8QLGKCc0ottOpDZpd9XX4ohrYRUhpMcDwNwRsvKdbCsEJec7VS8D9ApjN5XZZaQuV5AQOnr3kcYHiSml+Ej+GEq1/UF7fdA/6eFyUqzgABXjjazo96ONoy +ERMKj3LZpRNB5YnqMAfhzeNd6peUvbqupQqutJqNQyE43xPTkIoYjvmPIuV9a1mFWBCS/MQHsrDFkL+UG+UJdjGXa1x3hGWf3oFvlNd96H4ZLXsHk9QZ2uUfqSA9zHdV8w4/ogfe3n680NeQUz5sCgSe2/Y75W/5M203gHx1X0PVXMwx7lde +rjGFNT9SDHebezpcFKiXNNGfe/pnCEx9UbU0kncv4RcXcjRefB+YOnMdf7RkGB+Kkb8ooETbOTmK3W1XknWlzAD/iypnejyPN2PkU0AeTUu1iou1x7dAgglBuhOLNKVQBuq8MRcBKyXXqo+uZmoshmi+AovcISawKbYpBXRtouI/f40Pqq4R +jykFeCR2unp0LvTxA77Dd4IMKqbEGIaR7V7tIAaIRSuvFnxXs02sguB7dyO2gMGctvH8KzgaR+kGkEf2FCkiIcc2nBw94fBsfMrCJW+jxr98sD9MieRQvK9KYIT86IYd42FfN5bIPe1I6MdNHwxSeMQDMczToVRuWytRuQfoIsymwDwNVmxj +PfOTc7FiZc5dhB0+aW8s4wGAlJLL5pPYrSP1zymN++Aui581oD++u/ilo4tRS4yJ8aQ4/rXs0i4y96Uqfc+AWVgkVAyuC507V7IEfWXikgWa6QJEpjvFK1gPlczobHSwJ8EIMwu1CX6UkH30iV+xVQwmnFGjDCPMSvTxIQquAZhV0XZ5HvJq +3SCGDdcGbjm5g0/PR1O8RCQl2rzfL/sIqLR/oU2KJLi4UUWz6VT7sj0IQOcYP9AFR4bHEaMwvQ11FCoueNlc0lhNYcQitI25D7piJWSj74AYwuKvFmFEY2ziPLR8ZkWqCCy7bs3THum9TtbBzTKM+7W6ypw8vgFTK9VPAi+tcnHc/obYN1i5 +Xx0sqhaRZC8oFNd5lJFXnTMr1fZVukt6KZ+1zRkQPZYIUrrH7fpqbHL5No88SIWUnu4r+mSs+OdNDLNogH5QDWJSl9l4tksb0nT1AURpqYrFCT0S8OiE6FY8rnSUTQQBXJfStDWzXMP020xp6MeYQnDB8wStBUV2f+neGnC3cfMnFNjExL2L +aAqzYVpujs/OQa081TMmGwqrrsIBwerRzcZoXTITq0oDmh5xFzB1L8pNvm+HKn/KKkcSSE/WsnKZ6S2frygPc6W23HjlJKx6oerZKj2OoKGt5H5uFixAyXDKaI9GGiNTVLWEawtUXRSUbpMkxrCLmGdsgfJ5+X9FJ1MC8fZ7y9wCPbkVbrcZ +2a7vw4GGdbTLg1OLzHOUG2teRIjlbwyKA07VvXkNnthQsfNwUb6V7K9qoA8e+JQNu3iLxg9As/1LQmS9HHt/lW4SWoL8QTyCO5kkirTefdyNw89lc6CpqivCfJfeu+c4gu2SYxYtGJnyPLWJZVzh7obsgI6YlpZ0WSldrmlUnqNWEIrBdr8h +LQv8LtV25s5iRcx0eH1k3wYVX2r/Bc5ltLOC+RGk0tIXcSHZ4rm8qqE1igbfV1zoqJU31hgvxSm/cIzNEb/mljkKKczPyRF0Ti8nCoEwYAcRBfMFUEuk/vtb+paPdn9xgDK1tslnpg+PhaiaFGiEhp+bItCGyrbU19yWG+ijT06VBoPUmRej +i12P3mhIoWRaJr7TS1isUb2/IUHc9ERFK8Fevfa8orLBLVKBFi7fAzDk8VudfiypDMC1aphkkvUyqfRGYinMX82ytA7Es8KOOciLRxplIK49Uif933mWiMkc9pbJjlz0mW5fPX+Y/y5Nwh/1Qh/w1SdluoL72K+gNGoUAZen7aq27uo4BpNW +icbR6cZG/c6G/3T+zOvEFc/viM2nxPaj4btz07dVKbxAy8xxFM373b8bjfQAVsL2xVaB7t5wHeHaFilsZ2Oi+JHD5LiCxfJZ/7zWvel2gtneKQl8RhMsOHBbXpqydVZ1AKfNaIMl3LuL/61eIBMgUv1Z61+qclZVtmChwcQfQ+6C73vwBqfS +PGrIFB8JWusMoh6MGI9yCTSeSDo2grTqNXm6ercTQ1z9S2h6V8Ypu18RS3UfRCjLaezmqkWSRjBlOCLxf/XGadrxSFQb9Aw8djwisYvqZxLF5UecPMxC7jtkjdM4o77iU35nO/M9eidIVmLyzDj8lJkvEYKNhJBGKuhYGrQXDD4hlQx/JaSZ +y9iLIJWZpVAZSgKer5Nyg1N8SGPnqi+ipsFdgn14YWSIhngIloraHbEvy/H+ieDgYNNOleGGLf3fSnc8zEU78H3ogreY2s+Eyujk4BrK7rcc5udv+yF0z+JsAP9Jnpd5bAfCR9YmldV6D0L8wU5gZ7yDW/PfBz7x/E1V0FSHNUPfJw9/TQXT +OBWMwS3vXE6j2EUJP/aRN4RKy+nuluApRsNAcEwNcL2VS3+U7NCFpCuBAJx6+eEz4GcFIK/G+ryL8D0Kt7/nItsljvUSekM28TMNBvdBsBbSDub+v5QG1bKTOblfUvSmlSSQ91KwKxUL1UTdvfEOSeiGY75KzlLyTFGqyUWX0hnmv6MMYU0o +SaD9wRK5IXk39IWpCGGJ9eAiCuACdauSlTntP3hKy/mjBVy31rI3anb8QBrX2nbV7NElroHeHAC9n9Iv8yBKwfBsQEzP15zdjRdTGLnC81jL12adpZKaobpjMFRIvYmamz679aDuLJc3NCE41vPljDRjh7LOLvyQlFtf4LVV0pXZrcFPK0sC +pjENH7phucLELW/2GVMvnKM6Y61d+0ayMwHby2G0WnN+3DVsUkV+9VbRk76f5vJv6YcBfQJkZ4zhBF9h8N9njz1IivetEEVgnmtZ/AyoulrUo28bsec8Pely3m92ilZzt6RSUdLMtYcT8bbfQiRSyIjWBS4Eo1pyhKNVFNNCmzGyN98YAZdV +XVHVddcu+gWoIM96ZadG22DkJx3edZftVCMm1lDxB819zJF43fMfKAi5PbG970wR5nZSxfzTIewmHmnCcneM6A04CUTi8du+cojzXv2LgjX45BH78p3uYlodUW3M+8wuWQCc/Ruzi+/N1mFgBwl7cfqj7nxZ/uUVIsFO/c3Zjrh5Ks6kpmfo +GM/OPQLQAwpneGkBXQMFvlh2kSAeBz8LqrRQFUPWU8iX2sRWYgcSeBg3H5cHz2y+XPzBo82M9CXiQAupujoH9KFt1bZQPVVXZBtlpJB8NM9az8bw2mz8gzfl7m0pBabc4l1VRl9tO8WORxkl6K4rWNtVP8FR66r5jCGhPltiQbW03TEeUAY6 +tO3vp4AFZDEl9oq2AB2/Udm0zLkXrytt5O/7oJGLfJuIRmUqVWCDuokBsr74+ynRkZ+VHtxXQf3CYzOJnCff+rJDT845XnZ+r1yscgdJvPQrzmLe+Gq1ZHfK5EJs20xzy08i41wYMUBf23P7zmbF5H3eDYEXVDVsmAYRzxfB76+NabMdTnTl +5CZ+3Cr3J0tt/vS/PgBwSuX51qYE8nSshC66T8s3Dyhha0zY2u6rPKhpuUOpAQ9vpuPobtteH8jHSC9d9Kb6KOHXK4aUl+s/ic23QnBRD8oB0QN0zHAKErWV1FN/Sisq/gBErCISTYEHNLhWMyWh+mTuZFqaihvGB60oVUs7ZoA6gtudaWPn +L1mSscWydfCXGCcYqtCzZbGlAu5IKRqCXw6HvOfk4zPsyzT6UwCc6YZYdLSlG0sJU6ciXQsLqn3nBjtntgppZSTXu9VNRTlawg2+5Wa5S9rALpvFwC5Qha+VbsGX8o4NQJ0Tym+HdDgAQ6/L7cO9kYn65Ptzu7Z3E1BtT0uNm2AFPUnAbaKM +E/BRuQXNIweuefLcdSRy4O4GzTP5OF2ikDF8Pu2r5T9LimlukIglnk1K2CXJSFx0nd16x03jxfcaVejYBEu+gu0F2uoEKH0cORuB9X0LwTXFvpDmDmDZF/whGjmUpjay2nH9+JOeeT8+VLntRG1WdtdNF6uuq+Xr/idRtebyQAY5hXRWZFub +4idT2Z3uFYvbqWRl497AhGTCBf4diZXWMwdkTwv290ohIAwmlXB/wPgwkfSs66qh39bGc8cBqSEjVmj57F9n2ToL7FYN7jhnS7FSl8cmT59GChIyqHwaXLRruyIxCJxpPkAFDMVen7+xVCMDkqRmBL2Pb26HWJIvOAuJYQdHtyjUNXCJHx9j +YfYkGDTed3NmW+sttIAc0rdhS2LLMgjzVmOuJWFkUnYOeke/3Y7Oa+kkGx53gx8Zc7bvKIGfsrk11Y6Mi3str7O/yqUT9yd1YK8LhlqUmANWnLN0kyPa43Eb531IawgPv6Ko693LI+ekCAL7kunTj0lmuPYEZ0y3aE/XwJ4liOfMR6ZgNhc8 +AQCTw6HsTENAeKQWCWxQwrHXhMENWC9xe14bHT1axjDQE13yJ8zuPbLs60VzocVh6+sOd9tL2mj631mKXAP0UibUxa0ei66jcbN+zuo1gllNN82psEMEobBDOi/eQWPHq6zXpz0JdD9eifvgIAqeJvPm47KOmDz8yIsUBnJhfJPW5AH6iNSf +6wwkn81G4evni/t3G8tBnuUzG53uo8Ft0J38fLe3dKqCWPoCoZyJBLY0M34fClsxIa2X6bPuOGR6fUQcxaTEz+HkETyajWHeUIvaAyiVZxYPBTYGiay2PeRCX2RwsPG3srmI2FrOewOh/W0HqQRAQwjBkUnfQmwGj4hMs7NnmluZiWgMJB9j +Whtdv9+AQ5HmfDs3Q8ctcMJiUW/VwuoJAv/+IpJYPBkuBxwogsw0b29kxzKTVByGyigQ7vB400ap7Z52g4OOHhmGk3LrUCbXNT9SVZrgW8+cMaTUED7l82lgB1SrrVZm61d0bBGywQeIY1PT8wFm6Q41SZ56DE3EV6jIa7aJn5reHaq/zDa2 +lnO2Z9DeZEOLI9lP6X2/dSZ1Q4nOz48H5esYOJg/Z3BMJ3Rug4DBLw8LRqs+MlHt0k1p46VT/DUmn0uzRMu5ZpA77iVaL33enLse1i3MMuXp2Ik1Y0cofvsEJLi9KM9zvlwtTrelCJ0gveYTD5UPbEH12GssoKM67pJLtGn/B+hCG4SqJZQS +VEdXBpJklrr9c3aEEsj7Tp4WI1/YQ2wIidx3fPccFOMcpEoQBCNKUiBWtnF6OWkemB4J4ymODqutf6f2PCc+MWeAQCWJJhwpcOZW4D09iGu52vLPBYBkKDnJsfsHa3Htd8C5KuOgvJbju7gw1+9CXQBC8+jA4Likl5fVh5ZGEG1KE6z3syFd +6AR7xQAHbakzpT58J/jEDP8QUn/jiNZhtXqEPhPFo1UQwftpPHNscXh4L4mKYlY24aqspC+BvBTjnz40BDtcH+MxlIMI+w71H0i+0cLU36nFIm4REH9TmkbiIsrvOnr5VMpNpzM4Fsw073DXpapLJZ0QrjDTrbwpdCBTEwGcXufB3l+MpBv6 +9zL6h6h8QakzAWS5SZAsaFBOmwJ2N7pdoLXVcK2acMJDqTIc0WOLcgT0Fz+02AefbHjAGaWEjOmbpbZ+XS1i6PR8WT8cQPn7WG1X3xWxa3Yu9zrhY5YmQObXGIK51Jah48SYcCHZj1JKOo9u4WuPv4DFGF1rUrB0Qt6gTrLP9G3xoXGuQBFT +NEh5TB/TChjkOB9R3DNlBr+UmE4F67IOAApc3hU4cLePGckza2QDmPiXHKZQvJv0sMM8qoRhD7aXqo0Ro662AEPlI2N9yDT+cprwlSIqWMmNwj/juoZle+BPxXAXqbmWVMJV3/Pq+uNOZT9ly0G83uwKIUTjw8Qw8OEtDXq6Figa82AI8Lzy +4GP8VQqiP/PmGi56bi94wnXJgLqXS7ZSXcjPNh9H/SzVbMFqIP9pR5DwRXpoaL//ubWYr799s6MaaLqzRMOWA1UhcJG0Tjj+z4F5nWA1g+0YGxOazLQur29juHz+7/HqbGMOCkqgIhTcqQT8vhTEByonufvhqbD85Wc594+YbzrLoi+zAADD +IxuODl6JBsNsKc8XQXWVEK2EMp78Uase35TnrOD7a3b7K1xFAtDOqVdLmMOlgSHoSE9ABD0p7XY3GBNmp5Wsq3jBSJNszmsryB9paVXxd/DlnLkolsKrmj92466DuDGi+yNyBIcKnBEaQq+g188ZQqutV32tBccevO46VIl3kxQppNT0c+mw +3wuo5Me5RgU99bXzFkB9N4JmDoZa/Kfm4CmG2xCnRFN3QTVX91mbExYl9O9KVq9h5dEtuyGa0pNhb3DgGOuSWgAZa9HAmon73SOW8VWwu+NorGLz5gZNaKBx0nSsHFf6hyLc6V7jlkwNNq6fX3nC1bqzSD7kQDNMHPV4RQY0Y8fwJTxMb59I +kvOcw+Y9Fo7SqvpVFM8J0gDjbFV/lN45rlXQvOxQrY1HklEuSwGE9cCY6yLaYKlU8DLDQPZs/My9NneBd5ya63bcXwaFk6sspM7s1RpVxUpZymVXmCJS2uO3f5Wf9QkYUvqWJwGx+IGPk8DR/VGry+caKs+eCHIXnH3sEUna9HyHkMrnuIS3 +zqpzrlRuS19C27dO6eJ3xZfLwoHfc2RX74cJ6X4wZd/N1FJqL2Dnistg2Gx0Af90eZneypb3ar6yT85pjueLEX1Ky57AC1yszEEpHJiV30uSb0SvYxmsPf5SUfFMtIiDSms7RGgUP1QGh3ov8y4LJJpuIDGYnGS1So0prf4tT2pJFqx1ScAG +dYZ5gKrAl53bml9WUnoRZcg9wrf/UdZaIstwniCge5u2vWDwAvvlUDu4nRrmBCoeKfaDLMKpPpQvpPcTvgBH2piA//GkCPUCRveJ72wi4u7Q5/UkBPgsZ77RFZ03Rpf9StgQ9jvXuSmLaOOGb6Qi0c/qEnSabbRfwIzbsMcFZZs+bEruTmYt +EOHn8r3/U0b9PBLTAXnWIkthCXZBKTIS+IVrgqkVJl1Mp4Cj2RE5vU7Jk2cGXPiLbYwp+iXSkdQ/cCBQsK42e34Jh32KzEmoDDNswkEjmHtgcZwhWzXmPSW+/iVROp15F0peFSKS4EQbrzf8ho4lB/f9l9It4n3AxuxRTJ+pemTCDE85vscQ +Mhx0cIIhP3mFqlj79Il/kHADr472L3pdfSUe2yodTU+bsPCnp6jJ77H37qA5JgoJChHaWKtShYx4z18E3uZV7v2hMX4bGIxYfrZlloh46NcfwDRX7huVp7dA2MTAGWixccn/ah0JCRUZS4tdYO1BQIdY5U5XQOfxMcEMfrRAKHTkPit+9qoe +ugM6HRegAcARqGsnSVONDFxH8jAVhToYu0L5pDk/2PrJ78S047W3NWArwm3m8obkhhyWGY1ZIxNRfBOgELRFsu8nPF6opegRyVKGWqpErvRHZFpYWnBjdnWFaEOjYNL2270fVQsxb+IX5OprI/sXu/0HbSTXXc0zMdSKFiQokWm489zdg9jk +zZ+VZxEzLvpPrj0lEk56kk26PFMTO0SxYVkeYOfX0BVL6ocBtKCqFc5ipgs4lJu6Za+MzKchxGk/z0TwcHiqyfhX7Y7ODrIn1EBAiBD0YT2eqtgjHDGHzg4jfdwRKom2y6EeZBOXGPjcSxLsOXjjH76t5pVoKLUWu0fVEoLqIyIWtn+uvljw +DFKlzGS8+3ZwniYNv/9UJmtveBlZvoMPerM+ex9RuvMP5NZc5okv0hENtC96VIN0dDu0NScWFkIFcDTu3tBqMWPnR81t6ClNTwBh9zsdHE2d7xTtYrtH9NboKCM4gfVjZrGUYzGtWTvc+KJ4DaVmoU2NmdDCicRtpkgf4dUe7m88t4xfIXu3 +cci250gjTGEKpYxrw5IssI4I4DbSWM+aIwQ2MAFE24Nm+BchF8YIDKvJzaS+OA8iuc/55cv/LLmcfg7unuK2qu12p3D57HRd8Hpm4onA1zchNffl3bBfbMCFcaUfnQyLlGYmtWHnLy3iTuFVO6wIGPBakJKRQ7J/d6cDwch4jYknVJauiQma +XJ6w5BgBmjpVDL9oqgoNmhk4OSdjc5TfE0CYjTcTqCnfgUOgmuG83HgvgOvKPZDUBx2isqn5BgIFnl+B72geNeY7TIkHOzm7PS5MvhwDcpth5vH7Uia4MKemxdqS1LWwjY0ni7uuGBg1ZPc3lq0FYghth8ySvp+kOsT7o5wpNPvY0QF50qUA +3QIaYWth53FIue/0oZfOs9bDrINzTr+TucONKrcz+NsUynZbIFi7eY8XbBDv+CsOqLrqcB2fXSJFg/F1sVzLuzfZXo6Eb0M49OtZR4OPoWTTBqdx4rBCvXAwq2KcaCrGxZGI+aqwLTlaCs9XREqJlPRNAQCyQWGZaiQq4GzVvez7RGlRhygG +yBYci+y6zjpoWYbAhPvB9QxSFlwwODeINlNEg/7ILO+j60FbrP1HjXyEQIWIcUc/ejx6spAHrLCEo5e4/h35o2OP+eMskLdOjxczZxuOjCUIM4YPrgo4dH+C1QOut48DchEAHu3nPb0QIVgVmlK6+zEHBvtg/sv/qazvn647Osp0LULiKeeU +BqaHpXuhfZ+cF72/dXcnPefCTfE5F07/TO58VTA4GEAUTQ0J9k6iyRhsDZOeIP3XkLfUWiMwC3aQwoT8pHHGXgjpZb3AzezPd6JFdJgdqVd4KoTEM19Bzx7oKoS8/xAbBKeAwhq/G+iYIfd+JTjR4s3jMCuinFRYcZu6W1eE+1xe4moS0Xve +UXs7yAt4yGZL3/iGtFdsFDUPgwCdrmfYLGiZ4KT0pXd6HZQqm9o6lNPwrQ4ZOwhiaqwtNvI6SaS1mppZoah9Tws5k2YryrON88FddXUAvoc3j+UTiWAGmp3+U1qRS5DKDCbnJfGbgSmG0DiTfw7yhXANihJ8atR+mEU3uJPavgQ+O4n26sgC +ZMmw2b0jAnV66pmbLaAV2UYMxjj/8ba6D31wmvchdtSkobkFnDMUKICsKj6ngzUe2w9xAlCgt72EJe+dPFNGdEFT3NVzJle8zUXgyqBrqdcf6CBJ3bPNvPDzLWZt18jFnHFF4eYHSbfJXVlfnclkV6Cp7O3o6FxQppaKc5zHzB2DmRFQRNgp +KgR4sO1aztHPPXx6i0v1/PIYIVFl3lzzePmyDcc7IoaH+eq2gZinq2NqsPzBspOrj0edQgBH2tWlxtO/rd5I238OFoxnJWCdVENYYAPAKgI/+6VLLCRqlfc7CtctyStYHem/mb+U8lSIXCazu1wEoCZks0dH9FK1EAHB83V5YPnQT/F7qW1N +ZVtWDjJxEecGPljoJMKULAhQBiWZhSJJprDFGe2fYjdePU65XH4/M/sqIwMwWxUN9pOvGi8aPGwGiNReIrPmHgAaAbMy/mJjww4LilI8sbZgl2g4EovWj/a7SVbPVDu8H+dT4h46QjE8w75rZkwJHbE5JjlUeAAtEqqEOzAX+HRFacz8QKPx +kARrdF1x1hDfgvUkp1eKluvylhHo+LxqxwpXqcl/7dae70aY6GW54Siqox8m2a69oF/dyjQZqViwd7jGrK7OQHvGjFC1j/3BZniqmB8hYC+0cym0cLzwclvE0kBAfC86gJoKOiF0J9p9lsRd7UT/0lxm6AqSVHygWIycABsW2QPjjkNlqRu2 +mfVQILUBC26Qqq3Y43jyy5Bp8uCKVS101FiUgTuk1wIkuL5MVmXQK3NwBYegbuMingH+DZu7M7OFkNo7nfbsK6L1qcIBt3Z7if0b3xF8Eyu4Az5WUNB3Ej5H1IeYm9tlnwqtxcRDiL/nQjgvjHotqeNZ5hjQDWNp5xT48jEcMajbyGbXngfn +rzri1rNERQ3imknHBuGhZ/SqdStPIutZE9bYjsN/J26uZMZvVQD5LOS4sLoU0NqC2wsv3OO+dwfABGmEGUrGC75PLQcO66FqsRW3RALURx/9u/YgzJnzX4KGSnKbAPylbNuH5EWamvMKhjgmB1mMyYTynFUnKvg0YawCqN1qbr3OC3b6qJrp +T+ydzHP69AzF59UiG2ywGXSRyaf54ZdbvVVDz8YIgGz823/FmQMjssfJjsqDWRZVgd3O8hww44/MsnrCG3+DonXVKawOBI4xt4JG8VJkqQN6/hGnxnxSymrubztdsiu/j+6uKBCkCvUv7QNCkh2KfgxyQUtc+8z31facNXtxvoq+SpJ4ryl/ +Vf77cQjqJCWw4ugicKUn21eEtN/A0Kufk5X7DLRjZBq+6tmDpkdlLUJ8CFOgMyChPuk3rwWRXqRB7uHt9/wNvI7wuSuWK5BT53Etcz/txlAWZ8nBZeVzv1H6pvPy9zNIM+0Zf1XK/EMQ4otaFMXqjykBPI3YWQLTzmFvDW66PZX5BKu6uAWu +pzPJ2YyXfuE+4wG2zaEY/VDgcVpzvgkkddMDsFs/sB+8W72XPaQqN8JMF6EAGxrjb25CIG2YmNbqQoQtCngUsQQPaWIHKfoVZnaU2dbk2Wpjzs310djrX+rSgjRalYELMsMaVJhDeAlLBsxnoR77BBp1LAP61RdAIYawZSzEhjbC5nwjP1gm +B4YcP3LKmuyZLBF0d9dxiYLZdaQ/6Onm10lxcc3v9I0fxDV8vPbJNKt97c2SOaf2f/E6WkU37bXJe2Cumg2qT01vw8OZb7KE74YQUY87QO5uJhkMtzg484Vedg2mVWM7uQAEyuuMI+JamZaPu4TC589gOwjrrpPMl6Sqgw3lRYNybyLGT9DG +q1T8nuB8Z0d56hTBBJklnvBrRpIaAWe5afGrJA3X8U/SYdBiR0AqlAM+FtKcjpYg7eWxx2RkMIQ5iEGQxg1TqV7isiDTKXXVsCgA64Rnw/q2bpftG2ELsVkPnsQ90xEzZ91TkCKq7uf2Hpcl1QBneJeZUSiNOrrm2NmISRVAb65FiGiGdsXW +n5eW5RklsAYPBzE4Wp8IpCG9az8FhQcY1szy3MbD0l4rhfzW/Ig3LV9IPcDk4aLtThTDXKZKLuW8wRFj4b9n5U2WPqNm3y4/Ewrh0dalyRPCFogZN2yhWwG28kD+V5WoUlxFHAYn20teE51zsK31S3OmE+qnHhcMHsoNuiQnDcB3XSkCAsCs +yw1Z1deJq961TkEtpRMJ254G9D8OMjh8Etb5v1fYEr2p95PD0/RO/I+KAASAU5STojKvupaSmH/N43zwytkUgezwX8ajvG8Va5SNwwUEmzFMisC4UiIVmbp6DafXEQElJtKck6wXN4HPg/o7ouXKpdK3BXmSi1xzml5j6+G8swqa5z7o2Yp/ +D3NSJ/xR4hBMY0qZ1ZJ0BnauL3KvTBWOxBkdcA/i7xt1vQazonSUuHH6AYzvNFNlBR2ZzOR/Bnd1HfNeoZ3Pl2DLgQ2CUjRxSM+JWwPbsElZ/ZbqQSuvFQWkSFbN4GaLKdGO3R9jYLmy7nsDbS6ihS0663mL9EL5CR5C/Ybh78KTgEcDvfUz +O2R/ZvvJ1ymtYai+RCo334ZMNPUa47q5vrKT60/0LPMqHgRX7OMDIKGX+Qj6dOofJoamO3iJ2MN+/nozreiYjhi44szylazVAlzZWDGfHg70Cz3NJxtj59G39AHto3+OsRu0yrB2n3DGwfhcDFD3r1elFsstSdA4KE7kKVs8nh0XZAG23q38 +Df4kJH6ZO08LbO76YIw36iaWmZhMIHQ2Libinvjy4FJsnhOoAnL9QgQIyefDUoQpWMRAF1U7JeirYN/oVH9wwdQjJcxXoF5xEWXLKQYuY1+X132fL19zE3cVwGYSV5tsbzvW2Sk3ZgQDlBJNZ6/g1FqdcSYN6mKuVsS3r7Gl0h9D86Wn5eBs +UvISs+NVnIk6unwl3xkiC5KN2UNdLT9tumw4ohYMdpvdFJ4Ml3hJ1QNIJUvz8Kj8FLSeeZ6ypkBMr8Ly/c+4eAMoqVKG9GqFUdYV81gAWtFaBAsHyapImOnXVriLBbp/PXv/42PCKDPaMV3OYndIoJdVppMBSEipiCp89darhZXzd0EhV6p/ +0GaQwA+ftFPEwaM6btEIncVOMu66pmnNaA/CFdQ43/A5ck1M/ZycVpbrDlpfn4327kobybXlZhvlk7IZlstSRv5jwMYFwLTwkmPezCyi6WyI+XXicQmh5TwJzVnMWxUiHYTnv6h71uFa8u/U1QAqY/nIiGTJfKjjv4ZAWEVbPLLtPmR0J448 +TzdMoX9mI+/zL2eeEHKWbWiTs2+seBUmJcajQ2hionvYAyjEzP0GSiT46i5yN/E6HY4447FVTldCcTXHIIjnXCpvK1SvdzekTd9USg07/gypenIO3jP3pby04tLd58EqUrocUkzjSSk2QiPYazWE84fR0yVe5XNJJnjsuNQR/ht6IEdarZ0n +NYYPRLpgk+ki/i7Qeq2pG1Yxktf42KtlunzU23FEy1sWMLmq+k73zIY0DQVEFmWVJ1BVFWGaAA8JfLv470oT0xp/Nb8TFerYGsCkiEULRRN/QCqtGFMI+8y9yH+7l0VGUltwoLSUIGBmjvxgiwFNaimnT8uSeZMKAnbNvq2OujocQY4LoHk6 +ny4ctxMi18NN5L1ic3Lq83Rnvs29rvtZgPx346f5rossqGIWFwYfiyc4x64tGiPJuhUGo2QN1+dwPXzW8FanvMad8okun/tYdolexuA8vtmI5d+8fmVzXIm906//DAFXu6ZYvSCYqsw/1AS2ZDBOSKaEXX/RSwXtslwYAGv6wABen73fon8Z +t0DtQN4ukSTQd1keVPhD/Z7EW8tsgZUXHzc2BTrIzXfXYH6tLqDEh4W0YFib2TKksPvaQcVqGWlLY7jL3Tx9gB+1+RE8WgwsMkEI+ZtYnltMj55MzBIuBmwOBtPttoJGSdR9Oe+zREZC2EV0XlZ6Ccz6k8tZlfvjTSSmrUvi/mfozh72QAFa +AWDAbihYTTJZ750F1/ufLsEcRKZtyAOlw0sOdxu1k9LDn01AZ7kjqinve7mYGXZyffkd9zhb8p3uJJiCaKlmBjf/80mx9SstDaqyamPwCGtzCam/Wymos3XvW7b9RtdaaGEBmPdmuCcOCj97QfEFkQT9dHu5UQDS+J3IsrS723K4zhpf6yAE +Zj/j7gFx99I2u9u8r9UwKidi0H5NAWRCu+JR6KU2gCgbcwgvwZFLZxteg52SYh4Z4C0SuUT+MTD1wV6SVo+jrVvufcI8cU6t0Yb8GNxi5KZ28PVIxAqZ4bMDD0C5NWLAa8FANgmfK93fRhx8Dc9z1uz4HdDYivyVuawAg7U338NHHzBz85Rt +ICZNMbrcGbjg/j/xitAqGEszPzKWsJfhS8nmkac2hwfKeZLhr/3h+LhpW7tFBBMjyCcrT4WeYeCF29/F4LqA5D2s99bAxqXVKBiPUI6l7bjSO9FjeCwmQW4P+kgcTAjqZez4TpQ3jV+xMjO2Y2V3/WYBDmg9paV6ELjBEX6ReUXaxi4S6pys +oTfFTaCSVOYlZd+Jk5Em42Jw1jpagbLOeIFYB3dNtGpImBXv9dZ4AUNgVIrti/lngSENqgiCGo1lpIKePfE16ZuNh1vjtiVhbpQ2FpyLymwoeoZ+nZNgNycclRN/8y1PBS7wBq7+G/GahpbTzqzBCGkz4r0M95r4GCt4tIkSC1GFo446smfn +DLtGF8AYDht88q+KQGiddtFczvsdA2h0P4B3Ge6Fb8Are293t4Or7G0EcLg8oN3uy5Dab7f2o61rG3QxJwVuXRtLUKHoqcYG//J0Vk/wvb1XlK61bQ7ydTqAB1AieWxeAtq2NM41N0CePO+nxijGLFqvsbYenRmNPKEgjskL9SZp4Z0W6a9l +WZr0Or4gWS9b5L/q0JBGI5kYz6p0lX67boaT4JKh58QL5a6FSM+WTQFNQ/4Utm6WhLutNYI9dZispJjsZla3gvd2pi6x6ebfXi7V2esT8CGM0u5rNKf2JEfYme8n8mX2VnG/1m4HqLyEVWNrPgouYiLEWL2bhh/H4vwC/AmF/iKu1Wl6zxTs +pAWzw7AkZciAU0Cit1t1mezNmOT75Lxn8cfPt32u7WGyLSXOdfwI6XMSMzPlhCyH/OYdHf8iqFJJ3ftDdB8n5Xd1spAzeCsKyVDy//+iyJ60+xJyKh9S0fNsjuO0+DeTddid5etFw5V3k/SuwyJg/CqFn/vZ9+LGh/Q9HdyLqpfyBGnjgVEo +jUtrBvLi0QkmQ1DbpD4aV3DzmChiJT31j6A/Nv/sfJ9DASoGSahYLrfhPp1gFiVYU39b0aYIQ1f7DRt1UXjElsOYo2F4WLARfD2pHhGBnCo2pBB+cmQZX/7B7v4BFKHuqdG0FvZrqGcsVzto7QswGQVdcOe2FTkc7nqOezqBOanoX+RWliGA +P8N9SxKNQR1ZMIejLbyQMrH05yyy42+kGd+eUvMQOoIWcgXlRAop73bxDdpQQU65K+o++uJm6E1pZOvJh11yDjhvFjzdKyXkDn8jHgFczPBebrGiGnrqhhppe78HtS1cOrqVQkx69B2v2kqyAfmFde93Pstt2kifrmcPErwRtP18Ul+a8LGb +jQL9XFOowcBaKdyso5tLncIyvTrJ4AD6jw0bidLNKChMFk7CfgdfttV1TOFevJ9OqnUcOxTi47yQnsBFTvV5RCtC7zbSb6Buu+IqdNs2bFvjUA9m/eo/Vn/RhopalqvcMAsP5s4DIjDod3vz2AMuOfScGVn4w+qAgqmyYbgynnv0O5M4dZSN +74OrwP4qMGOLw7RTPQt7dWHgvgb0+L7lXv15HJSqTr1aHT8q6DHx/pf15g2zMEaGuwyB50yDtws85574mTbhSm58JeETFIYMHiJwcaItsD9FcY7jG074d8CJFWqeiJBOjs6CO0RAPO8+JxqMcnDCFkh6zzUwIYoYcHRBaQqG8HBNuZ/SzFxG +AWyTw970a93PiS4wnw/6R0rBbeQiHMa7JRNNXAo5aus8YqSMhv1UEPs4hjGfeiS3y6cAUPl4GX7TWkCfwpHiqzfd0gmEiu4QbhQoJN2RAT6rumY8mZWE16DUUTOQoNuqDG+ykE0tP45JW7oP3/c1YqdrZ5IuOpFCADovNstWHm6rDaWdNzBC +hA7zjq9vx8zw6FlU9AEOvJcknjycVEk9G8txE8C16xcQR8e/P+iuFekGYd2ygBNM7P9C14dFFtOLiRMqBUVrbIL6x/5bZUHLzbUzZ5CrndL8IFe0vx/c7NF9or2O08mu9CZaRAoyMQcagT5PDKl96Avl6+Aedvjhmt11GVk6vvlm7S9uB+nN +hXjmegzfS84eBgeaeRA7PISoTGqkZYOApbcK8zy59lnCmuDYiBqWpiVzOybckntuEOD4BthEaAhOekTEPFwfJH2AsvujEnatrJIfND6C0UsYEhTxLD3gjcAZTEGot9BuVlAOPVmvwwwZGR5o1DR0a2U+akpGCJi6rM29Qh5CsK5fWIcQbemF +ARQDBbO9FgJuxfzIv7x9mTzaVu/qk5nAClIlN/4VrNs6XB1nDs3juWqlKzWJAhvIg+wt0uBvpqAH/2wS8zin4Ksa+rZpfRyCpTftyyhI8em6NcUAVbXHHilOhHklRp+Kc69yFA44bkjsQvRYH8U0gCpLD+mBWudK+U3fNBrVR1wzBrNOAyYQ +98HEzfti/IPrc+JW1WK0c1QEz7YP99dhywl8kWK3l9UefqzWZmoS17/OvFGqyYBYIJQVacbQxYA5fTi1IYvH6NbOliA768zNj4w3HmDSw5RtIDL09Xx+QdIBBdnQTMLA1tRUlabshpMFYZGp9876VYfQZVgeCjS0uV6Ekp1zd7O1SykE4ZPc +ANZrQ+5+eJcgsI1HOeoF/Qs9lk7Yfbw814hIW2Vx2K72dr9oM+w0UJSnftJur5aA28AWYsdw0cSSykZACULtLEcUXZAP0HsDQ/dirqACXsr/9MfAH2F39Fm+v1WBwhLCABK9CH8kv1i40d8AQYwjMeCRJILF1a/D1/JoIUC9GMOvBMAM0fg2 +st61AjDVGtbyAQcFmlFUGhGgimC6oRMwgEisLBQygcYGgAKpr3CbWQWv6uWcwKQh7xSQdMeBkWSmWNNz6cmTvaZUdg5dp88cehwjUuUgV9f9spBxkC7ZGy8yFW1o5OyMehAmlEOK94CFTvaacxRKn52dIaU3gk6ugMmDdI0D8cEhKhko+aQc +tUKHJ0V7HostOuR6M0nWr7srE70vfyWYwG03+xTemNpiWpDT+XIGp5jxRjJiZ4yDogoKl0QhsyCPF4EH0yoYYj0wzr8EtG/n7UWITwcVc9oinDjXLZnWdHN9zb2+OkLZtrtXNDLSuaPhnRQTFES8Asn0hhDBwkRgrvEKItAYzXccKrHw7XAY +Qr5c6NSD98MDiORCXvfaVWnzlcJLLKe2wGO62uQl60N27az7yHcyrhy7yEGvkj/0LU0U6HyGiwfYZj7ry6kBXqXqvgzqI1NCxMi/EFMf20qx4v7dKrC3Q7dTa4JGoP9rkKGHPnMwEKO09HKjrDd7IFQH/UEDd/3uuLm8AaeWuQRUf3ndvz3v +dfcl5denJGVJfE+AwkIUIDH5BWLCbv5aD5n2/Im4hnmewdz8MSOs15sQuB2mhzDDiBa6Rb+XiEzDCL0MgQz3mBt1znMfh7Oos1O7ZC1ZUKUdyD5TFQpNGeeY0lfG1+qRt3GJr9fUOPbOZ2QFSxhx+AQoaqORE2GckkXCkCRfy1kI/SQPwMcc +60d/prrtYooXJfJ+uwSamU/bhmQ8ECArVOhRH0djqjk72D/Pyl8xHHyxb2gEQ+zlRL+9uY40zuaQb0YiL49fLfdRSFeU6LrvlzOvaFrUbAGQSoC90Dt71WS1aFUJGW5MSZDEmUnqFXPzabJAcEskvnUxEhyunLjiNOxbJz+o1kstB5tpgvMR ++1SwNOwGj2YCxw2eE4NmFHaHIUr4uDhepQOYKanOLVmHoW2Ukqu9xn1Y6zmfZsJaD6XlM368mCJai5Xomzx4Ehcsx+287q/x7OJqLNqsv2xot/8eoiFVwCBsCpss7C9iP/a4ATQGYTbzO/c7H66ROoXfpAUowhIZtVKR8OFXoT+d3V4gC9Gb +WhwRCgqxvhraev1HMPf8vimGK+MP1sNlioZVUkJYzLwAhMsm674VZY9x2GobNMw63ANGezLtqMoJAfuoqZgrmscgv8urlVgQ7fAKGwuVMCMMcuIYEvGuPzg9W1Cn0aC16CmIi3s9uKqmP6+s5TPnFIeUc/YrCHoFACKkmRNh99ZtOZGi9cNM +bZvOOOWNe6ltOX6kJMM3QaEK0U7Ip4nziGHaK//JS8T3tUPXJRSCk1LIWDw7NgMpulqvGQA0qfUYVQ2a5rN6lEakQDWrNKXBH4XFXje+gWrAoIPXTcViANp0//AzywnMrW/QTvZAowfo8MTyy6Wafl7ScFEhZNakW+HfzjERd6fZZj5WmNG1 +Xe9z6d/wCKNJcZ5luUrMSevs8CzOd3B7mXPf2WbLO9P07AwauiB/N4dPvoM1auE2RUwy9vcY2uzatqotJp4sVIMOFxlqi4HQtuP5o3ybmFT9OPu1q1FEGlpymI07T4T0ZpYCDumP0ckJKGso0W9EAbSi7/cTh5EB28XLJx2r1arZS5b0SDPE +Z1i+2KEGHpQghCq28GHzbT7P4sRcAvvpOX2aXW8BBjcFcc75PHZDCiLXzbXg7L6gU+1FTy/9lZdw0YEqfkiK9rlLqN4VdqJ1nQyEjR5iYzHUhf5J2vyJ/Hgzw519TmqAzNYLiX2tYdOw/VqtijNV7DVUz60J0RaXJgre5Kn9cOEu7sdv4opN +tRIiHsHSIBqq38NAuxtnFEXIPaXRwTiEIMua6hF6zd8BIuVi+3GqvmGIzI3/DDwqZn+EQYATWaq5jmsNIQQlKro9JjiYQj4jKz9PPEWQyOMmOWQrsYQXkFPaveP8b+Z6asfwMwWT4Fhvz5lleF1WXZuA4y8lYgKo+gmmuPwo+9CkFmdMUwvI +Gsw83aXGWk+YE8l+4lOU4jjztXX6ljN7RczPM9sSGTYxIsTJ2Qk9DE+fORHBzFpBRZ7qBK86Ge4LCASAod7tLgNfQBSgRr7QhIimA+PwxUrnhus4MBhmjyiaNZ+E/7ImvmN60I7ivN8/EglDB+8JylMvc2BfIeKU7HuMK1PG/7ySLNqSO4ZN +xkCVs0RkdzjCw96kL5zLWaphK8hUtD8jUCOwf953yWkF/6EhL/OSKJ/pJoWg/iPkEmm0ey9fN4DEkRXJX1FqavwZFk+Oa/VAd7EBhwF5/ix4pc7gS3mVFJcDG4zX+L5eucgRS6yAFb0fMpy0KGlGQW/0TfRSR7HQNf7Lmh/vqhbAyO5TZ8go +WRUoM4G/lAV1ir7YZuPylfcVEJWp1sGuJ1ggN58no/2o5NQosAwwY1luSNe/IsAQ+5MGka2K+9jIkI1fan5lRfhabpDLBHe/KIaLeQu8BLRpxC49q3m2RpT4HkAeNmvT0o4al1RwTxlb0SmI8ILgMbCR5MMYipD77gB0F9mJ3zFkUBdjW7TE +MOtAtLSDagXjwep36s3dgk99RGow9L8IEaLGwaFx7cuUFTOtkQbkKOl7Jr+dasuVkvuPDCWTJUac9WD1I4vz54G8CDkxGsYb+uTY/D3LB6n5bt1fE5XhVzqeujLU2F18Tl77gUr8ns6rJ8yj1QYoreEuDiTQ7A25R8YNLybyGe4n5eEa/F3p +DCP3KhL7XQ8W9wUPFH0JrdJyABm36wvoCgNgktvn/+tdOjnV1Cytj+pc3OAQFxdhiOUkmvKOE23CmP+MmIP2ZhkqI+lGPDaynDKmLiHclCil29wD2/guzMKCz6MH+m1C7gT4xvW9sOq3uXTZdhjTsil1g3Qm6Z7LQELyfbD09s3bw9feIxql +zPYswNXlgEsBx4rs0CQL4nR6+tl9u6zNBQ18438TDiSBouR3dC8px9CyC6ExavcGk6cqVjXxvpv/Y832z4roenq8MZj01nsDuqbQ7gM45xArVKm1D/p0jtaxNDtp9tFmgSeGjkAhiIIwtaSqnWz9g+o48pDzKCnMO9993x9Oog9/DOgYcK0/ +bTuyeF2YIXOFNF4dsm4MVWUl0nzL8/aer+cKT1YVOoz+dpSLnKtpflQlDWm30LbTNe24aPI/g6uJAccJbbHppVAyeOZOih9p4ZFe37cbUFKFuQe3wiNjy/qBWg61Cy52N22NPsPLzz5mr2Hs63AKAmtarrs8nIoPpQwrfQJFUmdn5yqqoz9r +aMXOGZeApJOItPyEifESpGm86dylVvZZUGoDfGfi3crveYAbhhNmrKesPF+872SeVCucZPnwfNs3nQ3JSs0tB/9B434pGhPu/Xk6TBPewcZ1A88MbNzs9RXutRsaf/XsoOUt8MmxwNWRW5Pwv+X3FxaUR9zX76YAWHrWxTh9PZvIGExVpKmX ++9hQPz0JgNEo9xIAQ/BqzlRxKpfisj3mB474eQzYlBgM78YNuT3+RG3dN7qwpHOd5X/1ghb6FRiTjWKJX1sTIxjq4m+EMKMpoYSsce1HrcEbTxGd77l7N4Xmhnoy8iSUfWDY4NqMH1x+r06gAMomH9qIVnTOA6XDe5a9xmyYI99rqX8gbkQV +UGxwNC084NWvXKxHTpEMn2hRW8FFE0TqkF6z2YcJFHW54Wx8wbXULZPtSRRrEg5WJKNRNAuJHM1fQoCgI4uPOK9T2h/DUNSu3HmE7ie3EpW6d4jtcE++stmTv1xlm9JBZKJrxXnpEhPMKYsAdmGirPDj+5FH7e2k9MsI/ysU6FLy87NBkL+g +39ifQyPJxHfnU17V6OiP24zPVqxpb5d0Mg8eIiwTEahm9Nsr3b7vTrR/Ka5U0NQ+oSV1MIF5v3+em7JslSvidlIBvWS3ucig1qLCWhgokpfQ5VfgNE8+n2y7Crc6kbVIUE40LC1+NTH99SR0q+4hIesgC1V7dIRDqlOZfqYiSgPvY0LhXXk4 +UT6M8CdCBKmsCfkDqfrNJdZz6nuXQqHBdV9P+gUVNb9Hyse1HYt2d/ZxCgRbsSiW/t5il1xfio4vuBxyFbDoGboBn2HF5XT/PeXPhtKwmLRiif+zlXAZkHtTKrmv2Rqxd79Y5DbQgJz13dl2wQZzV1kiUlhLbk6KKyQ3bG2/9LxcAZaxH2Ao +ah3EszI58ixE/dvaXktpx/Fo3suDYZ/tCYqU01BOUbndzfOpdT0WukjRp4pkBS54WNgyC7egyzQGfRwG2iwOmUgbCOvHvtPmjgUs0uNs9HYpU66FoJ6A8V8tgtziTrd549c9cMmD+n8jYD18var3kBD/WRqi6QGZQO0WEPzsjOGCUSAc1qkw +uDVUtnteOco4CTZ7MKZn0XoFhcdo3sD36Pb7rALzkQO/Zzkq4jJtDQDVqqi+VIuh3eZjCeZRvKrzwWPyWKsypiVDdwsMEDo6rEcTrlrZ0v7O4nAe9CeysGDpgr7TxO6w2p0ZHBwU9Rbgfonqp4VxJPPP1WkJcIl8qvUtUP6Ai9Hr6GSFNMAt +vCmDer+ap+Ckp2GOipNyWrrtvd4bawMnHS5tYWNYHQXPAGBLasyqFVfClOKX1REErwCx2kqAh1BxuaIqkyWYLUp5gBwUXaQ83pSGNH+SBIULh4VjQyzgkcd5EuYViOqnbH0j3Gr45lD0gjtHe0VnoGz4ikd/2wN0qHBdTeszr9LQ8+K41xNj +ff7MzsZcwJeg4sloILg77mgQ2dQ+YCAL6mVpyGqUQR38lrJ+fHTMnKW30Nxxda9fiDjfD7+F4fGSZSnwe5WV8d0SL2S/dKA2kQ5r55buI0X1wqG5H7CFcOUMQQkcOGxrA8B30qVSATlu2bISCTgubrpt6+HiuCnUmR6B6bQUHrLYP5d7wvqz +yQ5X8xgnNA0n7bz5lu2K02+j5xdfYbOdi0pePt0jCYBshkS69zZl6JCEt0L0Rf5DQAvXRgDr0rG9GbuxDMdURBvhcJXg+aKPpFCyU6XMf+bCAsW8OR3xw3MXUl1ZT2duriYjRzlfDVYg/5cNKVFdo0jCS4GnFJig7jQYsZvp6sf8l+3KOpYV +DsvgfD+gyfMH5KOee6aB4l3PGFvUa4LQhj+BEbCHPPoXc1veccdw885Th936MVwEnI/kyHb185pDLZQTqHttu+az6HAZ2doUvA0LejhGIP3ehlbdlg4OezKgsrCOjw/Ch6H8q29ulHsP3oAj4qPGrb2mc+8WoHlPkKm9PV9rSJgXA8osKvKa +oyYuV2xHwqtYhoNuNNdEReMXMcD5/eI0fgklZBOz/owl/+g+3WoSDbN1F3YalSXwUElf8U2ADgbq5IYgvPOT21mdklYT2Bi3A9LbP/lwAP1NyIYOFKnJoyFwzK7iWiIiq0uyb7WXqOXaoWsIGgEFflwZBnrmRwv/I69CtEarFuXTs6WcAvrZ +Z0oARaOrQ+t/7LP1pmVoG8zTU7vbXYhiz5yLmnTrkHXHD6qcAqr/vO4yySe2oQqWlCrzHwID9EmVupRxoLbGIBEs0Boam4dPuQVrdHVBjqVKM8Tg1MiJBP2Gq503uf3qVOoKQDmAs4zfdtjQwp7diI4L1GJGvzA0LDcqJrFN2oY3cvSdGJOH +kgiEc8gENxo1+fysvznDPQbL2QHKZWohUmkSn4nBgASri5P5fWSdII6AeCvmBz8ywwQPxhkLiqRiK55Fd+B3p13eVAXnOSP6awNg8mbVXfDoYDUZiGN6NnEJbkKxBIFmyNjROegODcBtWDvDN/CcgraDbMMBLJ9/oEnvvdqqWTESftd+JzMr +xVLRLrWKQrIMvrIMqZNL4W6ud2PqzgYdUm/vzueAd2ILOXFjcCFSZlznGXaVhQTeglf161iwU3hwHnXj6OgnKFblHN+VC8tOcym9Qwsi1RpiON5VNDeSvjUX0xhLK8AeVgeeImNftGUDnK/8DfqMUNtKWNN/fwXLGDWQe4pOvWHNnDur07r+ +3aTl0EQQMYFf+Nk7lCGe1Z2GBkflsuOG7Zmc7RFS1DQcaM8B63g/p4bN+RG1DmXIj3xPK+6ayWFjCrQpI5i+SBFSe6SDg0Yi05xUyOvH2uLss3Yz9XL1PYUdlBBqhP+VXqvnTGe5YnrCjXC2vdiEeou9Yy/PRmQ+aDlmBBbo7zgwPKuGZEcc +sUD9LcOKYiwtTnhHWtk7p7lDwcQ7Hfglpbx/sWutl1vmCbYprWLpQdmeMm5yjl5th9V6RLQ69vXsEFu86W4oxeCputg+NKsCSN6x74MEeYatmxIRG0ezsmmjS4jT97sjlNbJjwbU3NRL5G9vYjfJTFCaPSHdFtO4K/7XyDJr1n/NQaZsZNUh +57z4dNd7LOHROO9solhbfYfhMUVYdI6iLJT26/xzPVq11lQPq7clL/YcaSe4KrDT02AoX3aCoYXIHpaz3kb0Dn186AfeP1HHST11CZ3LZKS2rrtdCtzHPBM6qsWG1n+SmxpSytzlLs1xoOgLZ68CJeK41rWl2jVO0QcOHN8LcNZuTKQiLF/V ++PZTTT6+xgz0Ej2rHUFoDQ+SwSUqkPEnQY8DLhDj02ucGVzTnAseiLUXC1gFLPMupi3CLKpLsPr8LJ2RBqTVBRIL35OXYfecAzvY7zwELhaydvLC9+QuDYCUMVtbeNTVipJPOdyhrN300aOPWpiSXFyjK7qRWENsyY8pphwebHb3QPPZLDBG +im6TUaOoGqvxG45VCKv8eVb2IM1tDeK5hHigqiPXbb0wGhvBEMdnxrA3Jfk2Q3AHhNucfGiUTYt18qpyEKruleZOKTjXbmkVGYF5XU/tJPRLZb8JBaY4OgI9tqnRIT+GA8BZ+FxzQyPGZlDVD+qV5uMtQVybxxmg0ePNMJgWDG2Ry9kRo7tL +nXApU1PlK1Iqak0SfGC+3AZyjLdIMzJO4OXWkbqxLkB3PqbyI5max9BgV0UAIQuLC5VTSQ8L/CyuKsHM+ey3rGEhy2a4MJkd7Shtq8XHAKrRzetxFK6aBR1hw7Kv9EX5MNUS6F6M8VvOSHjRm0wuGV+8RmVthyX7fojsERd88pO9WCS/8G2E +jW9QrpsFz3tGHMlAB4o1tmzreDHdv9pQyoFe1XcfXrUSEUFNkVFU6d4rddNm50matQ/XcwhddnHtWuLeEhuLH1/OE5IwLRRUUyGJLQG1AwiMZ1+cdudFnyGhBORPS7KRXCuTWODhVjviswie1ONfGZ/C7n0NU1dbcWKRc5zSoO1IX9nSmA6c +9d67ufNyOIZLsWAQLKf/Qd/u930f91aWgH3TJH4PoXmzF/IgEDo2mWxrhPnXsVgKxqz5Ynrtn8nDwZoIx8+1LQcyjq4A2WOQFVSiP7m0CQknGoYOi684Z9Cz5A2L/+qLXNds49gmPGg9OrjdU8WwkAMWX9q6jA5OsxyqvtewJMPXzZTjUQ0y +UtMJ/8VlxIHIjCHtFG6lTRZAFZRF5Nor87ovcgJXEUV9UASAclyNxrlwRPueq2iG4PqOp0I2ykkCZ2vF5v95dmYC/IsvboNbkNQnY4h39cgjeD9E2Bw6Y208l9NteDpTsRuvglJmg3ohDrtB6cFYhwF9Rnuo4BIvtb5fmbq73pQjDlS/wUta +JTNyAxeLReXmXhlsdl4LzdGGLqgeGOwscVjWFbiZ8Yw+zwT3o9eJ7yktqH2s3DJlN2BzlsSVGUnJ4cf7rtbGevIWFpq21RO9CZM+rnNDs8n3jGoh+L4IqAUMmuJb0q16ppot8jj5ZvDviqiT/tV22Lc52EKAvhd/M9H4H2tNbBxCUwiNB6MP +uxDt6leUrQtdK63MV7h10LSOU4nvhbtfqTQ6YXPe+PHX7LyEXFBFovDdZddNw7IRFNYIsjCK+w1TuzVnbVV8TB9L07BIhTGzCAHb5XRf2YlRCSQ5CSOmSkK30mNdyR1xhzxSLqbqe9GC+cMCjXe5AMU5QnLKEZ+S82+Ef9xt7r4vVesErye2 +0ztFSUJMfc2Ea8Z/IUCnIU3DcAlLyKXSm2fvGVenjOh3q99/A7ewlLqEpQXRoF9dJp7xT0ipp+boosks3f/pwVhrzmMwHRhjEnmMG9FgPo3F5RzNGOYMiq1p6It98vyX5CzpQe/CYgT2x6MUdmRVHl/6seHh8nhMw8rF54x7wmnRs5fBZS1r +SMP3z0StX97xlr6sujBurUqX8btzgzfCxppO55V1EU/vwqM//YOJ9VPT76st4wPT0zlGXKy4ZzPb95g5rUhePUjpvpVW/+UArU//xhBRp589bJe7cjZaFztDMlWcUSHCcsfIdIrCu1lFFkgegsB01eAzF4PXipStupgxgqMgnZ5Rc2jm8Nw0 +KJifXq1sLwKJaKya3YS0jWnclDmek/HFDjyilEiBOYbkqaQtb4T56njpTy5cqcBxUlFaighPjtv/sRI//3/ycyQYdiskLvMVA6XgeVWLWqUZr68dEQO5qXjxD2dFKrYYCAAqPPybCXUsPz5VaEUfDAr+JJT+BMhPtEHiderceCqOnL/OdzTn +sla8k6NsgxxmTHEr2JSTE3j8SlEc1vEz8tflpcbxSYya4TCkI5F6ce1iNyVJ2bIA44KmH/CfceTvEeq8I+0+LG0/wKvRXjdO48L5pwCbR4n/aCVii1BHQ+x8/E3feBKzm6CaTW7iNRO4PD/9ImIfCH5I08JLoxXZsnyUhhxdlM7KMVfaalGX +QaK46VSs35ajl/z7fNgYDMlhamD5PNyfsTsX5bOcuxIV3NV+lF+vUIOdhTc59qVjgZikPjHkRtByyatvHzOPT9ZFFtZ0c28l1wt7I5Q4E/5BY+X05QkJQWYxLuIaW+sk+zryhkc6cXotsOQDw5XRO6ffkwbx4tnVmSckbcHAAn5+jmgjGUWT +OmhUPW/Ps4jqKfv69RTR1XJRnEByDIUbpScEHRnM1yuqOOJou06Uskoj/RFQTrqku1PoQsMtoYCmYyR+rq4fkd6YLmMbhIh9Y9cIe0RcsGjNfoL6RVkqWV27838Ajzrv4+59wHCCcPbvTzNWdvgOHW6MyuustTLDfeeQlzoMbgAiX23ZzAgk +17jx9lLjfRruJ+6Yuxg8yVe3859e8A3CDD9HHZO4nXFubj8ZUQ8thSViEXqCsDtOugUZiFmkmT7VOHN0itqVZmhLPKD0Xnnuf9y99tKr0xtrmlbQ/Fe7Jnxzji/Kb4AGc+8Ezjl4rCxb1K31NN3tgQkgcyFKJ5LMwNVH4/JIRAq/d1d9CPOB +N0oQqKA7j0Y2j9l4RCuxhq3zOrX6NN6DHV/mGRSE6PmJUTW6i56DKQdsh0h3sfvP0sYklokaa9Hl3pnuu3mhbXxWydrftSix7dKLwTpYoHvDtTpmdM5gZdZtyUPaQ56p/nFJFfhGpeJny1b8wj9JQZBvEDvlAWgKdzBJ7Z+hadGfOZpgeqG9 +fcYM34x+WTT4vnQvjYLEXqxKDd/xxcTgmS+1EerHL30oyusTI9va5+HS5647A3DSR+I1ebnjh+OeFes9jRFTrmpODKjOggYpVRwYK+lrINWw1QKXcrWhPPzxj7cloWf0KUQ/p1Vm9A14iQcnw9Hfb0qQKFHiwr59msBI7wQlrDRtkVX003yf +l8SBwe8hxRD8YniFYBM+LnN1651CBM/cN6EK+ldHFu2xngvwF+Nnc/i11AP50d4+3LWhwsnYnZQvxY3tU9XDLiRaQplHvl2BpgSXlUYrtZ8kpY9fA1HtXweHs/3TsxDpyJ3j5W1bmIGWvVNjqSiOR6BGBgzKGAcqDjM4m2WYOYOCcoDSi4qe +rIV6B78PHHKnXPM7goy1ykvpav+J2usNkrt7tCzWN/+36RnWQp+Fg4Xi2nR+1CM9h+rC/tPKhz/yCNJtyOz4An8jvyzznMoACFvNul+PuEMgTRQPD7msAzNEAj9IgL5tRGeadNplx0cciCoCV5mj3jyAiTeCtrX8ACJ1yOfv/Wtzrq4g7rHl +00IZZ2zycGnCv050dvgcCxrFU3bmCw4zKElsVplPLUDXstfbJ7RdyfznGn1UWvQjoGfQnpx1Vpe473ZInMAodTa0sMkiFy8JusJXq/tsvKfzd/WOir+7KIiqm+iz18NcQ3XJlZVPDFVs0m5SDDhAIzkLY6ivPLfvG0dCtDZcKlRwq5y6xQ/X +GMElQdUgJYRbvzzge1jRBZdtAwBHWxaY7CQoUx7TwFskjWNFuyFue+P9e+oWq67JqAtWSjaEWwvpanjvGWArEHPtjfzfrTLKhVYZsieV3ZLGj4wl0grFtiX5xYcX2FpvL3xTl++t1cgQ4Ji5081TsB1k6Ba7kq6sR9RSUBt7KBpnm/oUNj/4 +AFw6mmJYZ/301AuQz2xlDLnUaHfpH+yyqj4FJdOZBxWfBCU0mE2PudXzcqwbt829AG9zfTGMgSfLnAFJ8lXY6LfPOP53hXdy/LmaDfwxg0ZjPrnsYgxylZy/boqar1R4i9lcfJPS3+EVVM1gX3ZZNHwEO7XUFrjMZjllp05x3Rasf9q9yQsp +ViP0FJOL8PK2khH0wk/VAkiDweVn10nkpwAA6uY+ObkC71nB9tQaCzEAzP5aXTna1oDhIFMyU4cMSXWRQTqyickj9gvErIm1oScnUk1thWEM1W41WPymOcAp4iSGYqZYIJE18batVpBNQQHvdAACDK7sorxxckwABu6cB8YsCwyqcS7HEZ/s +CAAAAAARZWg==. \ No newline at end of file diff --git a/examples/example_framework/instructor/cs102/__pycache__/report2.cpython-38.pyc b/examples/example_framework/instructor/cs102/__pycache__/report2.cpython-38.pyc index fbef3043934a8e926ef14f67c497772dd017ce54..15a4fa2c324f73d3dd76e46ec4be8d2b9351f420 100644 Binary files a/examples/example_framework/instructor/cs102/__pycache__/report2.cpython-38.pyc and b/examples/example_framework/instructor/cs102/__pycache__/report2.cpython-38.pyc differ diff --git a/examples/example_framework/instructor/cs102/__pycache__/report2_grade.cpython-38.pyc b/examples/example_framework/instructor/cs102/__pycache__/report2_grade.cpython-38.pyc index 42fb3a4a526346eae8494f38ac29d254b5f30b83..7d816a19487fe7955cfb07833dea9dd018ccff34 100644 Binary files a/examples/example_framework/instructor/cs102/__pycache__/report2_grade.cpython-38.pyc and b/examples/example_framework/instructor/cs102/__pycache__/report2_grade.cpython-38.pyc differ diff --git a/examples/example_framework/students/cs102/Report2_handin_3_of_16.token b/examples/example_framework/students/cs102/Report2_handin_3_of_16.token index 2525f056eb68e1cf7e2ffbefdbb2a28282c1a5fb..f3f224f6ad987d8995434e349f6fc3f9bab8abff 100644 --- a/examples/example_framework/students/cs102/Report2_handin_3_of_16.token +++ b/examples/example_framework/students/cs102/Report2_handin_3_of_16.token @@ -1,5 +1,27 @@ # This file contains your results. Do not edit its content. Simply upload it as it is. -### Content of cs102/report2.py ### +### Content of cs102\homework1.py ### + +def reverse_list(mylist): + """ + Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. + reverse_list([1,2,3]) should return [3,2,1] (as a list). + """ + # TODO: 1 lines missing. + raise NotImplementedError("Implement function body") + +def add(a,b): + """ Given two numbers `a` and `b` this function should simply return their sum: + > add(a,b) = a+b """ + # TODO: 1 lines missing. + raise NotImplementedError("Implement function body") + +if __name__ == "__main__": + # Example usage: + print(f"Your result of 2 + 2 = {add(2,2)}") + print(f"Reversing a small list", reverse_list([2,3,5,7])) + + +### Content of cs102\report2.py ### from unitgrade.framework import Report from unitgrade.evaluate import evaluate_report_student @@ -68,185 +90,164 @@ class Report2(Report): if __name__ == "__main__": evaluate_report_student(Report2(), unmute=True) - - -### Content of cs102/homework1.py ### - -def reverse_list(mylist): - """ - Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. - reverse_list([1,2,3]) should return [3,2,1] (as a list). - """ - # TODO: 1 lines missing. - raise NotImplementedError("Implement function body") - -def add(a,b): - """ Given two numbers `a` and `b` this function should simply return their sum: - > add(a,b) = a+b """ - # TODO: 1 lines missing. - raise NotImplementedError("Implement function body") - -if __name__ == "__main__": - # Example usage: - print(f"Your result of 2 + 2 = {add(2,2)}") - print(f"Reversing a small list", reverse_list([2,3,5,7])) ---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -4a1695ef1eef9700c3f56f94a20514c7948f8f78b59a251471f50253d05ed006ab3b7e6b459f2a01e7e2851c26d0e6b2482e640c2423c63c4ecb9212b25653b0 28136 +946a5df4159cf8d49493ec1c104df7a38fef1e4afb46eb74f8037d59a2ec0d1338aef97a4c6e5bf6d341f3060ecda5d2f1d69133b7d94d0dd01c22606d75072b 28424 ---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file +.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. \ No newline at end of file diff --git a/examples/example_jupyter/instructor/cs105/Report1Jupyter_handin_18_of_18.token b/examples/example_jupyter/instructor/cs105/Report1Jupyter_handin_18_of_18.token new file mode 100644 index 0000000000000000000000000000000000000000..11ed8e951beb4c595cefcb21731098172af782aa --- /dev/null +++ b/examples/example_jupyter/instructor/cs105/Report1Jupyter_handin_18_of_18.token @@ -0,0 +1,206 @@ +# This file contains your results. Do not edit its content. Simply upload it as it is. +### Content of deploy.py ### + +from report5 import Report1Jupyter +from unitgrade_private.hidden_create_files import setup_grade_file_report +from snipper import snip_dir + +if __name__ == "__main__": + setup_grade_file_report(Report1Jupyter, minify=False, obfuscate=False, execute=False) + snip_dir(source_dir="", dest_dir="../../students/cs105", exclude=['*.token', 'deploy.py']) + + +### Content of homework1.py ### + +# This file is intentionally left blank. + + +### Content of report5.py ### + +from unitgrade.framework import Report, UTestCase +from unitgrade import evaluate_report_student +import homework1 +import importnb +from unitgrade.framework import NotebookTestCase +from unitgrade.utils import Capturing + +file = 'week2.ipynb' +class Week1(UTestCase): + @classmethod + def setUpClass(cls) -> None: + with Capturing(): + cls.nb = importnb.Notebook.load(file) + + def test_add(self): + self.assertEqual(Week1.nb.myfun(2,2), 4) + self.assertEqual(Week1.nb.myfun(2,4), 8) + + def test_reverse(self): + self.assertEqual(Week1.nb.var, "hello world 2") + + +# Nicer: Automatically load the notebook. +class Question2(NotebookTestCase): + notebook = "week2.ipynb" + def test_add(self): + self.assertEqualC(self.nb.myfun(2,8)) + +class Report1Jupyter(Report): + title = "CS 105 Report 5" + questions = [(Week1, 10), + (Question2, 8) + ] # Include a single question for 10 credits. + pack_imports = [homework1] + +if __name__ == "__main__": + evaluate_report_student(Report1Jupyter()) +---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- +a4c481c2d8a214bf8d8059e5f597a014cd3efd1ea706a1314a0ea158cc8083c38211f8c8d19776013b7f97890caaa536a075466e336c0dfd397a38ce324af12a 26376 +---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- +.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. \ No newline at end of file diff --git a/examples/example_jupyter/instructor/cs105/__pycache__/report5.cpython-38.pyc b/examples/example_jupyter/instructor/cs105/__pycache__/report5.cpython-38.pyc index bcfc817a0feb36d0a11aeb5aef4f102074688e67..5acb38d0b64f29c73da6b641341b9d44b4fb40ff 100644 Binary files a/examples/example_jupyter/instructor/cs105/__pycache__/report5.cpython-38.pyc and b/examples/example_jupyter/instructor/cs105/__pycache__/report5.cpython-38.pyc differ diff --git a/examples/example_jupyter/instructor/cs105/deploy.py b/examples/example_jupyter/instructor/cs105/deploy.py index 83cb942f6492d88a705baa97693d6fe9a98ad058..3383de35d3d805355de1c8594c6b1161cf5369c1 100644 --- a/examples/example_jupyter/instructor/cs105/deploy.py +++ b/examples/example_jupyter/instructor/cs105/deploy.py @@ -4,8 +4,4 @@ from snipper import snip_dir if __name__ == "__main__": setup_grade_file_report(Report1Jupyter, minify=False, obfuscate=False, execute=False) - snip_dir(source_dir="", dest_dir="../../students/cs105", exclude=['*.token', 'deploy.py']) - - - diff --git a/examples/example_jupyter/instructor/cs105/report5.py b/examples/example_jupyter/instructor/cs105/report5.py index ff627cd9b54e743fdb17c648d2f2e525ee0cf55b..26f1fb580e237666e9ad04c5cecde630770fcba5 100644 --- a/examples/example_jupyter/instructor/cs105/report5.py +++ b/examples/example_jupyter/instructor/cs105/report5.py @@ -1,14 +1,15 @@ -from src.unitgrade.framework import Report, UTestCase -from src.unitgrade import evaluate_report_student +from unitgrade.framework import Report, UTestCase +from unitgrade import evaluate_report_student import homework1 import importnb -from unitgrade.utils import Capturing2 +from unitgrade.framework import NotebookTestCase +from unitgrade.utils import Capturing file = 'week2.ipynb' class Week1(UTestCase): @classmethod def setUpClass(cls) -> None: - with Capturing2(): + with Capturing(): cls.nb = importnb.Notebook.load(file) def test_add(self): @@ -18,20 +19,9 @@ class Week1(UTestCase): def test_reverse(self): self.assertEqual(Week1.nb.var, "hello world 2") -# Nicer: Automatically load the notebook. -class NBTestCase(UTestCase): - notebook = None - _nb = None - @classmethod - def setUpClass(cls) -> None: - with Capturing2(): - cls._nb = importnb.Notebook.load(cls.notebook) - @property - def nb(self): - return self.__class__._nb - -class Question2(NBTestCase): +# Nicer: Automatically load the notebook. +class Question2(NotebookTestCase): notebook = "week2.ipynb" def test_add(self): self.assertEqualC(self.nb.myfun(2,8)) diff --git a/examples/example_jupyter/instructor/cs105/report5_grade.py b/examples/example_jupyter/instructor/cs105/report5_grade.py index 3b4747f43ad596923d55295a1ac4d996dc057e97..7fb92cf3a7ae79428c095061003f6d5e7231ad25 100644 --- a/examples/example_jupyter/instructor/cs105/report5_grade.py +++ b/examples/example_jupyter/instructor/cs105/report5_grade.py @@ -1,3 +1,3 @@ ''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' import bz2, base64 -exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file +exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/example_jupyter/instructor/cs105/unitgrade/Question2.pkl b/examples/example_jupyter/instructor/cs105/unitgrade/Question2.pkl deleted file mode 100644 index b08cef102cf660c34ffd24ee8633b7254630acac..0000000000000000000000000000000000000000 Binary files a/examples/example_jupyter/instructor/cs105/unitgrade/Question2.pkl and /dev/null differ diff --git a/examples/example_jupyter/instructor/cs105/unitgrade/Week1.pkl b/examples/example_jupyter/instructor/cs105/unitgrade/Week1.pkl deleted file mode 100644 index 9b6ff7ac689837f86e1b0e393993ec7acbb784e8..0000000000000000000000000000000000000000 --- a/examples/example_jupyter/instructor/cs105/unitgrade/Week1.pkl +++ /dev/null @@ -1 +0,0 @@ -�N. \ No newline at end of file diff --git a/examples/example_jupyter/instructor/cs105/unitgrade_data/Question2.pkl b/examples/example_jupyter/instructor/cs105/unitgrade_data/Question2.pkl index 877d483d059025ebe95a9c08d31687e5fbd69881..e3c149a92a0110a7f78b973eaa9e09a013629619 100644 Binary files a/examples/example_jupyter/instructor/cs105/unitgrade_data/Question2.pkl and b/examples/example_jupyter/instructor/cs105/unitgrade_data/Question2.pkl differ diff --git a/examples/example_jupyter/instructor/cs105/unitgrade_data/Week1.pkl b/examples/example_jupyter/instructor/cs105/unitgrade_data/Week1.pkl index cb52b781d5b36368edaef0346dc55dce72624126..8e389d8578fdbe6b8785efc230a5e8347d41b40d 100644 Binary files a/examples/example_jupyter/instructor/cs105/unitgrade_data/Week1.pkl and b/examples/example_jupyter/instructor/cs105/unitgrade_data/Week1.pkl differ diff --git a/examples/example_jupyter/students/cs105/report5.py b/examples/example_jupyter/students/cs105/report5.py index ff627cd9b54e743fdb17c648d2f2e525ee0cf55b..26f1fb580e237666e9ad04c5cecde630770fcba5 100644 --- a/examples/example_jupyter/students/cs105/report5.py +++ b/examples/example_jupyter/students/cs105/report5.py @@ -1,14 +1,15 @@ -from src.unitgrade.framework import Report, UTestCase -from src.unitgrade import evaluate_report_student +from unitgrade.framework import Report, UTestCase +from unitgrade import evaluate_report_student import homework1 import importnb -from unitgrade.utils import Capturing2 +from unitgrade.framework import NotebookTestCase +from unitgrade.utils import Capturing file = 'week2.ipynb' class Week1(UTestCase): @classmethod def setUpClass(cls) -> None: - with Capturing2(): + with Capturing(): cls.nb = importnb.Notebook.load(file) def test_add(self): @@ -18,20 +19,9 @@ class Week1(UTestCase): def test_reverse(self): self.assertEqual(Week1.nb.var, "hello world 2") -# Nicer: Automatically load the notebook. -class NBTestCase(UTestCase): - notebook = None - _nb = None - @classmethod - def setUpClass(cls) -> None: - with Capturing2(): - cls._nb = importnb.Notebook.load(cls.notebook) - @property - def nb(self): - return self.__class__._nb - -class Question2(NBTestCase): +# Nicer: Automatically load the notebook. +class Question2(NotebookTestCase): notebook = "week2.ipynb" def test_add(self): self.assertEqualC(self.nb.myfun(2,8)) diff --git a/examples/example_jupyter/students/cs105/report5_grade.py b/examples/example_jupyter/students/cs105/report5_grade.py index 3b4747f43ad596923d55295a1ac4d996dc057e97..7fb92cf3a7ae79428c095061003f6d5e7231ad25 100644 --- a/examples/example_jupyter/students/cs105/report5_grade.py +++ b/examples/example_jupyter/students/cs105/report5_grade.py @@ -1,3 +1,3 @@ ''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' import bz2, base64 -exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file +exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/example_jupyter/students/cs105/unitgrade/Question2.pkl b/examples/example_jupyter/students/cs105/unitgrade/Question2.pkl deleted file mode 100644 index b08cef102cf660c34ffd24ee8633b7254630acac..0000000000000000000000000000000000000000 Binary files a/examples/example_jupyter/students/cs105/unitgrade/Question2.pkl and /dev/null differ diff --git a/examples/example_jupyter/students/cs105/unitgrade/Week1.pkl b/examples/example_jupyter/students/cs105/unitgrade/Week1.pkl deleted file mode 100644 index 9b6ff7ac689837f86e1b0e393993ec7acbb784e8..0000000000000000000000000000000000000000 --- a/examples/example_jupyter/students/cs105/unitgrade/Week1.pkl +++ /dev/null @@ -1 +0,0 @@ -�N. \ No newline at end of file diff --git a/examples/example_jupyter/students/cs105/unitgrade_data/Question2.pkl b/examples/example_jupyter/students/cs105/unitgrade_data/Question2.pkl index 877d483d059025ebe95a9c08d31687e5fbd69881..e3c149a92a0110a7f78b973eaa9e09a013629619 100644 Binary files a/examples/example_jupyter/students/cs105/unitgrade_data/Question2.pkl and b/examples/example_jupyter/students/cs105/unitgrade_data/Question2.pkl differ diff --git a/examples/example_jupyter/students/cs105/unitgrade_data/Week1.pkl b/examples/example_jupyter/students/cs105/unitgrade_data/Week1.pkl index cb52b781d5b36368edaef0346dc55dce72624126..8e389d8578fdbe6b8785efc230a5e8347d41b40d 100644 Binary files a/examples/example_jupyter/students/cs105/unitgrade_data/Week1.pkl and b/examples/example_jupyter/students/cs105/unitgrade_data/Week1.pkl differ diff --git a/examples/example_simplest/instructor/cs101/Report1_handin_10_of_10.token b/examples/example_simplest/instructor/cs101/Report1_handin_10_of_10.token index 4d35b2cce5c9b2463f99ff54612d8e902ac889da..16d498409e4f1e67ca272ad11c3c48ce8f7afc99 100644 --- a/examples/example_simplest/instructor/cs101/Report1_handin_10_of_10.token +++ b/examples/example_simplest/instructor/cs101/Report1_handin_10_of_10.token @@ -1,30 +1,25 @@ # This file contains your results. Do not edit its content. Simply upload it as it is. -### Content of cs101/report1.py ### +### Content of cs101\deploy.py ### -import unittest #!s=all -from unitgrade import Report, evaluate_report_student -import cs101 -from cs101.homework1 import reverse_list, add #!s - -class Week1(unittest.TestCase): - def test_add(self): - self.assertEqual(add(2,2), 4) - self.assertEqual(add(-100, 5), -95) +import shutil +from cs101.report1 import Report1 #!s +from unitgrade_private.hidden_create_files import setup_grade_file_report +from snipper import snip_dir - def test_reverse(self): - self.assertEqual(reverse_list([1,2,3]), [3,2,1]) #!s +if __name__ == "__main__": + setup_grade_file_report(Report1) # Make the report1_grade.py report file -class Report1(Report): - title = "CS 101 Report 1" - questions = [(Week1, 10)] # Include a single question for a total of 10 credits. - pack_imports = [cs101] # Include all .py files in this folder + # Deploy the files using snipper: https://gitlab.compute.dtu.dk/tuhe/snipper + snip_dir("./", "../../students/cs101", exclude=['__pycache__', '*.token', 'deploy.py']) #!s -if __name__ == "__main__": - evaluate_report_student(Report1()) #!s=all - # unittest.main(verbosity=2) # Uncomment to run everything as a regular unittest + # For my own sake, copy the homework file to the other examples. + for f in ['../../../example_framework/instructor/cs102/homework1.py', + '../../../example_docker/instructor/cs103/homework1.py', + '../../../example_flat/instructor/cs101flat/homework1.py']: + shutil.copy('homework1.py', f) -### Content of cs101/homework1.py ### +### Content of cs101\homework1.py ### def reverse_list(mylist): #!f #!s;keeptags """ @@ -44,168 +39,174 @@ if __name__ == "__main__": print(f"Reversing a small list", reverse_list([2,3,5,7])) #!s -### Content of cs101/deploy.py ### +### Content of cs101\report1.py ### -import shutil -from cs101.report1 import Report1 #!s -from unitgrade_private.hidden_create_files import setup_grade_file_report -from snipper import snip_dir +import unittest #!s=all +from unitgrade import Report, evaluate_report_student +import cs101 +from cs101.homework1 import reverse_list, add #!s -if __name__ == "__main__": - setup_grade_file_report(Report1) # Make the report1_grade.py report file +class Week1(unittest.TestCase): + def test_add(self): + self.assertEqual(add(2,2), 4) + self.assertEqual(add(-100, 5), -95) - # Deploy the files using snipper: https://gitlab.compute.dtu.dk/tuhe/snipper - snip_dir("./", "../../students/cs101", exclude=['__pycache__', '*.token', 'deploy.py']) #!s + def test_reverse(self): + self.assertEqual(reverse_list([1,2,3]), [3,2,1]) #!s - # For my own sake, copy the homework file to the other examples. - for f in ['../../../example_framework/instructor/cs102/homework1.py', - '../../../example_docker/instructor/cs103/homework1.py', - '../../../example_flat/instructor/cs101flat/homework1.py']: - shutil.copy('homework1.py', f) +class Report1(Report): + title = "CS 101 Report 1" + questions = [(Week1, 10)] # Include a single question for a total of 10 credits. + pack_imports = [cs101] # Include all .py files in this folder + +if __name__ == "__main__": + evaluate_report_student(Report1()) #!s=all + # unittest.main(verbosity=2) # Uncomment to run everything as a regular unittest ---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -0cc504e7f4f19409fd68fcc3c4a708ceeae90cdee5940eb77e31860fd4aa91829de3608a07313975687766a035ea26aaced13d2f2318679588a56ac25ad82279 25848 +a4ab66e95d069254f5a373fd669a5754e67f2c67cc2fb5d567ea1e327b3b322eac96b176cdd3ab46ffc58d536bb193c4f79eafc5bd98dea35ddf6c9649414bb9 26096 ---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file +.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. \ No newline at end of file diff --git a/examples/example_simplest/instructor/cs101/__pycache__/report1_grade.cpython-38.pyc b/examples/example_simplest/instructor/cs101/__pycache__/report1_grade.cpython-38.pyc index e0c5416457892bb61ffcf7ab64cc79d08895befd..b1faff1a30e1230bbdd886ffbe2e1e529da3c7ed 100644 Binary files a/examples/example_simplest/instructor/cs101/__pycache__/report1_grade.cpython-38.pyc and b/examples/example_simplest/instructor/cs101/__pycache__/report1_grade.cpython-38.pyc differ diff --git a/examples/example_simplest/students/cs101/Report1_handin_0_of_10.token b/examples/example_simplest/students/cs101/Report1_handin_0_of_10.token index ca16ac4aa865f72adb0f380c2ab7795f57d25190..07bb48e8591f6be65007302b6c5b203ecb7f15b4 100644 --- a/examples/example_simplest/students/cs101/Report1_handin_0_of_10.token +++ b/examples/example_simplest/students/cs101/Report1_handin_0_of_10.token @@ -1,5 +1,27 @@ # This file contains your results. Do not edit its content. Simply upload it as it is. -### Content of cs101/report1.py ### +### Content of cs101\homework1.py ### + +def reverse_list(mylist): + """ + Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. + reverse_list([1,2,3]) should return [3,2,1] (as a list). + """ + # TODO: 1 lines missing. + raise NotImplementedError("Implement function body") + +def add(a,b): + """ Given two numbers `a` and `b` this function should simply return their sum: + > add(a,b) = a+b """ + # TODO: 1 lines missing. + raise NotImplementedError("Implement function body") + +if __name__ == "__main__": + # Example usage: + print(f"Your result of 2 + 2 = {add(2,2)}") + print(f"Reversing a small list", reverse_list([2,3,5,7])) + + +### Content of cs101\report1.py ### import unittest from unitgrade import Report, evaluate_report_student @@ -22,170 +44,149 @@ class Report1(Report): if __name__ == "__main__": evaluate_report_student(Report1()) # unittest.main(verbosity=2) # Uncomment to run everything as a regular unittest - - -### Content of cs101/homework1.py ### - -def reverse_list(mylist): - """ - Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. - reverse_list([1,2,3]) should return [3,2,1] (as a list). - """ - # TODO: 1 lines missing. - raise NotImplementedError("Implement function body") - -def add(a,b): - """ Given two numbers `a` and `b` this function should simply return their sum: - > add(a,b) = a+b """ - # TODO: 1 lines missing. - raise NotImplementedError("Implement function body") - -if __name__ == "__main__": - # Example usage: - print(f"Your result of 2 + 2 = {add(2,2)}") - print(f"Reversing a small list", reverse_list([2,3,5,7])) ---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -eb9da76a1e7a395c1f3516d4b038c32e3d0d2cfce1ed36315a690955abeb5ccb3e7faa69b0e528465e71805049b8e7c6268b49ce2099794375b6a4f6fac2dcf6 25472 +83d63cccaf57bcf93a92ecaf339ca42b77e2ff00cf0ce798bb293f511473af5afd4f045436f43ba92ae06c6eaefee02a3445dbfd941e74175ef3f9c8181bceb0 25628 ---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file +.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. \ No newline at end of file diff --git a/src/unitgrade_devel.egg-info/PKG-INFO b/src/unitgrade_devel.egg-info/PKG-INFO index 6b7990843058fb8289ecb16a4a2ca9dd83ad00e0..e21743f3214788d7c121c5f5764e76679b18c05a 100644 --- a/src/unitgrade_devel.egg-info/PKG-INFO +++ b/src/unitgrade_devel.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: unitgrade-devel -Version: 0.1.23 +Version: 0.1.24 Summary: A set of tools to develop unitgrade tests and reports and later evaluate them Home-page: https://lab.compute.dtu.dk/tuhe/unitgrade_private Author: Tue Herlau diff --git a/src/unitgrade_devel.egg-info/SOURCES.txt b/src/unitgrade_devel.egg-info/SOURCES.txt index 87b60db380cbe3d32f58191c4794b9976af2ef65..014650545863f8d900fcb0232973ab06b7450224 100644 --- a/src/unitgrade_devel.egg-info/SOURCES.txt +++ b/src/unitgrade_devel.egg-info/SOURCES.txt @@ -1,4 +1,5 @@ LICENSE +MANIFEST.in README.md pyproject.toml setup.py @@ -16,6 +17,14 @@ src/unitgrade_private/token_loader.py src/unitgrade_private/version.py src/unitgrade_private/autolab/__init__.py src/unitgrade_private/autolab/autolab.py +src/unitgrade_private/autolab/lab_template/Makefile +src/unitgrade_private/autolab/lab_template/autograde-Makefile +src/unitgrade_private/autolab/lab_template/hello.rb +src/unitgrade_private/autolab/lab_template/hello.yml +src/unitgrade_private/autolab/lab_template/src/Makefile +src/unitgrade_private/autolab/lab_template/src/README +src/unitgrade_private/autolab/lab_template/src/driver.sh +src/unitgrade_private/autolab/lab_template/src/driver_python.py src/unitgrade_private/plagiarism/__init__.py src/unitgrade_private/plagiarism/mossit.py src/unitgrade_private/plagiarism/utils.py \ No newline at end of file diff --git a/src/unitgrade_private/autolab/autolab.py b/src/unitgrade_private/autolab/autolab.py index 1a6057adc9bf181827354d953a36abc3d9e6fd3c..438a30851437dfc3eec7e07d5e913cac39b026eb 100644 --- a/src/unitgrade_private/autolab/autolab.py +++ b/src/unitgrade_private/autolab/autolab.py @@ -33,9 +33,9 @@ def jj(source, dest, data): return output -def docker_build_image(): - os.system(f"cd {CURDIR + '/../../../docker_images'}/docker_tango_python && docker build --tag tango_python_tue .") - pass +# def docker_build_image(tag='tango_python_tue'): +# os.system(f"cd {CURDIR + '/../../../docker_images'}/docker_tango_python && docker build --tag {tag} .") +# pass def jj_handout(source, dest, data): out = jj(source, dest, data) @@ -78,7 +78,7 @@ def run_relative(file, base): def deploy_assignment(base_name, INSTRUCTOR_BASE, INSTRUCTOR_GRADE_FILE, STUDENT_BASE, STUDENT_GRADE_FILE, output_tar=None, COURSES_BASE=None, - autograde_image='tango_python_tue'): + autograde_image_tag='tango_python_tue'): assert os.path.isfile(INSTRUCTOR_GRADE_FILE) assert os.path.isfile(STUDENT_GRADE_FILE) @@ -149,7 +149,7 @@ def deploy_assignment(base_name, INSTRUCTOR_BASE, INSTRUCTOR_GRADE_FILE, STUDENT # 'nice_name': base_name + "please", 'display_name': paths2report(INSTRUCTOR_BASE, INSTRUCTOR_REPORT_FILE).title, 'handin_filename': handin_filename, - 'autograde_image': autograde_image, + 'autograde_image': autograde_image_tag, 'src_files_to_handout': ['driver_python.py', 'student_sources.zip', handin_filename, os.path.basename(docker_helpers.__file__), os.path.basename(INSTRUCTOR_GRADE_FILE)], # Remove tname later; it is the upload. 'instructor_grade_file': os.path.basename(INSTRUCTOR_GRADE_FILE), diff --git a/src/unitgrade_private/docker_helpers.py b/src/unitgrade_private/docker_helpers.py index b6fdf76538c9cc454a6dbf3add2d9deac58e8310..d25500f840df4acd5522542811fb6086a8b9dc7b 100644 --- a/src/unitgrade_private/docker_helpers.py +++ b/src/unitgrade_private/docker_helpers.py @@ -1,14 +1,40 @@ -# from cs202courseware.ug2report1 import Report1 - -import pickle import os import glob import shutil import time import zipfile import io -import inspect import subprocess +import urllib.request + + +def download_docker_images(destination=None): + if destination is None: + destination = os.getcwd() + if not os.path.exists(destination): + os.makedirs(destination) + + print('Beginning file download with urllib2...') + url = 'https://gitlab.compute.dtu.dk/tuhe/unitgrade_private/-/archive/master/unitgrade_private-master.zip?path=docker_images' + result, headers = urllib.request.urlretrieve(url) + + ex = result +"_extract" + zf = zipfile.ZipFile(result) + zf.extractall(path=ex) + dockers = [f for f in zf.namelist() if f[-1] == "/" and len( [s for s in f if s == "/"] ) == 3] + for f in dockers: # zf.namelist(): + tmp_dir = ex + "/" + f + if os.path.isdir(tmp_dir): + dest = destination +"/"+os.path.basename(tmp_dir[:-1]) + + if os.path.isdir(dest): + print("> Destination for docker image", dest, "exists. Skipping download.") + else: + print("> Extracting docker image", os.path.basename(f[:-1]), "to", dest) + shutil.copytree(tmp_dir, dest) + # zf.extract(f, path=destination) + a = 234 + def compile_docker_image(Dockerfile, tag=None): assert os.path.isfile(Dockerfile) diff --git a/src/unitgrade_private/hidden_create_files.py b/src/unitgrade_private/hidden_create_files.py index b4eede4013aba03ca086195f935869f78c7fdba7..eb5f894db31cb8b5465e2bbf3a69977ae16ced2e 100644 --- a/src/unitgrade_private/hidden_create_files.py +++ b/src/unitgrade_private/hidden_create_files.py @@ -77,8 +77,9 @@ def setup_grade_file_report(ReportClass, execute=False, obfuscate=False, minify= pyhead = lload([evaluate.__file__, hidden_gather_upload.__file__], excl) from unitgrade import version from unitgrade import utils + from unitgrade import runners print(unitgrade.__file__) - report1_source = lload([unitgrade.__file__, unitgrade.framework.__file__, utils.__file__, + report1_source = lload([unitgrade.__file__, utils.__file__, runners.__file__, unitgrade.framework.__file__, unitgrade.evaluate.__file__, hidden_gather_upload.__file__, version.__file__], excl) + "\n" + report1_source diff --git a/src/unitgrade_private/version.py b/src/unitgrade_private/version.py index af28ff89934abf4c9142f94c1e75db78a0e19199..6f94b18369e78a964052c2a4f448412b3e8d0df3 100644 --- a/src/unitgrade_private/version.py +++ b/src/unitgrade_private/version.py @@ -1 +1 @@ -version = "0.1.23" +version = "0.1.24"