1{
2 lib,
3 pythonOlder,
4 aiofiles,
5 async-timeout,
6 buildPythonPackage,
7 cryptography,
8 fetchFromGitHub,
9 isPy3k,
10 libusb1,
11 mock,
12 pyasn1,
13 pycryptodome,
14 pytestCheckHook,
15 rsa,
16}:
17
18buildPythonPackage rec {
19 pname = "adb-shell";
20 version = "0.4.4";
21 format = "setuptools";
22
23 disabled = !isPy3k;
24
25 src = fetchFromGitHub {
26 owner = "JeffLIrion";
27 repo = "adb_shell";
28 rev = "v${version}";
29 hash = "sha256-pOkFUh3SEu/ch9R1lVoQn50nufQp8oI+D4/+Ybal5CA=";
30 };
31
32 propagatedBuildInputs = [
33 cryptography
34 pyasn1
35 rsa
36 ];
37
38 optional-dependencies = {
39 async = [
40 aiofiles
41 async-timeout
42 ];
43 usb = [ libusb1 ];
44 };
45
46 doCheck = pythonOlder "3.12"; # FIXME: tests are broken on 3.13
47
48 nativeCheckInputs = [
49 mock
50 pycryptodome
51 pytestCheckHook
52 ]
53 ++ lib.flatten (builtins.attrValues optional-dependencies);
54
55 pythonImportsCheck = [ "adb_shell" ];
56
57 meta = with lib; {
58 description = "Python implementation of ADB with shell and FileSync functionality";
59 homepage = "https://github.com/JeffLIrion/adb_shell";
60 license = licenses.asl20;
61 maintainers = with maintainers; [ jamiemagee ];
62 };
63}