Example #1
0
 def testPrintFieldValue(self, message_module):
     message = message_module.TestAllTypes()
     field = message.DESCRIPTOR.fields_by_name['optional_float']
     value = message.optional_float
     out = text_format.TextWriter(False)
     text_format.PrintFieldValue(field, value, out)
     self.assertEqual('0.0', out.getvalue())
     out.close()
     # Test Printer
     out = text_format.TextWriter(False)
     printer = text_format._Printer(out)
     printer.PrintFieldValue(field, value)
     self.assertEqual('0.0', out.getvalue())
     out.close()
Example #2
0
 def testPrintMessageSetByFieldNumber(self):
     out = text_format.TextWriter(False)
     message = unittest_mset_pb2.TestMessageSetContainer()
     ext1 = unittest_mset_pb2.TestMessageSetExtension1.message_set_extension
     ext2 = unittest_mset_pb2.TestMessageSetExtension2.message_set_extension
     message.message_set.Extensions[ext1].i = 23
     message.message_set.Extensions[ext2].str = 'foo'
     text_format.PrintMessage(message, out, use_field_number=True)
     self.CompareToGoldenText(
         out.getvalue(), '1 {\n'
         '  1545008 {\n'
         '    15: 23\n'
         '  }\n'
         '  1547769 {\n'
         '    25: \"foo\"\n'
         '  }\n'
         '}\n')
     out.close()
Example #3
0
def pformat_pb(message, max_level=None, as_utf8=False, *args, **kwargs):
    def _oneline_formatter(message):
        return text_format.MessageToString(message,
                                           *args,
                                           **kwargs,
                                           as_utf8=as_utf8,
                                           as_one_line=True,
                                           message_formatter=None)

    def _monkey_PrintMessage(_dfl_fn, _self, message):
        if (max_level is not None) and (_self.indent // 2 > max_level):
            _self.out.write(' ' * _self.indent)
            _self.out.write(_oneline_formatter(message))
            _self.out.write('\n')
            return
        return _dfl_fn(message)

    if max_level == 0:
        result = _oneline_formatter(message)
    else:
        out = text_format.TextWriter(as_utf8)
        printer = text_format._Printer(out,
                                       *args,
                                       **kwargs,
                                       as_utf8=as_utf8,
                                       indent=2)

        printer.PrintMessage = partial(_monkey_PrintMessage,
                                       printer.PrintMessage, printer)
        printer.PrintMessage(message)
        result = out.getvalue()
        out.close()

        result = '\n' + result

    return '<Protobuf {{{}}}>'.format(result)