From be819bae675bc20267f31d804f2eacb82a7cbef7 2014-11-01 23:41:05 From: MinRK Date: 2014-11-01 23:41:05 Subject: [PATCH] only rich display outputs have metadata even affects v3, which had some bugs that didn't describe actual js behavior --- diff --git a/IPython/nbconvert/exporters/tests/files/notebook2.ipynb b/IPython/nbconvert/exporters/tests/files/notebook2.ipynb index c72c149..aedf783 100644 --- a/IPython/nbconvert/exporters/tests/files/notebook2.ipynb +++ b/IPython/nbconvert/exporters/tests/files/notebook2.ipynb @@ -23,7 +23,6 @@ }, "outputs": [ { - "metadata": {}, "name": "stdout", "output_type": "stream", "text": [ diff --git a/IPython/nbconvert/preprocessors/tests/files/Clear Output.ipynb b/IPython/nbconvert/preprocessors/tests/files/Clear Output.ipynb index ef48e28..dfada39 100644 --- a/IPython/nbconvert/preprocessors/tests/files/Clear Output.ipynb +++ b/IPython/nbconvert/preprocessors/tests/files/Clear Output.ipynb @@ -19,7 +19,6 @@ }, "outputs": [ { - "metadata": {}, "name": "stdout", "output_type": "stream", "text": [ diff --git a/IPython/nbconvert/preprocessors/tests/files/Factorials.ipynb b/IPython/nbconvert/preprocessors/tests/files/Factorials.ipynb index c8b0a96..939c49f 100644 --- a/IPython/nbconvert/preprocessors/tests/files/Factorials.ipynb +++ b/IPython/nbconvert/preprocessors/tests/files/Factorials.ipynb @@ -19,7 +19,6 @@ }, "outputs": [ { - "metadata": {}, "name": "stdout", "output_type": "stream", "text": [ diff --git a/IPython/nbconvert/preprocessors/tests/files/HelloWorld.ipynb b/IPython/nbconvert/preprocessors/tests/files/HelloWorld.ipynb index e2ab990..9b8f550 100644 --- a/IPython/nbconvert/preprocessors/tests/files/HelloWorld.ipynb +++ b/IPython/nbconvert/preprocessors/tests/files/HelloWorld.ipynb @@ -8,7 +8,6 @@ }, "outputs": [ { - "metadata": {}, "name": "stdout", "output_type": "stream", "text": [ diff --git a/IPython/nbconvert/preprocessors/tests/files/Skip Exceptions.ipynb b/IPython/nbconvert/preprocessors/tests/files/Skip Exceptions.ipynb index a036fa9..452a454 100644 --- a/IPython/nbconvert/preprocessors/tests/files/Skip Exceptions.ipynb +++ b/IPython/nbconvert/preprocessors/tests/files/Skip Exceptions.ipynb @@ -10,7 +10,6 @@ { "ename": "Exception", "evalue": "message", - "metadata": {}, "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", @@ -32,7 +31,6 @@ }, "outputs": [ { - "metadata": {}, "name": "stdout", "output_type": "stream", "text": [ diff --git a/IPython/nbconvert/preprocessors/tests/files/Unicode.ipynb b/IPython/nbconvert/preprocessors/tests/files/Unicode.ipynb index faab074..cdbcb10 100644 --- a/IPython/nbconvert/preprocessors/tests/files/Unicode.ipynb +++ b/IPython/nbconvert/preprocessors/tests/files/Unicode.ipynb @@ -8,7 +8,6 @@ }, "outputs": [ { - "metadata": {}, "name": "stdout", "output_type": "stream", "text": [ diff --git a/IPython/nbconvert/tests/files/notebook2.ipynb b/IPython/nbconvert/tests/files/notebook2.ipynb index 8c89f2b..866f45c 100644 --- a/IPython/nbconvert/tests/files/notebook2.ipynb +++ b/IPython/nbconvert/tests/files/notebook2.ipynb @@ -23,7 +23,6 @@ }, "outputs": [ { - "metadata": {}, "name": "stdout", "output_type": "stream", "text": [ diff --git a/IPython/nbformat/tests/invalid.ipynb b/IPython/nbformat/tests/invalid.ipynb index 07b87c8..e7c3032 100644 --- a/IPython/nbformat/tests/invalid.ipynb +++ b/IPython/nbformat/tests/invalid.ipynb @@ -36,7 +36,6 @@ "print(\"hello\")" ], "language": "python", - "metadata": {}, "outputs": [ { "output_type": "stream", diff --git a/IPython/nbformat/tests/test4.ipynb b/IPython/nbformat/tests/test4.ipynb index a840e4e..0562011 100644 --- a/IPython/nbformat/tests/test4.ipynb +++ b/IPython/nbformat/tests/test4.ipynb @@ -31,7 +31,6 @@ }, "outputs": [ { - "metadata": {}, "name": "stdout", "output_type": "stream", "text": [ diff --git a/IPython/nbformat/v3/nbbase.py b/IPython/nbformat/v3/nbbase.py index 8b08b34..3a48ab8 100644 --- a/IPython/nbformat/v3/nbbase.py +++ b/IPython/nbformat/v3/nbbase.py @@ -54,6 +54,10 @@ def new_output(output_type, output_text=None, output_png=None, if not isinstance(metadata, dict): raise TypeError("metadata must be dict") + + if output_type in {u'pyout', 'display_data'}: + output.metadata = metadata + if output_type != 'pyerr': if output_text is not None: output.text = cast_unicode(output_text) @@ -86,8 +90,6 @@ def new_output(output_type, output_text=None, output_png=None, if output_type == u'stream': output.stream = 'stdout' if stream is None else cast_unicode(stream) - else: - output.metadata = metadata return output diff --git a/IPython/nbformat/v3/nbformat.v3.schema.json b/IPython/nbformat/v3/nbformat.v3.schema.json index f3277be..f51a9b2 100644 --- a/IPython/nbformat/v3/nbformat.v3.schema.json +++ b/IPython/nbformat/v3/nbformat.v3.schema.json @@ -295,7 +295,6 @@ "description": "Type of cell output.", "enum": ["pyerr"] }, - "metadata": {"$ref": "#/definitions/misc/output_metadata"}, "ename": { "description": "The name of the error.", "type": "string" diff --git a/IPython/nbformat/v4/convert.py b/IPython/nbformat/v4/convert.py index 6224a17..d8a0c34 100644 --- a/IPython/nbformat/v4/convert.py +++ b/IPython/nbformat/v4/convert.py @@ -141,8 +141,8 @@ def upgrade_output(output): - mime-type keys - stream.stream -> stream.name """ - output.setdefault('metadata', NotebookNode()) if output['output_type'] in {'pyout', 'display_data'}: + output.setdefault('metadata', NotebookNode()) if output['output_type'] == 'pyout': output['output_type'] = 'execute_result' output['execution_count'] = output.pop('prompt_number', None) @@ -193,7 +193,6 @@ def downgrade_output(output): output['output_type'] = 'pyerr' elif output['output_type'] == 'stream': output['stream'] = output.pop('name') - output.pop('metadata') return output def upgrade_outputs(outputs): diff --git a/IPython/nbformat/v4/nbbase.py b/IPython/nbformat/v4/nbbase.py index 640048c..adb223c 100644 --- a/IPython/nbformat/v4/nbbase.py +++ b/IPython/nbformat/v4/nbbase.py @@ -46,11 +46,11 @@ def new_output(output_type, data=None, **kwargs): output.data = from_dict(data) # populate defaults: - output.setdefault('metadata', NotebookNode()) if output_type == 'stream': output.setdefault('name', 'stdout') output.setdefault('text', '') elif output_type in {'execute_result', 'display_data'}: + output.setdefault('metadata', NotebookNode()) output.setdefault('data', NotebookNode()) validate(output, output_type) return output diff --git a/IPython/nbformat/v4/nbformat.v4.schema.json b/IPython/nbformat/v4/nbformat.v4.schema.json index 6d15a67..9a3f190 100644 --- a/IPython/nbformat/v4/nbformat.v4.schema.json +++ b/IPython/nbformat/v4/nbformat.v4.schema.json @@ -235,13 +235,12 @@ "description": "Stream output from a code cell.", "type": "object", "additionalProperties": false, - "required": ["output_type", "metadata", "name", "text"], + "required": ["output_type", "name", "text"], "properties": { "output_type": { "description": "Type of cell output.", "enum": ["stream"] }, - "metadata": {"$ref": "#/definitions/misc/output_metadata"}, "name": { "description": "The name of the stream (stdout, stderr).", "type": "string" @@ -257,13 +256,12 @@ "description": "Output of an error that occurred during code cell execution.", "type": "object", "additionalProperties": false, - "required": ["output_type", "metadata", "ename", "evalue", "traceback"], + "required": ["output_type", "ename", "evalue", "traceback"], "properties": { "output_type": { "description": "Type of cell output.", "enum": ["error"] }, - "metadata": {"$ref": "#/definitions/misc/output_metadata"}, "ename": { "description": "The name of the error.", "type": "string"