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

EAPI=8

DISTUTILS_USE_PEP517=hatchling
PYTHON_COMPAT=( python3_{11..13} )

inherit distutils-r1 git-r3 optfeature

DESCRIPTION="A production-ready, highly performant, extensible ASGI API Framework"
HOMEPAGE="https://github.com/litestar-org/litestar"
EGIT_REPO_URI="https://github.com/litestar-org/${PN}.git"

LICENSE="MIT"
SLOT="0"

RDEPEND="dev-python/anyio[${PYTHON_USEDEP}]
	dev-python/click[${PYTHON_USEDEP}]
	dev-python/httpx[${PYTHON_USEDEP}]
	dev-python/litestar-htmx[${PYTHON_USEDEP}]
	dev-python/msgspec[${PYTHON_USEDEP}]
	dev-python/multidict[${PYTHON_USEDEP}]
	dev-python/multipart[${PYTHON_USEDEP}]
	dev-python/polyfactory[${PYTHON_USEDEP}]
	dev-python/pyyaml[${PYTHON_USEDEP}]
	dev-python/rich[${PYTHON_USEDEP}]
	dev-python/rich-click[${PYTHON_USEDEP}]
	dev-python/typing-extensions[${PYTHON_USEDEP}]"
BDEPEND="test? ( dev-python/annotated-types[${PYTHON_USEDEP}]
		dev-python/asyncpg[${PYTHON_USEDEP}]
		dev-python/attrs[${PYTHON_USEDEP}]
		dev-python/beautifulsoup4[${PYTHON_USEDEP}]
		app-arch/brotli[python,${PYTHON_USEDEP}]
		dev-python/cryptography[${PYTHON_USEDEP}]
		dev-python/email-validator[${PYTHON_USEDEP}]
		dev-python/flaky[${PYTHON_USEDEP}]
		dev-python/fsspec[${PYTHON_USEDEP}]
		dev-python/httpx-sse[${PYTHON_USEDEP}]
		dev-python/jinja2[${PYTHON_USEDEP}]
		dev-python/libvalkey[${PYTHON_USEDEP}]
		dev-python/mako[${PYTHON_USEDEP}]
		dev-python/opentelemetry-instrumentation-asgi[${PYTHON_USEDEP}]
		dev-python/prometheus-client[${PYTHON_USEDEP}]
		dev-python/pydantic[${PYTHON_USEDEP}]
		dev-python/pydantic-extra-types[${PYTHON_USEDEP}]
		dev-python/pyjwt[${PYTHON_USEDEP}]
		dev-python/structlog[${PYTHON_USEDEP}]
		dev-python/time-machine[${PYTHON_USEDEP}]
		dev-python/valkey[${PYTHON_USEDEP}] )"

EPYTEST_PLUGINS=( pytest-{asyncio,lazy-fixtures,mock,timeout,xdist} flaky )
distutils_enable_tests pytest

EPYTEST_IGNORE=(
	# needs docker
	tests/e2e/test_response_caching.py
	tests/unit/test_channels/test_backends.py
	tests/unit/test_channels/test_plugin.py
	tests/unit/test_stores.py
	tests/unit/test_testing/test_test_client.py
	docs/examples/testing/test_with_portal.py
)

EPYTEST_DESELECT=(
	# TypeError
	tests/unit/test_plugins/test_prometheus.py::test_prometheus_exporter_metrics_with_http
	# AssertionError
	tests/e2e/test_logging/test_structlog_to_file.py::test_structlog_to_file
	tests/unit/test_connection/test_request.py::test_request_headers
	tests/unit/test_connection/test_websocket.py::test_websocket_headers
)

pkg_postinst() {
	optfeature "integration with annotated-types" dev-python/annotated-types
	optfeature "integration with attrs" dev-python/attrs
	optfeature "integration with brotli" app-arch/brotli[python]
	optfeature "integration with cryptography" dev-python/cryptography
	optfeature "integration with jinja" dev-python/jinja2
	optfeature "integration with jwt" dev-python/cryptography dev-python/pyjwt
	optfeature "integration with mako" dev-python/mako
	optfeature "integration with prometheus" dev-python/prometheus-client
	optfeature "integration with pydantic" dev-python/email-validator dev-python/pydantic \
		dev-python/pydantic-extra-types
	optfeature "integration with structlog" dev-python/structlog
	optfeature "integration with valkey" dev-python/valkey dev-python/libvalkey
}