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

refactored

parent 08c26daf
No related branches found
No related tags found
No related merge requests found
Showing
with 602 additions and 10 deletions
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.6" project-jdk-type="Python SDK" />
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/unitgrade.iml" filepath="$PROJECT_DIR$/.idea/unitgrade.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="TestRunnerService">
<option name="projectConfiguration" value="py.test" />
<option name="PROJECT_TEST_RUNNER" value="py.test" />
</component>
</module>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="5c346737-53d8-4e87-88c5-7be2c8e7baeb" name="Default" comment="">
<change afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/cs101courseware/homework1.py" beforeDir="false" afterPath="$PROJECT_DIR$/cs101courseware/homework1.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/unitgrade/hidden/unitgrade_setup_hidden.py" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/unitgrade/unitgrade.py" beforeDir="false" afterPath="$PROJECT_DIR$/unitgrade/unitgrade.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/unitgrade/unitgrade_helpers.py" beforeDir="false" afterPath="$PROJECT_DIR$/unitgrade/unitgrade_helpers.py" afterDir="false" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="CoverageDataManager">
<SUITE FILE_PATH="coverage/unitgrade$homework1.coverage" NAME="homework1 Coverage Results" MODIFIED="1592393640811" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/cs101courseware" />
<SUITE FILE_PATH="coverage/unitgrade$cs101report1.coverage" NAME="cs101report1 Coverage Results" MODIFIED="1592398399276" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/cs101courseware" />
<SUITE FILE_PATH="coverage/unitgrade$cs101report1_grade.coverage" NAME="cs101report1_grade Coverage Results" MODIFIED="1592396459330" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/cs101courseware" />
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="homework1.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/cs101courseware/homework1.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="245">
<caret line="34" column="43" lean-forward="true" selection-start-line="34" selection-start-column="43" selection-end-line="34" selection-end-column="43" />
<folding>
<element signature="e#0#18#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="cs101report1.py" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/cs101courseware/cs101report1.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="609">
<caret line="29" selection-start-line="29" selection-end-line="31" selection-end-column="30" />
<folding>
<element signature="e#0#65#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="cs101report1_grade.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/cs101courseware/cs101report1_grade.py">
<provider selected="true" editor-type-id="text-editor">
<state>
<caret column="17" selection-start-column="17" selection-end-column="17" />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/unitgrade/unitgrade.py" />
<option value="$PROJECT_DIR$/cs101courseware/cs101report1_grade.py" />
<option value="$PROJECT_DIR$/unitgrade/hidden_gather_upload.py" />
<option value="$PROJECT_DIR$/unitgrade/hidden_create_files.py" />
<option value="$PROJECT_DIR$/cs101courseware/homework1.py" />
<option value="$PROJECT_DIR$/cs101courseware/cs101report1.py" />
</list>
</option>
</component>
<component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
<component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
<component name="JsGulpfileManager">
<detection-done>true</detection-done>
<sorting>DEFINITION_ORDER</sorting>
</component>
<component name="NodePackageJsonFileManager">
<packageJsonPaths />
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="-9" />
<option name="y" value="-9" />
<option name="width" value="2066" />
<option name="height" value="1122" />
</component>
<component name="ProjectView">
<navigator proportions="" version="1">
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="ProjectPane">
<subPane>
<expand>
<path>
<item name="unitgrade" type="b2602c69:ProjectViewProjectNode" />
<item name="unitgrade" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="unitgrade" type="b2602c69:ProjectViewProjectNode" />
<item name="unitgrade" type="462c0819:PsiDirectoryNode" />
<item name="cs101courseware" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
</pane>
<pane id="Scope" />
</panes>
</component>
<component name="PropertiesComponent">
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
<property name="settings.editor.selected.configurable" value="configurable.group.appearance" />
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
<component name="RunManager" selected="Python.cs101report1">
<configuration name="cs101report1" type="PythonConfigurationType" factoryName="Python" temporary="true">
<module name="unitgrade" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/cs101courseware" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/cs101courseware/cs101report1.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
</configuration>
<configuration name="cs101report1_grade" type="PythonConfigurationType" factoryName="Python" temporary="true">
<module name="unitgrade" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/cs101courseware" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/cs101courseware/cs101report1_grade.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
</configuration>
<configuration name="homework1" type="PythonConfigurationType" factoryName="Python" temporary="true">
<module name="unitgrade" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/cs101courseware" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/cs101courseware/homework1.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
</configuration>
<list>
<item itemvalue="Python.homework1" />
<item itemvalue="Python.cs101report1" />
<item itemvalue="Python.cs101report1_grade" />
</list>
<recent_temporary>
<list>
<item itemvalue="Python.cs101report1" />
<item itemvalue="Python.cs101report1_grade" />
<item itemvalue="Python.homework1" />
</list>
</recent_temporary>
</component>
<component name="SvnConfiguration">
<configuration />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="5c346737-53d8-4e87-88c5-7be2c8e7baeb" name="Default" comment="" />
<created>1592391595193</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1592391595193</updated>
</task>
<servers />
</component>
<component name="ToolWindowManager">
<frame x="-9" y="-9" width="2066" height="1122" extended-state="6" />
<editor active="true" />
<layout>
<window_info anchor="bottom" id="TODO" order="6" weight="0.26910993" />
<window_info anchor="bottom" id="Event Log" order="12" side_tool="true" weight="0.32984293" />
<window_info anchor="bottom" id="Database Changes" order="9" show_stripe_button="false" />
<window_info active="true" anchor="bottom" id="Run" order="13" visible="true" weight="0.42127216" />
<window_info anchor="bottom" id="Version Control" order="8" />
<window_info anchor="bottom" id="Python Console" order="10" weight="0.25882354" />
<window_info anchor="bottom" id="Terminal" order="11" weight="0.32901832" />
<window_info content_ui="combo" id="Project" order="0" sideWeight="0.6408046" visible="true" weight="0.16281407" />
<window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
<window_info anchor="right" id="Database" order="5" />
<window_info anchor="right" x="-1760" y="375" width="1574" height="752" id="SciView" order="4" weight="0.3328125" />
<window_info id="Structure" order="1" sideWeight="0.3591954" side_tool="true" weight="0.17883995" />
<window_info anchor="bottom" x="158" y="295" width="1831" height="786" id="Debug" order="3" type="WINDOWED" visible="true" weight="0.45199567" />
<window_info id="Favorites" order="2" sideWeight="0.50053936" side_tool="true" weight="0.119763695" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="3" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="1" type="SLIDING" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="2" weight="0.25" />
<window_info anchor="bottom" id="Message" order="1" />
<window_info anchor="bottom" id="Concurrent Activities Diagram" order="0" weight="0.29341963" />
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
<window_info anchor="bottom" id="Find" order="2" weight="0.32901832" />
<window_info anchor="right" id="Coverage" order="0" side_tool="true" />
</layout>
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" />
</component>
<component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<option name="time" value="5" />
</breakpoint-manager>
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/unitgrade/unitgrade.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="188">
<caret line="145" column="25" lean-forward="true" selection-start-line="145" selection-start-column="25" selection-end-line="145" selection-end-column="25" />
<folding>
<element signature="e#0#24#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/unitgrade/unitgrade_helpers.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="164">
<caret line="12" column="4" selection-start-line="12" selection-start-column="4" selection-end-line="12" selection-end-column="4" />
<folding>
<element signature="e#0#18#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/unitgrade/hidden_gather_upload.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="299">
<caret line="37" column="18" lean-forward="true" selection-start-line="37" selection-start-column="18" selection-end-line="37" selection-end-column="18" />
<folding>
<element signature="e#0#55#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/unitgrade/hidden_create_files.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1730">
<caret line="16" column="18" lean-forward="true" selection-start-line="16" selection-start-column="18" selection-end-line="16" selection-end-column="18" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/cs101courseware/homework1.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="245">
<caret line="34" column="43" lean-forward="true" selection-start-line="34" selection-start-column="43" selection-end-line="34" selection-end-column="43" />
<folding>
<element signature="e#0#18#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/cs101courseware/cs101report1_grade.py">
<provider selected="true" editor-type-id="text-editor">
<state>
<caret column="17" selection-start-column="17" selection-end-column="17" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/cs101courseware/cs101report1.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="609">
<caret line="29" selection-start-line="29" selection-end-line="31" selection-end-column="30" />
<folding>
<element signature="e#0#65#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</component>
</project>
\ No newline at end of file
File added
File added
File added
File added
from unitgrade.unitgrade import QuestionGroup, Report, QPrintItem
from unitgrade.unitgrade_helpers import evaluate_report_student
from unitgrade.hidden_create_files import setup_answers, setup_grade_file_report
class ListReversalQuestion(QuestionGroup):
title = "Reversal of list"
class ListReversalItem(QPrintItem):
l = [1, 3, 5, 1, 610]
def compute_answer_print(self):
from cs101courseware.homework1 import reverse_list
return reverse_list(self.l)
class ListReversalWordsItem(ListReversalItem):
l = ["hello", "world", "summer", "dog"]
class LinearRegressionQuestion(QuestionGroup):
title = "Linear regression and Boston dataset"
class CoefficientsItem(QPrintItem):
testfun = QPrintItem.assertL2
tol = 0.03
def compute_answer_print(self):
from cs101courseware.homework1 import boston_linear
boston_linear()
def process_output(self, res, txt, numbers):
return numbers[:-1]
class RMSEItem(CoefficientsItem):
def process_output(self, res, txt, numbers):
return numbers[-1]
from cs101courseware import homework1
class Report0(Report):
title = "CS 101 Report 1"
questions = [(ListReversalQuestion, 5), (LinearRegressionQuestion, 13)]
pack_imports = [homework1]
if __name__ == "__main__":
setup_answers(Report0()) # hidden for students
setup_grade_file_report(Report0,minify=True, bzip=True, obfuscate=True)
evaluate_report_student(Report0())
'''WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt.
Note we perform manual and static analysis of the uploaded results.
'''
import bz2, base64
exec(bz2.decompress(base64.b64decode('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')))
\ No newline at end of file
import numpy as np
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
"""
Question 1. Write a function reverse_list which accepts a list, and returns a new list
with the same elements but in opposite order.
"""
####################
# Question 1. Write a function reverse_list which accepts a list, and returns a new list
# with the same elements but in opposite order.
####################
def reverse_list(mylist):
# TODO: Your solution here
# (What follows is my solution; obviously it would not be part of the code handed out to the students)
res = []
result = []
for k in mylist:
res = [k] + l
return res
result = [k] + result
return result
if __name__ == "__main__":
print("We will now test the reverse list function")
def simple_list_question():
print("The reverse list function can reverse a list")
l = [1, 2, 3, 4]
print("List was:", l, "reversed version", reverse_list(l))
####################
# Question 2: Write a function which performs linear regression on the Boston housing dataset using scipy
####################
def boston_linear():
X,y = load_boston(return_X_y=True) # Load the dataset here
y += np.random.randn(y.size ) * 0.01
# TODO: Fit a linear regression model and print the coefficients
lin_model = LinearRegression()
lin_model.fit(X, y)
print("Coefficients are", lin_model.coef_)
# TODO: Compute the RMSE here (on the training set) and print it
y_predict = lin_model.predict(X)
rmse = (np.sqrt(mean_squared_error(y, y_predict)))
print("RMSE is", rmse)
if __name__ == "__main__":
simple_list_question()
boston_linear()
File added
File added
File added
File added
File added
from ..autograde_helpers import evaluate_report
from ..example.report0 import Report0
from .. import cache_read, cache_write
# from unitgrade.unitgrade_helpers import evaluate_report
from unitgrade import cache_read, cache_write
import jinja2
import pickle
from tabulate import tabulate
......@@ -16,11 +15,10 @@ data = """
report1_source = {{source}}
report1_payload = {{payload}}
name="{{Report1}}"
from unitgrade.unitgrade_helpers import source_instantiate
report = source_instantiate(name, report1_source, report1_payload)
# campusnet_token_out = {{token_out}}
report = source_instantiate(name, report1_source, report1_payload)
gather_upload_to_campusnet(report)
output_dir = os.path.dirname(__file__)
gather_upload_to_campusnet(report, output_dir)
"""
def setup_answers(report):
......@@ -36,9 +34,6 @@ def setup_answers(report):
cache_write(payloads, report.computed_answers_file, verbose=False)
def bzwrite(json_str, token): # to get around obfuscation issues
with getattr(bz2, 'open')(token, "wt") as f:
f.write(json_str)
def strip_main(report1_source):
dx = report1_source.find("__main__")
......@@ -46,10 +41,18 @@ def strip_main(report1_source):
report1_source = report1_source[:report1_source.rfind("\n")]
return report1_source
def pack_report_for_sudents(Report1, obfuscate=False, minify=False, bzip=True, nonlatin=False):
# def pack_report_for_students(Report1, obfuscate=False, minify=False, bzip=True, nonlatin=False):
def setup_grade_file_report(ReportClass, execute=True, obfuscate=False, minify=False, bzip=True, nonlatin=False):
# from irlc.autograde.autograde import setup_answers
import time
print("Seeting up answers...")
setup_answers(ReportClass())
time.sleep(0.1)
print("Packing student files...")
# pack report into a binary blob thingy the students can run on their own.
report = Report1()
fn = inspect.getfile(Report1)
report = ReportClass()
fn = inspect.getfile(ReportClass)
with open(fn, 'r') as f:
report1_source = f.read()
report1_source = strip_main(report1_source)
......@@ -57,14 +60,19 @@ def pack_report_for_sudents(Report1, obfuscate=False, minify=False, bzip=True, n
payload = cache_read(report.computed_answers_file)
picklestring = pickle.dumps(payload)
with open("autograde_helpers.py", 'r') as f:
shelp = f.read()
from unitgrade import hidden_gather_upload
# from unitgrade import unitgrade_helpers
pyhead = ""
for fname in [hidden_gather_upload.__file__]: #, unitgrade_helpers.__file__]:
with open(fname, 'r') as f:
pyhead += f.read() + "\n" + "\n"
s = jinja2.Environment().from_string(data).render({'Report1': Report1.__name__,
s = jinja2.Environment().from_string(data).render({'Report1': ReportClass.__name__,
'source': repr(report1_source),
'payload': repr(picklestring),
'token_out': repr(fn[:-3] + "_handin"),
'head': shelp} )
'head': pyhead})
output = fn[:-3] + "_grade.py"
with open(output, 'w') as f:
......@@ -78,9 +86,7 @@ def pack_report_for_sudents(Report1, obfuscate=False, minify=False, bzip=True, n
]
if bzip: extra.append("--bzip2")
os.system(f'pyminifier {obs} {" ".join(extra)} --replacement-length=20 -o {output} {output}')
import time
time.sleep(0.2)
with open(output, 'r') as f:
sauce = f.read().splitlines()
......@@ -92,15 +98,7 @@ def pack_report_for_sudents(Report1, obfuscate=False, minify=False, bzip=True, n
with open(output, 'w') as f:
f.write(sauce)
def setup_grade_file_report(ReportClass, execute=True):
# from irlc.autograde.autograde import setup_answers
import time
print("Seeting up answers...")
setup_answers(ReportClass())
time.sleep(0.1)
print("Packing student files...")
pack_report_for_sudents(ReportClass, minify=True, bzip=True, obfuscate=True)
# pack_report_for_students(ReportClass, minify=True, bzip=True, obfuscate=True)
if execute:
time.sleep(0.1)
print("Testing packed files...")
......@@ -109,44 +107,9 @@ def setup_grade_file_report(ReportClass, execute=True):
exec("import " + s)
def gather_upload_to_campusnet(report, payload_out_base=None):
n = 80
results, table_data = evaluate_report(report)
print(" ")
print("="*n)
print("Final evaluation")
print(tabulate(table_data))
# also load the source code of missing files...
results['sources'] = {}
print("Gathering files...")
for m in report.pack_imports:
with open(m.__file__, 'r') as f:
results['sources'][m.__name__] = f.read()
print(f"*** {m.__name__}")
results['sources'] = {}
json_str = json.dumps(results, indent=4)
now = datetime.now()
dname = os.path.dirname(inspect.getfile(report.__class__))
payload_out_base = report.__class__.__name__ + "_handin"
token = payload_out_base + ".token"
token = os.path.join(dname, token)
bzwrite(json_str, token)
print(" ")
# print("=======================================================================")
print("To get credit for your results, please upload the file: ")
# rout =
print(">", token)
print("To campusnet without any modifications.")
if __name__ == "__main__":
from unitgrade.example.report0 import Report0
setup_grade_file_report(Report0, execute=False)
from irlc.reports.report1example import Report1Example
setup_grade_file_report(Report1Example, execute=False)
from unitgrade.unitgrade_helpers import evaluate_report
from tabulate import tabulate
from datetime import datetime
import inspect
import json
import os
import bz2
def bzwrite(json_str, token): # to get around obfuscation issues
with getattr(bz2, 'open')(token, "wt") as f:
f.write(json_str)
def gather_upload_to_campusnet(report, output_dir=None):
n = 80
results, table_data = evaluate_report(report)
print(" ")
print("="*n)
print("Final evaluation")
print(tabulate(table_data))
# also load the source code of missing files...
results['sources'] = {}
print("Gathering files...")
for m in report.pack_imports:
with open(m.__file__, 'r') as f:
results['sources'][m.__name__] = f.read()
print(f"*** {m.__name__}")
results['sources'] = {}
json_str = json.dumps(results, indent=4)
now = datetime.now()
# dname = os.path.dirname(inspect.getfile(report.__class__))
# dname = os.getcwd()
if output_dir is None:
output_dir = os.getcwd()
# raise Exception( dname )
#
# print(dname)
payload_out_base = report.__class__.__name__ + "_handin"
obtain, possible = results['total']
token = "%s_%i_of_%i.token"%(payload_out_base, obtain, possible) # + str(obtained) +"_" + ".token"
token = os.path.join(output_dir, token)
bzwrite(json_str, token)
print(" ")
print("To get credit for your results, please upload the file: ")
print(">", token)
print("To campusnet without any modifications.")
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment