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/development/python-modules/wsgidav/default.nix b/pkgs/development/python-modules/wsgidav/default.nix new file mode 100644 index 000000000000..882f4091040f --- /dev/null +++ b/pkgs/development/python-modules/wsgidav/default.nix @@ -0,0 +1,55 @@ +{ lib +, buildPythonPackage +, cheroot +, fetchFromGitHub +, pytestCheckHook +, pythonOlder +, defusedxml +, jinja2 +, json5 +, python-pam +, pyyaml +, requests +, webtest +}: + +buildPythonPackage rec { + pname = "wsgidav"; + version = "4.0.2"; + format = "pyproject"; + + disabled = pythonOlder "3.7"; + + src = fetchFromGitHub { + owner = "mar10"; + repo = pname; + rev = "v${version}"; + hash = "sha256-LQdS9d2DB4PXqRSzmtZCSyCQI47ncLCG+RSB+goZYoA="; + }; + + propagatedBuildInputs = [ + defusedxml + jinja2 + json5 + python-pam + pyyaml + ]; + + checkInputs = [ + cheroot + pytestCheckHook + requests + webtest + ]; + + pythonImportsCheck = [ + "wsgidav" + ]; + + meta = with lib; { + description = "Generic and extendable WebDAV server based on WSGI"; + homepage = "https://wsgidav.readthedocs.io/"; + 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 51cbc01b565a..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 { }; @@ -11530,6 +11532,8 @@ in { wsgi-intercept = callPackage ../development/python-modules/wsgi-intercept { }; + wsgidav = callPackage ../development/python-modules/wsgidav { }; + wsgiprox = callPackage ../development/python-modules/wsgiprox { }; wsgiproxy2 = callPackage ../development/python-modules/wsgiproxy2 { };