From afcbb148b94cae9610b3880b1688927dd56495fb Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Mon, 7 Aug 2017 02:36:02 +0300 Subject: [PATCH] RFC: fix codeclimate warnings codeclimate noted a few similiar code chunks and it looks like it is worth fixing them. Signed-off-by: Ruslan Kuprieiev --- dvc/command/gc.py | 11 +---------- dvc/command/remove.py | 11 +---------- dvc/command/traverse.py | 16 +++++++++++++++- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/dvc/command/gc.py b/dvc/command/gc.py index 6ff3a5051..c303fadaf 100644 --- a/dvc/command/gc.py +++ b/dvc/command/gc.py @@ -2,7 +2,6 @@ import os from dvc.command.traverse import Traverse from dvc.logger import Logger -from dvc.path.data_item import DataItemError class CmdGC(Traverse): @@ -12,11 +11,7 @@ class CmdGC(Traverse): def process_file(self, target): Logger.debug(u'[Cmd-GC] GC file {}.'.format(target)) - try: - data_item = self.settings.path_factory.existing_data_item(target) - except DataItemError: - Logger.warn(u'[Cmd-GC] Data item {} is not a valid symbolic link'.format(target)) - data_item = self.settings.path_factory.data_item(target) + data_item = self._get_data_item(target) for cache_data_item in data_item.get_all_caches(): if cache_data_item.cache.relative != data_item.resolved_cache.relative: @@ -27,10 +22,6 @@ class CmdGC(Traverse): Logger.debug(u'[Cmd-GC] GC data item {}. Success.'.format(data_item.data.relative)) pass - def _remove_cloud_cache(self, data_item): - if not self.parsed_args.keep_in_cloud: - self.cloud.remove_from_cloud(data_item) - def is_recursive(self): return self.parsed_args.recursive diff --git a/dvc/command/remove.py b/dvc/command/remove.py index 21e2f4e94..24c365467 100644 --- a/dvc/command/remove.py +++ b/dvc/command/remove.py @@ -2,7 +2,6 @@ import os from dvc.command.traverse import Traverse from dvc.logger import Logger -from dvc.path.data_item import DataItemError class CmdRemove(Traverse): @@ -12,11 +11,7 @@ class CmdRemove(Traverse): def process_file(self, target): Logger.debug(u'[Cmd-Remove] Remove file {}.'.format(target)) - try: - data_item = self.settings.path_factory.existing_data_item(target) - except DataItemError: - Logger.warn(u'[Cmd-Remove] Data file {} is not valid symbolic link'.format(target)) - data_item = self.settings.path_factory.data_item(target) + data_item = self._get_data_item(target) self._remove_cache_file(data_item) self._remove_state_file(data_item) @@ -26,10 +21,6 @@ class CmdRemove(Traverse): Logger.debug(u'[Cmd-Remove] Remove data item {}. Success.'.format(data_item.data.relative)) pass - def _remove_cloud_cache(self, data_item): - if not self.parsed_args.keep_in_cloud: - self.cloud.remove_from_cloud(data_item) - def _remove_state_file(self, data_item): if os.path.isfile(data_item.state.relative): self._remove_dvc_path(data_item.state, 'state') diff --git a/dvc/command/traverse.py b/dvc/command/traverse.py index 8dc07069a..b000611e3 100644 --- a/dvc/command/traverse.py +++ b/dvc/command/traverse.py @@ -4,7 +4,7 @@ from dvc.command.base import CmdBase, DvcLock from dvc.exceptions import DvcException from dvc.logger import Logger from dvc.data_cloud import DataCloud - +from dvc.path.data_item import DataItemError class TraverseError(DvcException): def __init__(self, msg): @@ -69,6 +69,20 @@ class Traverse(CmdBase): self.traverse_dir_finalize(target) pass + # Common helpers + def _get_data_item(self, target): + try: + data_item = self.settings.path_factory.existing_data_item(target) + except DataItemError: + Logger.warn(u'[TraverseFileTree] Data file {} is not valid symbolic link'.format(target)) + data_item = self.settings.path_factory.data_item(target) + + return data_item + + def _remove_cloud_cache(self, data_item): + if not self.parsed_args.keep_in_cloud: + self.cloud.remove_from_cloud(data_item) + ## API: def is_recursive(self): return True