Source code

nbchkr.utils.add_checks(nb_node: dict, source_nb_node: dict, answer_tag_regex=None) → dict[source]

Given a nb_node and a source source_nb_node, add the cells in nb_node with tags matching answer_tag_regex to source_nb_node

This is used to add a student’s answers to the source notebook.

nbchkr.utils.check(nb_node: dict, timeout: int = 600, score_regex_pattern=None, answer_tag_pattern=None) → Tuple[Optional[int], Optional[int], str][source]

Given a nb_node, it executes the notebook and keep track of the score.

This returns 3 things:

  • The student score
  • The total score obtainable
  • Some feedback in markdown format
nbchkr.utils.check_tags_match(source_nb_node: dict, nb_node: dict, tag_seperator: str = '|', tag_regex=None) → bool[source]

This checks if the count of tags that match tag_regex on each cell matches. Note that it does not necessarily guarantee that the tags are on the same cells.

nbchkr.utils.get_description(cell: dict, description_regex_pattern=None, tag_seperator: str = '|') → str[source]

Given a cell of a notebook, return the description as defined by the description_regex_pattern.

nbchkr.utils.get_score(cell: dict, score_regex_pattern=None) → int[source]

Given a cell of a notebook, return the score as defined by the score_regex_pattern.

nbchkr.utils.get_tags(cell: dict, tag_seperator: str = '|', tag_regex=None) → str[source]

Given a cell of a notebook, return a string with all tags that match tag_regex separated by |.

nbchkr.utils.read(nb_path: Union[pathlib.Path, str], as_version: int = 4) → dict[source]

Read a jupyter notebook file at nb_path.

Returns the python dict representation.

nbchkr.utils.remove_cells(nb_node, tags_regex_patterns_to_ignore=None, solution_regex=None, solution_repl=None)[source]

Given a dictionary representation of a notebook, removes:

  • Cells with tags matching patterns in tags_regex_patterns_to_ignore
  • Text in cells matching the solution_regex pattern.

Returns the python dict representation.

nbchkr.utils.write(output_path: pathlib.Path, nb_node: dict)[source]

Write the python dict representation of a notebook to output_path.