from __future__ import annotations
from dataclasses import dataclass
import IPython
print(IPython.__version__)
Supported IPython display formatters:
ip = get_ipython()
for mime in ip.display_formatter.formatters:
print(mime)
Let’s write a simple class that will output different mime:
@dataclass
class Mime:
math: str
def _repr_mimebundle_(
self,
include: Container[str] | None = None,
exclude: Container[str] | None = None,
**kwargs,
) -> dict[str, str]:
string = self.math
data = {
"text/plain": string,
"text/html": (latex := f"\\[{string}\\]"),
"text/markdown": f"$${string}$$",
# "image/svg+xml":,
# "image/png":,
# "application/pdf":,
# "image/jpeg":,
"text/latex": latex,
# "application/json":,
# "application/javascript":,
}
if include:
data = {k: v for k, v in data.items() if k in include}
if exclude:
data = {k: v for k, v in data.items() if k not in exclude}
return data
mime = Mime("E = mc^2")
mime
Note that #7561 made ipynb reader aware of this, and #7563 made ipynb writer aware of this.