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

EAPI=8

PYTHON_COMPAT=( python3_{10..12} )
PYTHON_REQ_USE="ssl"
DISTUTILS_USE_PEP517=poetry
DISTUTILS_EXT=1
inherit databases distutils-r1 optfeature

DESCRIPTION="A fast asyncio MySQL driver"
HOMEPAGE="
	https://pypi.org/project/asyncmy/
	https://github.com/long2ice/asyncmy
"
SRC_URI="https://github.com/long2ice/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.gh.tar.gz"
TEST_S="${S}_test"

LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64 ~x86"

BDEPEND="
	dev-python/cython[${PYTHON_USEDEP}]
	dev-python/setuptools[${PYTHON_USEDEP}]
	test? (
		${DATABASES_DEPEND[mysql]}
		dev-python/pytest-asyncio[${PYTHON_USEDEP}]
	)
"

distutils_enable_tests pytest

src_unpack() {
	default

	cp -a "${S}" "${TEST_S}" || die
	rm -r "${TEST_S}"/asyncmy || die
}

src_test() {
	emysql --start
	local sockfile=$(emysql --get-sockfile)

	local myargs=(
		--user=root
		--socket="${sockfile}"
		--silent
		--execute="ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';"
	)

	ebegin "Changing database password"
	mysql "${myargs[@]}"
	eend $? || emysql --die "Changing database password failed"

	distutils-r1_src_test
	emysql --stop
}

python_test() {
	cd "${T}" || die
	epytest "${TEST_S}"
}

python_install() {
	distutils-r1_python_install
	find "${ED}"/usr/lib -name '*.md' -delete || die
	find "${ED}"/usr/lib -name LICENSE -delete || die
}

pkg_postinst() {
	optfeature "sha256_password and caching_sha2_password auth methods" dev-python/cryptography
}