summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dev-python/pyqtgraph/metadata.xml5
-rw-r--r--dev-python/pyqtgraph/pyqtgraph-0.13.7-r1.ebuild97
2 files changed, 101 insertions, 1 deletions
diff --git a/dev-python/pyqtgraph/metadata.xml b/dev-python/pyqtgraph/metadata.xml
index c25d30934641..d0dd610bedf9 100644
--- a/dev-python/pyqtgraph/metadata.xml
+++ b/dev-python/pyqtgraph/metadata.xml
@@ -10,9 +10,12 @@
It is intended for use in mathematics / scientific / engineering applications.
Despite being written entirely in python, the library is very fast
due to its heavy leverage of numpy for number crunching
- and Qt's GraphicsView framework for fast display.
+ and Qt's GraphicsView framework for fast display.
</longdescription>
<stabilize-allarches/>
+ <use>
+ <flag name="pyside6">Enable support for PySide6 bindings for Qt6.</flag>
+ </use>
<upstream>
<remote-id type="github">pyqtgraph/pyqtgraph</remote-id>
<remote-id type="pypi">pyqtgraph</remote-id>
diff --git a/dev-python/pyqtgraph/pyqtgraph-0.13.7-r1.ebuild b/dev-python/pyqtgraph/pyqtgraph-0.13.7-r1.ebuild
new file mode 100644
index 000000000000..bbf6bf1ccb3a
--- /dev/null
+++ b/dev-python/pyqtgraph/pyqtgraph-0.13.7-r1.ebuild
@@ -0,0 +1,97 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="A pure-python graphics and GUI library built on PyQt and numpy"
+HOMEPAGE="
+ https://www.pyqtgraph.org/
+ https://github.com/pyqtgraph/pyqtgraph/
+ https://pypi.org/project/pyqtgraph/
+"
+SRC_URI="
+ https://github.com/pyqtgraph/pyqtgraph/archive/${P}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+S=${WORKDIR}/${PN}-${P}
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="amd64 ~arm arm64 ~riscv ~x86"
+IUSE="opengl pyside6 qt5 +qt6 svg"
+REQUIRED_USE="test? ( opengl svg )"
+
+RDEPEND="
+ >=dev-python/numpy-1.22[${PYTHON_USEDEP}]
+ dev-python/pyqt6[gui,widgets,opengl=,svg=,${PYTHON_USEDEP}]
+ dev-python/scipy[${PYTHON_USEDEP}]
+ opengl? ( dev-python/pyopengl[${PYTHON_USEDEP}] )
+"
+BDEPEND="
+ test? (
+ dev-python/h5py[${PYTHON_USEDEP}]
+ dev-python/pyqt6[testlib,${PYTHON_USEDEP}]
+ dev-python/pytest-xvfb[${PYTHON_USEDEP}]
+ dev-vcs/git
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ distutils-r1_python_prepare_all
+
+ if ! use opengl; then
+ rm -r pyqtgraph/opengl || die
+ fi
+
+ # pyqtgraph will automatically use any QT bindings it finds,
+ # Since we only want qt6, hardcode this where upstream allows an envvar to pick.
+ sed -i "s/QT_LIB = os.getenv('PYQTGRAPH_QT_LIB')/QT_LIB = 'PyQt6'/" pyqtgraph/Qt/__init__.py ||
+ die "Failed to set QT_LIB"
+
+ # We only want to run tests for qt6 so don't try other frontends if they're installed.
+ if use test; then
+ awk -i inplace '
+ /frontends = {/ {
+ i = 6 # length of frontends
+
+ print "frontends = {"
+ print " Qt.PYQT6: False,"
+ print "}"
+ }
+ i > 0 {
+ i--
+ next
+ }
+ { print }
+ ' pyqtgraph/examples/test_examples.py || die "Failed to patch test frontends"
+ fi
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # apparently fragile
+ tests/test_reload.py::test_reload
+
+ # TODO
+ tests/exporters/test_svg.py::test_plotscene
+ tests/graphicsItems/test_ROI.py::test_PolyLineROI
+
+ # pyside2 is normally skipped if not installed but these two
+ # fail if it is installed
+ # TODO: this could be due to USE flags, revisit when pyside2
+ # gains py3.9
+ 'pyqtgraph/examples/test_examples.py::testExamples[ DateAxisItem_QtDesigner.py - PySide2 ]'
+ 'pyqtgraph/examples/test_examples.py::testExamples[ designerExample.py - PySide2 ]'
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -p xvfb
+}