1{
2 lib,
3 aiohttp,
4 aresponses,
5 awesomeversion,
6 backoff,
7 buildPythonPackage,
8 cachetools,
9 fetchFromGitHub,
10 poetry-core,
11 pytest-asyncio,
12 pytest-cov-stub,
13 pytest-freezegun,
14 pytestCheckHook,
15 pythonOlder,
16 xmltodict,
17 yarl,
18}:
19
20buildPythonPackage rec {
21 pname = "rokuecp";
22 version = "0.19.5";
23 pyproject = true;
24
25 disabled = pythonOlder "3.9";
26
27 src = fetchFromGitHub {
28 owner = "ctalkington";
29 repo = "python-rokuecp";
30 tag = version;
31 hash = "sha256-HPJORJQ/LqWCpywiZmwFXKKFRE8V9kG5iDrbzPX2YVg=";
32 };
33
34 postPatch = ''
35 substituteInPlace pyproject.toml \
36 --replace-fail 'version = "0.0.0"' 'version = "${version}"'
37 '';
38
39 build-system = [ poetry-core ];
40
41 dependencies = [
42 aiohttp
43 backoff
44 cachetools
45 xmltodict
46 awesomeversion
47 yarl
48 ];
49
50 nativeCheckInputs = [
51 aresponses
52 pytest-asyncio
53 pytest-cov-stub
54 pytest-freezegun
55 pytestCheckHook
56 ];
57
58 disabledTests = [
59 # Network related tests are having troube in the sandbox
60 "test_resolve_hostname"
61 "test_get_dns_state"
62 # Assertion issue
63 "test_guess_stream_format"
64 "test_update_tv"
65 "test_get_apps_single_app"
66 "test_get_tv_channels_single_channel"
67 ];
68
69 pythonImportsCheck = [ "rokuecp" ];
70
71 meta = with lib; {
72 description = "Asynchronous Python client for Roku (ECP)";
73 homepage = "https://github.com/ctalkington/python-rokuecp";
74 changelog = "https://github.com/ctalkington/python-rokuecp/releases/tag/${version}";
75 license = licenses.mit;
76 maintainers = with maintainers; [ fab ];
77 };
78}