Source code for ipypublish.filters.rst_choose_output

# See nbconvert/exporters/html.py:
DISPLAY_DATA_PRIORITY_HTML = (
    "application/vnd.jupyter.widget-state+json",
    "application/vnd.jupyter.widget-view+json",
    "application/javascript",
    "text/html",
    "text/markdown",
    "image/svg+xml",
    "text/latex",
    "image/png",
    "image/jpeg",
    "text/plain",
)
# See nbconvert/exporters/latex.py:
DISPLAY_DATA_PRIORITY_LATEX = (
    "text/latex",
    "image/svg+xml",  # this requires sphinx.ext.imgconverter
    "application/pdf",
    "image/png",
    "image/jpeg",
    "text/markdown",
    "text/plain",
)


[docs]def choose_output_type(output, metadata): """Choose appropriate output data types for HTML and LaTeX.""" if output.output_type == "stream": html_datatype = latex_datatype = "ansi" text = output.text output.data = {"ansi": text[:-1] if text.endswith("\n") else text} elif output.output_type == "error": html_datatype = latex_datatype = "ansi" output.data = {"ansi": "\n".join(output.traceback)} else: for datatype in DISPLAY_DATA_PRIORITY_HTML: if datatype in output.data: html_datatype = datatype break else: html_datatype = ", ".join(output.data.keys()) for datatype in DISPLAY_DATA_PRIORITY_LATEX: if datatype in output.data: latex_datatype = datatype break else: latex_datatype = ", ".join(output.data.keys()) if html_datatype in [ "application/vnd.jupyter.widget-state+json", "application/vnd.jupyter.widget-view+json", "application/javascript", ]: return html_datatype, latex_datatype # Numbering in sphinx fails if splitting outputs into # ``.. only:: html`` and ``.. only:: latex`` # therefore, if possible we should use the same data type for both if metadata.ipub.table: html_datatype = latex_datatype return html_datatype, latex_datatype