# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

PYTHON_COMPAT=( python3_{10..13} )
DOCS_BUILDER="sphinx"
DOCS_DEPEND="dev-python/myst-parser"
DOCS_DIR="docs"
DISTUTILS_EXT=1
DISTUTILS_USE_PEP517=meson-python

inherit distutils-r1 docs pypi

DESCRIPTION="Python bindings for media-libs/rtmidi implemented using Cython"
HOMEPAGE="
	https://pypi.org/project/python-rtmidi/
	https://spotlightkid.github.io/python-rtmidi/
"

LICENSE="MIT"
SLOT="0"
KEYWORDS="amd64"
IUSE="+alsa jack"

# Most of these tests do not play nicely with the sandbox, some only
# work with exactly the same version of rtmidi as the bundled one, and
# several fail even with disabled sandbox unless there are actual MIDI
# I/O devices present.
RESTRICT="test"

DEPEND="media-libs/rtmidi[alsa?,jack?]"
RDEPEND="${DEPEND}"
BDEPEND="dev-python/cython[${PYTHON_USEDEP}]
	virtual/pkgconfig"

PATCHES=(
	"${FILESDIR}"/${PN}-1.5.1-unbundle_rtmidi.patch
)

distutils_enable_tests unittest

src_prepare() {
	distutils-r1_src_prepare

	# Just in case
	rm -r src/rtmidi || die
	rm src/_rtmidi.cpp || die

	# Needed by USE=doc because documentation generation happens in ${S}
	# but the version.py generated by Meson end up in respective ${BUILD_DIR}s.
	# The version put in ${S} should be ignored by everything except Sphinx but
	# just in case, be consistent and generate it unconditionally.
	sed -e "s|@VERSION@|${PV}|" < rtmidi/version.py.in > rtmidi/version.py || die
}

python_test() {
	cd "${T}" || die
	eunittest "${S}"/tests
}