From 9d0cfcafdfeeec37a021a9f6a065ec63f82ec5e2 Mon Sep 17 00:00:00 2001 From: Vera Sativa Date: Thu, 5 Dec 2019 11:05:47 -0300 Subject: [PATCH 1/2] feat: [WIP] remote dir download --- dvc/remote/base.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/dvc/remote/base.py b/dvc/remote/base.py index 10969250a0..77bca46940 100644 --- a/dvc/remote/base.py +++ b/dvc/remote/base.py @@ -547,11 +547,20 @@ def download( if to_info.scheme != "local": raise NotImplementedError - logger.debug("Downloading '{}' to '{}'".format(from_info, to_info)) + makedirs(to_info.parent, exist_ok=True, mode=dir_mode) + + if self.isdir(from_info): + # need to create dir here + # also pass the individual file name (file and to) + for file_info in self.walk_files(from_info): + self.single_file_download(file_info, to_info, name, no_progress_bar, file_mode) + else: + self.single_file_download(from_info, to_info, name, no_progress_bar, file_mode) + def single_file_download(self, from_info, to_info, name, no_progress_bar, file_mode): + logger.debug("Downloading '{}' to '{}'".format(from_info, to_info)) name = name or to_info.name - makedirs(to_info.parent, exist_ok=True, mode=dir_mode) tmp_file = tmp_fname(to_info) try: @@ -567,6 +576,7 @@ def download( return 0 + def open(self, path_info, mode="r", encoding=None): if hasattr(self, "_generate_download_url"): get_url = partial(self._generate_download_url, path_info) From 9148f464ea5c46c8d7de1fb79e82c430fefaf849 Mon Sep 17 00:00:00 2001 From: "Restyled.io" Date: Thu, 5 Dec 2019 14:07:24 +0000 Subject: [PATCH 2/2] Restyled by black --- dvc/remote/base.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/dvc/remote/base.py b/dvc/remote/base.py index 77bca46940..6418102485 100644 --- a/dvc/remote/base.py +++ b/dvc/remote/base.py @@ -553,11 +553,17 @@ def download( # need to create dir here # also pass the individual file name (file and to) for file_info in self.walk_files(from_info): - self.single_file_download(file_info, to_info, name, no_progress_bar, file_mode) + self.single_file_download( + file_info, to_info, name, no_progress_bar, file_mode + ) else: - self.single_file_download(from_info, to_info, name, no_progress_bar, file_mode) + self.single_file_download( + from_info, to_info, name, no_progress_bar, file_mode + ) - def single_file_download(self, from_info, to_info, name, no_progress_bar, file_mode): + def single_file_download( + self, from_info, to_info, name, no_progress_bar, file_mode + ): logger.debug("Downloading '{}' to '{}'".format(from_info, to_info)) name = name or to_info.name @@ -576,7 +582,6 @@ def single_file_download(self, from_info, to_info, name, no_progress_bar, file_m return 0 - def open(self, path_info, mode="r", encoding=None): if hasattr(self, "_generate_download_url"): get_url = partial(self._generate_download_url, path_info)