1{
2 lib,
3 buildPythonPackage,
4 certifi,
5 click,
6 fetchFromGitHub,
7 fido2,
8 keyring,
9 keyrings-alt,
10 pytest-mock,
11 pytest-socket,
12 pytestCheckHook,
13 pythonAtLeast,
14 requests,
15 setuptools,
16 setuptools-scm,
17 srp,
18 tzlocal,
19}:
20
21buildPythonPackage rec {
22 pname = "pyicloud";
23 version = "2.1.0";
24 pyproject = true;
25
26 src = fetchFromGitHub {
27 owner = "timlaing";
28 repo = "pyicloud";
29 tag = version;
30 hash = "sha256-bGS5yAizdaZUdwKNoZPKP/DSpJs5XI70hyTLfJg9QmI=";
31 };
32
33 build-system = [
34 setuptools
35 setuptools-scm
36 ];
37
38 dependencies = [
39 certifi
40 click
41 fido2
42 keyring
43 keyrings-alt
44 requests
45 srp
46 tzlocal
47 ];
48
49 nativeCheckInputs = [
50 pytest-mock
51 pytest-socket
52 pytestCheckHook
53 ];
54
55 pythonImportsCheck = [ "pyicloud" ];
56
57 disabledTests = lib.optionals (pythonAtLeast "3.12") [
58 # https://github.com/picklepete/pyicloud/issues/446
59 "test_storage"
60 ];
61
62 meta = with lib; {
63 description = "Module to interact with iCloud webservices";
64 mainProgram = "icloud";
65 homepage = "https://github.com/timlaing/pyicloud";
66 changelog = "https://github.com/timlaing/pyicloud/releases/tag/${src.tag}";
67 license = licenses.mit;
68 maintainers = [ maintainers.mic92 ];
69 };
70}