nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
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.3.0";
24 pyproject = true;
25
26 src = fetchFromGitHub {
27 owner = "timlaing";
28 repo = "pyicloud";
29 tag = version;
30 hash = "sha256-sejOJOzgZD531U5tHMoTwDH0ZkAi0sZ/nPp7uQDIZvU=";
31 };
32
33 postPatch = ''
34 substituteInPlace pyproject.toml \
35 --replace-fail "setuptools >= 77.0,< 80.10" setuptools
36 '';
37
38 build-system = [
39 setuptools
40 setuptools-scm
41 ];
42
43 dependencies = [
44 certifi
45 click
46 fido2
47 keyring
48 keyrings-alt
49 requests
50 srp
51 tzlocal
52 ];
53
54 nativeCheckInputs = [
55 pytest-mock
56 pytest-socket
57 pytestCheckHook
58 ];
59
60 pythonImportsCheck = [ "pyicloud" ];
61
62 disabledTests = lib.optionals (pythonAtLeast "3.12") [
63 # https://github.com/picklepete/pyicloud/issues/446
64 "test_storage"
65 ];
66
67 meta = {
68 description = "Module to interact with iCloud webservices";
69 mainProgram = "icloud";
70 homepage = "https://github.com/timlaing/pyicloud";
71 changelog = "https://github.com/timlaing/pyicloud/releases/tag/${src.tag}";
72 license = lib.licenses.mit;
73 maintainers = [ lib.maintainers.mic92 ];
74 };
75}