Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-pymediainfo for 
openSUSE:Factory checked in at 2021-05-02 18:36:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pymediainfo (Old)
 and      /work/SRC/openSUSE:Factory/.python-pymediainfo.new.1947 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pymediainfo"

Sun May  2 18:36:13 2021 rev:12 rq:889798 version:5.1.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pymediainfo/python-pymediainfo.changes    
2021-04-12 12:40:12.985568189 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-pymediainfo.new.1947/python-pymediainfo.changes
  2021-05-02 18:39:22.444114827 +0200
@@ -1,0 +2,6 @@
+Sun May  2 08:09:58 UTC 2021 - Luigi Baldoni <[email protected]>
+
+- Update to version 5.1.0
+  * Improve errors when libmediainfo can't be loaded
+
+-------------------------------------------------------------------

Old:
----
  pymediainfo-5.0.4.tar.gz

New:
----
  pymediainfo-5.1.0.tar.gz

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

Other differences:
------------------
++++++ python-pymediainfo.spec ++++++
--- /var/tmp/diff_new_pack.uoBusC/_old  2021-05-02 18:39:22.888112935 +0200
+++ /var/tmp/diff_new_pack.uoBusC/_new  2021-05-02 18:39:22.888112935 +0200
@@ -18,7 +18,7 @@
 
 %define skip_python2 1
 Name:           python-pymediainfo
-Version:        5.0.4
+Version:        5.1.0
 Release:        0
 Summary:        Python wrapper for the mediainfo library
 License:        MIT

++++++ pymediainfo-5.0.4.tar.gz -> pymediainfo-5.1.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymediainfo-5.0.4/PKG-INFO 
new/pymediainfo-5.1.0/PKG-INFO
--- old/pymediainfo-5.0.4/PKG-INFO      2021-04-11 15:07:27.006634700 +0200
+++ new/pymediainfo-5.1.0/PKG-INFO      2021-05-02 00:11:44.578204400 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: pymediainfo
-Version: 5.0.4
+Version: 5.1.0
 Summary: A Python wrapper for the mediainfo library.
 Home-page: https://github.com/sbraz/pymediainfo
 Author: Louis Sautier
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymediainfo-5.0.4/appveyor.yml 
new/pymediainfo-5.1.0/appveyor.yml
--- old/pymediainfo-5.0.4/appveyor.yml  2021-04-11 15:07:11.000000000 +0200
+++ new/pymediainfo-5.1.0/appveyor.yml  2021-05-02 00:11:29.000000000 +0200
@@ -4,7 +4,7 @@
 environment:
   # Work around https://github.com/tox-dev/tox/issues/1550
   PYTHONIOENCODING: utf-8
-  MEDIAINFO_VERSION: 20.09
+  MEDIAINFO_VERSION: 21.03
   TWINE_PASSWORD:
     secure: /EO8CxTxhQVNsGNZZvU51jjHwPW524rgddNlwOAyLoA=
   matrix:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymediainfo-5.0.4/pymediainfo/__init__.py 
new/pymediainfo-5.1.0/pymediainfo/__init__.py
--- old/pymediainfo-5.0.4/pymediainfo/__init__.py       2021-04-11 
15:07:11.000000000 +0200
+++ new/pymediainfo-5.1.0/pymediainfo/__init__.py       2021-05-02 
00:11:29.000000000 +0200
@@ -276,9 +276,26 @@
         lib.MediaInfo_Close.argtypes = [ctypes.c_void_p]
         lib.MediaInfo_Close.restype = None
 
+    @staticmethod
+    def _get_library_paths(os_is_nt: bool) -> Tuple[str]:
+        if os_is_nt:
+            library_paths = ("MediaInfo.dll",)
+        elif sys.platform == "darwin":
+            library_paths = ("libmediainfo.0.dylib", "libmediainfo.dylib")
+        else:
+            library_paths = ("libmediainfo.so.0",)
+        script_dir = os.path.dirname(__file__)
+        # Look for the library file in the script folder
+        for library in library_paths:
+            absolute_library_path = os.path.join(script_dir, library)
+            if os.path.isfile(absolute_library_path):
+                # If we find it, don't try any other filename
+                library_paths = (absolute_library_path,)
+                break
+        return library_paths
+
     @classmethod
     def _get_library(
-        # pylint: disable=too-many-branches
         cls,
         library_file: Optional[str] = None,
     ) -> Tuple[Any, Any, str, Tuple[int, ...]]:
@@ -288,25 +305,13 @@
         else:
             lib_type = ctypes.CDLL
         if library_file is None:
-            if os_is_nt:
-                library_names = ("MediaInfo.dll",)
-            elif sys.platform == "darwin":
-                library_names = ("libmediainfo.0.dylib", "libmediainfo.dylib")
-            else:
-                library_names = ("libmediainfo.so.0",)
-            script_dir = os.path.dirname(__file__)
-            # Look for the library file in the script folder
-            for library in library_names:
-                lib_path = os.path.join(script_dir, library)
-                if os.path.isfile(lib_path):
-                    # If we find it, don't try any other filename
-                    library_names = (lib_path,)
-                    break
+            library_paths = cls._get_library_paths(os_is_nt)
         else:
-            library_names = (library_file,)
-        for library in library_names:
+            library_paths = (library_file,)
+        exceptions = []
+        for library_path in library_paths:
             try:
-                lib = lib_type(library)
+                lib = lib_type(library_path)
                 cls._define_library_prototypes(lib)
                 # Without a handle, there might be problems when using 
concurrent threads
                 # 
https://github.com/sbraz/pymediainfo/issues/76#issuecomment-574759621
@@ -319,9 +324,13 @@
                 else:
                     raise RuntimeError("Could not determine library version")
                 return (lib, handle, lib_version_str, lib_version)
-            except OSError:
-                pass
-        raise OSError("Failed to load library")
+            except OSError as exc:
+                exceptions.append(str(exc))
+        raise OSError(
+            "Failed to load library from {} - {}".format(
+                ", ".join(library_paths), ", ".join(exceptions)
+            )
+        )
 
     @classmethod
     def can_parse(cls, library_file: Optional[str] = None) -> bool:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymediainfo-5.0.4/pymediainfo.egg-info/PKG-INFO 
new/pymediainfo-5.1.0/pymediainfo.egg-info/PKG-INFO
--- old/pymediainfo-5.0.4/pymediainfo.egg-info/PKG-INFO 2021-04-11 
15:07:26.000000000 +0200
+++ new/pymediainfo-5.1.0/pymediainfo.egg-info/PKG-INFO 2021-05-02 
00:11:44.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: pymediainfo
-Version: 5.0.4
+Version: 5.1.0
 Summary: A Python wrapper for the mediainfo library.
 Home-page: https://github.com/sbraz/pymediainfo
 Author: Louis Sautier
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymediainfo-5.0.4/tests/test_pymediainfo.py 
new/pymediainfo-5.1.0/tests/test_pymediainfo.py
--- old/pymediainfo-5.0.4/tests/test_pymediainfo.py     2021-04-11 
15:07:11.000000000 +0200
+++ new/pymediainfo-5.1.0/tests/test_pymediainfo.py     2021-05-02 
00:11:29.000000000 +0200
@@ -5,6 +5,7 @@
 import os
 import pathlib
 import pickle
+import tempfile
 import threading
 import unittest
 import xml
@@ -113,6 +114,15 @@
         self.assertEqual(self.media_info.tracks[0].footersize, "59")
         self.assertEqual(self.non_full_mi.tracks[0].footersize, None)
 
+    def test_raises_on_nonexistent_library(self):  # pylint: 
disable=no-self-use
+        with tempfile.TemporaryDirectory() as tmp_dir:
+            nonexistent_library = os.path.join(tmp_dir, 
"nonexistent-libmediainfo.so")
+            with pytest.raises(OSError) as exc:
+                MediaInfo.parse(
+                    os.path.join(data_dir, "sample.mp4"), 
library_file=nonexistent_library
+                )
+            assert rf"Failed to load library from {nonexistent_library}" in 
str(exc.value)
+
 
 class MediaInfoFileLikeTest(unittest.TestCase):
     def test_can_parse(self):  # pylint: disable=no-self-use

Reply via email to