diff options
Diffstat (limited to 'dev-python/nbconvert/files/nbconvert-5.6.1-inkscape-1.patch')
-rw-r--r-- | dev-python/nbconvert/files/nbconvert-5.6.1-inkscape-1.patch | 159 |
1 files changed, 0 insertions, 159 deletions
diff --git a/dev-python/nbconvert/files/nbconvert-5.6.1-inkscape-1.patch b/dev-python/nbconvert/files/nbconvert-5.6.1-inkscape-1.patch deleted file mode 100644 index 1f997a3c3a32..000000000000 --- a/dev-python/nbconvert/files/nbconvert-5.6.1-inkscape-1.patch +++ /dev/null @@ -1,159 +0,0 @@ -diff --git a/nbconvert/preprocessors/svg2pdf.py b/nbconvert/preprocessors/svg2pdf.py -index aff14d9f..de51f3b8 100644 ---- a/nbconvert/preprocessors/svg2pdf.py -+++ b/nbconvert/preprocessors/svg2pdf.py -@@ -1,4 +1,4 @@ --"""Module containing a preprocessor that converts outputs in the notebook from -+"""Module containing a preprocessor that converts outputs in the notebook from - one format to another. - """ - -@@ -17,11 +17,7 @@ from traitlets import Unicode, default - - from .convertfigures import ConvertFiguresPreprocessor - --if sys.version_info >= (3,3): -- from shutil import which -- get_inkscape_path = which('inkscape') --else: -- get_inkscape_path = None -+from shutil import which - - - INKSCAPE_APP = '/Applications/Inkscape.app/Contents/Resources/bin/inkscape' -@@ -46,26 +42,49 @@ class SVG2PDFPreprocessor(ConvertFiguresPreprocessor): - def _to_format_default(self): - return 'application/pdf' - -+ inkscape_version = Unicode( -+ help="""The version of inkscpae being used. -+ -+ This affects how the conversion command is run. -+ """ -+ ).tag(config=True) -+ -+ @default('inkscape_version') -+ def _inkscape_version_default(self): -+ p = subprocess.Popen([self.inkscape, '--version'], -+ stdout=subprocess.PIPE, -+ stderr=subprocess.PIPE) -+ output, _ = p.communicate() -+ if p.returncode != 0: -+ raise RuntimeError("Unable to find inkscape executable --version") -+ return output.decode('utf-8').split(' ')[1] -+ - command = Unicode( - help="""The command to use for converting SVG to PDF -- -+ - This string is a template, which will be formatted with the keys - to_filename and from_filename. -- -+ - The conversion call must read the SVG from {from_filename}, - and write a PDF to {to_filename}. - """).tag(config=True) - - @default('command') - def _command_default(self): -- return self.inkscape + \ -- ' --without-gui --export-pdf="{to_filename}" "{from_filename}"' -- -+ major_verison = self.inkscape_version.split('.')[0] -+ export_option = ' --export-filename' if int(major_verison) > 0 else ' --export-pdf' -+ gui_option = '' if int(major_verison) > 0 else ' --without-gui' -+ -+ return '{inkscape}{gui_option}{export_option}='.format( -+ inkscape=self.inkscape, export_option=export_option, gui_option=gui_option -+ ) + '"{to_filename}" "{from_filename}"' -+ - inkscape = Unicode(help="The path to Inkscape, if necessary").tag(config=True) - @default('inkscape') - def _inkscape_default(self): -- if get_inkscape_path is not None: -- return get_inkscape_path -+ inkscape_path = which('inkscape') -+ if inkscape_path is not None: -+ return inkscape_path - if sys.platform == "darwin": - if os.path.isfile(INKSCAPE_APP): - return INKSCAPE_APP -@@ -85,22 +104,22 @@ class SVG2PDFPreprocessor(ConvertFiguresPreprocessor): - Convert a single SVG figure to PDF. Returns converted data. - """ - -- #Work in a temporary directory -+ # Work in a temporary directory - with TemporaryDirectory() as tmpdir: -- -- #Write fig to temp file -+ -+ # Write fig to temp file - input_filename = os.path.join(tmpdir, 'figure.svg') - # SVG data is unicode text - with io.open(input_filename, 'w', encoding='utf8') as f: - f.write(cast_unicode_py2(data)) - -- #Call conversion application -+ # Call conversion application - output_filename = os.path.join(tmpdir, 'figure.pdf') -- shell = self.command.format(from_filename=input_filename, -+ shell = self.command.format(from_filename=input_filename, - to_filename=output_filename) -- subprocess.call(shell, shell=True) #Shell=True okay since input is trusted. -+ subprocess.call(shell, shell=True) # Shell=True okay since input is trusted. - -- #Read output from drive -+ # Read output from drive - # return value expects a filename - if os.path.isfile(output_filename): - with open(output_filename, 'rb') as f: -diff --git a/nbconvert/preprocessors/tests/test_svg2pdf.py b/nbconvert/preprocessors/tests/test_svg2pdf.py -index c42222c7..d9ccec8c 100644 ---- a/nbconvert/preprocessors/tests/test_svg2pdf.py -+++ b/nbconvert/preprocessors/tests/test_svg2pdf.py -@@ -4,6 +4,7 @@ - # Distributed under the terms of the Modified BSD License. - - from nbformat import v4 as nbformat -+from unittest.mock import patch, Mock - - from .base import PreprocessorTestsBase - from ..svg2pdf import SVG2PDFPreprocessor -@@ -51,9 +52,9 @@ class Testsvg2pdf(PreprocessorTestsBase): - return nbformat.new_notebook(cells=cells) - - -- def build_preprocessor(self): -+ def build_preprocessor(self, **kwargs): - """Make an instance of a preprocessor""" -- preprocessor = SVG2PDFPreprocessor() -+ preprocessor = SVG2PDFPreprocessor(**kwargs) - preprocessor.enabled = True - return preprocessor - -@@ -71,4 +72,23 @@ class Testsvg2pdf(PreprocessorTestsBase): - preprocessor = self.build_preprocessor() - nb, res = preprocessor(nb, res) - self.assertIn('application/pdf', nb.cells[0].outputs[0].data) -- -+ -+ @patch('subprocess.Popen') -+ def test_inkscape_version_default(self, mock_popen): -+ mock_popen().communicate.return_value = (b'Inkscape 0.92.3 (2405546, 2018-03-11)', b'') -+ mock_popen().returncode = 0 -+ -+ preprocessor = self.build_preprocessor() -+ self.assertEquals(preprocessor.inkscape_version, '0.92.3') -+ -+ def test_inkscape_pre_v1_command(self): -+ preprocessor = self.build_preprocessor(inkscape_version='0.92.3') -+ self.assertEquals(preprocessor.command, '0.92.3') -+ -+ def test_inkscape_pre_v1_command(self): -+ preprocessor = self.build_preprocessor(inkscape='fake-inkscape', inkscape_version='0.92.3') -+ self.assertEquals(preprocessor.command, 'fake-inkscape --without-gui --export-pdf="{to_filename}" "{from_filename}"') -+ -+ def test_inkscape_v1_command(self): -+ preprocessor = self.build_preprocessor(inkscape='fake-inkscape', inkscape_version='1.0beta2') -+ self.assertEquals(preprocessor.command, 'fake-inkscape --export-filename="{to_filename}" "{from_filename}"') |