1{
2 lib,
3 backports-zoneinfo,
4 buildPythonPackage,
5 cached-property,
6 defusedxml,
7 dnspython,
8 fetchFromGitHub,
9 flake8,
10 isodate,
11 lxml,
12 oauthlib,
13 psutil,
14 pygments,
15 python-dateutil,
16 pythonOlder,
17 pytz,
18 pyyaml,
19 requests,
20 requests-ntlm,
21 requests-gssapi,
22 requests-oauthlib,
23 requests-kerberos,
24 requests-mock,
25 setuptools,
26 tzdata,
27 tzlocal,
28}:
29
30buildPythonPackage rec {
31 pname = "exchangelib";
32 version = "5.4.1";
33 pyproject = true;
34
35 disabled = pythonOlder "3.7";
36
37 src = fetchFromGitHub {
38 owner = "ecederstrand";
39 repo = "exchangelib";
40 rev = "refs/tags/v${version}";
41 hash = "sha256-FPn2l+PkTXFqzjqF4kQ8KE49BXZUzDDIcFI3UqoxqQM=";
42 };
43
44 build-system = [ setuptools ];
45
46 dependencies = [
47 cached-property
48 defusedxml
49 dnspython
50 isodate
51 lxml
52 oauthlib
53 pygments
54 requests
55 requests-ntlm
56 requests-oauthlib
57 requests-kerberos
58 tzdata
59 tzlocal
60 ] ++ lib.optionals (pythonOlder "3.9") [ backports-zoneinfo ];
61
62 passthru.optional-dependencies = {
63 complete = [
64 requests-gssapi
65 # requests-negotiate-sspi
66 ];
67 kerberos = [ requests-gssapi ];
68 # sspi = [
69 # requests-negotiate-sspi
70 # ];
71 };
72
73 nativeCheckInputs = [
74 flake8
75 psutil
76 python-dateutil
77 pytz
78 pyyaml
79 requests-mock
80 ];
81
82 pythonImportsCheck = [ "exchangelib" ];
83
84 meta = with lib; {
85 description = "Client for Microsoft Exchange Web Services (EWS)";
86 homepage = "https://github.com/ecederstrand/exchangelib";
87 changelog = "https://github.com/ecederstrand/exchangelib/blob/v${version}/CHANGELOG.md";
88 license = licenses.bsd2;
89 maintainers = with maintainers; [ catern ];
90 };
91}