Commit 95b1bd953635b9d90a34e4e82f4a2cda7fe3ad8d

Authored by Miguel Barão
1 parent 524327c3
Exists in master and in 1 other branch dev

- more raise from patterns

- remove __init__() from Test class as its useless
perguntations/app.py
... ... @@ -182,12 +182,11 @@ class App():
182 182 logger.info('Test factory ready. No errors found.')
183 183  
184 184 # ------------------------------------------------------------------------
185   - def _pregenerate_tests(self, n):
186   - for _ in range(n):
  185 + def _pregenerate_tests(self, num):
  186 + for _ in range(num):
187 187 event_loop = asyncio.get_event_loop()
188 188 test = event_loop.run_until_complete(self.testfactory.generate())
189 189 self.pregenerated_tests.append(test)
190   - print(test)
191 190  
192 191 # ------------------------------------------------------------------------
193 192 async def generate_test(self, uid):
... ...
perguntations/questions.py
... ... @@ -110,10 +110,10 @@ class QuestionRadio(Question):
110 110 # make sure is a list of floats
111 111 try:
112 112 self['correct'] = [float(x) for x in self['correct']]
113   - except (ValueError, TypeError):
  113 + except (ValueError, TypeError) as exc:
114 114 msg = (f'Correct list must contain numbers [0.0, 1.0] or '
115 115 f'booleans in "{self["ref"]}"')
116   - raise QuestionException(msg)
  116 + raise QuestionException(msg) from exc
117 117  
118 118 # check grade boundaries
119 119 if self['discount'] and not all(0.0 <= x <= 1.0
... ... @@ -217,10 +217,10 @@ class QuestionCheckbox(Question):
217 217 # make sure is a list of floats
218 218 try:
219 219 self['correct'] = [float(x) for x in self['correct']]
220   - except (ValueError, TypeError):
  220 + except (ValueError, TypeError) as exc:
221 221 msg = (f'Correct list must contain numbers or '
222 222 f'booleans in "{self["ref"]}"')
223   - raise QuestionException(msg)
  223 + raise QuestionException(msg) from exc
224 224  
225 225 # check grade boundaries
226 226 if self['discount'] and not all(0.0 <= x <= 1.0
... ... @@ -379,9 +379,9 @@ class QuestionTextRegex(Question):
379 379 # converts patterns to compiled versions
380 380 try:
381 381 self['correct'] = [re.compile(a) for a in self['correct']]
382   - except Exception:
  382 + except Exception as exc:
383 383 msg = f'Failed to compile regex in "{self["ref"]}"'
384   - raise QuestionException(msg)
  384 + raise QuestionException(msg) from exc
385 385  
386 386 # ------------------------------------------------------------------------
387 387 def correct(self) -> None:
... ... @@ -430,10 +430,10 @@ class QuestionNumericInterval(Question):
430 430  
431 431 try:
432 432 self['correct'] = [float(n) for n in self['correct']]
433   - except Exception:
  433 + except Exception as exc:
434 434 msg = (f'Numeric interval must be a list with two numbers, in '
435 435 f'{self["ref"]}')
436   - raise QuestionException(msg)
  436 + raise QuestionException(msg) from exc
437 437  
438 438 # invalid
439 439 else:
... ...
perguntations/test.py
... ... @@ -111,9 +111,9 @@ class TestFactory(dict):
111 111 # check if all the questions can be correctly generated
112 112 try:
113 113 self.question_factory[question['ref']].generate()
114   - except Exception:
  114 + except Exception as exc:
115 115 msg = f'Failed to generate "{question["ref"]}"'
116   - raise TestFactoryException(msg)
  116 + raise TestFactoryException(msg) from exc
117 117 else:
118 118 logger.info('%4d. "%s" Ok.', counter, question["ref"])
119 119 counter += 1
... ... @@ -299,8 +299,8 @@ class Test(dict):
299 299 '''
300 300  
301 301 # ------------------------------------------------------------------------
302   - def __init__(self, d):
303   - super().__init__(d)
  302 + # def __init__(self, d):
  303 + # super().__init__(d)
304 304  
305 305 # ------------------------------------------------------------------------
306 306 def start(self, student):
... ...