1{
2 lib,
3 aiofiles,
4 aiohttp,
5 aioresponses,
6 aiounittest,
7 buildPythonPackage,
8 ciso8601,
9 fetchFromGitHub,
10 pubnub,
11 pyjwt,
12 pytestCheckHook,
13 python-dateutil,
14 pythonOlder,
15 requests,
16 requests-mock,
17 setuptools,
18}:
19
20buildPythonPackage rec {
21 pname = "yalexs";
22 version = "3.1.0";
23 pyproject = true;
24
25 disabled = pythonOlder "3.9";
26
27 src = fetchFromGitHub {
28 owner = "bdraco";
29 repo = "yalexs";
30 rev = "refs/tags/v${version}";
31 hash = "sha256-+Sn+d6CuxIUEDLkDvcq7OT3AumElJFfWCwM02LPIeyg=";
32 };
33
34 postPatch = ''
35 # Not used requirement
36 substituteInPlace setup.py \
37 --replace-fail '"vol",' ""
38 '';
39
40 build-system = [ setuptools ];
41
42 dependencies = [
43 aiofiles
44 aiohttp
45 ciso8601
46 pubnub
47 pyjwt
48 python-dateutil
49 requests
50 ];
51
52 # aiounittest is not supported on 3.12
53 doCheck = pythonOlder "3.12";
54
55 nativeCheckInputs = [
56 aioresponses
57 aiounittest
58 pytestCheckHook
59 requests-mock
60 ];
61
62 pythonImportsCheck = [ "yalexs" ];
63
64 meta = with lib; {
65 description = "Python API for Yale Access (formerly August) Smart Lock and Doorbell";
66 homepage = "https://github.com/bdraco/yalexs";
67 changelog = "https://github.com/bdraco/yalexs/releases/tag/v${version}";
68 license = with licenses; [ mit ];
69 maintainers = with maintainers; [ fab ];
70 };
71}