From 11d330da9657f6a96f7fffaabfd83345d2d5bec3 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Fri, 11 Mar 2016 18:39:01 -0600 Subject: [PATCH] Add report_failure options to check_XXX() feedback methods --- course/page/code.py | 4 ++-- course/page/code_feedback.py | 20 ++++++++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/course/page/code.py b/course/page/code.py index 7eead7f0..020203e0 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 da19e9c8..b400b7c7 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) -- GitLab