diff --git a/nbconvert/exporters/html.py b/nbconvert/exporters/html.py index 86a368ca3..4a13add2c 100644 --- a/nbconvert/exporters/html.py +++ b/nbconvert/exporters/html.py @@ -14,6 +14,7 @@ from traitlets.config import Config from jupyter_core.paths import jupyter_path import jinja2 +import markupsafe if tuple(int(x) for x in jinja2.__version__.split(".")[:3]) < (3, 0, 0): from jinja2 import contextfilter @@ -213,7 +214,7 @@ def _init_resources(self, resources): def resources_include_css(name): env = self.environment code = """""" % (env.loader.get_source(env, name)[0]) - return jinja2.Markup(code) + return markupsafe.Markup(code) def resources_include_lab_theme(name): # Try to find the theme with the given name, looking through the labextensions @@ -237,12 +238,12 @@ def resources_include_lab_theme(name): data = data.replace(local_url, 'url(data:{};base64,{})'.format(mime_type, base64_data)) code = """""" % data - return jinja2.Markup(code) + return markupsafe.Markup(code) def resources_include_js(name): env = self.environment code = """""" % (env.loader.get_source(env, name)[0]) - return jinja2.Markup(code) + return markupsafe.Markup(code) def resources_include_url(name): env = self.environment @@ -266,7 +267,7 @@ def resources_include_url(name): data = base64.b64encode(data) data = data.replace(b'\n', b'').decode('ascii') src = 'data:{mime_type};base64,{data}'.format(mime_type=mime_type, data=data) - return jinja2.Markup(src) + return markupsafe.Markup(src) resources = super()._init_resources(resources) resources['theme'] = self.theme diff --git a/nbconvert/filters/ansi.py b/nbconvert/filters/ansi.py index 55bc47acb..d559e3fbe 100644 --- a/nbconvert/filters/ansi.py +++ b/nbconvert/filters/ansi.py @@ -4,7 +4,7 @@ # Distributed under the terms of the Modified BSD License. import re -import jinja2 +import markupsafe __all__ = [ 'strip_ansi', @@ -57,7 +57,7 @@ def ansi2html(text): Text containing ANSI colors to convert to HTML """ - text = jinja2.utils.escape(text) + text = markupsafe.escape(text) return _ansi2anything(text, _htmlconverter) diff --git a/setup.py b/setup.py index d94c7998a..dfb59d0ca 100644 --- a/setup.py +++ b/setup.py @@ -225,7 +225,8 @@ def get_data_files(): 'testpath', 'defusedxml', 'beautifulsoup4', - 'nbclient>=0.5.0,<0.6.0' + 'nbclient>=0.5.0,<0.6.0', + 'MarkupSafe>=2.0' ] pyppeteer_req = 'pyppeteer>=1,<1.1'