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

Reply via email to