def _get_field_descriptor(descriptor_type: descriptor.Descriptor, field_name: str): if path.is_extension(field_name): return descriptor_type.file.pool.FindExtensionByName( path.get_raw_extension_name(field_name)) else: return descriptor_type.fields_by_name[field_name]
def _get_field_descriptor(desc, field_name): if path.is_extension(field_name): try: return desc.file.pool.FindExtensionByName( path.get_raw_extension_name(field_name)) except KeyError: return None return desc.fields_by_name.get(field_name)
def _get_field_descriptor( desc: descriptor.Descriptor, field_name: ProtoFieldName) -> Optional[descriptor.FieldDescriptor]: if path.is_extension(field_name): try: return desc.file.pool.FindExtensionByName( path.get_raw_extension_name(field_name)) except KeyError: return None return desc.fields_by_name.get(field_name)
def _get_initial_file_descriptor_set(descriptor_type, field_names): # pylint:disable=g-ambiguous-str-annotation """Gets a set of file descriptors for a descriptor and extensions.""" result = set() result.add(descriptor_type.file) for field_name in field_names: if path.is_extension(field_name): extension_field = descriptor_type.file.pool.FindExtensionByName( path.get_raw_extension_name(field_name)) extension_file = extension_field.file if extension_file not in result: result.add(extension_file) return result
def _get_any_child(parent, desc, field_name): """Gets the child of an any descriptor.""" if path.is_extension(field_name): full_name_child = parse_message_level_ex.get_full_name_from_any_step( field_name) if full_name_child is None: return None field_message = desc.file.pool.FindMessageTypeByName(full_name_child) return _ProtoChildExpression(parent, field_message, False, field_name) else: return _get_child_helper(parent, desc.fields_by_name.get(field_name), field_name)
def _get_field_names_to_parse(desc, needed_field_names): """Gets the field names to parse from the original protobuf.""" result = set() # Set[ProtoFieldName] for x in needed_field_names: if path.is_map_indexing_step(x): map_field_name, _ = path.parse_map_indexing_step(x) result.add(map_field_name) elif path.is_extension(x) and is_any_descriptor(desc): result.add("type_url") result.add("value") else: result.add(x) return list(result)
def _get_any_parsed_fields(desc, raw_parsed_fields, field_names): """Gets the _ParsedField sequence for an Any protobuf.""" if not is_any_descriptor(desc): return {} result = [] # type: List[struct2tensor_ops._ParsedField] for x in field_names: if path.is_extension(x): result.append( _get_any_parsed_field(raw_parsed_fields["value"], raw_parsed_fields["type_url"], x)) return {x.field_name: x for x in result}
def _get_initial_file_descriptor_set( descriptor_type: descriptor.Descriptor, field_names: Sequence[str]) -> Set[descriptor.FileDescriptor]: """Gets a set of file descriptors for a descriptor and extensions.""" result = set() result.add(descriptor_type.file) for field_name in field_names: if path.is_extension(field_name): extension_field = descriptor_type.file.pool.FindExtensionByName( path.get_raw_extension_name(field_name)) extension_file = extension_field.file if extension_file not in result: result.add(extension_file) return result
def _get_any_child( parent: Union[_ProtoChildExpression, _ProtoRootExpression], desc: descriptor.Descriptor, field_name: ProtoFieldName, backing_str_tensor: Optional[tf.Tensor] ) -> Optional[Union[_ProtoLeafExpression, _ProtoChildExpression]]: """Gets the child of an any descriptor.""" if path.is_extension(field_name): full_name_child = parse_message_level_ex.get_full_name_from_any_step( field_name) if full_name_child is None: return None field_message = desc.file.pool.FindMessageTypeByName(full_name_child) return _ProtoChildExpression(parent, field_message, False, field_name, backing_str_tensor) else: return _get_child_helper(parent, desc.fields_by_name.get(field_name), field_name, backing_str_tensor)