{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder, # build-system poetry-core, # dependencies aiofiles, aiohttp, aioshutil, async-timeout, convertertools, dateparser, orjson, packaging, pillow, platformdirs, pydantic, pyjwt, rich, typer, yarl, # tests aiosqlite, asttokens, ffmpeg, pytest-asyncio, pytest-benchmark, pytest-timeout, pytest-xdist, pytestCheckHook, }: buildPythonPackage rec { pname = "uiprotect"; version = "5.4.0"; pyproject = true; disabled = pythonOlder "3.10"; src = fetchFromGitHub { owner = "uilibs"; repo = "uiprotect"; rev = "refs/tags/v${version}"; hash = "sha256-LwG8X1UHsGL7jw4au2Jeo6pcsnRK23rqB5aFBQRTGmI="; }; postPatch = '' sed -i "/addopts =/d" pyproject.toml ''; build-system = [ poetry-core ]; pythonRelaxDeps = [ "pydantic" ]; dependencies = [ aiofiles aiohttp aioshutil async-timeout convertertools dateparser orjson packaging pillow platformdirs pydantic pyjwt rich typer yarl ]; nativeCheckInputs = [ aiosqlite asttokens ffmpeg # Required for command ffprobe pytest-asyncio pytest-benchmark pytest-timeout pytest-xdist pytestCheckHook ]; pytestFlagsArray = [ "--benchmark-disable" ]; pythonImportsCheck = [ "uiprotect" ]; meta = with lib; { description = "Python API for UniFi Protect (Unofficial"; homepage = "https://github.com/uilibs/uiprotect"; changelog = "https://github.com/uilibs/uiprotect/blob/${src.rev}/CHANGELOG.md"; license = licenses.mit; maintainers = with maintainers; [ hexa ]; }; }