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

EAPI=8

DISTUTILS_SINGLE_IMPL=1
DISTUTILS_USE_PEP517=hatchling
PYTHON_COMPAT=( python3_{12,13} )

inherit systemd distutils-r1

DESCRIPTION="Immich machine-learning"
HOMEPAGE="https://github.com/immich-app/immich"
SRC_URI="https://github.com/immich-app/immich/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"

LICENSE="AGPL-3"
SLOT="0"
KEYWORDS="~amd64"

IUSE="systemd rocm"

RDEPEND="
	acct-group/immich
	acct-user/immich
	$(python_gen_cond_dep '
		>=dev-python/aiocache-0.12.1[${PYTHON_USEDEP}]
		<dev-python/aiocache-1[${PYTHON_USEDEP}]
		>=dev-python/fastapi-0.95.2[${PYTHON_USEDEP}]
		<dev-python/fastapi-1[${PYTHON_USEDEP}]
		>=dev-python/ftfy-6.1.1[${PYTHON_USEDEP}]
		>=www-servers/gunicorn-21.1.0[${PYTHON_USEDEP}]
	')
	>=sci-ml/huggingface_hub-0.20.1[${PYTHON_SINGLE_USEDEP}]
	<sci-ml/huggingface_hub-1[${PYTHON_SINGLE_USEDEP}]
	$(python_gen_cond_dep '
		>=sci-ml/insightface-0.7.3[${PYTHON_USEDEP}]
		<sci-ml/insightface-1[${PYTHON_USEDEP}]
		>=media-libs/opencv-4.7.0[${PYTHON_USEDEP},python]
		<media-libs/opencv-5[${PYTHON_USEDEP}]
		>=dev-python/orjson-3.9.5[${PYTHON_USEDEP}]
		>=dev-python/pillow-9.5.0[${PYTHON_USEDEP}]
		<dev-python/pillow-12[${PYTHON_USEDEP}]
		>=dev-python/pydantic-2.5.2[${PYTHON_USEDEP}]
		<dev-python/pydantic-3[${PYTHON_USEDEP}]
		>=dev-python/pydantic-settings-2.5.2[${PYTHON_USEDEP}]
		<dev-python/pydantic-settings-3[${PYTHON_USEDEP}]
		>=dev-python/python-multipart-0.0.6[${PYTHON_USEDEP}]
		<dev-python/python-multipart-1[${PYTHON_USEDEP}]
		>=dev-python/rich-13.4.2[${PYTHON_USEDEP}]
	')
	>=sci-ml/tokenizers-0.15.0[${PYTHON_SINGLE_USEDEP}]
	<sci-ml/tokenizers-1[${PYTHON_SINGLE_USEDEP}]
	$(python_gen_cond_dep '
		>=dev-python/uvicorn-0.22.0[${PYTHON_USEDEP}]
		<dev-python/uvicorn-1[${PYTHON_USEDEP}]
	')
	$(python_gen_cond_dep '
		>=sci-ml/rapidocr-3.1.0[${PYTHON_USEDEP}]
		sci-ml/onnxruntime[rocm?,python,${PYTHON_USEDEP}]
	')
"

distutils_enable_tests pytest

S=${WORKDIR}/immich-${PV}/machine-learning

PATCHES=(
	${FILESDIR}/01-different-package-versions.patch
)

src_install() {
	distutils-r1_src_install

	keepdir /var/{lib,log}/immich /etc/immich
	fowners immich:immich /var/{lib,log}/immich
	fperms 0750 /var/{lib,log}/immich

	insinto /etc/immich
	doins ${S}/immich_ml/gunicorn_conf.py
	doins ${S}/immich_ml/log_conf.json

	systemd_dounit "${FILESDIR}/immich-ml.service"
	newconfd "${FILESDIR}/${PN}.confd" "${PN}"
}