diff options
author | Doug Hellmann <doug.hellmann@dreamhost.com> | 2012-06-18 18:13:59 -0400 |
---|---|---|
committer | Doug Hellmann <doug.hellmann@dreamhost.com> | 2012-06-18 18:13:59 -0400 |
commit | 9bb0a4a13acfce6a0924514b883417875a1143dc (patch) | |
tree | fa63700c7a47489a7aa18f8aef7289773a675cc3 | |
parent | a7987bc9d562341967305b20a174658dc556ce20 (diff) | |
parent | 1473b678ce4219f5119ae9e98af0fa5d7e21992d (diff) | |
download | cliff-tablib-9bb0a4a13acfce6a0924514b883417875a1143dc.tar.gz |
merge API refactoring work
-rw-r--r-- | cliff/command.py | 7 | ||||
-rw-r--r-- | cliff/display.py | 17 | ||||
-rw-r--r-- | cliff/help.py | 2 | ||||
-rw-r--r-- | cliff/lister.py | 16 | ||||
-rw-r--r-- | cliff/show.py | 15 | ||||
-rw-r--r-- | demoapp/cliffdemo/list.py | 2 | ||||
-rw-r--r-- | demoapp/cliffdemo/show.py | 2 | ||||
-rw-r--r-- | tests/test_command.py | 2 | ||||
-rw-r--r-- | tests/test_help.py | 2 |
9 files changed, 35 insertions, 30 deletions
diff --git a/cliff/command.py b/cliff/command.py index 7ff526e..e369988 100644 --- a/cliff/command.py +++ b/cliff/command.py @@ -32,6 +32,13 @@ class Command(object): return parser @abc.abstractmethod + def take_action(self, parsed_args): + """Return a two-part tuple with a tuple of column names + and a tuple of values. + """ + def run(self, parsed_args): """Do something useful. """ + self.take_action(parsed_args) + return 0 diff --git a/cliff/display.py b/cliff/display.py index 09c68ce..3c05760 100644 --- a/cliff/display.py +++ b/cliff/display.py @@ -70,14 +70,17 @@ class DisplayCommandBase(Command): return parser @abc.abstractmethod - def get_data(self, parsed_args): - """Return a two-part tuple with a tuple of column names - and a tuple of values. + def produce_output(self, parsed_args, column_names, data): + """Use the formatter to generate the output. + + :param parsed_args: argparse.Namespace instance with argument values + :param column_names: sequence of strings containing names + of output columns + :param data: iterable with values matching the column names """ - @abc.abstractmethod def run(self, parsed_args): - column_names, data = self.get_data(parsed_args) - formatter = self.formatters[parsed_args.formatter] - formatter.emit_one(column_names, data, self.app.stdout, parsed_args) + self.formatter = self.formatters[parsed_args.formatter] + column_names, data = self.take_action(parsed_args) + self.produce_output(parsed_args, column_names, data) return 0 diff --git a/cliff/help.py b/cliff/help.py index cd427d7..49cfd16 100644 --- a/cliff/help.py +++ b/cliff/help.py @@ -36,7 +36,7 @@ class HelpCommand(Command): ) return parser - def run(self, parsed_args): + def take_action(self, parsed_args): if parsed_args.cmd: try: the_cmd = self.app.command_manager.find_command( diff --git a/cliff/lister.py b/cliff/lister.py index bef2d17..406be97 100644 --- a/cliff/lister.py +++ b/cliff/lister.py @@ -24,13 +24,12 @@ class Lister(DisplayCommandBase): return 'table' @abc.abstractmethod - def get_data(self, parsed_args): + def take_action(self, parsed_args): """Return a tuple containing the column names and an iterable containing the data to be listed. """ - def run(self, parsed_args): - column_names, data = self.get_data(parsed_args) + def produce_output(self, parsed_args, column_names, data): if not parsed_args.columns: columns_to_include = column_names data_gen = data @@ -50,10 +49,9 @@ class Lister(DisplayCommandBase): # list so the table formatter can ask for its length. data_gen = (list(itertools.compress(row, selector)) for row in data) - formatter = self.formatters[parsed_args.formatter] - formatter.emit_list(columns_to_include, - data_gen, - self.app.stdout, - parsed_args, - ) + self.formatter.emit_list(columns_to_include, + data_gen, + self.app.stdout, + parsed_args, + ) return 0 diff --git a/cliff/show.py b/cliff/show.py index 1c00bf2..39e94b1 100644 --- a/cliff/show.py +++ b/cliff/show.py @@ -24,13 +24,12 @@ class ShowOne(DisplayCommandBase): return 'table' @abc.abstractmethod - def get_data(self, parsed_args): + def take_action(self, parsed_args): """Return a two-part tuple with a tuple of column names and a tuple of values. """ - def run(self, parsed_args): - column_names, data = self.get_data(parsed_args) + def produce_output(self, parsed_args, column_names, data): if not parsed_args.columns: columns_to_include = column_names else: @@ -40,10 +39,8 @@ class ShowOne(DisplayCommandBase): selector = [(c in columns_to_include) for c in column_names] data = list(itertools.compress(data, selector)) - formatter = self.formatters[parsed_args.formatter] - formatter.emit_one(columns_to_include, - data, - self.app.stdout, - parsed_args, - ) + self.formatter.emit_one(columns_to_include, + data, + self.app.stdout, + parsed_args) return 0 diff --git a/demoapp/cliffdemo/list.py b/demoapp/cliffdemo/list.py index 124997f..3dcee4a 100644 --- a/demoapp/cliffdemo/list.py +++ b/demoapp/cliffdemo/list.py @@ -12,7 +12,7 @@ class Files(Lister): log = logging.getLogger(__name__) - def get_data(self, parsed_args): + def take_action(self, parsed_args): return (('Name', 'Size'), ((n, os.stat(n).st_size) for n in os.listdir('.')) ) diff --git a/demoapp/cliffdemo/show.py b/demoapp/cliffdemo/show.py index 54d98be..9351148 100644 --- a/demoapp/cliffdemo/show.py +++ b/demoapp/cliffdemo/show.py @@ -14,7 +14,7 @@ class File(ShowOne): parser.add_argument('filename', nargs='?', default='.') return parser - def get_data(self, parsed_args): + def take_action(self, parsed_args): stat_data = os.stat(parsed_args.filename) columns = ('Name', 'Size', diff --git a/tests/test_command.py b/tests/test_command.py index 8b0d217..39fde51 100644 --- a/tests/test_command.py +++ b/tests/test_command.py @@ -6,7 +6,7 @@ class TestCommand(Command): """Description of command. """ - def run(self, parsed_args): + def take_action(self, parsed_args): return diff --git a/tests/test_help.py b/tests/test_help.py index 8c7e7ed..6d67356 100644 --- a/tests/test_help.py +++ b/tests/test_help.py @@ -28,7 +28,7 @@ class TestCommand(Command): # so parse_args() is called. return TestParser() - def run(self, args): + def take_action(self, args): return |