{ lib , buildPythonPackage , pythonAtLeast , pythonOlder , fetchFromGitHub , aiohttp , attrs , defusedxml , pytest-aiohttp , pytest-mock , pytestCheckHook }: buildPythonPackage rec { pname = "arcam-fmj"; version = "1.4.0"; format = "setuptools"; disabled = pythonOlder "3.8"; src = fetchFromGitHub { owner = "elupus"; repo = "arcam_fmj"; rev = "refs/tags/${version}"; hash = "sha256-/A3Fs0JyzW05L80CtI07Y/kTTrIC6yqubJfYO0kAEf0="; }; propagatedBuildInputs = [ aiohttp attrs defusedxml ]; nativeCheckInputs = [ pytest-aiohttp pytest-mock pytestCheckHook ]; disabledTests = lib.optionals (pythonAtLeast "3.12") [ # stuck on EpollSelector.poll() "test_power" "test_multiple" "test_invalid_command" "test_state" "test_silent_server_request" "test_silent_server_disconnect" "test_heartbeat" "test_cancellation" ]; pythonImportsCheck = [ "arcam.fmj" "arcam.fmj.client" "arcam.fmj.state" "arcam.fmj.utils" ]; meta = with lib; { description = "Python library for speaking to Arcam receivers"; mainProgram = "arcam-fmj"; homepage = "https://github.com/elupus/arcam_fmj"; changelog = "https://github.com/elupus/arcam_fmj/releases/tag/${version}"; license = licenses.mit; maintainers = with maintainers; [ dotlambda ]; }; }