Skip to content

Commit

Permalink
hooks: update scikit-image hooks for compatibility with v0.20.0
Browse files Browse the repository at this point in the history
Account for introducion of the `lazy_loader` in the main package
and in `skimage.data` and `skimage.filters`; collect the
`__init__.pyi` files (required by `lazy_loader`), and collect
submodules where necessary.

Also collect the data files that are now required by `skimage.morphology`.
  • Loading branch information
rokm committed Mar 31, 2023
1 parent 2a9eb40 commit 1ca9e3b
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 4 deletions.
4 changes: 4 additions & 0 deletions news/565.update.1.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Update ``scikit-image`` hooks for compatibility with the 0.20.x series;
account for switch to ``lazy_module`` in ``skimage.data`` and
``skimage.filters`` as well as in main package. Collect new data files
that are now required by ``skimage.morphology``.
19 changes: 19 additions & 0 deletions src/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-skimage.data.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# ------------------------------------------------------------------
# Copyright (c) 2023 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.GPL.txt, distributed with
# this software.
#
# SPDX-License-Identifier: GPL-2.0-or-later
# ------------------------------------------------------------------

from PyInstaller.utils.hooks import is_module_satisfies, collect_data_files, collect_submodules

# As of scikit-image 0.20.0, we need to collect the __init__.pyi file for `lazy_loader`, as well as collect submodules
# due to lazy loading.
if is_module_satisfies('scikit-image >= 0.20.0'):
datas = collect_data_files("skimage.data", includes=["*.pyi"])
hiddenimports = collect_submodules('skimage.data', filter=lambda name: name != 'skimage.data.tests')
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,15 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# ------------------------------------------------------------------

from PyInstaller.utils.hooks import is_module_satisfies, collect_submodules
from PyInstaller.utils.hooks import is_module_satisfies, collect_data_files, collect_submodules

if is_module_satisfies("scikit_image >= 0.19.0"):
# In scikit-image 0.19.0, `skimage.filters` switched to lazy module loading, so we need to collect all submodules.
if is_module_satisfies("scikit-image >= 0.19.0"):
# In scikit-image 0.19.x, `skimage.filters` switched to lazy module loading, so we need to collect all submodules.
hiddenimports = collect_submodules('skimage.filters', filter=lambda name: name != 'skimage.filters.tests')
elif is_module_satisfies("scikit_image >= 0.18.0"):

# In scikit-image 0.20.0, `lazy_loader` is used, so we need to collect `__init__.pyi` file.
if is_module_satisfies("scikit-image >= 0.20.0"):
datas = collect_data_files("skimage.filters", includes=["*.pyi"])
elif is_module_satisfies("scikit-image >= 0.18.0"):
# The following missing module prevents import of skimage.feature with skimage 0.18.x.
hiddenimports = ['skimage.filters.rank.core_cy_3d', ]
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# ------------------------------------------------------------------
# Copyright (c) 2023 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.GPL.txt, distributed with
# this software.
#
# SPDX-License-Identifier: GPL-2.0-or-later
# ------------------------------------------------------------------

from PyInstaller.utils.hooks import collect_data_files, is_module_satisfies

# As of scikit-image 0.20.0, we need to collect .npy data files for `skimage.morphology`
if is_module_satisfies('scikit-image >= 0.20'):
datas = collect_data_files("skimage.morphology", includes=["*.npy"])
17 changes: 17 additions & 0 deletions src/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-skimage.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# ------------------------------------------------------------------
# Copyright (c) 2023 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.GPL.txt, distributed with
# this software.
#
# SPDX-License-Identifier: GPL-2.0-or-later
# ------------------------------------------------------------------

from PyInstaller.utils.hooks import collect_data_files, is_module_satisfies

# As of scikit-image 0.20.0, we need to collect the __init__.pyi file for `lazy_loader`.
if is_module_satisfies('scikit-image >= 0.20.0'):
datas = collect_data_files("skimage", includes=["*.pyi"])

0 comments on commit 1ca9e3b

Please sign in to comment.