1{
2 lib,
3 buildPythonPackage,
4 cheroot,
5 colorama,
6 fetchFromGitHub,
7 fsspec,
8 hatch-vcs,
9 hatchling,
10 httpx,
11 pytest-xdist,
12 pytestCheckHook,
13 pytest-cov-stub,
14 python-dateutil,
15 pythonOlder,
16 wsgidav,
17}:
18
19buildPythonPackage rec {
20 pname = "webdav4";
21 version = "0.10.0";
22 pyproject = true;
23
24 disabled = pythonOlder "3.9";
25
26 src = fetchFromGitHub {
27 owner = "skshetry";
28 repo = "webdav4";
29 tag = "v${version}";
30 hash = "sha256-LgWYgERRuUODFzUnC08kDJTVRx9vanJ+OU8sREEMVwM=";
31 };
32
33 build-system = [
34 hatch-vcs
35 hatchling
36 ];
37
38 dependencies = [
39 httpx
40 python-dateutil
41 ];
42
43 nativeCheckInputs = [
44 cheroot
45 colorama
46 pytest-xdist
47 pytestCheckHook
48 pytest-cov-stub
49 wsgidav
50 ] ++ optional-dependencies.fsspec;
51
52 optional-dependencies = {
53 fsspec = [ fsspec ];
54 http2 = [ httpx.optional-dependencies.http2 ];
55 all = [
56 fsspec
57 httpx.optional-dependencies.http2
58 ];
59 };
60
61 pythonImportsCheck = [ "webdav4" ];
62
63 disabledTests = [
64 # ValueError: Invalid dir_browser htdocs_path
65 "test_retry_reconnect_on_failure"
66 "test_open"
67 "test_open_binary"
68 "test_close_connection_if_nothing_is_read"
69 # Assertion error due to comparing output
70 "test_cp_cli"
71 "test_mv_cli"
72 "test_sync_remote_to_local"
73 ];
74
75 disabledTestPaths = [
76 # Tests requires network access
77 "tests/test_client.py"
78 "tests/test_fsspec.py"
79 "tests/test_cli.py"
80 ];
81
82 meta = with lib; {
83 description = "Library for interacting with WebDAV";
84 mainProgram = "dav";
85 homepage = "https://skshetry.github.io/webdav4/";
86 changelog = "https://github.com/skshetry/webdav4/releases/tag/v${version}";
87 license = with licenses; [ mit ];
88 maintainers = with maintainers; [ fab ];
89 };
90}