diff --git a/pkgs/development/python-modules/webdav4/default.nix b/pkgs/development/python-modules/webdav4/default.nix new file mode 100644 index 000000000000..8e4b378244f5 --- /dev/null +++ b/pkgs/development/python-modules/webdav4/default.nix @@ -0,0 +1,89 @@ +{ lib +, buildPythonPackage +, cheroot +, colorama +, fetchFromGitHub +, fsspec +, httpx +, pytestCheckHook +, python-dateutil +, pythonOlder +, setuptools-scm +, wsgidav +}: + +buildPythonPackage rec { + pname = "webdav4"; + version = "0.9.7"; + format = "pyproject"; + + disabled = pythonOlder "3.9"; + + src = fetchFromGitHub { + owner = "skshetry"; + repo = pname; + rev = "v${version}"; + hash = "sha256-7v4dcwbTCGiEMkAQHtH9+zQj745dI0QqoEqdxRYRuO4="; + }; + + SETUPTOOLS_SCM_PRETEND_VERSION = version; + + nativeBuildInputs = [ + setuptools-scm + ]; + + propagatedBuildInputs = [ + httpx + python-dateutil + ]; + + checkInputs = [ + cheroot + colorama + pytestCheckHook + wsgidav + ] ++ passthru.optional-dependencies.fsspec; + + passthru.optional-dependencies = { + fsspec = [ + fsspec + ]; + http2 = [ + httpx.optional-dependencies.http2 + ]; + all = [ + fsspec + httpx.optional-dependencies.http2 + ]; + }; + + postPatch = '' + substituteInPlace pyproject.toml \ + --replace " --cov" "" + ''; + + pythonImportsCheck = [ + "webdav4" + ]; + + disabledTests = [ + # ValueError: Invalid dir_browser htdocs_path + "test_retry_reconnect_on_failure" + "test_open" + "test_open_binary" + "test_close_connection_if_nothing_is_read" + ]; + + disabledTestPaths = [ + # Tests requires network access + "tests/test_client.py" + "tests/test_fsspec.py" + ]; + + meta = with lib; { + description = "Library for interacting with WebDAV"; + homepage = "https://skshetry.github.io/webdav4/"; + license = with licenses; [ mit ]; + maintainers = with maintainers; [ fab ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 90f4f8a11e5f..c4fe8d82f8f6 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -11424,6 +11424,8 @@ in { webcolors = callPackage ../development/python-modules/webcolors { }; + webdav4 = callPackage ../development/python-modules/webdav4 { }; + webdavclient3 = callPackage ../development/python-modules/webdavclient3 { }; webencodings = callPackage ../development/python-modules/webencodings { };