Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-pyinstaller-hooks-contrib for 
openSUSE:Factory checked in at 2026-04-26 21:11:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pyinstaller-hooks-contrib (Old)
 and      
/work/SRC/openSUSE:Factory/.python-pyinstaller-hooks-contrib.new.11940 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pyinstaller-hooks-contrib"

Sun Apr 26 21:11:25 2026 rev:13 rq:1349263 version:2026.4

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-pyinstaller-hooks-contrib/python-pyinstaller-hooks-contrib.changes
        2026-03-19 17:41:42.912593428 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-pyinstaller-hooks-contrib.new.11940/python-pyinstaller-hooks-contrib.changes
     2026-04-26 21:14:02.916126751 +0200
@@ -1,0 +2,6 @@
+Sat Apr 25 17:42:51 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 2026.4:
+  * Add a hook for imagingcontrol4, which loads dynamic libraries.
+
+-------------------------------------------------------------------

Old:
----
  pyinstaller_hooks_contrib-2026.3.tar.gz

New:
----
  pyinstaller_hooks_contrib-2026.4.tar.gz

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

Other differences:
------------------
++++++ python-pyinstaller-hooks-contrib.spec ++++++
--- /var/tmp/diff_new_pack.5TkF1E/_old  2026-04-26 21:14:03.412147017 +0200
+++ /var/tmp/diff_new_pack.5TkF1E/_new  2026-04-26 21:14:03.412147017 +0200
@@ -26,7 +26,7 @@
 %endif
 %{?sle15_python_module_pythons}
 Name:           python-pyinstaller-hooks-contrib%{psuffix}
-Version:        2026.3
+Version:        2026.4
 Release:        0
 Summary:        Community maintained hooks for PyInstaller
 License:        Apache-2.0 OR GPL-2.0-only

++++++ pyinstaller_hooks_contrib-2026.3.tar.gz -> 
pyinstaller_hooks_contrib-2026.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyinstaller_hooks_contrib-2026.3/PKG-INFO 
new/pyinstaller_hooks_contrib-2026.4/PKG-INFO
--- old/pyinstaller_hooks_contrib-2026.3/PKG-INFO       2026-03-09 
23:44:02.678322000 +0100
+++ new/pyinstaller_hooks_contrib-2026.4/PKG-INFO       2026-03-31 
16:10:46.997615800 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: pyinstaller-hooks-contrib
-Version: 2026.3
+Version: 2026.4
 Summary: Community maintained hooks for PyInstaller
 Home-page: https://github.com/pyinstaller/pyinstaller-hooks-contrib
 Download-URL: https://pypi.org/project/pyinstaller-hooks-contrib
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/__init__.py 
new/pyinstaller_hooks_contrib-2026.4/_pyinstaller_hooks_contrib/__init__.py
--- old/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/__init__.py 
2026-03-09 23:44:02.000000000 +0100
+++ new/pyinstaller_hooks_contrib-2026.4/_pyinstaller_hooks_contrib/__init__.py 
2026-03-31 16:10:46.000000000 +0200
@@ -12,7 +12,7 @@
 
 import sys
 
-__version__ = '2026.3'
+__version__ = '2026.4'
 __maintainer__ = 'Legorooj, bwoodsend'
 __uri__ = 'https://github.com/pyinstaller/pyinstaller-hooks-contrib'
 
Binary files 
old/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/__pycache__/__init__.cpython-314.pyc
 and 
new/pyinstaller_hooks_contrib-2026.4/_pyinstaller_hooks_contrib/__pycache__/__init__.cpython-314.pyc
 differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/stdhooks/hook-chardet.py
 
new/pyinstaller_hooks_contrib-2026.4/_pyinstaller_hooks_contrib/stdhooks/hook-chardet.py
--- 
old/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/stdhooks/hook-chardet.py
    2026-03-09 23:43:50.000000000 +0100
+++ 
new/pyinstaller_hooks_contrib-2026.4/_pyinstaller_hooks_contrib/stdhooks/hook-chardet.py
    2026-03-31 16:10:38.000000000 +0200
@@ -12,10 +12,20 @@
 
 from PyInstaller.utils.hooks import is_module_satisfies
 
+hiddenimports = []
+datas = []
+
 # Starting with v7.0.0, we need to collect mypy extension, and the data files 
from chardet/models
 if is_module_satisfies("chardet >= 7.0.0"):
     from PyInstaller.utils.hooks import collect_data_files
     from _pyinstaller_hooks_contrib.utils.mypy import 
find_mypyc_module_for_dist
 
-    hiddenimports = find_mypyc_module_for_dist('chardet')
-    datas = collect_data_files('chardet')
+    hiddenimports += find_mypyc_module_for_dist('chardet')
+    datas += collect_data_files('chardet')
+
+# In the Windows PyPI wheel of chardet v7.4.0post2, the extensions in 
`chardet.pipeline` seem to come with individual
+# `__mypyc` counterparts (for example the `chardet.pipeline.orchestrator` 
extension references a corresponding
+# `chardet.pipeline.orchestrator__mypyc` extension). Ensure all these are 
collected by collecting submodules.
+if is_module_satisfies("chardet >= 7.4.0"):
+    from PyInstaller.utils.hooks import collect_submodules
+    hiddenimports += collect_submodules('chardet.pipeline')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/stdhooks/hook-imagingcontrol4.py
 
new/pyinstaller_hooks_contrib-2026.4/_pyinstaller_hooks_contrib/stdhooks/hook-imagingcontrol4.py
--- 
old/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/stdhooks/hook-imagingcontrol4.py
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/pyinstaller_hooks_contrib-2026.4/_pyinstaller_hooks_contrib/stdhooks/hook-imagingcontrol4.py
    2026-03-31 16:10:38.000000000 +0200
@@ -0,0 +1,15 @@
+# ------------------------------------------------------------------
+# Copyright (c) 2026 PyInstaller Development Team.
+#
+# This file is distributed under the terms of the GNU General Public
+# License (version 2.0 or later).
+#
+# The full license is available in LICENSE, distributed with
+# this software.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+# ------------------------------------------------------------------
+
+from PyInstaller.utils.hooks import collect_dynamic_libs
+
+binaries = collect_dynamic_libs("imagingcontrol4")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/stdhooks/hook-weasyprint.py
 
new/pyinstaller_hooks_contrib-2026.4/_pyinstaller_hooks_contrib/stdhooks/hook-weasyprint.py
--- 
old/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/stdhooks/hook-weasyprint.py
 2026-03-09 23:43:51.000000000 +0100
+++ 
new/pyinstaller_hooks_contrib-2026.4/_pyinstaller_hooks_contrib/stdhooks/hook-weasyprint.py
 2026-03-31 16:10:38.000000000 +0200
@@ -28,7 +28,7 @@
 
 from PyInstaller.compat import is_win
 from PyInstaller.depend.utils import _resolveCtypesImports
-from PyInstaller.utils.hooks import collect_data_files, logger
+from PyInstaller.utils.hooks import collect_data_files, is_module_satisfies, 
logger
 
 datas = collect_data_files('weasyprint')
 binaries = []
@@ -47,6 +47,14 @@
     'pangoft2-1.0-0', 'pangoft2-1.0', 'libpangoft2-1.0-0', 
'libpangoft2-1.0.so.0', 'libpangoft2-1.0.dylib'
 ]
 
+# Starting with weasyprint v63.0, libharfbuzz-subset is also opportunistically 
loaded. Make sure to collect a copy, if
+# available, to prevent a system copy from being loaded at run-time.
+if is_module_satisfies("weasyprint >= 63.0"):
+    libs += [
+        'harfbuzz-subset', 'harfbuzz-subset-0.0', 'libharfbuzz-subset-0', 
'libharfbuzz-subset.so.0',
+        'libharfbuzz-subset.0.dylib', 'libharfbuzz-subset-0.dll',
+    ]
+
 try:
     lib_basenames = []
     for lib in libs:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pyinstaller_hooks_contrib-2026.3/pyinstaller_hooks_contrib.egg-info/PKG-INFO
 
new/pyinstaller_hooks_contrib-2026.4/pyinstaller_hooks_contrib.egg-info/PKG-INFO
--- 
old/pyinstaller_hooks_contrib-2026.3/pyinstaller_hooks_contrib.egg-info/PKG-INFO
    2026-03-09 23:44:02.000000000 +0100
+++ 
new/pyinstaller_hooks_contrib-2026.4/pyinstaller_hooks_contrib.egg-info/PKG-INFO
    2026-03-31 16:10:46.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: pyinstaller-hooks-contrib
-Version: 2026.3
+Version: 2026.4
 Summary: Community maintained hooks for PyInstaller
 Home-page: https://github.com/pyinstaller/pyinstaller-hooks-contrib
 Download-URL: https://pypi.org/project/pyinstaller-hooks-contrib
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pyinstaller_hooks_contrib-2026.3/pyinstaller_hooks_contrib.egg-info/SOURCES.txt
 
new/pyinstaller_hooks_contrib-2026.4/pyinstaller_hooks_contrib.egg-info/SOURCES.txt
--- 
old/pyinstaller_hooks_contrib-2026.3/pyinstaller_hooks_contrib.egg-info/SOURCES.txt
 2026-03-09 23:44:02.000000000 +0100
+++ 
new/pyinstaller_hooks_contrib-2026.4/pyinstaller_hooks_contrib.egg-info/SOURCES.txt
 2026-03-31 16:10:46.000000000 +0200
@@ -198,6 +198,7 @@
 _pyinstaller_hooks_contrib/stdhooks/hook-ijson.py
 _pyinstaller_hooks_contrib/stdhooks/hook-imageio.py
 _pyinstaller_hooks_contrib/stdhooks/hook-imageio_ffmpeg.py
+_pyinstaller_hooks_contrib/stdhooks/hook-imagingcontrol4.py
 _pyinstaller_hooks_contrib/stdhooks/hook-iminuit.py
 _pyinstaller_hooks_contrib/stdhooks/hook-intake.py
 _pyinstaller_hooks_contrib/stdhooks/hook-iso639.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pyinstaller_hooks_contrib-2026.3/tests/test_libraries.py 
new/pyinstaller_hooks_contrib-2026.4/tests/test_libraries.py
--- old/pyinstaller_hooks_contrib-2026.3/tests/test_libraries.py        
2026-03-09 23:43:51.000000000 +0100
+++ new/pyinstaller_hooks_contrib-2026.4/tests/test_libraries.py        
2026-03-31 16:10:38.000000000 +0200
@@ -3260,15 +3260,58 @@
 
 
 @importorskip("chardet")
-def test_chardet(pyi_builder):
-    pyi_builder.test_source("""
+def test_chardet(pyi_builder, tmp_path):
+    # Test string from:  
https://chardet.readthedocs.io/en/7.0.1/usage.html#basic-detection
+    # The output of earlier versions of chardet (i.e., 5.2.0 that Debian and 
Fedora are packaging at the time of
+    # writing) does not match that of later versions. Therefore, we compare 
output of frozen test application to output
+    # of unfrozen chardet, rather than against fixed expected output.
+    import json
+
+    test_string = "München ist die Hauptstadt Bayerns und eine der schönsten 
Städte Deutschlands."
+    test_encoding = "windows-1252"
+
+    output_file = tmp_path / "output.json"
+
+    pyi_builder.test_source(f"""
+        import sys
+        import json
+
         import chardet
 
         # https://chardet.readthedocs.io/en/7.0.1/usage.html#basic-detection
         result = chardet.detect(
-            "München ist die Hauptstadt Bayerns und eine der schönsten Städte 
Deutschlands.".encode("windows-1252")
+            {test_string!r}.encode({test_encoding!r})
         )
         print(result)
-        assert result['encoding'].lower() == "windows-1252"
-        assert result['language'].lower() in {'de', 'german'}
-    """)
+
+        with open(sys.argv[1], 'w', encoding='utf-8') as fp:
+            json.dump(result, fp)
+    """, app_args=[str(output_file)])
+
+    with open(output_file, "r", encoding="utf-8") as fp:
+        frozen_output = json.load(fp)
+
+    # Get unfrozen (reference) output
+    @isolated.decorate
+    def _get_unfrozen_output(test_string, test_encoding):
+        import json
+        import chardet
+        result = chardet.detect(test_string.encode(test_encoding))
+        return json.dumps(result)
+
+    unfrozen_output = json.loads(_get_unfrozen_output(test_string, 
test_encoding))
+
+    print(f"Frozen output: {frozen_output}")
+    print(f"Unfrozen output: {unfrozen_output}")
+
+    assert frozen_output == unfrozen_output
+
+
+@importorskip("imagingcontrol4")
+def test_imagingcontrol4(pyi_builder):
+    pyi_builder.test_source("""
+        from imagingcontrol4.library import Library
+
+        # Will cause the library to load the dynamic libraries (and fail if 
they are not present)
+        Library.init()
+""")

Reply via email to