diff options
author | Ryan Petrello <lists@ryanpetrello.com> | 2015-05-06 10:17:30 -0400 |
---|---|---|
committer | Ryan Petrello <lists@ryanpetrello.com> | 2015-05-06 10:17:56 -0400 |
commit | ca2e90a94031fdbba31bf4bda87b51a87e97eb7c (patch) | |
tree | fb7475ce51ddc4d8807900553d52eff682fe4f9e /cliff/display.py | |
parent | 79a8791e7fefdcbe62f264bf905ac09a1958e753 (diff) | |
download | cliff-master.tar.gz |
Diffstat (limited to 'cliff/display.py')
-rw-r--r-- | cliff/display.py | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/cliff/display.py b/cliff/display.py deleted file mode 100644 index edea1f3..0000000 --- a/cliff/display.py +++ /dev/null @@ -1,82 +0,0 @@ -"""Application base class for displaying data. -""" -import abc -import logging - -import stevedore - -from .command import Command - - -LOG = logging.getLogger(__name__) - - -class DisplayCommandBase(Command): - """Command base class for displaying data about a single object. - """ - __metaclass__ = abc.ABCMeta - - def __init__(self, app, app_args): - super(DisplayCommandBase, self).__init__(app, app_args) - self.formatters = self._load_formatter_plugins() - - @abc.abstractproperty - def formatter_namespace(self): - "String specifying the namespace to use for loading formatter plugins." - - @abc.abstractproperty - def formatter_default(self): - "String specifying the name of the default formatter." - - def _load_formatter_plugins(self): - # Here so tests can override - return stevedore.ExtensionManager( - self.formatter_namespace, - invoke_on_load=True, - ) - - def get_parser(self, prog_name): - parser = super(DisplayCommandBase, self).get_parser(prog_name) - formatter_group = parser.add_argument_group( - title='output formatters', - description='output formatter options', - ) - formatter_choices = sorted(self.formatters.names()) - formatter_default = self.formatter_default - if formatter_default not in formatter_choices: - formatter_default = formatter_choices[0] - formatter_group.add_argument( - '-f', '--format', - dest='formatter', - action='store', - choices=formatter_choices, - default=formatter_default, - help='the output format, defaults to %s' % formatter_default, - ) - formatter_group.add_argument( - '-c', '--column', - action='append', - default=[], - dest='columns', - metavar='COLUMN', - help='specify the column(s) to include, can be repeated', - ) - for formatter in self.formatters: - formatter.obj.add_argument_group(parser) - return parser - - @abc.abstractmethod - 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 - """ - - def run(self, parsed_args): - self.formatter = self.formatters[parsed_args.formatter].obj - column_names, data = self.take_action(parsed_args) - self.produce_output(parsed_args, column_names, data) - return 0 |