From 1da9421ad599426e8eb2a16df2e2d113b97f03b9 2014-11-25 18:10:37 From: Thomas Kluyver Date: 2014-11-25 18:10:37 Subject: [PATCH] Merge pull request #7027 from takluyver/svg2pdf-test-fix Fix svg2pdf nbconvert preprocessor --- diff --git a/IPython/nbconvert/preprocessors/convertfigures.py b/IPython/nbconvert/preprocessors/convertfigures.py index d0dd3dc..3fafe73 100644 --- a/IPython/nbconvert/preprocessors/convertfigures.py +++ b/IPython/nbconvert/preprocessors/convertfigures.py @@ -47,18 +47,12 @@ class ConvertFiguresPreprocessor(Preprocessor): """ # Loop through all of the datatypes of the outputs in the cell. - for index, cell_out in enumerate(cell.get('outputs', [])): - for data_type, data in list(cell_out.items()): - # this must run *before* extract outputs, - # so figure_name and filename do not exist - self._convert_figure(cell_out, resources, data_type, data) - return cell, resources + for output in cell.get('outputs', []): + if output.output_type in {'execute_result', 'display_data'} \ + and self.from_format in output.data \ + and self.to_format not in output.data: + output.data[self.to_format] = self.convert_figure( + self.from_format, output.data[self.from_format]) - def _convert_figure(self, cell_out, resources, data_type, data): - """ - Convert a figure and output the results to the cell output - """ - if not self.to_format in cell_out and data_type == self.from_format: - data = self.convert_figure(data_type, data) - cell_out[self.to_format] = data + return cell, resources diff --git a/IPython/nbconvert/preprocessors/svg2pdf.py b/IPython/nbconvert/preprocessors/svg2pdf.py index 09c7585..aa1786c 100644 --- a/IPython/nbconvert/preprocessors/svg2pdf.py +++ b/IPython/nbconvert/preprocessors/svg2pdf.py @@ -61,7 +61,7 @@ class SVG2PDFPreprocessor(ConvertFiguresPreprocessor): with TemporaryDirectory() as tmpdir: #Write fig to temp file - input_filename = os.path.join(tmpdir, 'figure.' + data_format) + input_filename = os.path.join(tmpdir, 'figure.svg') # SVG data is unicode text with io.open(input_filename, 'w', encoding='utf8') as f: f.write(data) diff --git a/IPython/nbconvert/preprocessors/tests/test_svg2pdf.py b/IPython/nbconvert/preprocessors/tests/test_svg2pdf.py index e69e926..6b672f6 100644 --- a/IPython/nbconvert/preprocessors/tests/test_svg2pdf.py +++ b/IPython/nbconvert/preprocessors/tests/test_svg2pdf.py @@ -42,10 +42,9 @@ class Testsvg2pdf(PreprocessorTestsBase): """Build a reveal slides notebook in memory for use with tests. Overrides base in PreprocessorTestsBase""" - outputs = [nbformat.new_output(output_type="image/svg+xml", output_svg=self.simple_svg)] - - slide_metadata = {'slideshow' : {'slide_type': 'slide'}} - subslide_metadata = {'slideshow' : {'slide_type': 'subslide'}} + outputs = [nbformat.new_output(output_type='display_data', + data={'image/svg+xml':self.simple_svg}) + ] cells=[nbformat.new_code_cell(source="", execution_count=1, outputs=outputs)] @@ -71,4 +70,4 @@ class Testsvg2pdf(PreprocessorTestsBase): res = self.build_resources() preprocessor = self.build_preprocessor() nb, res = preprocessor(nb, res) - self.assertIn('application/pdf', nb.cells[0].outputs[0]) + self.assertIn('application/pdf', nb.cells[0].outputs[0].data)