From 853b59480b996d0e63efaf42436e6e23cf2656df Mon Sep 17 00:00:00 2001 From: John McGuigan Date: Mon, 15 Mar 2021 15:36:33 -0400 Subject: [PATCH 1/6] Add statsmodels hook with hidden improts --- .../hooks/stdhooks/hook-statsmodels.py | 29 +++++++++++++++++++ .../tests/test_libraries.py | 9 ++++++ 2 files changed, 38 insertions(+) create mode 100644 src/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-statsmodels.py diff --git a/src/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-statsmodels.py b/src/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-statsmodels.py new file mode 100644 index 00000000..cd4d1d31 --- /dev/null +++ b/src/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-statsmodels.py @@ -0,0 +1,29 @@ +# ------------------------------------------------------------------ +# Copyright (c) 2021 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 +# ------------------------------------------------------------------ + +hiddenimports=[ +'statsmodels.tsa.statespace._kalman_initialization', +'statsmodels.tsa.statespace._kalman_filter', +'statsmodels.tsa.statespace._kalman_smoother', +'statsmodels.tsa.statespace._representation', +'statsmodels.tsa.statespace._simulation_smoother', +'statsmodels.tsa.statespace._statespace', +'statsmodels.tsa.statespace._tools', +'statsmodels.tsa.statespace._filters._conventional', +'statsmodels.tsa.statespace._filters._inversions', +'statsmodels.tsa.statespace._filters._univariate', +'statsmodels.tsa.statespace._filters._univariate_diffuse', +'statsmodels.tsa.statespace._smoothers._alternative', +'statsmodels.tsa.statespace._smoothers._classical', +'statsmodels.tsa.statespace._smoothers._conventional', +'statsmodels.tsa.statespace._smoothers._univariate', +'statsmodels.tsa.statespace._smoothers._univariate_diffuse'] diff --git a/src/_pyinstaller_hooks_contrib/tests/test_libraries.py b/src/_pyinstaller_hooks_contrib/tests/test_libraries.py index 5435ca9f..efc3a0f6 100644 --- a/src/_pyinstaller_hooks_contrib/tests/test_libraries.py +++ b/src/_pyinstaller_hooks_contrib/tests/test_libraries.py @@ -395,6 +395,15 @@ def test_sklearn(pyi_builder, submodule): """.format(submodule)) +@importorskip('statsmodels') +@pytest.mark.skipif(not is_module_satisfies('statsmodels >= 0.12'), + reason='This has only been tested with statsmodels >= 0.12.') +def test_sklearn(pyi_builder): + pyi_builder.test_source(""" + import statsmodels.api as sm + """) + + @importorskip('win32ctypes') @pytest.mark.skipif(not is_win, reason='pywin32-ctypes is supported only on Windows') @pytest.mark.parametrize('submodule', ['win32api', 'win32cred', 'pywintypes']) From d44a660afaf38a9aea76134c013ba679f47a0010 Mon Sep 17 00:00:00 2001 From: John McGuigan Date: Mon, 15 Mar 2021 15:38:19 -0400 Subject: [PATCH 2/6] fix test function name --- src/_pyinstaller_hooks_contrib/tests/test_libraries.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_pyinstaller_hooks_contrib/tests/test_libraries.py b/src/_pyinstaller_hooks_contrib/tests/test_libraries.py index efc3a0f6..15db8f65 100644 --- a/src/_pyinstaller_hooks_contrib/tests/test_libraries.py +++ b/src/_pyinstaller_hooks_contrib/tests/test_libraries.py @@ -398,7 +398,7 @@ def test_sklearn(pyi_builder, submodule): @importorskip('statsmodels') @pytest.mark.skipif(not is_module_satisfies('statsmodels >= 0.12'), reason='This has only been tested with statsmodels >= 0.12.') -def test_sklearn(pyi_builder): +def test_statsmodels(pyi_builder): pyi_builder.test_source(""" import statsmodels.api as sm """) From 9bf83b59b1a88fecac4c90a78b61be3abb9692f3 Mon Sep 17 00:00:00 2001 From: John McGuigan Date: Mon, 15 Mar 2021 15:39:55 -0400 Subject: [PATCH 3/6] Add news file --- news/100.new.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 news/100.new.rst diff --git a/news/100.new.rst b/news/100.new.rst new file mode 100644 index 00000000..5c0ce708 --- /dev/null +++ b/news/100.new.rst @@ -0,0 +1 @@ +Add a hook for ``statsmodels``, which has several hidden imports. From efcd17637d11fc0cde31f6656430a6fa7d1c3e2f Mon Sep 17 00:00:00 2001 From: John McGuigan Date: Mon, 15 Mar 2021 16:53:40 -0400 Subject: [PATCH 4/6] Simplify the hook --- .../hooks/stdhooks/hook-statsmodels.py | 20 +++---------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/src/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-statsmodels.py b/src/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-statsmodels.py index cd4d1d31..f049b3db 100644 --- a/src/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-statsmodels.py +++ b/src/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-statsmodels.py @@ -10,20 +10,6 @@ # SPDX-License-Identifier: GPL-2.0-or-later # ------------------------------------------------------------------ -hiddenimports=[ -'statsmodels.tsa.statespace._kalman_initialization', -'statsmodels.tsa.statespace._kalman_filter', -'statsmodels.tsa.statespace._kalman_smoother', -'statsmodels.tsa.statespace._representation', -'statsmodels.tsa.statespace._simulation_smoother', -'statsmodels.tsa.statespace._statespace', -'statsmodels.tsa.statespace._tools', -'statsmodels.tsa.statespace._filters._conventional', -'statsmodels.tsa.statespace._filters._inversions', -'statsmodels.tsa.statespace._filters._univariate', -'statsmodels.tsa.statespace._filters._univariate_diffuse', -'statsmodels.tsa.statespace._smoothers._alternative', -'statsmodels.tsa.statespace._smoothers._classical', -'statsmodels.tsa.statespace._smoothers._conventional', -'statsmodels.tsa.statespace._smoothers._univariate', -'statsmodels.tsa.statespace._smoothers._univariate_diffuse'] +from PyInstaller.utils.hooks import collect_submodules + +hiddenimports = collect_submodules('statsmodels.tsa.statespace') From 968adaa4515a889c54b0821a416de1003e29d5b3 Mon Sep 17 00:00:00 2001 From: John McGuigan Date: Mon, 15 Mar 2021 17:02:29 -0400 Subject: [PATCH 5/6] Rename file and use a subset of hidden imports --- ...{hook-statsmodels.py => hook-statsmodels.tsa.statespace.py} | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) rename src/_pyinstaller_hooks_contrib/hooks/stdhooks/{hook-statsmodels.py => hook-statsmodels.tsa.statespace.py} (76%) diff --git a/src/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-statsmodels.py b/src/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-statsmodels.tsa.statespace.py similarity index 76% rename from src/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-statsmodels.py rename to src/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-statsmodels.tsa.statespace.py index f049b3db..c09d95a6 100644 --- a/src/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-statsmodels.py +++ b/src/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-statsmodels.tsa.statespace.py @@ -12,4 +12,5 @@ from PyInstaller.utils.hooks import collect_submodules -hiddenimports = collect_submodules('statsmodels.tsa.statespace') +hiddenimports = collect_submodules('statsmodels.tsa.statespace._filters') \ + + collect_submodules('statsmodels.tsa.statespace._smoothers') From bd1dc18c1895a2280a26501129733f2e4a98f179 Mon Sep 17 00:00:00 2001 From: John McGuigan Date: Mon, 15 Mar 2021 17:08:38 -0400 Subject: [PATCH 6/6] updated news rst to be more detailed --- news/100.new.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/news/100.new.rst b/news/100.new.rst index 5c0ce708..b3cf4649 100644 --- a/news/100.new.rst +++ b/news/100.new.rst @@ -1 +1 @@ -Add a hook for ``statsmodels``, which has several hidden imports. +Added a hook for ``statsmodels``, which adds ``statsmodels.tsa.statespace`` as a hidden import