1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitea,
5 async-timeout,
6 httpx,
7 httpx-socks,
8 proxy-py,
9 pytest-asyncio,
10 pytest-mock,
11 pytestCheckHook,
12 python-socks,
13 rencode,
14 setuptools,
15}:
16
17buildPythonPackage rec {
18 pname = "aiobtclientrpc";
19 version = "5.0.1";
20 pyproject = true;
21
22 src = fetchFromGitea {
23 domain = "codeberg.org";
24 owner = "plotski";
25 repo = "aiobtclientrpc";
26 tag = "v${version}";
27 hash = "sha256-2nBrIMlYUI4PwirkiSJSkw5zw2Kc/KoVRyIIYYx4iYs=";
28 };
29
30 pythonRelaxDeps = [ "async-timeout" ];
31
32 build-system = [ setuptools ];
33
34 dependencies = [
35 async-timeout
36 httpx
37 httpx-socks
38 python-socks
39 rencode
40 ]
41 ++ python-socks.optional-dependencies.asyncio;
42
43 nativeCheckInputs = [
44 proxy-py
45 pytest-asyncio
46 pytest-mock
47 pytestCheckHook
48 ];
49
50 disabledTests = [
51 # Missing lambda parameter
52 "test_add_event_handler_with_autoremove"
53 # Try to use `htpasswd` and `nginx` with hard-coded paths
54 "test_authentication_error[rtorrent_http]"
55 "test_api_as_context_manager[rtorrent_http]"
56 "test_add_and_remove_torrents[rtorrent_http-paused]"
57 "test_add_and_remove_torrents[rtorrent_http-started]"
58 "test_proxy[rtorrent_http-http_proxy]"
59 "test_timeout[rtorrent_http]"
60 "test_event_subscriptions_survive_reconnecting[rtorrent_http]"
61 "test_waiting_for_event[rtorrent_http]"
62 # Tests are outdated
63 "test_DelugeRPCRequest_equality"
64 ];
65
66 pythonImportsCheck = [ "aiobtclientrpc" ];
67
68 meta = {
69 description = "Asynchronous low-level communication with BitTorrent clients";
70 homepage = "https://aiobtclientrpc.readthedocs.io";
71 license = lib.licenses.gpl3Plus;
72 maintainers = with lib.maintainers; [ ambroisie ];
73 };
74}