##// END OF EJS Templates
rename nbconvert doc to nbconvert.rst
rename nbconvert doc to nbconvert.rst

File last commit:

r11755:d9ef1c7f
r11835:214da4ca
Show More
export.py
211 lines | 5.8 KiB | text/x-python | PythonLexer
Jonathan Frederic
Cleanup and refactor of API, almost complete....
r10677 """
Jonathan Frederic
Finished rename/refact on API namespace
r10690 Module containing single call export functions.
Jonathan Frederic
Post code-review, extended refactor.
r10485 """
#-----------------------------------------------------------------------------
# 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.
#-----------------------------------------------------------------------------
Jonathan Frederic
Finished rename/refact on API namespace
r10690 #-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
Jonathan Frederic
Docstring decorator
r10771 from functools import wraps
Jonathan Frederic
Finished rename/refact on API namespace
r10690
Jonathan Frederic
Fixed all broken references, refactored some stuff here and there,...
r10624 from IPython.nbformat.v3.nbbase import NotebookNode
Jonathan Frederic
Added writers and supporting code.
r11367 from IPython.config import Config
Jonathan Frederic
Fixed all broken references, refactored some stuff here and there,...
r10624
Jonathan Frederic
Moved export.py back into exporters directory
r10788 from .exporter import Exporter
Jonathan Frederic
Part way through adding 'flavor' support
r11733 from .html import HTMLExporter
Jonathan Frederic
HTML-Slides -> Slides-Reveal
r11744 from .slides import SlidesExporter
Jonathan Frederic
Moved export.py back into exporters directory
r10788 from .latex import LatexExporter
from .markdown import MarkdownExporter
from .python import PythonExporter
MinRK
RST class capitalization
r11449 from .rst import RSTExporter
Jonathan Frederic
Import fix for renamed /api/ to /exporters/
r10768
Jonathan Frederic
Post code-review, extended refactor.
r10485 #-----------------------------------------------------------------------------
Jonathan Frederic
Docstring decorator
r10771 # Classes
Jonathan Frederic
Post code-review, extended refactor.
r10485 #-----------------------------------------------------------------------------
Jonathan Frederic
Finished a rough draft of the exporters.
r10588
MinRK
populate exporter list in NbConvertApp.classes
r11451 def DocDecorator(f):
Jonathan Frederic
Finished rename/refact on API namespace
r10690
Jonathan Frederic
Docstring decorator
r10771 #Set docstring of function
f.__doc__ = f.__doc__ + """
nb : Notebook node
Jonathan Frederic
Added writers and supporting code.
r11367 config : config (optional, keyword arg)
Jonathan Frederic
Finished rename/refact on API namespace
r10690 User configuration instance.
Jonathan Frederic
Added writers and supporting code.
r11367 resources : dict (optional, keyword arg)
Resources used in the conversion process.
Jonathan Frederic
Finished rename/refact on API namespace
r10690
Returns
----------
tuple- output, resources, exporter_instance
output : str
Jinja 2 output. This is the resulting converted notebook.
resources : dictionary
Dictionary of resources used prior to and during the conversion
process.
exporter_instance : Exporter
Instance of the Exporter class used to export the document. Useful
to caller because it provides a 'file_extension' property which
Jonathan Frederic
Added warnings
r11755 specifies what extension the output should be saved as.
WARNING: API WILL CHANGE IN FUTURE RELEASES OF NBCONVERT
"""
Jonathan Frederic
Docstring decorator
r10771
@wraps(f)
def decorator(*args, **kwargs):
return f(*args, **kwargs)
return decorator
#-----------------------------------------------------------------------------
# Functions
#-----------------------------------------------------------------------------
Brian E. Granger
Fixing import logic.
r11088 __all__ = [
'export',
Jonathan Frederic
Part way through adding 'flavor' support
r11733 'export_html',
Jonathan Frederic
Added ability to export to a 'custom' format,...
r11743 'export_custom',
Jonathan Frederic
HTML-Slides -> Slides-Reveal
r11744 'export_slides',
Brian E. Granger
Fixing import logic.
r11088 'export_latex',
'export_markdown',
'export_python',
'export_rst',
Paul Ivanov
added listing of known exporters on error
r11250 'export_by_name',
Jonathan Frederic
Added ExporterNameError to exported names
r11395 'get_export_names',
'ExporterNameError'
Brian E. Granger
Fixing import logic.
r11088 ]
Jonathan Frederic
Added ExporterNameError to exported names
r11395
Jonathan Frederic
Catch export specific name error only
r11372 class ExporterNameError(NameError):
pass
Jonathan Frederic
Added ExporterNameError to exported names
r11395
Jonathan Frederic
Docstring decorator
r10771 @DocDecorator
Jonathan Frederic
Added ability support for already instanciate exporter
r11426 def export(exporter, nb, **kw):
Jonathan Frederic
Docstring decorator
r10771 """
Export a notebook object using specific exporter class.
Jonathan Frederic
Added ability support for already instanciate exporter
r11426 exporter : Exporter class type or instance
Class type or instance of the exporter that should be used. If the
method initializes it's own instance of the class, it is ASSUMED that
the class type provided exposes a constructor (__init__) with the same
signature as the base Exporter class.
Jonathan Frederic
Finished rename/refact on API namespace
r10690 """
Jonathan Frederic
Fixed all broken references, refactored some stuff here and there,...
r10624
#Check arguments
Jonathan Frederic
Added ability support for already instanciate exporter
r11426 if exporter is None:
Jonathan Frederic
Fixed all broken references, refactored some stuff here and there,...
r10624 raise TypeError("Exporter is None")
Jonathan Frederic
Added ability support for already instanciate exporter
r11426 elif not isinstance(exporter, Exporter) and not issubclass(exporter, Exporter):
raise TypeError("exporter does not inherit from Exporter (base)")
Jonathan Frederic
Fixed all broken references, refactored some stuff here and there,...
r10624 if nb is None:
raise TypeError("nb is None")
#Create the exporter
Jonathan Frederic
Changes after in person review with @ellisonbg including TODO tags
r11379 resources = kw.pop('resources', None)
Jonathan Frederic
Added ability support for already instanciate exporter
r11426 if isinstance(exporter, Exporter):
exporter_instance = exporter
else:
exporter_instance = exporter(**kw)
Jonathan Frederic
Fixed all broken references, refactored some stuff here and there,...
r10624
#Try to convert the notebook using the appropriate conversion function.
if isinstance(nb, NotebookNode):
Jonathan Frederic
Added writers and supporting code.
r11367 output, resources = exporter_instance.from_notebook_node(nb, resources)
Jonathan Frederic
Got RST exporting to work... Sort of.
r10626 elif isinstance(nb, basestring):
Jonathan Frederic
Added writers and supporting code.
r11367 output, resources = exporter_instance.from_filename(nb, resources)
Jonathan Frederic
Fixed all broken references, refactored some stuff here and there,...
r10624 else:
Jonathan Frederic
Added writers and supporting code.
r11367 output, resources = exporter_instance.from_file(nb, resources)
return output, resources
Jonathan Frederic
Fixed all broken references, refactored some stuff here and there,...
r10624
Jonathan Frederic
Cleanup and refactor of API, almost complete....
r10677
Jonathan Frederic
Docstring decorator
r10771 @DocDecorator
Jonathan Frederic
Added ability to export to a 'custom' format,...
r11743 def export_custom(nb, **kw):
"""
Export a notebook object to a custom format
"""
return export(Exporter, nb, **kw)
@DocDecorator
Jonathan Frederic
Part way through adding 'flavor' support
r11733 def export_html(nb, **kw):
Jonathan Frederic
Finished rename/refact on API namespace
r10690 """
Jonathan Frederic
Added ability to export to a 'custom' format,...
r11743 Export a notebook object to HTML
Jonathan Frederic
Finished rename/refact on API namespace
r10690 """
Jonathan Frederic
Part way through adding 'flavor' support
r11733 return export(HTMLExporter, nb, **kw)
Jonathan Frederic
Finished rename/refact on API namespace
r10690
Jonathan Frederic
Docstring decorator
r10771 @DocDecorator
Jonathan Frederic
HTML-Slides -> Slides-Reveal
r11744 def export_slides(nb, **kw):
"""
Export a notebook object to Slides
"""
return export(SlidesExporter, nb, **kw)
@DocDecorator
Jonathan Frederic
Added writers and supporting code.
r11367 def export_latex(nb, **kw):
Jonathan Frederic
Finished rename/refact on API namespace
r10690 """
Export a notebook object to LaTeX
"""
Jonathan Frederic
Added writers and supporting code.
r11367 return export(LatexExporter, nb, **kw)
Jonathan Frederic
Finished rename/refact on API namespace
r10690
Jonathan Frederic
Docstring decorator
r10771 @DocDecorator
Jonathan Frederic
Added writers and supporting code.
r11367 def export_markdown(nb, **kw):
Jonathan Frederic
Finished rename/refact on API namespace
r10690 """
Export a notebook object to Markdown
"""
Jonathan Frederic
Added writers and supporting code.
r11367 return export(MarkdownExporter, nb, **kw)
Jonathan Frederic
Finished rename/refact on API namespace
r10690
Jonathan Frederic
Docstring decorator
r10771 @DocDecorator
Jonathan Frederic
Added writers and supporting code.
r11367 def export_python(nb, **kw):
Jonathan Frederic
Finished rename/refact on API namespace
r10690 """
Export a notebook object to Python
"""
Jonathan Frederic
Added writers and supporting code.
r11367 return export(PythonExporter, nb, **kw)
Jonathan Frederic
Finished rename/refact on API namespace
r10690
Jonathan Frederic
Docstring decorator
r10771 @DocDecorator
Jonathan Frederic
Added writers and supporting code.
r11367 def export_rst(nb, **kw):
Jonathan Frederic
Finished rename/refact on API namespace
r10690 """
MinRK
RST class capitalization
r11449 Export a notebook object to reStructuredText
Jonathan Frederic
Finished rename/refact on API namespace
r10690 """
MinRK
RST class capitalization
r11449 return export(RSTExporter, nb, **kw)
Jonathan Frederic
Post code-review, extended refactor.
r10485
Jonathan Frederic
Cleanup and refactor of API, almost complete....
r10677
Jonathan Frederic
Docstring decorator
r10771 @DocDecorator
Jonathan Frederic
Added writers and supporting code.
r11367 def export_by_name(format_name, nb, **kw):
Jonathan Frederic
Finished rename/refact on API namespace
r10690 """
Export a notebook object to a template type by its name. Reflection
(Inspect) is used to find the template's corresponding explicit export
method defined in this module. That method is then called directly.
Jonathan Frederic
Added writers and supporting code.
r11367 format_name : str
Jonathan Frederic
Finished rename/refact on API namespace
r10690 Name of the template style to export to.
"""
Jonathan Frederic
Added writers and supporting code.
r11367 function_name = "export_" + format_name.lower()
Jonathan Frederic
Finished rename/refact on API namespace
r10690
Jonathan Frederic
Use globals dict to find right export function instead of...
r10769 if function_name in globals():
Jonathan Frederic
Added writers and supporting code.
r11367 return globals()[function_name](nb, **kw)
Jonathan Frederic
Use globals dict to find right export function instead of...
r10769 else:
Jonathan Frederic
Catch export specific name error only
r11372 raise ExporterNameError("template for `%s` not found" % function_name)
Matthias BUSSONNIER
pylint plus sphinx default to non-interactive.
r10875
Jonathan Frederic
Added ExporterNameError to exported names
r11395
Paul Ivanov
added listing of known exporters on error
r11250 def get_export_names():
Jonathan Frederic
Added warnings
r11755 """Return a list of the currently supported export targets
WARNING: API WILL CHANGE IN FUTURE RELEASES OF NBCONVERT"""
Paul Ivanov
added listing of known exporters on error
r11250 # grab everything after 'export_'
l = [x[len('export_'):] for x in __all__ if x.startswith('export_')]
Jonathan Frederic
Added writers and supporting code.
r11367
Jonathan Frederic
Indent fix
r11377 # filter out the one method that is not a template
Paul Ivanov
added listing of known exporters on error
r11250 l = [x for x in l if 'by_name' not in x]
return sorted(l)