Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-nbconvert for 
openSUSE:Factory checked in at 2022-03-13 20:25:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-nbconvert (Old)
 and      /work/SRC/openSUSE:Factory/.python-nbconvert.new.25692 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-nbconvert"

Sun Mar 13 20:25:12 2022 rev:12 rq:961349 version:6.4.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-nbconvert/python-nbconvert.changes        
2022-02-21 17:46:42.795596048 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-nbconvert.new.25692/python-nbconvert.changes 
    2022-03-13 20:25:33.135682526 +0100
@@ -1,0 +2,16 @@
+Sat Mar 12 04:50:52 UTC 2022 - Arun Persaud <[email protected]>
+
+- specfile:
+  * update nbconvert-vendorize-mistune.patch (linenumbers changed and lines 
before patch)
+  * require beautiful-soup
+
+- update to version 6.4.4:
+  * HTMLExporter: Respect the embed_images flag for HTML blocks PR
+    #1721
+
+- changes from version 6.4.3:
+  * Remove ipython genutils PR #1727
+  * Add section to customizing showing how to use template inheritance
+    PR #1719
+
+-------------------------------------------------------------------

Old:
----
  nbconvert-6.4.2.tar.gz

New:
----
  nbconvert-6.4.4.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-nbconvert.spec ++++++
--- /var/tmp/diff_new_pack.5aFRCw/_old  2022-03-13 20:25:33.703683194 +0100
+++ /var/tmp/diff_new_pack.5aFRCw/_new  2022-03-13 20:25:33.707683199 +0100
@@ -32,7 +32,7 @@
 %{?!python_module:%define python_module() python3-%{**}}
 %define skip_python2 1
 Name:           python-nbconvert%{psuffix}
-Version:        6.4.2
+Version:        6.4.4
 Release:        0
 Summary:        Conversion of Jupyter Notebooks
 License:        BSD-3-Clause
@@ -43,6 +43,7 @@
 # PATCH-FIX-OPENSUSE nbconvert-vendorize-mistune.patch -- 
gh#jupyter/nbconvert#1685
 Patch1:         nbconvert-vendorize-mistune.patch
 BuildRequires:  %{python_module base >= 3.7}
+BuildRequires:  %{python_module beautifulsoup4}
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
@@ -50,6 +51,7 @@
 Requires:       jupyter-nbconvert = %{version}
 Requires:       python-Jinja2 >= 2.4
 Requires:       python-Pygments >= 2.4.1
+Requires:       python-beautifulsoup4
 Requires:       python-bleach
 Requires:       python-defusedxml
 Requires:       python-entrypoints >= 0.2.2

++++++ nbconvert-6.4.2.tar.gz -> nbconvert-6.4.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbconvert-6.4.2/PKG-INFO new/nbconvert-6.4.4/PKG-INFO
--- old/nbconvert-6.4.2/PKG-INFO        2022-02-10 00:02:54.066899800 +0100
+++ new/nbconvert-6.4.4/PKG-INFO        2022-03-11 23:18:57.830361400 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: nbconvert
-Version: 6.4.2
+Version: 6.4.4
 Summary: Converting Jupyter Notebooks
 Home-page: https://jupyter.org
 Author: Jupyter Development Team
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbconvert-6.4.2/docs/source/changelog.rst 
new/nbconvert-6.4.4/docs/source/changelog.rst
--- old/nbconvert-6.4.2/docs/source/changelog.rst       2022-01-26 
14:23:50.831099500 +0100
+++ new/nbconvert-6.4.4/docs/source/changelog.rst       2022-03-11 
23:06:31.623179400 +0100
@@ -4,6 +4,31 @@
 Changes in nbconvert
 ====================
 
+6.4.4
+-----
+* HTMLExporter: Respect the embed_images flag for HTML blocks :ghpull:`1721`
+
+6.4.3
+-----
+* Remove ipython genutils :ghpull:`1727`
+* Add section to customizing showing how to use template inheritance 
:ghpull:`1719`
+
+6.4.2
+-----
+* Adding theme support for WebPDF exporter :ghpull:`1718`
+* Add option to embed_images in Markdown cells :ghpull:`1717`
+* HTMLExporter: Add theme alias and docs :ghpull:`1716`
+* Add basic support for federated labextensions themes :ghpull:`1703`
+* Always hide the collapser element :ghpull:`1712) 
+* Raise pyppeteer requirement to >=1,<1.1 :ghpull:`1711`
+
+6.4.1
+-----
+* Handle needs_background cell metadata :ghpull:`1704`
+* Fix styling regression :ghpull:`1708`
+* Fix DOM structure of markdown cells in lab template :ghpull:`1709`
+* CodeMirror style bleed fix :ghpull:`1710`
+
 6.4.0
 -----
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbconvert-6.4.2/docs/source/customizing.rst 
new/nbconvert-6.4.4/docs/source/customizing.rst
--- old/nbconvert-6.4.2/docs/source/customizing.rst     2021-09-11 
06:56:22.514379300 +0200
+++ new/nbconvert-6.4.4/docs/source/customizing.rst     2022-03-11 
23:06:26.195244000 +0100
@@ -140,3 +140,68 @@
 For example, in the reveal template, ``index.html.j2`` extends 
``base.html.j2`` which is in the same directory, and
 ``base.html.j2`` extends ``lab/base.html.j2``. This approach allows using 
content that is available in other templates
 or may be overriden in the current template.
+
+A practical example
+~~~~~~~~~~~~~~~~~~~
+
+Say you would like to modify the existing Markdown template to wrap each
+output statement in a fenced code block:
+
+.. code::
+
+   ```output
+   (1, 2, 3)
+   ```
+
+Start by creating a new template directory, say ``mdoutput``.  In it,
+you have the following files::
+
+  conf.json
+  index.md.j2
+
+The configuration file, ``conf.json`` states that your template
+applies to markdown files::
+
+  {
+    "mimetypes": {
+      "text/markdown": true
+    }
+  }
+
+The ``index.md.j2`` template entrypoint extends the existing markdown
+template, and redefines how output blocks are rendered:
+
+.. code::
+
+   {% extends 'markdown/index.md.j2' %}
+
+   {%- block traceback_line -%}
+   ```output
+   {{ line.rstrip() | strip_ansi }}
+   ```
+   {%- endblock traceback_line -%}
+
+   {%- block stream -%}
+   ```output
+   {{ output.text.rstrip() }}
+   ```
+   {%- endblock stream -%}
+
+   {%- block data_text scoped -%}
+   ```output
+   {{ output.data['text/plain'].rstrip() }}
+   ```
+   {%- endblock data_text -%}
+
+You can now convert your notebook to markdown using the new template::
+
+  jupyter nbconvert --execute notebook.ipynb --to markdown --template=mdoutput
+
+(If you put your template folder in a different location than your
+notebook, remember to add
+``--TemplateExporter.extra_template_basedirs=path/to/template/parent``.)
+
+To further explore the possibilities of templating, take a look at the
+root of all templates: ``null.j2``.  You can find it in the
+``./nbconvert/templates/base`` subfolder of one of the data paths given
+by ``jupyter --paths``.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbconvert-6.4.2/nbconvert/_version.py 
new/nbconvert-6.4.4/nbconvert/_version.py
--- old/nbconvert-6.4.2/nbconvert/_version.py   2022-02-10 00:02:42.110830000 
+0100
+++ new/nbconvert-6.4.4/nbconvert/_version.py   2022-03-11 23:17:39.032964200 
+0100
@@ -1,4 +1,4 @@
-version_info = (6, 4, 2)
+version_info = (6, 4, 4)
 pre_info = ''
 dev_info = ''
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbconvert-6.4.2/nbconvert/filters/__init__.py 
new/nbconvert-6.4.4/nbconvert/filters/__init__.py
--- old/nbconvert-6.4.2/nbconvert/filters/__init__.py   2021-09-11 
06:56:22.518379200 +0200
+++ new/nbconvert-6.4.4/nbconvert/filters/__init__.py   2022-03-11 
23:06:26.200562200 +0100
@@ -8,4 +8,4 @@
 from .metadata import *
 from .pandoc import *
 
-from ipython_genutils.text import indent
+from nbconvert.utils.text import indent
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/nbconvert-6.4.2/nbconvert/filters/markdown_mistune.py 
new/nbconvert-6.4.4/nbconvert/filters/markdown_mistune.py
--- old/nbconvert-6.4.2/nbconvert/filters/markdown_mistune.py   2022-02-10 
00:01:26.782388700 +0100
+++ new/nbconvert-6.4.4/nbconvert/filters/markdown_mistune.py   2022-03-11 
23:06:26.201169000 +0100
@@ -21,6 +21,8 @@
     # Python 2
     from cgi import escape as html_escape
 
+import bs4
+
 import mistune
 
 from pygments import highlight
@@ -135,6 +137,22 @@
         formatter = HtmlFormatter()
         return highlight(code, lexer, formatter)
 
+    def block_html(self, html):
+        embed_images = self.options.get('embed_images', False)
+
+        if embed_images:
+            html = self._html_embed_images(html)
+
+        return super().block_html(html)
+
+    def inline_html(self, html):
+        embed_images = self.options.get('embed_images', False)
+
+        if embed_images:
+            html = self._html_embed_images(html)
+
+        return super().inline_html(html)
+
     def header(self, text, level, raw=None):
         html = super().header(text, level, raw=raw)
         if self.options.get("exclude_anchor_links"):
@@ -166,7 +184,6 @@
         attachments = self.options.get('attachments', {})
         attachment_prefix = 'attachment:'
         embed_images = self.options.get('embed_images', False)
-        path = self.options.get('path', '')
 
         if src.startswith(attachment_prefix):
             name = src[len(attachment_prefix):]
@@ -187,18 +204,49 @@
             src = 'data:' + mime_type + ';base64,' + data
 
         elif embed_images:
-            image_path = os.path.join(path, src)
-            if os.path.exists(image_path):
-                with open(image_path, 'rb') as fobj:
-                    mime_type = mimetypes.guess_type(image_path)[0]
-
-                    base64_data = base64.b64encode(fobj.read())
-                    base64_data = base64_data.replace(b'\n', 
b'').decode('ascii')
+            base64_url = self._src_to_base64(src)
 
-                    src = 'data:{};base64,{}'.format(mime_type, base64_data)
+            if base64_url is not None:
+                src = base64_url
 
         return super().image(src, title, text)
 
+    def _src_to_base64(self, src):
+        """Turn the source file into a base64 url.
+
+        :param src: source link of the file.
+        :return: the base64 url or None if the file was not found.
+        """
+        path = self.options.get('path', '')
+        src_path = os.path.join(path, src)
+
+        if not os.path.exists(src_path):
+            return None
+
+        with open(src_path, 'rb') as fobj:
+            mime_type = mimetypes.guess_type(src_path)[0]
+
+            base64_data = base64.b64encode(fobj.read())
+            base64_data = base64_data.replace(b'\n', b'').decode('ascii')
+
+            return 'data:{};base64,{}'.format(mime_type, base64_data)
+
+    def _html_embed_images(self, html):
+        parsed_html = bs4.BeautifulSoup(html, features="html.parser")
+        imgs = parsed_html.find_all('img')
+
+        # Replace img tags's sources by base64 dataurls
+        for img in imgs:
+            if 'src' not in img.attrs:
+                continue
+
+            base64_url = self._src_to_base64(img.attrs['src'])
+
+            if base64_url is not None:
+                img.attrs['src'] = base64_url
+
+        return str(parsed_html)
+
 
 def markdown2html_mistune(source):
     """Convert a markdown string to HTML using mistune"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbconvert-6.4.2/nbconvert/nbconvertapp.py 
new/nbconvert-6.4.4/nbconvert/nbconvertapp.py
--- old/nbconvert-6.4.2/nbconvert/nbconvertapp.py       2022-02-10 
00:01:26.786388600 +0100
+++ new/nbconvert-6.4.4/nbconvert/nbconvertapp.py       2022-03-11 
23:06:26.202268600 +0100
@@ -15,9 +15,9 @@
 import glob
 import asyncio
 from textwrap import fill, dedent
-from ipython_genutils.text import indent
 
 from jupyter_core.application import JupyterApp, base_aliases, base_flags
+from nbconvert.utils.text import indent
 from traitlets.config import catch_config_error, Configurable
 from traitlets import (
     Unicode, List, Instance, DottedObjectName, Type, Bool,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/nbconvert-6.4.2/nbconvert/tests/files/notebook5_embed_images.ipynb 
new/nbconvert-6.4.4/nbconvert/tests/files/notebook5_embed_images.ipynb
--- old/nbconvert-6.4.2/nbconvert/tests/files/notebook5_embed_images.ipynb      
1970-01-01 01:00:00.000000000 +0100
+++ new/nbconvert-6.4.4/nbconvert/tests/files/notebook5_embed_images.ipynb      
2022-03-11 23:06:26.205035000 +0100
@@ -0,0 +1,51 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "e684608d",
+   "metadata": {},
+   "source": [
+    "![](./containerized_deployments.jpeg)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "e609fcaf",
+   "metadata": {},
+   "source": [
+    "<img src='./containerized_deployments.jpeg'></img>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "a0043f9e",
+   "metadata": {},
+   "source": [
+    "<div>\n",
+    "    <img src='./containerized_deployments.jpeg'></img>\n",
+    "</div>"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.10"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbconvert-6.4.2/nbconvert/tests/test_nbconvertapp.py 
new/nbconvert-6.4.4/nbconvert/tests/test_nbconvertapp.py
--- old/nbconvert-6.4.2/nbconvert/tests/test_nbconvertapp.py    2022-01-26 
14:23:50.839099600 +0100
+++ new/nbconvert-6.4.4/nbconvert/tests/test_nbconvertapp.py    2022-03-11 
23:06:26.205365000 +0100
@@ -572,6 +572,32 @@
 
             assert "var widgetRendererSrc = 
'https://unpkg.com/@jupyter-widgets/html-manager@*/dist/embed-amd.js';" in 
output
 
+    def test_not_embedding_images_htmlexporter(self):
+        """Check that the HTMLExporter does not embed images by default"""
+
+        with self.create_temp_cwd(["notebook5_embed_images.ipynb",
+                                   "containerized_deployments.jpeg"]):
+            self.nbconvert('notebook5_embed_images --log-level 0 --to html')
+            assert os.path.isfile('notebook5_embed_images.html')
+            with open("notebook5_embed_images.html", 'r', encoding="utf8") as 
f:
+                text = f.read()
+                assert "./containerized_deployments.jpeg" in text
+                assert "src='./containerized_deployments.jpeg'" in text
+                assert text.count("data:image/jpeg;base64") == 0
+
+    def test_embedding_images_htmlexporter(self):
+        """Check that the HTMLExporter embeds images if needed"""
+
+        with self.create_temp_cwd(["notebook5_embed_images.ipynb",
+                                   "containerized_deployments.jpeg"]):
+            self.nbconvert('notebook5_embed_images --log-level 0 --to html 
--embed-images')
+            assert os.path.isfile('notebook5_embed_images.html')
+            with open("notebook5_embed_images.html", 'r', encoding="utf8") as 
f:
+                text = f.read()
+                assert "./containerized_deployments.jpeg" not in text
+                assert "src='./containerized_deployments.jpeg'" not in text
+                assert text.count("data:image/jpeg;base64") == 3
+
     def test_execute_widgets_from_nbconvert(self):
         """Check jupyter widgets render"""
         notebookName = "Unexecuted_widget"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbconvert-6.4.2/nbconvert/utils/io.py 
new/nbconvert-6.4.4/nbconvert/utils/io.py
--- old/nbconvert-6.4.2/nbconvert/utils/io.py   2021-09-11 06:56:22.526379300 
+0200
+++ new/nbconvert-6.4.4/nbconvert/utils/io.py   2022-03-11 23:06:26.205582000 
+0100
@@ -5,6 +5,10 @@
 # Distributed under the terms of the Modified BSD License.
 
 import codecs
+import errno
+import os
+import random
+import shutil
 import sys
 
 def unicode_std_stream(stream='stdout'):
@@ -48,3 +52,81 @@
 class FormatSafeDict(dict):
     def __missing__(self, key):
         return '{' + key + '}'
+
+
+try:
+    ENOLINK = errno.ENOLINK
+except AttributeError:
+    ENOLINK = 1998
+
+
+def link(src, dst):
+    """Hard links ``src`` to ``dst``, returning 0 or errno.
+
+    Note that the special errno ``ENOLINK`` will be returned if ``os.link`` 
isn't
+    supported by the operating system.
+    """
+
+    if not hasattr(os, "link"):
+        return ENOLINK
+    link_errno = 0
+    try:
+        os.link(src, dst)
+    except OSError as e:
+        link_errno = e.errno
+    return link_errno
+
+
+def link_or_copy(src, dst):
+    """Attempts to hardlink ``src`` to ``dst``, copying if the link fails.
+
+    Attempts to maintain the semantics of ``shutil.copy``.
+
+    Because ``os.link`` does not overwrite files, a unique temporary file
+    will be used if the target already exists, then that file will be moved
+    into place.
+    """
+
+    if os.path.isdir(dst):
+        dst = os.path.join(dst, os.path.basename(src))
+
+    link_errno = link(src, dst)
+    if link_errno == errno.EEXIST:
+        if os.stat(src).st_ino == os.stat(dst).st_ino:
+            # dst is already a hard link to the correct file, so we don't need
+            # to do anything else. If we try to link and rename the file
+            # anyway, we get duplicate files - see 
http://bugs.python.org/issue21876
+            return
+
+        new_dst = dst + "-temp-%04X" %(random.randint(1, 16**4), )
+        try:
+            link_or_copy(src, new_dst)
+        except:
+            try:
+                os.remove(new_dst)
+            except OSError:
+                pass
+            raise
+        os.rename(new_dst, dst)
+    elif link_errno != 0:
+        # Either link isn't supported, or the filesystem doesn't support
+        # linking, or 'src' and 'dst' are on different filesystems.
+        shutil.copy(src, dst)
+
+
+def ensure_dir_exists(path, mode=0o755):
+    """ensure that a directory exists
+
+    If it doesn't exist, try to create it and protect against a race condition
+    if another process is doing the same.
+
+    The default permissions are 755, which differ from os.makedirs default of 
777.
+    """
+    if not os.path.exists(path):
+        try:
+            os.makedirs(path, mode=mode)
+        except OSError as e:
+            if e.errno != errno.EEXIST:
+                raise
+    elif not os.path.isdir(path):
+        raise IOError("%r exists but is not a directory" % path)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbconvert-6.4.2/nbconvert/utils/text.py 
new/nbconvert-6.4.4/nbconvert/utils/text.py
--- old/nbconvert-6.4.2/nbconvert/utils/text.py 1970-01-01 01:00:00.000000000 
+0100
+++ new/nbconvert-6.4.4/nbconvert/utils/text.py 2022-03-11 23:06:26.205690400 
+0100
@@ -0,0 +1,41 @@
+import os
+import re
+
+
+def indent(instr, nspaces=4, ntabs=0, flatten=False):
+    """Indent a string a given number of spaces or tabstops.
+
+    indent(str,nspaces=4,ntabs=0) -> indent str by ntabs+nspaces.
+
+    Parameters
+    ----------
+
+    instr : basestring
+        The string to be indented.
+    nspaces : int (default: 4)
+        The number of spaces to be indented.
+    ntabs : int (default: 0)
+        The number of tabs to be indented.
+    flatten : bool (default: False)
+        Whether to scrub existing indentation.  If True, all lines will be
+        aligned to the same indentation.  If False, existing indentation will
+        be strictly increased.
+
+    Returns
+    -------
+
+    str|unicode : string indented by ntabs and nspaces.
+
+    """
+    if instr is None:
+        return
+    ind = '\t' * ntabs + ' ' * nspaces
+    if flatten:
+        pat = re.compile(r'^\s*', re.MULTILINE)
+    else:
+        pat = re.compile(r'^', re.MULTILINE)
+    outstr = re.sub(pat, ind, instr)
+    if outstr.endswith(os.linesep + ind):
+        return outstr[:-len(ind)]
+    else:
+        return outstr
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbconvert-6.4.2/nbconvert/writers/files.py 
new/nbconvert-6.4.4/nbconvert/writers/files.py
--- old/nbconvert-6.4.2/nbconvert/writers/files.py      2021-09-11 
06:56:22.526379300 +0200
+++ new/nbconvert-6.4.4/nbconvert/writers/files.py      2022-03-11 
23:06:26.206065700 +0100
@@ -8,8 +8,10 @@
 import glob
 
 from pathlib import Path
+
+from nbconvert.utils.io import ensure_dir_exists, link_or_copy
 from traitlets import Unicode, observe
-from ipython_genutils.path import link_or_copy, ensure_dir_exists
+
 
 from .base import WriterBase
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbconvert-6.4.2/setup.py new/nbconvert-6.4.4/setup.py
--- old/nbconvert-6.4.2/setup.py        2022-02-10 00:01:26.786388600 +0100
+++ new/nbconvert-6.4.4/setup.py        2022-03-11 23:06:26.206297200 +0100
@@ -224,6 +224,7 @@
     'pandocfilters>=1.4.1',
     'testpath',
     'defusedxml',
+    'beautifulsoup4',
     'nbclient>=0.5.0,<0.6.0'
 ]
 

++++++ nbconvert-vendorize-mistune.patch ++++++
--- /var/tmp/diff_new_pack.5aFRCw/_old  2022-03-13 20:25:33.951683485 +0100
+++ /var/tmp/diff_new_pack.5aFRCw/_new  2022-03-13 20:25:33.955683490 +0100
@@ -2,9 +2,9 @@
 ===================================================================
 --- nbconvert-6.3.0.orig/nbconvert/filters/markdown_mistune.py
 +++ nbconvert-6.3.0/nbconvert/filters/markdown_mistune.py
-@@ -18,7 +18,7 @@ except ImportError:
-     # Python 2
-     from cgi import escape as html_escape
+@@ -23,7 +23,7 @@ except ImportError:
+ 
+ import bs4
  
 -import mistune
 +from nbconvert.vendor import mistune
@@ -15,7 +15,7 @@
 ===================================================================
 --- nbconvert-6.3.0.orig/setup.py
 +++ nbconvert-6.3.0/setup.py
-@@ -212,7 +212,6 @@ setup_args = dict(
+@@ -214,7 +214,6 @@ setup_args = dict(
  )
  
  setup_args['install_requires'] = [

Reply via email to