Python google.protobuf.descriptor.FieldDescriptor.TYPE_BYTES Examples
The following are 4
code examples of google.protobuf.descriptor.FieldDescriptor.TYPE_BYTES().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
google.protobuf.descriptor.FieldDescriptor
, or try the search function
.
Example #1
Source File: pburl_decoder.py From pbtk with GNU General Public License v3.0 | 6 votes |
def produce(obj, pb, sep): for ds, val in pb.ListFields(): for val in (val if ds.label == ds.LABEL_REPEATED else [val]): if ds.cpp_type == ds.CPPTYPE_MESSAGE: origlen = len(obj) produce(obj, val, sep) obj.insert(origlen, '%dm%d' % (ds.number, len(obj) - origlen)) continue elif ds.type == ds.TYPE_STRING: if sep == '!': val = val.replace('*', '*2A').replace('!', '*21') else: val = quote(val, safe='~()*!.\'') elif ds.type == ds.TYPE_BYTES: val = urlsafe_b64encode(val).decode('ascii').strip('=') elif ds.type == ds.TYPE_BOOL: val = int(val) obj.append('%d%s%s' % (ds.number, types_enc[ds.type], val)) return obj
Example #2
Source File: pblite.py From hangups with MIT License | 6 votes |
def _decode_repeated_field(message, field, value_list): """Decode repeated field.""" if field.type == FieldDescriptor.TYPE_MESSAGE: for value in value_list: decode(getattr(message, field.name).add(), value) else: try: for value in value_list: if field.type == FieldDescriptor.TYPE_BYTES: value = base64.b64decode(value) getattr(message, field.name).append(value) except (ValueError, TypeError) as e: # ValueError: invalid enum value, negative unsigned int value, or # invalid base64 # TypeError: mismatched type logger.warning('Message %r ignoring repeated field %s: %s', message.__class__.__name__, field.name, e) # Ignore any values already decoded by clearing list message.ClearField(field.name)
Example #3
Source File: pblite.py From hangups with MIT License | 5 votes |
def _decode_field(message, field, value): """Decode optional or required field.""" if field.type == FieldDescriptor.TYPE_MESSAGE: decode(getattr(message, field.name), value) else: try: if field.type == FieldDescriptor.TYPE_BYTES: value = base64.b64decode(value) setattr(message, field.name, value) except (ValueError, TypeError) as e: # ValueError: invalid enum value, negative unsigned int value, or # invalid base64 # TypeError: mismatched type logger.warning('Message %r ignoring field %s: %s', message.__class__.__name__, field.name, e)
Example #4
Source File: pburl_decoder.py From pbtk with GNU General Public License v3.0 | 4 votes |
def consume(obj, pb, sep): while obj: field = obj.pop(0) index, type_, val = match('(\d+)(\w)(.*)', field).groups() type_ = types_dec[type_] if int(index) not in pb.DESCRIPTOR.fields_by_number: warn('Unknown index: !' + field) if type_ == fd.TYPE_MESSAGE: del obj[:int(val)] continue field = pb.DESCRIPTOR.fields_by_number[int(index)] repeated = field.label == field.LABEL_REPEATED field = field.name if type_ == fd.TYPE_MESSAGE: if not repeated: getattr(pb, field).SetInParent() consume(obj[:int(val)], getattr(pb, field), sep) else: consume(obj[:int(val)], getattr(pb, field).add(), sep) del obj[:int(val)] continue elif type_ == fd.TYPE_STRING: if sep == '!': val = val.replace('*21', '!').replace('*2A', '*') else: val = unquote(val) elif type_ == fd.TYPE_BYTES: val = urlsafe_b64decode(val + '=' * (-len(val) % 4)) elif type_ == "base64_string": val = urlsafe_b64decode(val + '=' * (-len(val) % 4)).decode('utf8') elif type_ == fd.TYPE_BOOL: val = bool(int(val)) elif type_ in (fd.TYPE_DOUBLE, fd.TYPE_FLOAT): val = float(val) else: val = int(val) if not repeated: setattr(pb, field, val) else: getattr(pb, field).append(val)