JSON Metadata Format¶
nbgrader relies on metadata stored in the JSON notebook source. When you create
a notebook using the “Create Assignment” extension, this extension saves
various keys into the metadata that it then relies on during the steps of
nbgrader generate_assignment
. The nbgrader generate_assignment
command also adds new metadata to
the notebooks, which is used by nbgrader validate
and nbgrader
autograde
.
The metadata is always stored at the cell level, in the cell’s metadata
field, under a dictionary called nbgrader
. This makes the notebook source look like:
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"nbgrader": {
...
}
},
"source": ["an example cell\n"]
},
... more cells ...
],
... other notebook information ...
}
Details about the metadata are given below.
Version 2¶
Version 2 is the same as Version 1 (see below), except that it also includes the following optional key:
- cell_type¶
Added by
nbgrader generate_assignment
.This is the original cell type for the cell, which is used by
nbgrader validate
to determine whether the cell type has been changed by the student.
Version 1¶
The metadata may contain the following keys:
- schema_version¶
The version of the metadata schema. Defaults to 1.
- grade¶
Added by the “Create Assignment” extension.
Whether the cell should be graded (which essentially means whether it gets a point value). This should be true for manually graded answer cells and for autograder test cells.
- solution¶
Added by the “Create Assignment” extension.
Whether the cell is a solution cell (which essentially means whether students should put their answers in it or not). This should be true for manually graded answer cells and autograded answer cells.
- locked¶
Added by the “Create Assignment” extension.
Whether nbgrader should prevent the cell from being edited. This should be true for autograder test cells and any other cells that are marked as locked/read-only in the create assignment interface.
- grade_id¶
Added by the “Create Assignment” extension.
This is the nbgrader cell id so that nbgrader can track its contents, outputs, etc.
- points¶
Added by the “Create Assignment” extension.
This is the number of points that a cell is worth. It should only be set if
grade
is also set to true. The number of points must be greater than or equal to zero.
- checksum¶
Added by
nbgrader generate_assignment
.This is the checksum of the cell’s contents that can then be used by
nbgrader validate
andnbgrader autograde
to determine whether the student has edited the cell.