Python google.protobuf.descriptor.FieldDescriptor.TYPE_ENUM Examples
The following are 11
code examples of google.protobuf.descriptor.FieldDescriptor.TYPE_ENUM().
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: format.py From sea with MIT License | 6 votes |
def _get_field_value_adaptor(pb, field, use_enum_labels, including_default_value_fields): if field.type == FieldDescriptor.TYPE_MESSAGE: # recursively encode protobuf sub-message return lambda pb: msg2dict( pb, use_enum_labels=use_enum_labels, including_default_value_fields=including_default_value_fields) if use_enum_labels and field.type == FieldDescriptor.TYPE_ENUM: return lambda value: enum_label_name(field, value) if field.type in TYPE_CALLABLE_MAP: return TYPE_CALLABLE_MAP[field.type] raise TypeError("Field %s.%s has unrecognised type id %d" % ( pb.__class__.__name__, field.name, field.type))
Example #2
Source File: protobuf.py From mentor with Apache License 2.0 | 6 votes |
def protobuf_to_dict(pb, containers=CONTAINER_MAP, converters=TYPE_CALLABLE_MAP): result = message_to_container(pb, containers) # for field, value in pb.ListFields(): # only non-empty fields for field in pb.DESCRIPTOR.fields: # empty fields too value = getattr(pb, field.name) if (field.message_type and field.message_type.has_options and field.message_type.GetOptions().map_entry): converter = dict elif field.type == FieldDescriptor.TYPE_MESSAGE: # recursively encode protobuf sub-message converter = partial(protobuf_to_dict, containers=containers, converters=converters) elif field.type == FieldDescriptor.TYPE_ENUM: converter = partial(enum_to_label, field) else: converter = converters[field.type] if field.label == FieldDescriptor.LABEL_REPEATED: converter = partial(map, converter) result[field.name] = converter(value) return result
Example #3
Source File: protobuf_json.py From idasec with GNU Lesser General Public License v2.1 | 5 votes |
def json2pb(pb, js): """ convert JSON string to google.protobuf.descriptor instance :param pb: protobuf class to fill :param js: json input data """ for field in pb.DESCRIPTOR.fields: if field.name not in js: continue if field.type == FD.TYPE_MESSAGE: pass elif field.type in _js2ftype: ftype = _js2ftype[field.type] else: raise ParseError( "Field %s.%s of type '%d' is not supported" % (pb.__class__.__name__, field.name, field.type,)) value = js[field.name] if field.label == FD.LABEL_REPEATED: pb_value = getattr(pb, field.name, None) for v in value: if field.type == FD.TYPE_MESSAGE: json2pb(pb_value.add(), v) else: pb_value.append(ftype(v)) else: if field.type == FD.TYPE_MESSAGE: json2pb(getattr(pb, field.name, None), value) elif field.type == FD.TYPE_ENUM: real_value = field.enum_type.values_by_name[value].number setattr(pb, field.name, real_value) else: setattr(pb, field.name, ftype(value)) return pb
Example #4
Source File: protobuf_json.py From idasec with GNU Lesser General Public License v2.1 | 5 votes |
def pb2json(pb): """ convert google.protobuf.descriptor instance to JSON string :param pb: protobuf class to be converted in json """ js = {} # fields = pb.DESCRIPTOR.fields #all fields fields = pb.ListFields() # only filled (including extensions) for field, value in fields: if field.type == FD.TYPE_MESSAGE: ftype = pb2json elif field.type == FD.TYPE_ENUM: ftype = str value = field.enum_type.values_by_number[value].name elif field.type in _ftype2js: ftype = _ftype2js[field.type] else: raise ParseError( "Field %s.%s of type '%d' is not supported" % (pb.__class__.__name__, field.name, field.type,)) if field.label == FD.LABEL_REPEATED: js_value = [] for v in value: js_value.append(ftype(v)) else: js_value = ftype(value) js[field.name] = js_value return js
Example #5
Source File: protobuf_to_dict.py From perceptron-benchmark with Apache License 2.0 | 5 votes |
def _get_field_value_adaptor(pb, field, type_callable_map=TYPE_CALLABLE_MAP, use_enum_labels=False): if field.type == FieldDescriptor.TYPE_MESSAGE: # recursively encode protobuf sub-message return lambda pb: protobuf_to_dict(pb, type_callable_map, use_enum_labels) if use_enum_labels and field.type == FieldDescriptor.TYPE_ENUM: return lambda value: enum_label_name(field, value) if field.type in type_callable_map: return type_callable_map[field.type] raise TypeError("Field %s.%s has unrecognised type id %d" % ( pb.__class__.__name__, field.name, field.type))
Example #6
Source File: protobuf_to_dict.py From perceptron-benchmark with Apache License 2.0 | 5 votes |
def _dict_to_protobuf(pb, value, type_callable_map, strict): """ dict to protobuf Args: pb: data in dict format Returns: pb: data in proto format """ fields = _get_field_mapping(pb, value, strict) for field, input_value, pb_value in fields: if field.label == FieldDescriptor.LABEL_REPEATED: for item in input_value: if field.type == FieldDescriptor.TYPE_MESSAGE: m = pb_value.add() _dict_to_protobuf(m, item, type_callable_map, strict) elif field.type == FieldDescriptor.TYPE_ENUM and isinstance(item, basestring): pb_value.append(_string_to_enum(field, item)) else: pb_value.append(item) continue if field.type == FieldDescriptor.TYPE_MESSAGE: _dict_to_protobuf(pb_value, input_value, type_callable_map, strict) continue if field.type in type_callable_map: input_value = type_callable_map[field.type](input_value) if field.is_extension: pb.Extensions[field] = input_value continue if field.type == FieldDescriptor.TYPE_ENUM and isinstance(input_value, basestring): input_value = _string_to_enum(field, input_value) setattr(pb, field.name, input_value) return pb
Example #7
Source File: protobuf.py From mentor with Apache License 2.0 | 5 votes |
def dict_to_protobuf(dct, pb=None, containers=CONTAINER_MAP, converters=REVERSE_TYPE_CALLABLE_MAP, strict=True): default = container_to_message(dct, containers) if pb: if default: pb.MergeFrom(default) else: pb = default pb = pb if isinstance(pb, Message) else pb() for k, v in dct.items(): try: # TODO silently skip undifened fields field = pb.DESCRIPTOR.fields_by_name[k] except: if not strict: continue else: raise pb_value = getattr(pb, k, None) if field.label == FieldDescriptor.LABEL_REPEATED: for item in v: if field.type == FieldDescriptor.TYPE_MESSAGE: dict_to_protobuf(item, pb_value.add(), containers, converters) elif field.type == FieldDescriptor.TYPE_ENUM: pb_value.append(label_to_enum(field, item)) else: pb_value.append(item) elif field.type == FieldDescriptor.TYPE_MESSAGE: dict_to_protobuf(v, pb_value, containers, converters) else: if field.type in converters: v = converters[field.type](v) elif field.type == FieldDescriptor.TYPE_ENUM: v = label_to_enum(field, v) setattr(pb, field.name, v) return pb
Example #8
Source File: protobuf_to_dict.py From pogom with MIT License | 5 votes |
def _get_field_value_adaptor(pb, field, type_callable_map=TYPE_CALLABLE_MAP, use_enum_labels=False): if field.type == FieldDescriptor.TYPE_MESSAGE: # recursively encode protobuf sub-message return lambda pb: protobuf_to_dict( pb, type_callable_map=type_callable_map, use_enum_labels=use_enum_labels) if use_enum_labels and field.type == FieldDescriptor.TYPE_ENUM: return lambda value: enum_label_name(field, value) if field.type in type_callable_map: return type_callable_map[field.type] raise TypeError("Field %s.%s has unrecognised type id %d" % ( pb.__class__.__name__, field.name, field.type))
Example #9
Source File: protobuf_to_dict.py From pogom with MIT License | 5 votes |
def _dict_to_protobuf(pb, value, type_callable_map, strict): fields = _get_field_mapping(pb, value, strict) for field, input_value, pb_value in fields: if field.label == FieldDescriptor.LABEL_REPEATED: if field.message_type and field.message_type.has_options and field.message_type.GetOptions().map_entry: pb_value.update(input_value) continue for item in input_value: if field.type == FieldDescriptor.TYPE_MESSAGE: m = pb_value.add() _dict_to_protobuf(m, item, type_callable_map, strict) elif field.type == FieldDescriptor.TYPE_ENUM and isinstance(item, six.string_types): pb_value.append(_string_to_enum(field, item)) else: pb_value.append(item) continue if field.type == FieldDescriptor.TYPE_MESSAGE: _dict_to_protobuf(pb_value, input_value, type_callable_map, strict) continue if field.type in type_callable_map: input_value = type_callable_map[field.type](input_value) if field.is_extension: pb.Extensions[field] = input_value continue if field.type == FieldDescriptor.TYPE_ENUM and isinstance(input_value, six.string_types): input_value = _string_to_enum(field, input_value) setattr(pb, field.name, input_value) return pb
Example #10
Source File: protobuf_to_dict.py From PokemonGo-DesktopMap with MIT License | 5 votes |
def _get_field_value_adaptor(pb, field, type_callable_map=TYPE_CALLABLE_MAP, use_enum_labels=False): if field.type == FieldDescriptor.TYPE_MESSAGE: # recursively encode protobuf sub-message return lambda pb: protobuf_to_dict( pb, type_callable_map=type_callable_map, use_enum_labels=use_enum_labels) if use_enum_labels and field.type == FieldDescriptor.TYPE_ENUM: return lambda value: enum_label_name(field, value) if field.type in type_callable_map: return type_callable_map[field.type] raise TypeError("Field %s.%s has unrecognised type id %d" % ( pb.__class__.__name__, field.name, field.type))
Example #11
Source File: protobuf_to_dict.py From PokemonGo-DesktopMap with MIT License | 5 votes |
def _dict_to_protobuf(pb, value, type_callable_map, strict): fields = _get_field_mapping(pb, value, strict) for field, input_value, pb_value in fields: if field.label == FieldDescriptor.LABEL_REPEATED: if field.message_type and field.message_type.has_options and field.message_type.GetOptions().map_entry: pb_value.update(input_value) continue for item in input_value: if field.type == FieldDescriptor.TYPE_MESSAGE: m = pb_value.add() _dict_to_protobuf(m, item, type_callable_map, strict) elif field.type == FieldDescriptor.TYPE_ENUM and isinstance(item, six.string_types): pb_value.append(_string_to_enum(field, item)) else: pb_value.append(item) continue if field.type == FieldDescriptor.TYPE_MESSAGE: _dict_to_protobuf(pb_value, input_value, type_callable_map, strict) continue if field.type in type_callable_map: input_value = type_callable_map[field.type](input_value) if field.is_extension: pb.Extensions[field] = input_value continue if field.type == FieldDescriptor.TYPE_ENUM and isinstance(input_value, six.string_types): input_value = _string_to_enum(field, input_value) setattr(pb, field.name, input_value) return pb