Skip to content

Commit

Permalink
Add pyav hooks (#29)
Browse files Browse the repository at this point in the history
Add pyav hook

pyav uses a Cython module which imports sub-modules. These are not
normally detected by PyInstaller. This hook uses collect_submodules
to add the missing modules as hidden imports.

Includes a new test for av(pyav)
  • Loading branch information
liupx1988 committed Aug 12, 2020
1 parent d747791 commit 1ce38ba
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 0 deletions.
1 change: 1 addition & 0 deletions news/29.new.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add a hook for ``pyav(av)`` which has hidden imports.
1 change: 1 addition & 0 deletions requirements-test.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ pyzmq==19.0.0
Unidecode==1.1.1
zeep==3.4.0
sentry-sdk==0.15.1
av==8.0.2

# ------------------- Python Version/Platform (OS) specifics
# These libraries only support python above 3.5
Expand Down
14 changes: 14 additions & 0 deletions src/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-av.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# ------------------------------------------------------------------
# Copyright (c) 2020 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_submodules

hiddenimports = ['fractions'] + collect_submodules("av")
7 changes: 7 additions & 0 deletions src/_pyinstaller_hooks_contrib/tests/test_libraries.py
Original file line number Diff line number Diff line change
Expand Up @@ -303,3 +303,10 @@ def test_iminuit(pyi_builder):
pyi_builder.test_source("""
from iminuit import Minuit
""")


@importorskip('av')
def test_av(pyi_builder):
pyi_builder.test_source("""
import av
""")

0 comments on commit 1ce38ba

Please sign in to comment.