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
