# Copyright 2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 PYPI_PN="changedetection.io" DISTUTILS_USE_PEP517=setuptools PYTHON_COMPAT=( python3_{12..14} ) inherit distutils-r1 pypi systemd DESCRIPTION="Website change detection and monitoring service" HOMEPAGE="https://changedetection.io https://github.com/dgtlmoon/changedetection.io" LICENSE="Apache-2.0" SLOT="0" KEYWORDS="~amd64" # Optional and not packaged: gevent (SOCKETIO_MODE=gevent), pyppeteer-ng and pyppeteerstealth (the # Puppeteer fetcher), litellm and rank-bm25 (LLM features). orjson (deprecated in ::gentoo) only # speeds up JSON; the stdlib is used without it. RDEPEND="acct-group/changedetection acct-user/changedetection app-arch/brotli[python,${PYTHON_USEDEP}] >=dev-python/apprise-2.0.1[${PYTHON_USEDEP}] dev-python/arrow[${PYTHON_USEDEP}] >=dev-python/babel-2.18.0[${PYTHON_USEDEP}] >=dev-python/beautifulsoup4-4.15.0[${PYTHON_USEDEP}] dev-python/blinker[${PYTHON_USEDEP}] dev-python/chardet[${PYTHON_USEDEP}] >=dev-python/cryptography-50.0.2[${PYTHON_USEDEP}] dev-python/diff-match-patch[${PYTHON_USEDEP}] >=dev-python/elementpath-5.1.4[${PYTHON_USEDEP}] dev-python/extruct[${PYTHON_USEDEP}] >=dev-python/feedgen-1.0[${PYTHON_USEDEP}] >=dev-python/feedparser-6.0[${PYTHON_USEDEP}] >=dev-python/flask-3.1[${PYTHON_USEDEP}] =dev-python/flask-babel-4.0.0[${PYTHON_USEDEP}] dev-python/flask-compress[${PYTHON_USEDEP}] dev-python/flask-cors[${PYTHON_USEDEP}] >=dev-python/flask-login-0.6.3[${PYTHON_USEDEP}] dev-python/flask-paginate[${PYTHON_USEDEP}] dev-python/flask-restful[${PYTHON_USEDEP}] >=dev-python/flask-socketio-5.6.1[${PYTHON_USEDEP}] =dev-python/flask-wtf-1.3[${PYTHON_USEDEP}] >=dev-python/greenlet-3.5.6[${PYTHON_USEDEP}] >=dev-python/inscriptis-2.7[${PYTHON_USEDEP}] >=dev-python/jinja2-3.1[${PYTHON_USEDEP}] dev-python/jq[${PYTHON_USEDEP}] >=dev-python/jsonpath-ng-1.9.1[${PYTHON_USEDEP}] >=dev-python/jsonschema-4.26.0[${PYTHON_USEDEP}] dev-python/linkify-it-py[${PYTHON_USEDEP}] dev-python/loguru[${PYTHON_USEDEP}] >=dev-python/lxml-6.1.3[${PYTHON_USEDEP}] >=dev-python/openapi-core-0.23[${PYTHON_USEDEP}] dev-python/openpyxl[${PYTHON_USEDEP}] dev-python/paho-mqtt[${PYTHON_USEDEP}] dev-python/panzi-json-logic[${PYTHON_USEDEP}] >=dev-python/pluggy-1.6[${PYTHON_USEDEP}] dev-python/price-parser[${PYTHON_USEDEP}] dev-python/psutil[${PYTHON_USEDEP}] dev-python/puremagic[${PYTHON_USEDEP}] >=dev-python/pydantic-2.13.5[${PYTHON_USEDEP}] dev-python/pysocks[${PYTHON_USEDEP}] >=dev-python/python-engineio-4.14.0[${PYTHON_USEDEP}] >=dev-python/python-socketio-5.17.0[${PYTHON_USEDEP}] dev-python/pytz[${PYTHON_USEDEP}] dev-python/rapidfuzz[${PYTHON_USEDEP}] >=dev-python/referencing-0.37.0[${PYTHON_USEDEP}] dev-python/requests[${PYTHON_USEDEP}] dev-python/requests-file[${PYTHON_USEDEP}] >=dev-python/segno-1.6.6[${PYTHON_USEDEP}] >=dev-python/selenium-4.50.0[${PYTHON_USEDEP}] >=dev-python/timeago-1.0[${PYTHON_USEDEP}] dev-python/tzdata[${PYTHON_USEDEP}] >=dev-python/validators-0.35[${PYTHON_USEDEP}] >=dev-python/werkzeug-3.1.9[${PYTHON_USEDEP}] >=dev-python/wtforms-3.2[${PYTHON_USEDEP}]" src_prepare() { # Upstream pins exact versions and lists optional and test-only packages here; Portage handles # the dependencies instead. : > requirements.txt || die distutils-r1_src_prepare } python_install_all() { distutils-r1_python_install_all newinitd "${FILESDIR}/${PN}.initd" "${PN}" newconfd "${FILESDIR}/${PN}.confd" "${PN}" systemd_dounit "${FILESDIR}/${PN}.service" } # Tests need a running server and network access.