{ lib , buildPythonPackage , fetchFromGitHub , pythonOlder # build , setuptools , pythonRelaxDepsHook # propagates , aiohttp , aiorun , async-timeout , coloredlogs , dacite , orjson , home-assistant-chip-clusters # optionals , cryptography , home-assistant-chip-core , zeroconf # tests , python , pytest , pytest-aiohttp , pytestCheckHook }: buildPythonPackage rec { pname = "python-matter-server"; version = "5.7.0b2"; format = "pyproject"; disabled = pythonOlder "3.10"; src = fetchFromGitHub { owner = "home-assistant-libs"; repo = "python-matter-server"; rev = "refs/tags/${version}"; hash = "sha256-fMtvVizHeAzLdou0U1tqbmQATIBLK4w9I7EwMlzB8QA="; }; postPatch = '' substituteInPlace pyproject.toml \ --replace 'version = "0.0.0"' 'version = "${version}"' \ --replace '--cov' "" ''; nativeBuildInputs = [ setuptools pythonRelaxDepsHook ]; pythonRelaxDeps = [ "home-assistant-chip-clusters" ]; propagatedBuildInputs = [ aiohttp aiorun async-timeout coloredlogs dacite orjson home-assistant-chip-clusters ]; passthru.optional-dependencies = { server = [ cryptography home-assistant-chip-core zeroconf ]; }; nativeCheckInputs = [ pytest-aiohttp pytestCheckHook ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies); preCheck = let pythonEnv = python.withPackages (_: propagatedBuildInputs ++ nativeCheckInputs ++ [ pytest ]); in '' export PYTHONPATH=${pythonEnv}/${python.sitePackages} ''; pytestFlagsArray = [ # Upstream theymselves limit the test scope # https://github.com/home-assistant-libs/python-matter-server/blob/main/.github/workflows/test.yml#L65 "tests/server" ]; meta = with lib; { changelog = "https://github.com/home-assistant-libs/python-matter-server/releases/tag/${version}"; description = "Python server to interact with Matter"; homepage = "https://github.com/home-assistant-libs/python-matter-server"; license = licenses.asl20; maintainers = teams.home-assistant.members; }; }