convertfigures.py
64 lines
| 2.3 KiB
| text/x-python
|
PythonLexer
Paul Ivanov
|
r12219 | """Module containing a preprocessor that converts outputs in the notebook from | ||
Jonathan Frederic
|
r11367 | one format to another. | ||
""" | ||||
#----------------------------------------------------------------------------- | ||||
# Copyright (c) 2013, the IPython Development Team. | ||||
# | ||||
# Distributed under the terms of the Modified BSD License. | ||||
# | ||||
# The full license is in the file COPYING.txt, distributed with this software. | ||||
#----------------------------------------------------------------------------- | ||||
#----------------------------------------------------------------------------- | ||||
# Imports | ||||
#----------------------------------------------------------------------------- | ||||
Paul Ivanov
|
r12219 | from .base import Preprocessor | ||
Jonathan Frederic
|
r11391 | from IPython.utils.traitlets import Unicode | ||
Jonathan Frederic
|
r11367 | |||
#----------------------------------------------------------------------------- | ||||
# Classes | ||||
#----------------------------------------------------------------------------- | ||||
Paul Ivanov
|
r12219 | class ConvertFiguresPreprocessor(Preprocessor): | ||
Jonathan Frederic
|
r11367 | """ | ||
Converts all of the outputs in a notebook from one format to another. | ||||
""" | ||||
Jonathan Frederic
|
r11391 | from_format = Unicode(config=True, help='Format the converter accepts') | ||
to_format = Unicode(config=True, help='Format the converter writes') | ||||
Jonathan Frederic
|
r11367 | |||
Jonathan Frederic
|
r11391 | def __init__(self, **kw): | ||
Jonathan Frederic
|
r11367 | """ | ||
Public constructor | ||||
""" | ||||
Paul Ivanov
|
r12219 | super(ConvertFiguresPreprocessor, self).__init__(**kw) | ||
Jonathan Frederic
|
r11367 | |||
def convert_figure(self, data_format, data): | ||||
raise NotImplementedError() | ||||
Paul Ivanov
|
r12219 | def preprocess_cell(self, cell, resources, cell_index): | ||
Jonathan Frederic
|
r11367 | """ | ||
Apply a transformation on each cell, | ||||
See base.py | ||||
""" | ||||
Jonathan Frederic
|
r11638 | # Loop through all of the datatypes of the outputs in the cell. | ||
Jonathan Frederic
|
r11367 | for index, cell_out in enumerate(cell.get('outputs', [])): | ||
Thomas Kluyver
|
r13397 | for data_type, data in list(cell_out.items()): | ||
Jonathan Frederic
|
r11638 | # this must run *before* extract outputs, | ||
MinRK
|
r11572 | # so figure_name and filename do not exist | ||
self._convert_figure(cell_out, resources, data_type, data) | ||||
Jonathan Frederic
|
r11367 | return cell, resources | ||
MinRK
|
r11572 | def _convert_figure(self, cell_out, resources, data_type, data): | ||
Jonathan Frederic
|
r11367 | """ | ||
Convert a figure and output the results to the cell output | ||||
""" | ||||
MinRK
|
r11572 | 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 | ||||