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

EAPI=8

DISTUTILS_EXT=1
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{12..14} )
inherit distutils-r1 pypi

DESCRIPTION="Ergonomic bindings for nanomsg next generation (nng) in Python"
HOMEPAGE="https://github.com/codypiersall/pynng https://pypi.org/project/pynng"

LICENSE="MIT"
SLOT=0
KEYWORDS="~amd64"

# pynng 0.9.0 bundles nng and mbedtls, building them from source via cmake
RDEPEND="
	dev-python/cffi[${PYTHON_USEDEP}]
	dev-python/sniffio[${PYTHON_USEDEP}]
"
BDEPEND="
	dev-python/cffi[${PYTHON_USEDEP}]
	dev-python/setuptools[${PYTHON_USEDEP}]
	dev-build/cmake
	dev-build/ninja
	test? (
		dev-python/pytest-asyncio[${PYTHON_USEDEP}]
		dev-python/pytest-trio[${PYTHON_USEDEP}]
		dev-python/sniffio[${PYTHON_USEDEP}]
		dev-python/trio[${PYTHON_USEDEP}]
	)
"

distutils_enable_tests pytest

src_prepare() {
	# Fix bundled mbedtls build failure with GCC 15:
	# -Werror=unterminated-string-initialization on unsigned char arrays
	sed -i 's/-Wno-error=array-bounds/-Wno-error=array-bounds -Wno-error=unterminated-string-initialization/' \
		setup.py || die
	distutils-r1_src_prepare
}

python_test() {
	# Remove source pynng directory to avoid import conflicts
	# Tests must run against the installed C extension module
	rm -rf pynng || die
	epytest
}