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()
+""")