def run(self, parsed_args): # Use custom output producer. # cliff.lister with default formatters does not work # with large arrays of data, because it does not support streaming # TODO(implement custom formatter) formatter = make_display_attr_getter(self.columns) data = six.moves.map(formatter, self.take_action(parsed_args)) self.produce_output(parsed_args, data) return 0
def test_make_display_attr_getter(self): obj = Dummy() obj.attr_int = 0 obj.attr_str = "text" obj.attr_none = None formatter = utils.make_display_attr_getter( ["attr_int", "attr_str", "attr_none"] ) self.assertEqual( [u"0", u"text", u"-"], formatter(obj) )