Separate show pipeline and workflow

This commit is contained in:
Dmitry
2017-09-04 12:35:17 -07:00
parent db833517e8
commit 983b8f5efa
3 changed files with 60 additions and 40 deletions
+24 -10
View File
@@ -11,14 +11,16 @@ from dvc.command.data_sync import CmdDataSync, CmdDataPush, CmdDataPull, CmdData
from dvc.command.lock import CmdLock
from dvc.command.gc import CmdGC
from dvc.command.import_file import CmdImportFile
from dvc.command.show_workflow import CmdShowWorkflow
from dvc.command.target import CmdTarget
from dvc.command.instance_create import CmdInstanceCreate
from dvc.command.config import CmdConfig
from dvc.command.show import CmdShow
from dvc.command.show_pipeline import CmdShowPipeline
from dvc.command.test import CmdTest
from dvc.config import Config
from dvc import VERSION
def parse_args(argv=None):
# Common args
parent_parser = argparse.ArgumentParser(add_help=False)
@@ -398,17 +400,29 @@ def parse_args(argv=None):
show_parser = subparsers.add_parser(
'show',
parents=[parent_parser],
help='Create a dependency graph for data')
show_parser.add_argument(
help='Show graphs')
show_subparsers = show_parser.add_subparsers(
dest='cmd',
help='Use `dvc show CMD` --help for command-specific help')
pipeline_parser = show_subparsers.add_parser(
'pipeline',
parents=[parent_parser],
help='Show pipeline image')
pipeline_parser.add_argument(
'target',
nargs='*',
help='Target data')
show_parser.add_argument('-w',
'--workflow',
action='store_true',
default=False,
help='Show workflow')
show_parser.set_defaults(func=CmdShow)
help='Target data directory')
pipeline_parser.set_defaults(func=CmdShowPipeline)
workflow_parser = show_subparsers.add_parser(
'workflow',
parents=[parent_parser],
help='Show workflow image')
workflow_parser.add_argument(
'target',
nargs='?',
help='Target metric data file')
workflow_parser.set_defaults(func=CmdShowWorkflow)
if isinstance(argv, str):
argv = argv.split()
+3 -30
View File
@@ -2,15 +2,13 @@ import os
import networkx as nx
from dvc.command.traverse import Traverse
from dvc.command.init import CmdInit
from dvc.logger import Logger
from dvc.state_file import StateFile
class CmdShow(Traverse):
class CmdShowPipeline(Traverse):
def __init__(self, settings):
super(CmdShow, self).__init__(settings, "collect", do_not_start_from_root=False)
super(CmdShowPipeline, self).__init__(settings, "collect", do_not_start_from_root=False)
self.g = nx.DiGraph()
self.subs = []
@@ -48,35 +46,10 @@ class CmdShow(Traverse):
return 0
def run(self):
if self.parsed_args.workflow:
# Workflow
target = self.settings.parsed_args.target
if not target:
target = self.settings.config.target_file
if not os.path.exists(target):
Logger.warn(u'Target is not defined: use empty target')
target = ''
else:
target = open(target).read()
Logger.debug(u'Set show workflow target as {}'.format(target))
if type(target) is list:
if len(target) != 1:
msg = 'Only one target is expected for show workflow command. Target: {}'
Logger.error(msg.format(target))
return 1
target = target[0]
wf = self.git.get_all_commits(target, self.settings)
wf.build_graph()
return
saved_targets = self.settings.parsed_args.target
self.settings.parsed_args.target = [self.settings.config.data_dir]
ret = super(CmdShow, self).run()
ret = super(CmdShowPipeline, self).run()
self.settings.parsed_args.target = saved_targets
+33
View File
@@ -0,0 +1,33 @@
import os
from dvc.command.base import CmdBase
from dvc.logger import Logger
class CmdShowWorkflow(CmdBase):
def __init__(self, settings):
super(CmdShowWorkflow, self).__init__(settings)
def run(self):
target = self.settings.parsed_args.target
if not target:
target = self.settings.config.target_file
if not os.path.exists(target):
Logger.warn(u'Target is not defined: use empty target')
target = ''
else:
target = open(target).read()
Logger.debug(u'Set show workflow target as {}'.format(target))
wf = self.git.get_all_commits(target, self.settings)
wf.build_graph()
return 0
@property
def no_git_actions(self):
return True
@staticmethod
def not_committed_changes_warning():
pass