Skip to content

Commit 3a44ef4

Browse files
committed
Un-reverse DeduplicateIds order
1 parent 480fd6a commit 3a44ef4

File tree

3 files changed

+27
-26
lines changed

3 files changed

+27
-26
lines changed

nbgrader/converters/base.py

+21-14
Original file line numberDiff line numberDiff line change
@@ -387,25 +387,32 @@ def _handle_failure(gd: typing.Dict[str, str]) -> None:
387387

388388
# convert all the notebooks
389389
for notebook_filename in self.notebooks:
390-
self.convert_single_notebook(notebook_filename)
390+
try:
391+
self.convert_single_notebook(notebook_filename)
392+
393+
# Exceptions that shouldn't interrupt the entire conversion process should go here
394+
# Those that should go in outer try/except
395+
except UnresponsiveKernelError:
396+
self.log.error(
397+
"While processing assignment %s, the kernel became "
398+
"unresponsive and we could not interrupt it. This probably "
399+
"means that the students' code has an infinite loop that "
400+
"consumes a lot of memory or something similar. nbgrader "
401+
"doesn't know how to deal with this problem, so you will "
402+
"have to manually edit the students' code (for example, to "
403+
"just throw an error rather than enter an infinite loop). ",
404+
assignment)
405+
errors.append((gd['assignment_id'], gd['student_id']))
406+
_handle_failure(gd)
407+
408+
except Exception as e:
409+
raise e
391410

392411
# set assignment permissions
393412
self.set_permissions(gd['assignment_id'], gd['student_id'])
394413
self.run_post_convert_hook()
395414

396-
except UnresponsiveKernelError:
397-
self.log.error(
398-
"While processing assignment %s, the kernel became "
399-
"unresponsive and we could not interrupt it. This probably "
400-
"means that the students' code has an infinite loop that "
401-
"consumes a lot of memory or something similar. nbgrader "
402-
"doesn't know how to deal with this problem, so you will "
403-
"have to manually edit the students' code (for example, to "
404-
"just throw an error rather than enter an infinite loop). ",
405-
assignment)
406-
errors.append((gd['assignment_id'], gd['student_id']))
407-
_handle_failure(gd)
408-
415+
# Exceptions that should interrupt the entire conversion go here
409416
except sqlalchemy.exc.OperationalError:
410417
_handle_failure(gd)
411418
self.log.error(traceback.format_exc())

nbgrader/preprocessors/deduplicateids.py

-6
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,9 @@ def preprocess(self, nb: NotebookNode, resources: ResourcesDict) -> Tuple[Notebo
1212
# keep track of grade ids encountered so far
1313
self.grade_ids = set([])
1414

15-
# reverse cell order
16-
nb.cells = nb.cells[::-1]
17-
1815
# process each cell in reverse order
1916
nb, resources = super(DeduplicateIds, self).preprocess(nb, resources)
2017

21-
# unreverse cell order
22-
nb.cells = nb.cells[::-1]
23-
2418
return nb, resources
2519

2620
def preprocess_cell(self,

nbgrader/tests/preprocessors/test_deduplicateids.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ def test_duplicate_grade_cell(self, preprocessor):
2525

2626
nb, resources = preprocessor.preprocess(nb, {})
2727

28-
assert nb.cells[0].metadata.nbgrader == {}
29-
assert nb.cells[1].metadata.nbgrader != {}
28+
assert nb.cells[0].metadata.nbgrader != {}
29+
assert nb.cells[1].metadata.nbgrader == {}
3030

3131
def test_duplicate_solution_cell(self, preprocessor):
3232
cell1 = create_solution_cell("hello", "code", "foo")
@@ -37,8 +37,8 @@ def test_duplicate_solution_cell(self, preprocessor):
3737

3838
nb, resources = preprocessor.preprocess(nb, {})
3939

40-
assert nb.cells[0].metadata.nbgrader == {}
41-
assert nb.cells[1].metadata.nbgrader != {}
40+
assert nb.cells[0].metadata.nbgrader != {}
41+
assert nb.cells[1].metadata.nbgrader == {}
4242

4343
def test_duplicate_locked_cell(self, preprocessor):
4444
cell1 = create_locked_cell("hello", "code", "foo")
@@ -49,5 +49,5 @@ def test_duplicate_locked_cell(self, preprocessor):
4949

5050
nb, resources = preprocessor.preprocess(nb, {})
5151

52-
assert nb.cells[0].metadata.nbgrader == {}
53-
assert nb.cells[1].metadata.nbgrader != {}
52+
assert nb.cells[0].metadata.nbgrader != {}
53+
assert nb.cells[1].metadata.nbgrader == {}

0 commit comments

Comments
 (0)