diff --git a/course/page/code.py b/course/page/code.py index 7eead7f0ea768d6102a3e7f752971c93e26485c3..020203e099221afec97e8d44c82265d84d611f67 100644 --- a/course/page/code.py +++ b/course/page/code.py @@ -419,13 +419,13 @@ class PythonCodeQuestion(PageBaseWithTitle, PageBaseWithValue): feedback.check_numpy_array_allclose(name, ref, data, accuracy_critical=True, rtol=1e-5, atol=1e-8, - report_success=True) + report_success=True, report_failure=True) # returns True if accurate feedback.check_list(name, ref, data, entry_type=None) feedback.check_scalar(name, ref, data, accuracy_critical=True, - rtol=1e-5, atol=1e-8, report_success=True) + rtol=1e-5, atol=1e-8, report_success=True, report_failure=True) # returns True if accurate * ``data_files``: A dictionary mapping file names from :attr:`data_files` diff --git a/course/page/code_feedback.py b/course/page/code_feedback.py index da19e9c8d60e5b2cb959d8bc27373eafa089956c..b400b7c72f377909ad4d0e408e284e78e4ea0dd1 100644 --- a/course/page/code_feedback.py +++ b/course/page/code_feedback.py @@ -88,16 +88,18 @@ class Feedback: name, data.dtype.kind, ref.dtype.kind)) def check_numpy_array_allclose(self, name, ref, data, accuracy_critical=True, - rtol=1e-05, atol=1e-08, report_success=True): + rtol=1e-05, atol=1e-08, report_success=True, report_failure=True): import numpy as np self.check_numpy_array_features(name, ref, data) good = np.allclose(ref, data, rtol=rtol, atol=atol) if not good: - self.add_feedback("'%s' is inaccurate" % name) - elif report_success: - self.add_feedback("'%s' looks good" % name) + if report_failure: + self.add_feedback("'%s' is inaccurate" % name) + else: + if report_success: + self.add_feedback("'%s' looks good" % name) if accuracy_critical and not good: self.set_points(0) @@ -120,7 +122,7 @@ class Feedback: self.finish(0, "'%s[%d]' has the wrong type" % (name, i)) def check_scalar(self, name, ref, data, accuracy_critical=True, - rtol=1e-5, atol=1e-8, report_success=True): + rtol=1e-5, atol=1e-8, report_success=True, report_failure=True): import numpy as np if not isinstance(data, (float, int, np.number)): @@ -134,9 +136,11 @@ class Feedback: good = True if not good: - self.add_feedback("'%s' is inaccurate" % name) - elif report_success: - self.add_feedback("'%s' looks good" % name) + if report_failure: + self.add_feedback("'%s' is inaccurate" % name) + else: + if report_success: + self.add_feedback("'%s' looks good" % name) if accuracy_critical and not good: self.set_points(0)