Rename "bonobo graph" to "bonobo inspect". For now, graphviz is default but there will probably be a humand default in the future, with graphviz source generation set if --graph (or -g) flag is passed.
This commit is contained in:
2
Makefile
2
Makefile
@ -1,7 +1,7 @@
|
|||||||
# This file has been auto-generated.
|
# This file has been auto-generated.
|
||||||
# All changes will be lost, see Projectfile.
|
# All changes will be lost, see Projectfile.
|
||||||
#
|
#
|
||||||
# Updated at 2017-09-30 10:24:51.699716
|
# Updated at 2017-09-30 10:57:00.855477
|
||||||
|
|
||||||
PACKAGE ?= bonobo
|
PACKAGE ?= bonobo
|
||||||
PYTHON ?= $(shell which python)
|
PYTHON ?= $(shell which python)
|
||||||
|
|||||||
@ -30,7 +30,7 @@ python.setup(
|
|||||||
],
|
],
|
||||||
'bonobo.commands': [
|
'bonobo.commands': [
|
||||||
'init = bonobo.commands.init:register',
|
'init = bonobo.commands.init:register',
|
||||||
'graph = bonobo.commands.graph:register',
|
'inspect = bonobo.commands.inspect:register',
|
||||||
'run = bonobo.commands.run:register',
|
'run = bonobo.commands.run:register',
|
||||||
'version = bonobo.commands.version:register',
|
'version = bonobo.commands.version:register',
|
||||||
],
|
],
|
||||||
|
|||||||
@ -1,32 +0,0 @@
|
|||||||
import json
|
|
||||||
|
|
||||||
import itertools
|
|
||||||
|
|
||||||
from bonobo.util.objects import get_name
|
|
||||||
from bonobo.commands.run import read, register_generic_run_arguments
|
|
||||||
from bonobo.constants import BEGIN
|
|
||||||
|
|
||||||
|
|
||||||
def execute(filename, module, install=False, quiet=False, verbose=False):
|
|
||||||
graph, plugins, services = read(filename, module, install, quiet, verbose)
|
|
||||||
|
|
||||||
print('digraph {')
|
|
||||||
print(' rankdir = LR;')
|
|
||||||
print(' "BEGIN" [shape="point"];')
|
|
||||||
|
|
||||||
for i in graph.outputs_of(BEGIN):
|
|
||||||
print(' "BEGIN" -> ' + json.dumps(get_name(graph[i])) + ';')
|
|
||||||
|
|
||||||
for ix in graph.topologically_sorted_indexes:
|
|
||||||
for iy in graph.outputs_of(ix):
|
|
||||||
print(' {} -> {};'.format(
|
|
||||||
json.dumps(get_name(graph[ix])),
|
|
||||||
json.dumps(get_name(graph[iy]))
|
|
||||||
))
|
|
||||||
|
|
||||||
print('}')
|
|
||||||
|
|
||||||
|
|
||||||
def register(parser):
|
|
||||||
register_generic_run_arguments(parser)
|
|
||||||
return execute
|
|
||||||
33
bonobo/commands/inspect.py
Normal file
33
bonobo/commands/inspect.py
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
import json
|
||||||
|
|
||||||
|
from bonobo.commands.run import read, register_generic_run_arguments
|
||||||
|
from bonobo.constants import BEGIN
|
||||||
|
from bonobo.util.objects import get_name
|
||||||
|
|
||||||
|
OUTPUT_GRAPHVIZ = 'graphviz'
|
||||||
|
|
||||||
|
def execute(*, output, **kwargs):
|
||||||
|
graph, plugins, services = read(**kwargs)
|
||||||
|
|
||||||
|
if output == OUTPUT_GRAPHVIZ:
|
||||||
|
print('digraph {')
|
||||||
|
print(' rankdir = LR;')
|
||||||
|
print(' "BEGIN" [shape="point"];')
|
||||||
|
|
||||||
|
for i in graph.outputs_of(BEGIN):
|
||||||
|
print(' "BEGIN" -> ' + json.dumps(get_name(graph[i])) + ';')
|
||||||
|
|
||||||
|
for ix in graph.topologically_sorted_indexes:
|
||||||
|
for iy in graph.outputs_of(ix):
|
||||||
|
print(' {} -> {};'.format(json.dumps(get_name(graph[ix])), json.dumps(get_name(graph[iy]))))
|
||||||
|
|
||||||
|
print('}')
|
||||||
|
else:
|
||||||
|
raise NotImplementedError('Output type not implemented.')
|
||||||
|
|
||||||
|
|
||||||
|
def register(parser):
|
||||||
|
register_generic_run_arguments(parser)
|
||||||
|
parser.add_argument('--graph', '-g', dest='output', action='store_const', const=OUTPUT_GRAPHVIZ)
|
||||||
|
parser.set_defaults(output=OUTPUT_GRAPHVIZ)
|
||||||
|
return execute
|
||||||
@ -3,7 +3,7 @@ import os
|
|||||||
import bonobo
|
import bonobo
|
||||||
from bonobo.constants import DEFAULT_SERVICES_ATTR, DEFAULT_SERVICES_FILENAME
|
from bonobo.constants import DEFAULT_SERVICES_ATTR, DEFAULT_SERVICES_FILENAME
|
||||||
|
|
||||||
DEFAULT_GRAPH_FILENAMES = ('__main__.py', 'main.py',)
|
DEFAULT_GRAPH_FILENAMES = ('__main__.py', 'main.py', )
|
||||||
DEFAULT_GRAPH_ATTR = 'get_graph'
|
DEFAULT_GRAPH_ATTR = 'get_graph'
|
||||||
|
|
||||||
|
|
||||||
@ -99,11 +99,7 @@ def read(filename, module, install=False, quiet=False, verbose=False, env=None):
|
|||||||
def execute(filename, module, install=False, quiet=False, verbose=False, env=None):
|
def execute(filename, module, install=False, quiet=False, verbose=False, env=None):
|
||||||
graph, plugins, services = read(filename, module, install, quiet, verbose, env)
|
graph, plugins, services = read(filename, module, install, quiet, verbose, env)
|
||||||
|
|
||||||
return bonobo.run(
|
return bonobo.run(graph, plugins=plugins, services=services)
|
||||||
graph,
|
|
||||||
plugins=plugins,
|
|
||||||
services=services
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def register_generic_run_arguments(parser, required=True):
|
def register_generic_run_arguments(parser, required=True):
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
def render_as_dot(graph):
|
def render_as_dot(graph):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -6,4 +5,4 @@ def render_as_dot(graph):
|
|||||||
:return: str
|
:return: str
|
||||||
"""
|
"""
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|||||||
2
setup.py
2
setup.py
@ -67,7 +67,7 @@ setup(
|
|||||||
},
|
},
|
||||||
entry_points={
|
entry_points={
|
||||||
'bonobo.commands': [
|
'bonobo.commands': [
|
||||||
'init = bonobo.commands.init:register', 'graph = bonobo.commands.graph:register',
|
'init = bonobo.commands.init:register', 'inspect = bonobo.commands.inspect:register',
|
||||||
'run = bonobo.commands.run:register', 'version = bonobo.commands.version:register'
|
'run = bonobo.commands.run:register', 'version = bonobo.commands.version:register'
|
||||||
],
|
],
|
||||||
'console_scripts': ['bonobo = bonobo.commands:entrypoint']
|
'console_scripts': ['bonobo = bonobo.commands:entrypoint']
|
||||||
|
|||||||
@ -101,11 +101,11 @@ def test_version(runner, capsys):
|
|||||||
|
|
||||||
@all_runners
|
@all_runners
|
||||||
def test_run_with_env(runner, capsys):
|
def test_run_with_env(runner, capsys):
|
||||||
runner('run', '--quiet',
|
runner(
|
||||||
str(pathlib.Path(os.path.dirname(__file__),
|
'run', '--quiet',
|
||||||
'util', 'get_passed_env.py')),
|
str(pathlib.Path(os.path.dirname(__file__), 'util', 'get_passed_env.py')), '--env', 'ENV_TEST_NUMBER=123',
|
||||||
'--env', 'ENV_TEST_NUMBER=123', '--env', 'ENV_TEST_USER=cwandrews',
|
'--env', 'ENV_TEST_USER=cwandrews', '--env', "ENV_TEST_STRING='my_test_string'"
|
||||||
'--env', "ENV_TEST_STRING='my_test_string'")
|
)
|
||||||
out, err = capsys.readouterr()
|
out, err = capsys.readouterr()
|
||||||
out = out.split('\n')
|
out = out.split('\n')
|
||||||
assert out[0] == 'cwandrews'
|
assert out[0] == 'cwandrews'
|
||||||
@ -115,9 +115,10 @@ def test_run_with_env(runner, capsys):
|
|||||||
|
|
||||||
@all_runners
|
@all_runners
|
||||||
def test_run_module_with_env(runner, capsys):
|
def test_run_module_with_env(runner, capsys):
|
||||||
runner('run', '--quiet', '-m', 'tests.util.get_passed_env',
|
runner(
|
||||||
'--env', 'ENV_TEST_NUMBER=123', '--env', 'ENV_TEST_USER=cwandrews',
|
'run', '--quiet', '-m', 'tests.util.get_passed_env', '--env', 'ENV_TEST_NUMBER=123', '--env',
|
||||||
'--env', "ENV_TEST_STRING='my_test_string'")
|
'ENV_TEST_USER=cwandrews', '--env', "ENV_TEST_STRING='my_test_string'"
|
||||||
|
)
|
||||||
out, err = capsys.readouterr()
|
out, err = capsys.readouterr()
|
||||||
out = out.split('\n')
|
out = out.split('\n')
|
||||||
assert out[0] == 'cwandrews'
|
assert out[0] == 'cwandrews'
|
||||||
|
|||||||
Reference in New Issue
Block a user