# 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..13} )

inherit distutils-r1

DESCRIPTION="A Python library in building OAuth and OpenID Connect servers and clients"
HOMEPAGE="
	https://authlib.org/
	https://github.com/authlib/authlib/
	https://pypi.org/project/Authlib/
"
# pypi source distribution excludes the tests
SRC_URI="
	https://github.com/authlib/authlib/archive/refs/tags/v${PV}.tar.gz
		-> ${P}.gh.tar.gz
"

LICENSE="BSD"
SLOT="0"
KEYWORDS="~amd64"
IUSE="django flask jose test"
RESTRICT="!test? ( test )"

RDEPEND="
	dev-python/cryptography[${PYTHON_USEDEP}]
	django? (
		dev-python/django[${PYTHON_USEDEP}]
	)
	flask? (
		dev-python/flask[${PYTHON_USEDEP}]
		dev-python/flask-sqlalchemy[${PYTHON_USEDEP}]
	)
	jose? (
		>=dev-python/pycryptodome-3.10[${PYTHON_USEDEP}]
	)
"
BDEPEND="
	test? (
		dev-python/pytest-asyncio[${PYTHON_USEDEP}]
		dev-python/anyio[${PYTHON_USEDEP}]
		dev-python/cachelib[${PYTHON_USEDEP}]
		dev-python/django[${PYTHON_USEDEP}]
		dev-python/flask[${PYTHON_USEDEP}]
		dev-python/flask-sqlalchemy[${PYTHON_USEDEP}]
		dev-python/httpx[${PYTHON_USEDEP}]
		>=dev-python/pycryptodome-3.10[${PYTHON_USEDEP}]
		dev-python/requests[${PYTHON_USEDEP}]
		dev-python/starlette[${PYTHON_USEDEP}]
	)
"

distutils_enable_tests pytest

src_prepare() {
	distutils-r1_src_prepare

	# convert from pycryptodomex to pycryptodome
	sed -i -e 's:from Cryptodome:from Crypto:' \
		authlib/jose/drafts/_jwe_enc_cryptodome.py || die
}

python_test() {
	local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
	local -x DJANGO_SETTINGS_MODULE=tests.clients.test_django.settings
	epytest -p asyncio tests/{core,jose,clients,flask}

	# TODO: django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
	#local -x DJANGO_SETTINGS_MODULE=tests.django.settings
	#epytest -p asyncio tests/django
}