# ------------------------------------------------------------------
|
# 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 collect_data_files, collect_submodules
|
|
# Collect all data files, excluding the examples' data
|
datas = collect_data_files('pyqtgraph', excludes=['**/examples/*'])
|
|
# pyqtgraph uses Qt-version-specific templates for the UI elements.
|
# There are templates for different versions of PySide and PyQt, e.g.
|
#
|
# - pyqtgraph.graphicsItems.ViewBox.axisCtrlTemplate_pyqt5
|
# - pyqtgraph.graphicsItems.ViewBox.axisCtrlTemplate_pyqt6
|
# - pyqtgraph.graphicsItems.ViewBox.axisCtrlTemplate_pyside2
|
# - pyqtgraph.graphicsItems.ViewBox.axisCtrlTemplate_pyside6
|
# - pyqtgraph.graphicsItems.PlotItem.plotConfigTemplate_pyqt5
|
# - pyqtgraph.graphicsItems.PlotItem.plotConfigTemplate_pyqt6
|
# - pyqtgraph.graphicsItems.PlotItem.plotConfigTemplate_pyside2
|
# - pyqtgraph.graphicsItems.PlotItem.plotConfigTemplate_pyside6
|
#
|
# To be future-proof, we collect all modules by
|
# using collect-submodules, and filtering the modules
|
# which appear to be templates.
|
# We need to avoid recursing into `pyqtgraph.examples`, because that
|
# triggers instantiation of `QApplication` (which requires X/Wayland
|
# session on linux).
|
# Tested with pyqtgraph master branch (commit c1900aa).
|
all_imports = collect_submodules("pyqtgraph", filter=lambda name: name != "pyqtgraph.examples")
|
hiddenimports = [name for name in all_imports if "Template" in name]
|
|
# Collect the pyqtgraph/multiprocess/bootstrap.py as a module; this is required by our pyqtgraph.multiprocess runtime
|
# hook to handle the pyqtgraph's multiprocessing implementation. The pyqtgraph.multiprocess seems to be imported
|
# automatically on the import of pyqtgraph itself, so there is no point in creating a separate hook for this.
|
hiddenimports += ['pyqtgraph.multiprocess.bootstrap']
|