mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +01:00
pipeline: show: dot: print dot
This commit is contained in:
+11
-7
@@ -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",
|
||||
|
||||
@@ -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])
|
||||
|
||||
Reference in New Issue
Block a user