##// END OF EJS Templates
normalize unicode notebook filenames...
normalize unicode notebook filenames used in comparison check for notebook name change. Unless the filenames are normalized, unchanged names may result in false positives for a name change (e.g. OS X uses NFD on the filesystem, so u'\xfc' roundtripped to the filesystem will be u'u\u0308'), which can result in the first save of a notebook after open performing the following actions: 1. save the recently opened notebook 2. `old_name != new_name`, so name change detected 3. delete old_name (which is actually new_name), which ultimately deletes the just-saved notebook In master, this has a symptom of the first checkpoint failing because the first save actually deleted the file, and you can't checkpoint a notebook that doesn't exist. closes #3360

File last commit:

r8525:61ef7793
r10777:9585bda6
Show More
v3.withref.json
171 lines | 4.7 KiB | application/json | JsonLexer
{
"description": "custom json structure with references to generate notebook schema",
"notebook":{
"type": "object",
"description": "notebook v3.0 root schema",
"$schema": "http://json-schema.org/draft-03/schema",
"id": "#notebook",
"required": true,
"additionalProperties": false,
"properties":{
"metadata": {
"type": "object",
"id": "metadata",
"required": true,
"description": "the metadata atribute can contain any additionnal information",
"additionalProperties": true,
"properties":{
"name": {
"id": "name",
"description": "the title of the notebook",
"type": "string",
"id": "name",
"required": true
}
}
},
"nbformat_minor": {
"description": "Notebook format, minor number. Incremented for slight variation of notebook format.",
"type": "integer",
"minimum": 0,
"id": "nbformat_minor",
"required": true
},
"nbformat": {
"description": "Notebook format, major number. Incremented between backward incompatible change is introduced.",
"type": "integer",
"minimum": 3,
"id": "nbformat",
"required": true
},
"worksheets": {
"description": "Array of worksheet, not used by the current implementation of ipython yet",
"type": "array",
"id": "worksheets",
"required": true,
"items": {"$ref": "/worksheet"}
}
}
},
"worksheet": {
"additionalProperties": false,
"properties":{
"cells": {
"type": "array",
"$schema": "http://json-schema.org/draft-03/schema",
"description": "array of cells of the current worksheet",
"id": "#cells",
"required": true,
"items": {"$ref": "/any_cell"}
},
"metadata": {
"type": "object",
"description": "metadata of the current worksheet",
"id": "metadata",
"required": true
}
}
},
"text_cell": {
"type": "object",
"description": "scheme for text cel and childrenm (level only optionnal argument for HEader cell)",
"$schema": "http://json-schema.org/draft-03/schema",
"id": "#cell",
"required": true,
"additionalProperties": false,
"properties":{
"cell_type": {
"type": "string",
"id": "cell_type",
"required": true
},
"level": {
"type": "integer",
"minimum": 1,
"maximum": 6,
"id": "level",
"required": false
},
"metadata": {
"type": "object",
"id": "metadata",
"required": true
},
"source": {
"description": "for code cell, the source code",
"type": "array",
"id": "source",
"required": true,
"items":
{
"type": "string",
"description": "each item represent one line of the source code written, terminated by \n",
"id": "0",
"required": true
}
}
}
},
"any_cell": {
"description": "Meta cell type that match any cell type",
"type": [{"$ref": "/text_cell"},{"$ref":"/code_cell"}],
"$schema": "http://json-schema.org/draft-03/schema"
},
"code_cell":{
"type": "object",
"$schema": "http://json-schema.org/draft-03/schema",
"description": "Cell used to execute code",
"id": "#cell",
"required": true,
"additionalProperties": false,
"properties":{
"cell_type": {
"type": "string",
"id": "cell_type",
"required": true
},
"metadata": {
"type": "object",
"id": "metadata",
"required": true
},
"collapsed": {
"type": "boolean",
"required": true
},
"input": {
"description": "user input for text cells",
"type": "array",
"id": "input",
"required": true,
"items":
{
"type": "string",
"id": "input",
"required": true
}
},
"outputs": {
"description": "output for code cell, to be definied",
"required": true,
"type": "array"
},
"prompt_number": {
"type": ["integer","null"],
"required": true,
"minimum": 0
},
"language": {
"type": "string",
"required": true
}
}
}
}