Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-pypandoc for openSUSE:Factory 
checked in at 2023-05-25 23:52:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pypandoc (Old)
 and      /work/SRC/openSUSE:Factory/.python-pypandoc.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pypandoc"

Thu May 25 23:52:23 2023 rev:7 rq:1088924 version:1.11

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pypandoc/python-pypandoc.changes  
2022-07-19 17:19:08.920349585 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-pypandoc.new.1533/python-pypandoc.changes    
    2023-05-25 23:52:35.635631134 +0200
@@ -1,0 +2,9 @@
+Wed May 24 17:47:42 UTC 2023 - Scott Bradnick <[email protected]>
+
+- Updating to upstream version 1.11 (as previous 1.6.4 fails)
+  * tests.py was also updated and needed another item excluded to
+    possibly account for how pandoc is built.
+- Converting to noarch (per rpmlint).
+- Adding pandocfilters module to BuildRequires
+
+-------------------------------------------------------------------

Old:
----
  pypandoc-1.6.4.tar.gz

New:
----
  pypandoc-1.11.tar.gz

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

Other differences:
------------------
++++++ python-pypandoc.spec ++++++
--- /var/tmp/diff_new_pack.F003gh/_old  2023-05-25 23:52:36.655637122 +0200
+++ /var/tmp/diff_new_pack.F003gh/_new  2023-05-25 23:52:36.663637170 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-pypandoc
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,9 +16,9 @@
 #
 
 
-%{?!python_module:%define python_module() python-%{**} python3-%{**}}
+%define base_name pypandoc
 Name:           python-pypandoc
-Version:        1.6.4
+Version:        1.11
 Release:        0
 Summary:        Thin wrapper for pandoc
 License:        MIT
@@ -26,6 +26,7 @@
 URL:            https://github.com/bebraw/pypandoc
 Source:         
https://github.com/NicklasTegner/pypandoc/archive/refs/tags/v%{version}.tar.gz#/pypandoc-%{version}.tar.gz
 Source1:        
https://raw.githubusercontent.com/NicklasTegner/pypandoc/master/tests.py
+BuildRequires:  %{python_module pandocfilters}
 BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module pytest}
 BuildRequires:  %{python_module setuptools}
@@ -40,6 +41,7 @@
 Requires:       python-wheel
 Suggests:       ghc-citeproc
 ExcludeArch:    %{ix86}
+BuildArch:      noarch
 %python_subpackages
 
 %description
@@ -58,12 +60,14 @@
 %python_expand %fdupes %{buildroot}%{$python_sitelib}
 
 %check
-# test_basic_conversion_from_http_url needs network
-%pytest tests.py -k 'not test_basic_conversion_from_http_url'
+# 'test_basic_conversion_from_http_url' needs network
+# 'test_conversion_with_data_files' => 
https://github.com/JessicaTegner/pypandoc/issues/278
+%pytest tests.py -k 'not test_basic_conversion_from_http_url and not 
test_conversion_with_data_files'
 
 %files %{python_files}
 %license LICENSE
 %doc README.md
-%{python_sitelib}/*
+%{python_sitelib}/pypandoc
+%{python_sitelib}/pypandoc-%{version}*-info
 
 %changelog

++++++ pypandoc-1.6.4.tar.gz -> pypandoc-1.11.tar.gz ++++++
++++ 2688 lines of diff (skipped)

++++++ tests.py ++++++
--- /var/tmp/diff_new_pack.F003gh/_old  2023-05-25 23:52:36.755637709 +0200
+++ /var/tmp/diff_new_pack.F003gh/_new  2023-05-25 23:52:36.759637733 +0200
@@ -3,19 +3,34 @@
 
 import contextlib
 import io
+import logging
 import os
+import re
 import shutil
 import subprocess
 import sys
 import tempfile
+import textwrap
 import unittest
 import warnings
+from pathlib import Path
 
 import pypandoc
 from pypandoc.py3compat import path2url, string_types, unicode_type
 
 
 @contextlib.contextmanager
+def capture(command, *args, **kwargs):
+  err, sys.stderr = sys.stderr, io.StringIO()
+  try:
+    command(*args, **kwargs)
+    sys.stderr.seek(0)
+    yield sys.stderr.read()
+  finally:
+    sys.stderr = err
+
+
[email protected]
 def closed_tempfile(suffix, text=None, dir_name=None):
     file_name = None
     try:
@@ -142,8 +157,19 @@
         version = pypandoc.get_pandoc_version()
         self.assertTrue(isinstance(version, pypandoc.string_types))
         major = int(version.split(".")[0])
-        # according to http://pandoc.org/releases.html there were only two 
versions 0.x ...
-        self.assertTrue(major in [0, 1, 2])
+        self.assertTrue(major in [0, 1, 2, 3])
+
+    def test_ensure_pandoc_minimal_version(self):
+        assert "HOME" in os.environ, "No HOME set, this will error..."
+        assert pypandoc.ensure_pandoc_minimal_version(1) == True
+        assert pypandoc.ensure_pandoc_minimal_version(1,1) == True
+        assert pypandoc.ensure_pandoc_minimal_version(999,999) == False
+
+    def test_ensure_pandoc_maximal_version(self):
+        assert "HOME" in os.environ, "No HOME set, this will error..."
+        assert pypandoc.ensure_pandoc_maximal_version(999) == True
+        assert pypandoc.ensure_pandoc_maximal_version(999,999) == True
+        assert pypandoc.ensure_pandoc_maximal_version(1,1) == False
 
     def test_converts_valid_format(self):
         self.assertEqualExceptForNewlineEnd(pypandoc.convert_text("ok", 
format='md', to='rest'), 'ok')
@@ -168,6 +194,25 @@
             received = pypandoc.convert_file(file_name, 'rst')
             self.assertEqualExceptForNewlineEnd(expected, received)
 
+    def test_basic_conversion_from_multiple_files(self):
+        with closed_tempfile('.md', text='some title') as file_name1:
+            with closed_tempfile('.md', text='some title') as file_name2:
+                expected = '<p>some title</p>\n<p>some title</p>'
+                received = pypandoc.convert_file([file_name1,file_name2], 
'html')
+                self.assertEqualExceptForNewlineEnd(expected, received)
+
+    def test_basic_conversion_from_file_pattern(self):
+        received = pypandoc.convert_file("./*.md", 'html')
+        received = received.lower()
+        assert "making a release" in received
+        assert "pypandoc provides a thin wrapper" in received
+
+    def test_basic_conversion_from_file_pattern_with_input_list(self):
+        received = pypandoc.convert_file(["./*.md", "./*.md"], 'html')
+        received = received.lower()
+        assert "making a release" in received
+        assert "pypandoc provides a thin wrapper" in received
+
     @unittest.skipIf(sys.platform.startswith("win"), "File based urls do not 
work on windows: "
                                                      
"https://github.com/jgm/pandoc/issues/4613";)
     def test_basic_conversion_from_file_url(self):
@@ -186,7 +231,27 @@
         received = pypandoc.convert_file(url, 'html')
         assert "GPL2 license" in received
 
+    def test_conversion_with_data_files(self):
+        # remove our test.docx file from our test_data dir if it already exosts
+        test_data_dir = os.path.join(os.path.dirname(__file__), 'test_data')
+        test_docx_file = os.path.join(test_data_dir, 'test.docx')
+        if os.path.exists(test_docx_file):
+            os.remove(test_docx_file)
+        result = pypandoc.convert_file(
+          os.path.join(test_data_dir, 'index.html'),
+          to='docx',
+          format='html',
+          outputfile=test_docx_file,
+          sandbox=True,
+        )
+        print(result)
+
     def test_convert_with_custom_writer(self):
+        version = pypandoc.get_pandoc_version()
+        major = int(version.split(".")[0])
+        if major == 3:
+            # apparently --print-default-data-file fails on pandoc3x
+            return
         lua_file_content = self.create_sample_lua()
         with closed_tempfile('.md', text='# title\n') as file_name:
             with closed_tempfile('.lua', text=lua_file_content, 
dir_name="foo-bar+baz") as lua_file_name:
@@ -262,6 +327,176 @@
         found = re.search(r'10.1038', written)
         self.assertTrue(found is None)
 
+    def test_conversion_with_python_filter(self):
+        markdown_source = "**Here comes the content.**"
+        python_source = '''\
+        #!{0}
+
+        """
+        Pandoc filter to convert all regular text to uppercase.
+        Code, link URLs, etc. are not affected.
+        """
+
+        from pandocfilters import toJSONFilter, Str
+
+        def caps(key, value, format, meta):
+            if key == 'Str':
+                return Str(value.upper())
+
+        if __name__ == "__main__":
+            toJSONFilter(caps)
+        '''
+        python_source = textwrap.dedent(python_source)
+        python_source = python_source.format(sys.executable)
+        
+        with closed_tempfile(".py", python_source) as tempfile:
+            os.chmod(tempfile, 0o755)
+            output = pypandoc.convert_text(
+                markdown_source, to='html', format='md', outputfile=None, 
filters=tempfile
+            ).strip()
+            expected = '<p><strong>HERE COMES THE CONTENT.</strong></p>'
+            self.assertTrue(output == expected)
+
+    def test_conversion_with_lua_filter(self):
+        markdown_source = "**Here comes the content.**"
+        lua_source = """\
+        -- taken from: https://pandoc.org/lua-filters.html
+        function Strong(elem)
+            return pandoc.SmallCaps(elem.c)
+        end
+        """
+        lua_source = textwrap.dedent(lua_source)
+        with closed_tempfile(".lua", lua_source) as tempfile:
+            output = pypandoc.convert_text(
+                markdown_source, to='html', format='md', outputfile=None, 
filters=tempfile
+            ).strip()
+            expected = '<p><span class="smallcaps">Here comes the 
content.</span></p>'
+            self.assertTrue(output == expected)
+
+    def test_conversion_with_mixed_filters(self):
+        markdown_source = "-0-"
+
+        lua = """\
+        function Para(elem)
+            return pandoc.Para(elem.content .. {{"{0}-"}})
+        end
+        """
+        lua = textwrap.dedent(lua)
+
+        python = """\
+        #!{0}
+
+        from pandocfilters import toJSONFilter, Para, Str
+
+        def func(key, value, format, meta):
+            if key == "Para":
+                return Para(value + [Str("{{0}}-")])
+
+        if __name__ == "__main__":
+            toJSONFilter(func)
+        
+        """
+        python = textwrap.dedent(python)
+        python = python.format(sys.executable)
+
+        with closed_tempfile(".lua", lua.format(1)) as temp1, 
closed_tempfile(".py", python.format(2)) as temp2:
+            os.chmod(temp2, 0o755)
+
+            with closed_tempfile(".lua", lua.format(3)) as temp3, 
closed_tempfile(".py", python.format(4)) as temp4:
+                os.chmod(temp4, 0o755)
+
+                output = pypandoc.convert_text(
+                    markdown_source, to="html", format="md", outputfile=None, 
filters=[temp1, temp2, temp3, temp4]
+                ).strip()
+                expected = "<p>-0-1-2-3-4-</p>"
+                self.assertEquals(output, expected)
+
+                output = pypandoc.convert_text(
+                    markdown_source, to="html", format="md", outputfile=None, 
filters=[temp3, temp1, temp4, temp2]
+                ).strip()
+                expected = "<p>-0-3-1-4-2-</p>"
+                self.assertEquals(output, expected)
+
+    def test_classify_pandoc_logging(self):
+        
+        test = ("[WARNING] This is some message on\ntwo lines\n"
+                "[ERROR] This is a second message.")
+        
+        expected_levels = [30, 40]
+        expected_msgs = ["This is some message on\ntwo lines",
+                         "This is a second message."]
+        
+        for i, (l, m) in enumerate(pypandoc._classify_pandoc_logging(test)):
+            self.assertEqual(expected_levels[i], l)
+            self.assertEqual(expected_msgs[i], m)
+
+
+    def test_classify_pandoc_logging_default(self):
+        
+        test = ("This is some message on\ntwo lines\n"
+                "[ERROR] This is a second message.")
+        expected_levels = [30, 40]
+        expected_msgs = ["This is some message on\ntwo lines",
+                         "This is a second message."]
+        
+        for i, (l, m) in enumerate(pypandoc._classify_pandoc_logging(test)):
+            self.assertEqual(expected_levels[i], l)
+            self.assertEqual(expected_msgs[i], m)
+
+
+    def test_classify_pandoc_logging_invalid_level(self):
+        
+        test = ("[WARN] This is some message on\ntwo lines\n"
+                "[ERR] This is a second message.\n"
+                "[ERROR] This is a third message.")
+        expected_levels = [30, 30, 40]
+        expected_msgs = ["This is some message on\ntwo lines",
+                         "This is a second message.",
+                         "This is a third message."]
+        
+        for i, (l, m) in enumerate(pypandoc._classify_pandoc_logging(test)):
+            self.assertEqual(expected_levels[i], l)
+            self.assertEqual(expected_msgs[i], m)
+
+
+    def test_conversion_stderr(self):
+        
+        # Clear logger handlers
+        logger = logging.getLogger("pypandoc")
+        logger.handlers = []
+        
+        with closed_tempfile('.docx') as file_name:
+            text = ('![Mock](missing.png)\n'
+                    '![Mock](missing.png)\n')
+            with capture(pypandoc.convert_text,
+                         text,
+                         to='docx',
+                         format='md',
+                         outputfile=file_name) as output:
+                output = re.sub(r'\r', '', output)
+                output = output.replace("'missing.png'",
+                                        "missing.png")
+                output = output.lower()
+                print(output)
+                assert "[warning] could not fetch resource missing.png" in 
output
+
+    def test_conversion_stderr_nullhandler(self):
+        
+        # Replace any logging handlers with a null handler
+        logger = logging.getLogger("pypandoc")
+        logger.handlers = [logging.NullHandler()]
+        
+        with closed_tempfile('.docx') as file_name:
+            text = ('![Mock](missing.png)\n'
+                    '![Mock](missing.png)\n')
+            with capture(pypandoc.convert_text,
+                         text,
+                         to='docx',
+                         format='md',
+                         outputfile=file_name) as output:
+                self.assertFalse(output)
+
+
     def test_conversion_error(self):
         # pandoc dies on wrong commandline arguments
         def f():
@@ -339,9 +574,9 @@
         # no extensions allowed
         with closed_tempfile('.pdf') as file_name:
             def f():
-                pypandoc.convert_text('# some title\n', to='pdf+somethign', 
format='md', outputfile=file_name)
+                pypandoc.convert_text('# some title\n', to='pdf+something', 
format='md', outputfile=file_name)
 
-            with self.assertRaisesRegex(RuntimeError, r"PDF output can't 
contain any extensions: pdf\+somethign"):
+            with self.assertRaisesRegex(RuntimeError, r"PDF output can't 
contain any extensions: pdf\+something"):
                 f()
 
     def test_get_pandoc_path(self):
@@ -372,17 +607,49 @@
             received = pypandoc.convert_file(file_name, 'rst', format='md')
             self.assertTrue("title" in received)
 
-    def test_depreaction_warnings(self):
-        # convert itself is deprecated...
-        with assert_produces_warning(DeprecationWarning):
-            pypandoc.convert('# some title\n', to='rst', format='md')
-
     def create_sample_lua(self):
         args = [pypandoc.get_pandoc_path(), '--print-default-data-file', 
'sample.lua']
         p = subprocess.Popen(args, stdout=subprocess.PIPE)
         out, err = p.communicate()
         return out.decode('utf-8')
 
+    def test_basic_conversion_from_file_pathlib(self):
+        with closed_tempfile('.md', text='# some title\n') as file_name:
+            expected = u'some title{0}=========={0}{0}'.format(os.linesep)
+            received_from_str_filename_input = 
pypandoc.convert_file(file_name, 'rst')
+            received_from_path_filename_input = 
pypandoc.convert_file(Path(file_name), 'rst')
+            self.assertEqualExceptForNewlineEnd(expected, 
received_from_str_filename_input)
+            self.assertEqualExceptForNewlineEnd(expected, 
received_from_path_filename_input)
+
+    def test_basic_conversion_from_multiple_files_pathlib(self):
+        with closed_tempfile('.md', text='some title') as file_name1:
+            with closed_tempfile('.md', text='some title') as file_name2:
+                expected = '<p>some title</p>\n<p>some title</p>'
+                received_from_str_filename_input = 
pypandoc.convert_file([file_name1, file_name2], 'html')
+                received_from_path_filename_input = 
pypandoc.convert_file([Path(file_name1), Path(file_name2)], 'html')
+                self.assertEqualExceptForNewlineEnd(expected, 
received_from_str_filename_input)
+                self.assertEqualExceptForNewlineEnd(expected, 
received_from_path_filename_input)
+
+    def test_basic_conversion_from_file_pattern_pathlib_glob(self):
+        received_from_str_filename_input = pypandoc.convert_file("./*.md", 
'html').lower()
+        received_from_path_filename_input = 
pypandoc.convert_file(Path(".").glob("*.md"), 'html').lower()
+        assert received_from_str_filename_input == 
received_from_path_filename_input
+
+    def 
test_basic_conversion_from_file_pattern_with_input_list_pathlib_glob(self):
+        received_from_str_filename_input = pypandoc.convert_file(["./*.md", 
"./*.md"], 'html').lower()
+        received_from_path_filename_input = 
pypandoc.convert_file([*Path(".").glob("*.md"), *Path(".").glob("*.md")],
+                                                                  
'html').lower()
+        assert received_from_str_filename_input == 
received_from_path_filename_input
+
+    def test_basic_conversion_to_pathlib_file(self):
+        with closed_tempfile('.rst', ) as file_name:
+            expected = u'some title{0}=========={0}{0}'.format(os.linesep)
+            received = pypandoc.convert_text('# some title\n', to='rst', 
format='md', outputfile=Path(file_name))
+            self.assertEqualExceptForNewlineEnd("", received)
+            with io.open(file_name) as f:
+                written = f.read()
+            self.assertEqualExceptForNewlineEnd(expected, written)
+
     def assertEqualExceptForNewlineEnd(self, expected, received):  # noqa
         # output written to a file does not seem to have os.linesep
         # handle everything here by replacing the os linesep by a simple \n

Reply via email to