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

EAPI=8

DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{11..14} )

inherit distutils-r1 git-r3 optfeature

DESCRIPTION="Google Cloud Spanner API client library"
HOMEPAGE="https://github.com/googleapis/python-spanner"
EGIT_REPO_URI="https://github.com/googleapis/python-spanner.git"

LICENSE="Apache-2.0"
SLOT="0"

RDEPEND="dev-python/google-api-core[${PYTHON_USEDEP}]
	dev-python/google-cloud-core[${PYTHON_USEDEP}]
	dev-python/grpc-google-iam-v1[${PYTHON_USEDEP}]
	dev-python/grpc-interceptor[${PYTHON_USEDEP}]
	dev-python/protobuf[${PYTHON_USEDEP}]
	dev-python/proto-plus[${PYTHON_USEDEP}]
	dev-python/sqlparse[${PYTHON_USEDEP}]"
BDEPEND="test? ( dev-python/google-cloud-monitoring[${PYTHON_USEDEP}]
		dev-python/mmh3[${PYTHON_USEDEP}] )"

EPYTEST_PLUGINS=( pytest-{asyncio,snapshot} )
distutils_enable_tests pytest

EPYTEST_DESELECT=(
	# AssertionError
	tests/mockserver_tests/test_request_id_header.py::TestRequestIDHeader::test_snapshot_read_concurrent
)

EPYTEST_IGNORE=(
	# google.auth.exceptions.DefaultCredentialsError
	tests/system/test_backup_api.py
	tests/system/test_database_api.py
	tests/system/test_dbapi.py
	tests/system/test_instance_api.py
	tests/system/test_session_api.py
	tests/system/test_streaming_chunking.py
	tests/system/test_table_api.py
)

python_compile() {
	distutils-r1_python_compile
	find "${BUILD_DIR}" -name '*.pth' -delete || die
}

src_test() {
	rm -r google || die "rm failed"
	distutils-r1_src_test
}

python_test() {
	distutils_write_namespace google
	epytest -v tests || die "tests failed with ${EPYTHON}"
}

pkg_postinst() {
	optfeature "integration with tracing" dev-python/opentelemetry-api dev-python/opentelemetry-sdk \
		dev-python/opentelemetry-semantic-conventions dev-python/opentelemetry-resourcedetector-gcp \
		dev-python/google-cloud-monitoring dev-python/mmh3
	optfeature "integration with libcst" dev-python/libcst
}