From 0e257adc63f5f3f8c1f88435284bfd56327d840c Mon Sep 17 00:00:00 2001 From: Frederik Schubert Date: Fri, 9 Oct 2020 23:07:34 +0200 Subject: [PATCH] remote: add WebDAV dependency (#4690) This adds the dependency for WebDAV and enables calls like `import-url remote://some-webdav/data` Related to #4374 --- dvc/dependency/__init__.py | 6 ++++++ dvc/dependency/webdav.py | 8 ++++++++ dvc/dependency/webdavs.py | 6 ++++++ tests/unit/dependency/test_webdav.py | 7 +++++++ 4 files changed, 27 insertions(+) create mode 100644 dvc/dependency/webdav.py create mode 100644 dvc/dependency/webdavs.py create mode 100644 tests/unit/dependency/test_webdav.py diff --git a/dvc/dependency/__init__.py b/dvc/dependency/__init__.py index 91bd96c23..76e1c87cc 100644 --- a/dvc/dependency/__init__.py +++ b/dvc/dependency/__init__.py @@ -11,6 +11,8 @@ from dvc.dependency.local import LocalDependency from dvc.dependency.param import ParamsDependency from dvc.dependency.s3 import S3Dependency from dvc.dependency.ssh import SSHDependency +from dvc.dependency.webdav import WebDAVDependency +from dvc.dependency.webdavs import WebDAVSDependency from dvc.output.base import BaseOutput from dvc.scheme import Schemes @@ -25,6 +27,8 @@ DEPS = [ HTTPSDependency, S3Dependency, SSHDependency, + WebDAVDependency, + WebDAVSDependency # NOTE: LocalDependency is the default choice ] @@ -37,6 +41,8 @@ DEP_MAP = { Schemes.HDFS: HDFSDependency, Schemes.HTTP: HTTPDependency, Schemes.HTTPS: HTTPSDependency, + Schemes.WEBDAV: WebDAVDependency, + Schemes.WEBDAVS: WebDAVSDependency, } diff --git a/dvc/dependency/webdav.py b/dvc/dependency/webdav.py new file mode 100644 index 000000000..62c1da8c0 --- /dev/null +++ b/dvc/dependency/webdav.py @@ -0,0 +1,8 @@ +from dvc.dependency.base import BaseDependency +from dvc.output.base import BaseOutput + +from ..tree.webdav import WebDAVTree + + +class WebDAVDependency(BaseDependency, BaseOutput): + TREE_CLS = WebDAVTree diff --git a/dvc/dependency/webdavs.py b/dvc/dependency/webdavs.py new file mode 100644 index 000000000..25e320888 --- /dev/null +++ b/dvc/dependency/webdavs.py @@ -0,0 +1,6 @@ +from ..tree.webdavs import WebDAVSTree +from .webdav import WebDAVDependency + + +class WebDAVSDependency(WebDAVDependency): + TREE_CLS = WebDAVSTree diff --git a/tests/unit/dependency/test_webdav.py b/tests/unit/dependency/test_webdav.py new file mode 100644 index 000000000..6e8e07994 --- /dev/null +++ b/tests/unit/dependency/test_webdav.py @@ -0,0 +1,7 @@ +from dvc.dependency.webdav import WebDAVDependency +from tests.unit.dependency.test_local import TestLocalDependency + + +class TestWebDAVDependency(TestLocalDependency): + def _get_cls(self): + return WebDAVDependency