From 107dee62d3fb705e6747d57aeb2fee89c743d428 Mon Sep 17 00:00:00 2001 From: Roy Wedge Date: Thu, 24 Mar 2022 13:57:43 -0400 Subject: [PATCH 1/5] Use markupsafe escape instead of jinja --- nbconvert/filters/ansi.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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) From b97b3c33247c064ac1cf42d712dc7e905c98cd08 Mon Sep 17 00:00:00 2001 From: Roy Wedge Date: Thu, 24 Mar 2022 14:01:04 -0400 Subject: [PATCH 2/5] Add markupsafe to requirements --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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' From 2dae73dbe4c0edf8832b798564d66f3b71d45cd2 Mon Sep 17 00:00:00 2001 From: Roy Wedge Date: Thu, 24 Mar 2022 14:11:59 -0400 Subject: [PATCH 3/5] use markupsafe import in exporters/html.py --- nbconvert/exporters/html.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) 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 From 773a0a617eec2dd31646b513846c2fae43142677 Mon Sep 17 00:00:00 2001 From: Roy Wedge Date: Fri, 25 Mar 2022 10:49:14 -0400 Subject: [PATCH 4/5] Setup jinja2 upper bound --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index dfb59d0ca..5be63a557 100644 --- a/setup.py +++ b/setup.py @@ -213,7 +213,7 @@ def get_data_files(): setup_args['install_requires'] = [ 'mistune>=0.8.1,<2', - 'jinja2>=2.4', + 'jinja2>=2.4,<3.1', 'pygments>=2.4.1', 'jupyterlab_pygments', 'traitlets>=5.0', From 02af046e7d6c84bce0db7022beabb63ea64c0aac Mon Sep 17 00:00:00 2001 From: Roy Wedge Date: Fri, 25 Mar 2022 18:51:52 -0400 Subject: [PATCH 5/5] remove jinja upper bound --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 5be63a557..dfb59d0ca 100644 --- a/setup.py +++ b/setup.py @@ -213,7 +213,7 @@ def get_data_files(): setup_args['install_requires'] = [ 'mistune>=0.8.1,<2', - 'jinja2>=2.4,<3.1', + 'jinja2>=2.4', 'pygments>=2.4.1', 'jupyterlab_pygments', 'traitlets>=5.0',