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-03-19 17:39:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pyinstaller-hooks-contrib (Old)
and /work/SRC/openSUSE:Factory/.python-pyinstaller-hooks-contrib.new.8177
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pyinstaller-hooks-contrib"
Thu Mar 19 17:39:55 2026 rev:12 rq:1341098 version:2026.3
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-pyinstaller-hooks-contrib/python-pyinstaller-hooks-contrib.changes
2026-01-27 16:17:57.068086194 +0100
+++
/work/SRC/openSUSE:Factory/.python-pyinstaller-hooks-contrib.new.8177/python-pyinstaller-hooks-contrib.changes
2026-03-19 17:41:42.912593428 +0100
@@ -1,0 +2,16 @@
+Thu Mar 12 08:30:25 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 2026.3:
+ * Add hook for chardet, required for compatibility with chardet
+ v7.0.0 and later. (#995)
+ * Update charset_normalizer hook for compatibility with
+ charset-normalizer v3.4.5. (#995)
+ * Update psutil hook for compatibility with psutil installed
+ in a Termux environment with python 3.13 or later. (#996)
+ * Add hook for adbc_driver_manager package. (#990)
+ * Add hook for rich to ensure that modules from
+ rich._unicode_data are collected for rich v14.3.0 and later.
+ * Update langchain hook for compatibility with langchain 1.2.10.
+ * Update vtkmodules hooks for compatibility with vtk 9.6.0.
+
+-------------------------------------------------------------------
Old:
----
pyinstaller_hooks_contrib-2026.0.tar.gz
New:
----
pyinstaller_hooks_contrib-2026.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pyinstaller-hooks-contrib.spec ++++++
--- /var/tmp/diff_new_pack.M9hDyj/_old 2026-03-19 17:41:43.512618286 +0100
+++ /var/tmp/diff_new_pack.M9hDyj/_new 2026-03-19 17:41:43.512618286 +0100
@@ -26,7 +26,7 @@
%endif
%{?sle15_python_module_pythons}
Name: python-pyinstaller-hooks-contrib%{psuffix}
-Version: 2026.0
+Version: 2026.3
Release: 0
Summary: Community maintained hooks for PyInstaller
License: Apache-2.0 OR GPL-2.0-only
++++++ pyinstaller_hooks_contrib-2026.0.tar.gz ->
pyinstaller_hooks_contrib-2026.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyinstaller_hooks_contrib-2026.0/PKG-INFO
new/pyinstaller_hooks_contrib-2026.3/PKG-INFO
--- old/pyinstaller_hooks_contrib-2026.0/PKG-INFO 2026-01-20
01:15:20.164183600 +0100
+++ new/pyinstaller_hooks_contrib-2026.3/PKG-INFO 2026-03-09
23:44:02.678322000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: pyinstaller-hooks-contrib
-Version: 2026.0
+Version: 2026.3
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.0/_pyinstaller_hooks_contrib/__init__.py
new/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/__init__.py
--- old/pyinstaller_hooks_contrib-2026.0/_pyinstaller_hooks_contrib/__init__.py
2026-01-20 01:15:19.000000000 +0100
+++ new/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/__init__.py
2026-03-09 23:44:02.000000000 +0100
@@ -12,7 +12,7 @@
import sys
-__version__ = '2026.0'
+__version__ = '2026.3'
__maintainer__ = 'Legorooj, bwoodsend'
__uri__ = 'https://github.com/pyinstaller/pyinstaller-hooks-contrib'
Binary files
old/pyinstaller_hooks_contrib-2026.0/_pyinstaller_hooks_contrib/__pycache__/__init__.cpython-314.pyc
and
new/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/__pycache__/__init__.cpython-314.pyc
differ
Binary files
old/pyinstaller_hooks_contrib-2026.0/_pyinstaller_hooks_contrib/__pycache__/__init__.cpython-39.pyc
and
new/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/__pycache__/__init__.cpython-39.pyc
differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyinstaller_hooks_contrib-2026.0/_pyinstaller_hooks_contrib/stdhooks/hook-adbc_driver_manager.py
new/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/stdhooks/hook-adbc_driver_manager.py
---
old/pyinstaller_hooks_contrib-2026.0/_pyinstaller_hooks_contrib/stdhooks/hook-adbc_driver_manager.py
1970-01-01 01:00:00.000000000 +0100
+++
new/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/stdhooks/hook-adbc_driver_manager.py
2026-03-09 23:43:50.000000000 +0100
@@ -0,0 +1,17 @@
+# ------------------------------------------------------------------
+# 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
+# ------------------------------------------------------------------
+
+
+hiddenimports = ['adbc_driver_manager._static_version']
+module_collection_mode = {
+ 'adbc_driver_manager._static_version': 'py',
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyinstaller_hooks_contrib-2026.0/_pyinstaller_hooks_contrib/stdhooks/hook-chardet.py
new/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/stdhooks/hook-chardet.py
---
old/pyinstaller_hooks_contrib-2026.0/_pyinstaller_hooks_contrib/stdhooks/hook-chardet.py
1970-01-01 01:00:00.000000000 +0100
+++
new/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/stdhooks/hook-chardet.py
2026-03-09 23:43:50.000000000 +0100
@@ -0,0 +1,21 @@
+# ------------------------------------------------------------------
+# 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 is_module_satisfies
+
+# 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')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyinstaller_hooks_contrib-2026.0/_pyinstaller_hooks_contrib/stdhooks/hook-charset_normalizer.py
new/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/stdhooks/hook-charset_normalizer.py
---
old/pyinstaller_hooks_contrib-2026.0/_pyinstaller_hooks_contrib/stdhooks/hook-charset_normalizer.py
2026-01-20 01:15:04.000000000 +0100
+++
new/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/stdhooks/hook-charset_normalizer.py
2026-03-09 23:43:50.000000000 +0100
@@ -12,5 +12,8 @@
from PyInstaller.utils.hooks import is_module_satisfies
-if is_module_satisfies("charset_normalizer >= 3.0.1"):
+if is_module_satisfies("charset_normalizer >= 3.4.5"):
+ from _pyinstaller_hooks_contrib.utils.mypy import
find_mypyc_module_for_dist
+ hiddenimports = find_mypyc_module_for_dist('charset_normalizer')
+elif is_module_satisfies("charset_normalizer >= 3.0.1"):
hiddenimports = ["charset_normalizer.md__mypyc"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyinstaller_hooks_contrib-2026.0/_pyinstaller_hooks_contrib/stdhooks/hook-langchain.py
new/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/stdhooks/hook-langchain.py
---
old/pyinstaller_hooks_contrib-2026.0/_pyinstaller_hooks_contrib/stdhooks/hook-langchain.py
2026-01-20 01:15:04.000000000 +0100
+++
new/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/stdhooks/hook-langchain.py
2026-03-09 23:43:50.000000000 +0100
@@ -24,22 +24,30 @@
from PyInstaller import isolated
@isolated.decorate
- def get_optional_packages():
+ def get_optional_packages(var_name):
packages = set()
try:
- from langchain.chat_models.base import _SUPPORTED_PROVIDERS
- packages.update(package_name for package_name, *_ in
_SUPPORTED_PROVIDERS.values())
+ import langchain.chat_models.base
+ providers = getattr(langchain.chat_models.base, var_name)
+ packages.update(package_name for package_name, *_ in
providers.values())
except Exception:
pass
try:
- from langchain.embeddings.base import _SUPPORTED_PROVIDERS
- packages.update(package_name for package_name, *_ in
_SUPPORTED_PROVIDERS.values())
+ import langchain.embeddings.base
+ providers = getattr(langchain.embeddings.base, var_name)
+ packages.update(package_name for package_name, *_ in
providers.values())
except Exception:
pass
return sorted(packages)
- hiddenimports = get_optional_packages()
+ # langchain 1.2.10 renamed the `_SUPPORTED_PROVIDERS` into
`_BUILTIN_PROVIDERS`.
+ if is_module_satisfies('langchain >= 1.2.10'):
+ var_name = '_BUILTIN_PROVIDERS'
+ else:
+ var_name = '_SUPPORTED_PROVIDERS'
+
+ hiddenimports = get_optional_packages(var_name)
warn_on_missing_hiddenimports = False
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyinstaller_hooks_contrib-2026.0/_pyinstaller_hooks_contrib/stdhooks/hook-psutil.py
new/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/stdhooks/hook-psutil.py
---
old/pyinstaller_hooks_contrib-2026.0/_pyinstaller_hooks_contrib/stdhooks/hook-psutil.py
2026-01-20 01:15:04.000000000 +0100
+++
new/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/stdhooks/hook-psutil.py
2026-03-09 23:43:50.000000000 +0100
@@ -14,7 +14,7 @@
# see
https://github.com/giampaolo/psutil/blob/release-5.9.5/psutil/_common.py#L82
WINDOWS = os.name == "nt"
-LINUX = sys.platform.startswith("linux")
+LINUX = sys.platform.startswith(("linux", "android"))
MACOS = sys.platform.startswith("darwin")
FREEBSD = sys.platform.startswith(("freebsd", "midnightbsd"))
OPENBSD = sys.platform.startswith("openbsd")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyinstaller_hooks_contrib-2026.0/_pyinstaller_hooks_contrib/stdhooks/hook-rich.py
new/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/stdhooks/hook-rich.py
---
old/pyinstaller_hooks_contrib-2026.0/_pyinstaller_hooks_contrib/stdhooks/hook-rich.py
1970-01-01 01:00:00.000000000 +0100
+++
new/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/stdhooks/hook-rich.py
2026-03-09 23:43:50.000000000 +0100
@@ -0,0 +1,17 @@
+# ------------------------------------------------------------------
+# 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_submodules, is_module_satisfies
+
+# Starting with v14.3.0, we need to collect modules from `rich._unicode_data`.
+if is_module_satisfies('rich >= 14.3.0'):
+ hiddenimports = collect_submodules('rich._unicode_data')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyinstaller_hooks_contrib-2026.0/_pyinstaller_hooks_contrib/utils/vtkmodules.py
new/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/utils/vtkmodules.py
---
old/pyinstaller_hooks_contrib-2026.0/_pyinstaller_hooks_contrib/utils/vtkmodules.py
2026-01-20 01:15:04.000000000 +0100
+++
new/pyinstaller_hooks_contrib-2026.3/_pyinstaller_hooks_contrib/utils/vtkmodules.py
2026-03-09 23:43:51.000000000 +0100
@@ -1,5 +1,14 @@
import os
+from _pyinstaller_hooks_contrib.compat import importlib_metadata
+import packaging.version
+
+try:
+ vtk_version =
packaging.version.Version(importlib_metadata.version('vtk')).release
+except Exception:
+ vtk_version = None
+
+
# This list of dependencies was obtained via analysis based on code in
`vtkmodules/generate_pyi.py` and augmented with
# missing entries until all tests from `test_vtkmodules` pass. Instead of a
pre-computed list, we could dynamically
# analyze each module when the hook is executed; however, such approach would
be slower, and would also not account
@@ -592,6 +601,15 @@
],
}
+# Additional hidden imports for vtk 9.6.0
+if vtk_version is not None and vtk_version >= (9, 6, 0):
+ # Additional
+ _module_dependencies['vtkmodules.vtkIOImage'] += ['vtkmodules.vtkIOCore']
+ _module_dependencies['vtkmodules.vtkViewsInfovis'] +=
['vtkmodules.vtkChartsCore']
+
+ # New
+ _module_dependencies['vtkmodules.vtkSerializationManager'] =
['vtkmodules.vtkCommonDataModel']
+
def add_vtkmodules_dependencies(hook_file):
# Find the module underlying this vtkmodules hook: change
`/path/to/hook-vtkmodules.blah.py` to `vtkmodules.blah`.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyinstaller_hooks_contrib-2026.0/pyinstaller_hooks_contrib.egg-info/PKG-INFO
new/pyinstaller_hooks_contrib-2026.3/pyinstaller_hooks_contrib.egg-info/PKG-INFO
---
old/pyinstaller_hooks_contrib-2026.0/pyinstaller_hooks_contrib.egg-info/PKG-INFO
2026-01-20 01:15:19.000000000 +0100
+++
new/pyinstaller_hooks_contrib-2026.3/pyinstaller_hooks_contrib.egg-info/PKG-INFO
2026-03-09 23:44:02.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: pyinstaller-hooks-contrib
-Version: 2026.0
+Version: 2026.3
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.0/pyinstaller_hooks_contrib.egg-info/SOURCES.txt
new/pyinstaller_hooks_contrib-2026.3/pyinstaller_hooks_contrib.egg-info/SOURCES.txt
---
old/pyinstaller_hooks_contrib-2026.0/pyinstaller_hooks_contrib.egg-info/SOURCES.txt
2026-01-20 01:15:20.000000000 +0100
+++
new/pyinstaller_hooks_contrib-2026.3/pyinstaller_hooks_contrib.egg-info/SOURCES.txt
2026-03-09 23:44:02.000000000 +0100
@@ -7,7 +7,7 @@
_pyinstaller_hooks_contrib/__init__.py
_pyinstaller_hooks_contrib/compat.py
_pyinstaller_hooks_contrib/rthooks.dat
-_pyinstaller_hooks_contrib/__pycache__/__init__.cpython-39.pyc
+_pyinstaller_hooks_contrib/__pycache__/__init__.cpython-314.pyc
_pyinstaller_hooks_contrib/pre_find_module_path/__init__.py
_pyinstaller_hooks_contrib/pre_safe_import_module/__init__.py
_pyinstaller_hooks_contrib/pre_safe_import_module/hook-tensorflow.py
@@ -41,6 +41,7 @@
_pyinstaller_hooks_contrib/stdhooks/hook-_mssql.py
_pyinstaller_hooks_contrib/stdhooks/hook-_mysql.py
_pyinstaller_hooks_contrib/stdhooks/hook-accessible_output2.py
+_pyinstaller_hooks_contrib/stdhooks/hook-adbc_driver_manager.py
_pyinstaller_hooks_contrib/stdhooks/hook-adbutils.py
_pyinstaller_hooks_contrib/stdhooks/hook-adios.py
_pyinstaller_hooks_contrib/stdhooks/hook-afmformats.py
@@ -82,6 +83,7 @@
_pyinstaller_hooks_contrib/stdhooks/hook-certifi.py
_pyinstaller_hooks_contrib/stdhooks/hook-cf_units.py
_pyinstaller_hooks_contrib/stdhooks/hook-cftime.py
+_pyinstaller_hooks_contrib/stdhooks/hook-chardet.py
_pyinstaller_hooks_contrib/stdhooks/hook-charset_normalizer.py
_pyinstaller_hooks_contrib/stdhooks/hook-cloudpickle.py
_pyinstaller_hooks_contrib/stdhooks/hook-cloudscraper.py
@@ -387,6 +389,7 @@
_pyinstaller_hooks_contrib/stdhooks/hook-reportlab.lib.utils.py
_pyinstaller_hooks_contrib/stdhooks/hook-reportlab.pdfbase._fontdata.py
_pyinstaller_hooks_contrib/stdhooks/hook-resampy.py
+_pyinstaller_hooks_contrib/stdhooks/hook-rich.py
_pyinstaller_hooks_contrib/stdhooks/hook-rlp.py
_pyinstaller_hooks_contrib/stdhooks/hook-rpy2.py
_pyinstaller_hooks_contrib/stdhooks/hook-rtree.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyinstaller_hooks_contrib-2026.0/tests/test_libraries.py
new/pyinstaller_hooks_contrib-2026.3/tests/test_libraries.py
--- old/pyinstaller_hooks_contrib-2026.0/tests/test_libraries.py
2026-01-20 01:15:04.000000000 +0100
+++ new/pyinstaller_hooks_contrib-2026.3/tests/test_libraries.py
2026-03-09 23:43:51.000000000 +0100
@@ -20,7 +20,7 @@
get_module_attribute,
is_module_satisfies,
)
-from PyInstaller.utils.tests import importorskip, requires, xfail
+from PyInstaller.utils.tests import importorskip, importable, requires, xfail
@importorskip('fiona')
@@ -1930,31 +1930,71 @@
""")
+# Ensure that the freetype shared library is bundled with the frozen
application, and that it is being used (as opposed
+# to the system copy).
@importorskip('freetype')
-def test_pyi_freetype(pyi_builder):
- pyi_builder.test_source("""
- import sys
- import pathlib
+def test_freetype(pyi_builder):
+ if (is_darwin or is_win) or not importable('psutil'):
+ # This is the original variant of the test, which we need to keep
around due to the fact that on macOS, `psutil`
+ # does not provide the `memory_maps()` function, so we cannot use it
to inspect loaded shared libraries.
+ # Therefore, we inspect the library path as indicated by the
`freetype.FT_Library_filename` variable; even if
+ # `ctypes.util.find_library()` fallback were used by `freetype` to
load the shared library (for example, when
+ # using Homebrew-installed `freetype-py` instead of PyPI wheels), on
macOS, that function resolves full library
+ # path (in contrast to other POSIX platforms, where it resolves only
the basename).
+ #
+ # On Windows, we can use either variant of the test, as
`psutil.memory_maps()` is available, and
+ # `ctypes.util.find_library()` resolves full library paths.
+ pyi_builder.test_source("""
+ import sys
+ import pathlib
- import freetype
+ import freetype
- # Ensure that the freetype shared library is bundled with the frozen
application; otherwise, freetype might be
- # using system-wide library.
+ # First, check that freetype.FT_Library_filename is an absolute
path; otherwise, it is likely using
+ # basename-only ctypes fallback.
+ ft_library_file = pathlib.Path(freetype.FT_Library_filename)
+ print(f"FT library file (original): {ft_library_file}",
file=sys.stderr)
+ assert ft_library_file.is_absolute(), "FT library file is not an
absolute path!"
+
+ # Check that fully-resolved freetype.FT_Library_filename is
anchored in fully-resolved frozen application
+ # directory.
+ app_dir = pathlib.Path(__file__).resolve().parent
+ print(f"Application directory: {app_dir}", file=sys.stderr)
+ ft_library_path = pathlib.Path(ft_library_file).resolve()
+ print(f"FT library file (resolved): {ft_library_path}",
file=sys.stderr)
+ assert app_dir in ft_library_path.parents, "FT library is not
bundled with frozen application!"
+ """)
+ else:
+ # POSIX variant of the test that uses `psutil` for inspecting loaded
shared libraries.
+ pyi_builder.test_source("""
+ import os
+ import pathlib
+ import sys
- # First, check that freetype.FT_Library_filename is an absolute path;
otherwise, it is likely using
- # basename-only ctypes fallback.
- ft_library_file = pathlib.Path(freetype.FT_Library_filename)
- print(f"FT library file (original): {ft_library_file}",
file=sys.stderr)
- assert ft_library_file.is_absolute(), "FT library file is not an
absolute path!"
-
- # Check that fully-resolved freetype.FT_Library_filename is anchored
in fully-resolved frozen application
- # directory.
- app_dir = pathlib.Path(__file__).resolve().parent
- print(f"Application directory: {app_dir}", file=sys.stderr)
- ft_library_path = pathlib.Path(ft_library_file).resolve()
- print(f"FT library file (resolved): {ft_library_path}",
file=sys.stderr)
- assert app_dir in ft_library_path.parents, "FT library is not bundled
with frozen application!"
- """)
+ import psutil
+
+ proc = psutil.Process(os.getpid())
+
+ libs_before = [pathlib.Path(lib.path) for lib in
proc.memory_maps()]
+
+ print("Importing freetype...", file=sys.stderr)
+ import freetype
+
+ libs_after = [pathlib.Path(lib.path) for lib in proc.memory_maps()]
+
+ libs_new = sorted(set(libs_after) - set(libs_before))
+ print("Shared libraries loaded during freetype import:",
file=sys.stderr)
+ for lib in libs_new:
+ print(f" * {lib}", file=sys.stderr)
+
+ libs_freetype = [lib for lib in libs_new if 'freetype' in lib.name]
+ assert len(libs_freetype) >= 1, "No library with 'freetype' in
name found!"
+
+ app_dir = pathlib.Path(__file__).parent.resolve()
+ for lib_path in libs_freetype:
+ lib_path = lib_path.resolve()
+ assert app_dir in lib_path.parents, f"{lib_path} is not rooted
in top-level application directory!"
+ """)
@importorskip('vaderSentiment')
@@ -3191,3 +3231,44 @@
pyi_builder.test_source("""
import pytokens
""")
+
+
+@importorskip("adbc_driver_manager")
+def test_adbc_driver_manager_sdk(pyi_builder):
+ pyi_builder.test_source("""
+ import adbc_driver_manager
+ """)
+
+
+@importorskip("rich")
+def test_rich_print(pyi_builder, tmp_path):
+ pyi_builder.test_source(
+ """
+ import sys
+ import rich.console
+
+ # Instead of letting Console write to stdout/stderr, force redirection
to a file. Otherwise, the test fails on
+ # Windows, where pytest's redirect of stdout/stderr for capture
purposes causes the streams to use local
+ # encoding instead of UTF-8.
+ output_file = sys.argv[1]
+ with open(output_file, 'w', encoding='utf8') as fp:
+ console = rich.console.Console(file=fp)
+ console.print(":green_circle:")
+ """,
+ app_args=[str(tmp_path / 'output.txt')],
+ )
+
+
+@importorskip("chardet")
+def test_chardet(pyi_builder):
+ pyi_builder.test_source("""
+ 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")
+ )
+ print(result)
+ assert result['encoding'].lower() == "windows-1252"
+ assert result['language'].lower() in {'de', 'german'}
+ """)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyinstaller_hooks_contrib-2026.0/tests/test_trame.py
new/pyinstaller_hooks_contrib-2026.3/tests/test_trame.py
--- old/pyinstaller_hooks_contrib-2026.0/tests/test_trame.py 2026-01-20
01:15:04.000000000 +0100
+++ new/pyinstaller_hooks_contrib-2026.3/tests/test_trame.py 2026-03-09
23:43:51.000000000 +0100
@@ -99,7 +99,7 @@
@importorskip("pyvista")
@importorskip("vtkmodules")
-@importorskip("nest_asyncio")
+@importorskip("nest_asyncio2")
@importorskip("trame_vtk")
def test_trame_vtk_tools(pyi_builder, tmp_path):
pyi_builder.test_source("""