pipeline: show: dot: print dot

This commit is contained in:
TomHortons
2019-05-22 11:11:23 +09:00
parent 3e461f8f11
commit e3de8aac65
2 changed files with 20 additions and 76 deletions
+11 -7
View File
@@ -115,7 +115,8 @@ class CmdPipelineShow(CmdBase):
observe_list.pop(0)
tree.show()
def __write_dot(self, target, commands, outs, filename):
def __write_dot(self, target, commands, outs):
from io import StringIO
import networkx
from networkx.drawing.nx_pydot import write_dot
@@ -124,7 +125,10 @@ class CmdPipelineShow(CmdBase):
simple_g = networkx.DiGraph()
simple_g.add_edges_from(edges)
write_dot(simple_g, filename)
dot_file = StringIO()
write_dot(simple_g, dot_file)
logger.info(dot_file.getvalue())
def run(self):
if not self.args.targets:
@@ -138,10 +142,7 @@ class CmdPipelineShow(CmdBase):
)
elif self.args.dot:
self.__write_dot(
target,
self.args.commands,
self.args.outs,
self.args.dot,
target, self.args.commands, self.args.outs
)
elif self.args.tree:
self._show_dependencies_tree(
@@ -231,7 +232,10 @@ def add_parser(subparsers, parent_parser):
help="Output DAG as ASCII.",
)
pipeline_show_parser.add_argument(
"--dot", help="Write DAG in .dot format."
"--dot",
action="store_true",
default=False,
help="Print DAG with .dot format.",
)
pipeline_show_parser.add_argument(
"--tree",
+9 -69
View File
@@ -4,14 +4,12 @@ from dvc.main import main
from tests.basic_env import TestDvc
from tests.func.test_repro import TestRepro, TestReproChangedDeepData
import os
class TestPipelineShowSingle(TestDvc):
def setUp(self):
super(TestPipelineShowSingle, self).setUp()
self.stage = "foo.dvc"
self.dotFile = "graph.dot"
ret = main(["add", self.FOO])
self.assertEqual(ret, 0)
@@ -32,9 +30,8 @@ class TestPipelineShowSingle(TestDvc):
self.assertEqual(ret, 0)
def test_dot(self):
ret = main(["pipeline", "show", "--dot", self.dotFile, self.stage])
ret = main(["pipeline", "show", "--dot", self.stage])
self.assertEqual(ret, 0)
self.assertTrue(os.path.isfile(self.dotFile))
def test_tree(self):
ret = main(["pipeline", "show", "--tree", self.stage])
@@ -49,25 +46,12 @@ class TestPipelineShowSingle(TestDvc):
self.assertEqual(ret, 0)
def test_dot_commands(self):
ret = main(
[
"pipeline",
"show",
"--dot",
self.dotFile,
self.stage,
"--commands",
]
)
ret = main(["pipeline", "show", "--dot", self.stage, "--commands"])
self.assertEqual(ret, 0)
self.assertTrue(os.path.isfile(self.dotFile))
def test_dot_outs(self):
ret = main(
["pipeline", "show", "--dot", self.dotFile, self.stage, "--outs"]
)
ret = main(["pipeline", "show", "--dot", self.stage, "--outs"])
self.assertEqual(ret, 0)
self.assertTrue(os.path.isfile(self.dotFile))
def test_not_dvc_file(self):
ret = main(["pipeline", "show", self.FOO])
@@ -81,7 +65,6 @@ class TestPipelineShowSingle(TestDvc):
class TestPipelineShow(TestRepro):
def setUp(self):
super(TestPipelineShow, self).setUp()
self.dotFile = "graph.dot"
def test(self):
ret = main(["pipeline", "show", self.file1_stage])
@@ -100,11 +83,8 @@ class TestPipelineShow(TestRepro):
self.assertEqual(ret, 0)
def test_dot(self):
ret = main(
["pipeline", "show", "--dot", self.dotFile, self.file1_stage]
)
ret = main(["pipeline", "show", "--dot", self.file1_stage])
self.assertEqual(ret, 0)
self.assertTrue(os.path.isfile(self.dotFile))
def test_ascii_commands(self):
ret = main(
@@ -118,31 +98,13 @@ class TestPipelineShow(TestRepro):
def test_dot_commands(self):
ret = main(
[
"pipeline",
"show",
"--dot",
self.dotFile,
self.file1_stage,
"--commands",
]
["pipeline", "show", "--dot", self.file1_stage, "--commands"]
)
self.assertEqual(ret, 0)
self.assertTrue(os.path.isfile(self.dotFile))
def test_dot_outs(self):
ret = main(
[
"pipeline",
"show",
"--dot",
self.dotFile,
self.file1_stage,
"--outs",
]
)
ret = main(["pipeline", "show", "--dot", self.file1_stage, "--outs"])
self.assertEqual(ret, 0)
self.assertTrue(os.path.isfile(self.dotFile))
def test_not_dvc_file(self):
ret = main(["pipeline", "show", self.file1])
@@ -169,7 +131,6 @@ class TestPipelineShow(TestRepro):
class TestPipelineShowDeep(TestReproChangedDeepData):
def setUp(self):
super(TestPipelineShowDeep, self).setUp()
self.dotFile = "graph.dot"
def test(self):
ret = main(["pipeline", "show", self.file1_stage])
@@ -188,11 +149,8 @@ class TestPipelineShowDeep(TestReproChangedDeepData):
self.assertEqual(ret, 0)
def test_dot(self):
ret = main(
["pipeline", "show", "--dot", self.dotFile, self.file1_stage]
)
ret = main(["pipeline", "show", "--dot", self.file1_stage])
self.assertEqual(ret, 0)
self.assertTrue(os.path.isfile(self.dotFile))
def test_ascii_commands(self):
ret = main(
@@ -206,31 +164,13 @@ class TestPipelineShowDeep(TestReproChangedDeepData):
def test_dot_commands(self):
ret = main(
[
"pipeline",
"show",
"--dot",
self.dotFile,
self.file1_stage,
"--commands",
]
["pipeline", "show", "--dot", self.file1_stage, "--commands"]
)
self.assertEqual(ret, 0)
self.assertTrue(os.path.isfile(self.dotFile))
def test_dot_outs(self):
ret = main(
[
"pipeline",
"show",
"--dot",
self.dotFile,
self.file1_stage,
"--outs",
]
)
ret = main(["pipeline", "show", "--dot", self.file1_stage, "--outs"])
self.assertEqual(ret, 0)
self.assertTrue(os.path.isfile(self.dotFile))
def test_not_dvc_file(self):
ret = main(["pipeline", "show", self.file1])