mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-08 15:28:26 +01:00
dvc show pipeline: small changes
This commit is contained in:
@@ -2,6 +2,7 @@ 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
|
||||
|
||||
@@ -12,11 +13,12 @@ class CmdShowPipeline(Traverse):
|
||||
self.g = nx.DiGraph()
|
||||
self.subs = []
|
||||
|
||||
def draw(self, g, target, fname):
|
||||
def draw(self, g, target, fname_suffix):
|
||||
fname = 'pipeline_' + fname_suffix
|
||||
try:
|
||||
A = nx.nx_agraph.to_agraph(g)
|
||||
A.write(fname + '.dot')
|
||||
A.draw(fname + '.svg', prog='dot')
|
||||
A.draw(fname + '.jpeg', format='jpeg', prog='dot')
|
||||
except Exception as exc:
|
||||
Logger.error('Failed to draw dependency graph for {}: {}'.format(target, exc))
|
||||
return 1
|
||||
@@ -30,16 +32,16 @@ class CmdShowPipeline(Traverse):
|
||||
|
||||
return self.g
|
||||
|
||||
def draw_targets(self):
|
||||
if self.parsed_args.target == None:
|
||||
def draw_targets(self, target):
|
||||
if not target:
|
||||
target = self.settings.config.data_dir
|
||||
return self.draw(self.g, target, target)
|
||||
|
||||
for t in self.parsed_args.target:
|
||||
fname = os.path.basename(os.path.normpath(t))
|
||||
fname_suffix = os.path.basename(os.path.normpath(t))
|
||||
s = self.find_sub(t)
|
||||
|
||||
ret = self.draw(s, t, fname)
|
||||
ret = self.draw(s, t, fname_suffix)
|
||||
if ret != 0:
|
||||
return ret
|
||||
|
||||
@@ -61,13 +63,16 @@ class CmdShowPipeline(Traverse):
|
||||
# when a bunch of data items were used independently.
|
||||
self.subs = nx.weakly_connected_component_subgraphs(self.g)
|
||||
|
||||
return self.draw_targets()
|
||||
return self.draw_targets(saved_targets)
|
||||
|
||||
def process_file(self, target):
|
||||
data_item = self._get_data_item(target)
|
||||
name = data_item.data.relative
|
||||
state = StateFile.load(data_item.state.relative, self.git)
|
||||
|
||||
if name == os.path.join(self.settings.config.data_dir, CmdInit.EMPTY_FILE_NAME):
|
||||
return
|
||||
|
||||
self.g.add_node(name)
|
||||
|
||||
for i in state.input_files:
|
||||
|
||||
@@ -124,10 +124,10 @@ class Workflow(object):
|
||||
g.add_edge(commit.hash, p)
|
||||
|
||||
A = nx.nx_agraph.to_agraph(g)
|
||||
fname = 'workflow.jpeg'
|
||||
fname = 'workflow'
|
||||
A = A.to_undirected()
|
||||
A.write(fname + '.dot')
|
||||
A.draw(fname, format='jpeg', prog='dot')
|
||||
A.draw(fname + '.jpeg', format='jpeg', prog='dot')
|
||||
pass
|
||||
|
||||
def modify_workflow(self, show_all_commits, show_dvc_commits):
|
||||
|
||||
Reference in New Issue
Block a user