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'