{ lib, aiohttp, buildPythonPackage, dnspython, fetchFromGitHub, pytest-asyncio, pytestCheckHook, pythonAtLeast, pythonOlder, setuptools, }: buildPythonPackage rec { pname = "pykaleidescape"; version = "1.0.1"; pyproject = true; disabled = pythonOlder "3.7"; src = fetchFromGitHub { owner = "SteveEasley"; repo = "pykaleidescape"; rev = "refs/tags/v${version}"; hash = "sha256-KM/gtpsQ27QZz2uI1t/yVN5no0zp9LZag1duAJzK55g="; }; nativeBuildInputs = [ setuptools ]; propagatedBuildInputs = [ aiohttp dnspython ]; nativeCheckInputs = [ pytest-asyncio pytestCheckHook ]; pythonImportsCheck = [ "kaleidescape" ]; disabledTests = [ # Test requires network access "test_resolve_succeeds" ] ++ lib.optionals (pythonAtLeast "3.12") [ # stuck in EpollSelector.poll() "test_manual_disconnect" "test_concurrency" ]; meta = with lib; { description = "Module for controlling Kaleidescape devices"; homepage = "https://github.com/SteveEasley/pykaleidescape"; changelog = "https://github.com/SteveEasley/pykaleidescape/releases/tag/v${version}"; license = licenses.mit; maintainers = with maintainers; [ fab ]; }; }