Esempio n. 1
0
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]
Esempio n. 2
0
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)
Esempio n. 3
0
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)
Esempio n. 4
0
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
Esempio n. 5
0
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)
Esempio n. 6
0
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)
Esempio n. 7
0
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
Esempio n. 9
0
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)