{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder, # build-system cython, setuptools, # dependencies aiohappyeyeballs, async-interrupt, async-timeout, chacha20poly1305-reuseable, cryptography, noiseprotocol, protobuf, zeroconf, # tests mock, pytest-asyncio, pytestCheckHook, }: buildPythonPackage rec { pname = "aioesphomeapi"; version = "37.2.5"; pyproject = true; disabled = pythonOlder "3.9"; src = fetchFromGitHub { owner = "esphome"; repo = "aioesphomeapi"; tag = "v${version}"; hash = "sha256-+l/tEdraTkNt70sjcGpS/e1uEyudEsJdlqgoHPhMNg0="; }; build-system = [ setuptools cython ]; pythonRelaxDeps = [ "cryptography" ]; dependencies = [ aiohappyeyeballs async-interrupt chacha20poly1305-reuseable cryptography noiseprotocol protobuf zeroconf ] ++ lib.optionals (pythonOlder "3.11") [ async-timeout ]; nativeCheckInputs = [ mock pytest-asyncio pytestCheckHook ]; disabledTestPaths = [ # benchmarking requires pytest-codespeed "tests/benchmarks" ]; __darwinAllowLocalNetworking = true; pythonImportsCheck = [ "aioesphomeapi" ]; meta = with lib; { description = "Python Client for ESPHome native API"; homepage = "https://github.com/esphome/aioesphomeapi"; changelog = "https://github.com/esphome/aioesphomeapi/releases/tag/${src.tag}"; license = licenses.mit; maintainers = with maintainers; [ fab hexa ]; }; }