diff --git a/news/348.new.rst b/news/348.new.rst new file mode 100644 index 000000000..4c165425b --- /dev/null +++ b/news/348.new.rst @@ -0,0 +1 @@ +Add a hook for ``ffpyplayer``. \ No newline at end of file diff --git a/requirements-test-libraries.txt b/requirements-test-libraries.txt index d647b66dc..b13346a87 100644 --- a/requirements-test-libraries.txt +++ b/requirements-test-libraries.txt @@ -16,6 +16,7 @@ dash==2.0.0 dash-bootstrap-components==1.0.0 dash-uploader==0.6.0 folium==0.12.1 +ffpyplayer==4.3.2; python_version < '3.10' # doesn't have py310 wheels h5py==3.5.0; python_version >= '3.7' humanize==3.12.0 iminuit==2.8.4 diff --git a/src/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-ffpyplayer.py b/src/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-ffpyplayer.py new file mode 100644 index 000000000..493a5c12f --- /dev/null +++ b/src/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-ffpyplayer.py @@ -0,0 +1,19 @@ +# ------------------------------------------------------------------ +# 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 +# ------------------------------------------------------------------ + +from PyInstaller.utils.hooks import eval_statement, collect_submodules + +hiddenimports = collect_submodules("ffpyplayer") +binaries = [] +# ffpyplayer has an internal variable tells us where the libraries it was using +for bin in eval_statement("import ffpyplayer; print(ffpyplayer.dep_bins)"): + binaries += [(bin, '.')] diff --git a/src/_pyinstaller_hooks_contrib/tests/test_libraries.py b/src/_pyinstaller_hooks_contrib/tests/test_libraries.py index 9fbb2aa16..e48143bac 100644 --- a/src/_pyinstaller_hooks_contrib/tests/test_libraries.py +++ b/src/_pyinstaller_hooks_contrib/tests/test_libraries.py @@ -970,3 +970,10 @@ def test_kaleido(pyi_builder): fig = px.scatter(px.data.iris(), x="sepal_length", y="sepal_width", color="species") fig.write_image("figure.png", engine="kaleido") """) + + +@importorskip("ffpyplayer") +def test_ffpyplayer(pyi_builder): + pyi_builder.test_source(""" + import ffpyplayer.player + """)