def get(self): self.check_xsrf_cookie() try: from nbconvert.exporters import base except ImportError as e: raise web.HTTPError(500, "Could not import nbconvert: %s" % e) res = {} exporters = base.get_export_names() for exporter_name in exporters: try: exporter_class = base.get_exporter(exporter_name) except ValueError: # I think the only way this will happen is if the entrypoint # is uninstalled while this method is running continue # XXX: According to the docs, it looks like this should be set to None # if the exporter shouldn't be exposed to the front-end and a friendly # name if it should. However, none of the built-in exports have it defined. # if not exporter_class.export_from_notebook: # continue res[exporter_name] = { "output_mimetype": exporter_class.output_mimetype, } self.finish(json.dumps(res))
def get_custom_frontend_exporters(): from nbconvert.exporters.base import get_export_names, get_exporter ExporterInfo = namedtuple('ExporterInfo', ['name', 'display']) for name in sorted(get_export_names()): exporter = get_exporter(name)() ux_name = getattr(exporter, 'export_from_notebook', None) if ux_name is not None: display = _('{} ({})'.format(ux_name, exporter.file_extension)) yield ExporterInfo(name, display)
def get_custom_frontend_exporters(): from nbconvert.exporters.base import get_export_names, get_exporter ExporterInfo = namedtuple('ExporterInfo', ['name', 'display']) for name in sorted(get_export_names()): exporter = get_exporter(name)() ux_name = getattr(exporter, 'export_from_notebook', None) if ux_name is not None: display = _('{} ({})'.format(ux_name, exporter.file_extension)) yield ExporterInfo(name, display)
def get_frontend_exporters(): from nbconvert.exporters.base import get_export_names, get_exporter # name=exporter_name, display=export_from_notebook+extension ExporterInfo = namedtuple('ExporterInfo', ['name', 'display']) default_exporters = [ ExporterInfo(name='html', display='HTML (.html)'), ExporterInfo(name='latex', display='LaTeX (.tex)'), ExporterInfo(name='markdown', display='Markdown (.md)'), ExporterInfo(name='notebook', display='Notebook (.ipynb)'), ExporterInfo(name='pdf', display='PDF via LaTeX (.pdf)'), ExporterInfo(name='rst', display='reST (.rst)'), ExporterInfo(name='script', display='Script (.txt)'), ExporterInfo(name='slides', display='Reveal.js slides (.slides.html)') ] frontend_exporters = [] for name in get_export_names(): exporter_class = get_exporter(name) exporter_instance = exporter_class() ux_name = getattr(exporter_instance, 'export_from_notebook', None) super_uxname = getattr(super(exporter_class, exporter_instance), 'export_from_notebook', None) # Ensure export_from_notebook is explicitly defined & not inherited if ux_name is not None and ux_name != super_uxname: display = _('{} ({})'.format(ux_name, exporter_instance.file_extension)) frontend_exporters.append(ExporterInfo(name, display)) # Ensure default_exporters are in frontend_exporters if not already # This protects against nbconvert versions lower than 5.5 names = set(exporter.name.lower() for exporter in frontend_exporters) for exporter in default_exporters: if exporter.name not in names: frontend_exporters.append(exporter) # Protect against nbconvert 5.5.0 python_exporter = ExporterInfo(name='python', display='python (.py)') if python_exporter in frontend_exporters: frontend_exporters.remove(python_exporter) # Protect against nbconvert 5.4.x template_exporter = ExporterInfo(name='custom', display='custom (.txt)') if template_exporter in frontend_exporters: frontend_exporters.remove(template_exporter) return sorted(frontend_exporters)
def get_custom_frontend_exporters(): from nbconvert.exporters.base import get_export_names, get_exporter ExporterInfo = namedtuple('ExporterInfo', ['name', 'display']) # iOS: which extensions are activated? show_latex_envs = check_extension_activated('latex_envs/latex_envs') show_toc = check_extension_activated('toc2/main') show_ch = check_extension_activated('collapsible_headings/main') for name in sorted(get_export_names()): # iOS: get rid of file types already present in the menu: # or formats that won't work (custom, selectLanguage, pdf): # script should be re-enabled once there are multiple languages if ((name == 'pdf') or (name == 'python') or (name == 'latex') or (name == 'markdown') or (name == 'rst') or (name == 'html') or (name == 'slides') or (name == 'notebook') or (name == 'custom') or (name == 'selectLanguage') or (name == 'script')): continue # Activate menu items depending on extensions being activated: if (not show_latex_envs): if (name == 'html_with_lenvs' or name == 'html_with_toclenvs' or name == 'latex_with_lenvs' or name == 'slides_with_lenvs'): continue if (not show_toc): if (name == 'html_with_toclenvs' or name == 'toc2' or name == 'html_toc'): continue if (not show_ch): if (name == 'html_ch'): continue exporter = get_exporter(name)() ux_name = getattr(exporter, 'export_from_notebook', None) if ux_name is not None: display = _('{} ({})'.format(ux_name, exporter.file_extension)) yield ExporterInfo(name, display)
def get(self): try: from nbconvert.exporters import base except ImportError as e: raise web.HTTPError(500, "Could not import nbconvert: %s" % e) res = {} exporters = base.get_export_names() for exporter_name in exporters: try: exporter_class = base.get_exporter(exporter_name) except ValueError: # I think the only way this will happen is if the entrypoint # is uninstalled while this method is running continue # XXX: According to the docs, it looks like this should be set to None # if the exporter shouldn't be exposed to the front-end and a friendly # name if it should. However, none of the built-in exports have it defined. # if not exporter_class.export_from_notebook: # continue res[exporter_name] = { "output_mimetype": exporter_class.output_mimetype, } self.finish(json.dumps(res))