def FormatFieldAsDefinitionListItem(outer_type_context, type_context, field, protodoc_manifest):
    'Format a FieldDescriptorProto as RST definition list item.\n\n  Args:\n    outer_type_context: contextual information for enclosing message.\n    type_context: contextual information for message/enum/field.\n    field: FieldDescriptorProto.\n    protodoc_manifest: tools.protodoc.Manifest for proto.\n\n  Returns:\n    RST formatted definition list item.\n  '
    field_annotations = []
    anchor = FormatAnchor(FieldCrossRefLabel(NormalizeTypeContextName(type_context.name)))
    if field.options.HasExtension(validate_pb2.rules):
        rule = field.options.Extensions[validate_pb2.rules]
        if ((rule.HasField('message') and rule.message.required) or (rule.HasField('duration') and rule.duration.required) or (rule.HasField('string') and (rule.string.min_len > 0)) or (rule.HasField('string') and (rule.string.min_bytes > 0)) or (rule.HasField('repeated') and (rule.repeated.min_items > 0))):
            field_annotations = ['*REQUIRED*']
    leading_comment = type_context.leading_comment
    formatted_leading_comment = FormatCommentWithAnnotations(leading_comment)
    if HideNotImplemented(leading_comment):
        return ''
    if field.HasField('oneof_index'):
        oneof_context = outer_type_context.ExtendOneof(field.oneof_index, type_context.oneof_names[field.oneof_index])
        oneof_comment = oneof_context.leading_comment
        formatted_oneof_comment = FormatCommentWithAnnotations(oneof_comment)
        if HideNotImplemented(oneof_comment):
            return ''
        if ((len(type_context.oneof_fields[field.oneof_index]) == 1) and type_context.oneof_required[field.oneof_index]):
            field_annotations = ['*REQUIRED*']
        if (len(type_context.oneof_fields[field.oneof_index]) > 1):
            field_annotations = []
            oneof_template = ('\nPrecisely one of %s must be set.\n' if type_context.oneof_required[field.oneof_index] else '\nOnly one of %s may be set.\n')
            formatted_oneof_comment += (oneof_template % ', '.join((FormatInternalLink(f, FieldCrossRefLabel(NormalizeTypeContextName(outer_type_context.ExtendField(i, f).name))) for (i, f) in type_context.oneof_fields[field.oneof_index])))
    else:
        formatted_oneof_comment = ''
    if field.options.HasExtension(security_pb2.security):
        manifest_description = protodoc_manifest.fields.get(type_context.name)
        if (not manifest_description):
            raise ProtodocError(('Missing protodoc manifest YAML for %s' % type_context.name))
        formatted_security_options = FormatSecurityOptions(field.options.Extensions[security_pb2.security], field, type_context, manifest_description.edge_config)
    else:
        formatted_security_options = ''
    pretty_label_names = {field.LABEL_OPTIONAL: '', field.LABEL_REPEATED: '**repeated** '}
    comment = (('(%s) ' % ', '.join(([(pretty_label_names[field.label] + FormatFieldType(type_context, field))] + field_annotations))) + formatted_leading_comment)
    return ((((anchor + field.name) + '\n') + MapLines(functools.partial(Indent, 2), (comment + formatted_oneof_comment))) + formatted_security_options)
Format a FieldDescriptorProto as RST definition list item.

Args:
  outer_type_context: contextual information for enclosing message.
  type_context: contextual information for message/enum/field.
  field: FieldDescriptorProto.
  protodoc_manifest: tools.protodoc.Manifest for proto.

Returns:
  RST formatted definition list item.
def FormatFieldAsDefinitionListItem(outer_type_context, type_context, field, protodoc_manifest):
    'Format a FieldDescriptorProto as RST definition list item.\n\n  Args:\n    outer_type_context: contextual information for enclosing message.\n    type_context: contextual information for message/enum/field.\n    field: FieldDescriptorProto.\n    protodoc_manifest: tools.protodoc.Manifest for proto.\n\n  Returns:\n    RST formatted definition list item.\n  '
    field_annotations = []
    anchor = FormatAnchor(FieldCrossRefLabel(NormalizeTypeContextName(type_context.name)))
    if field.options.HasExtension(validate_pb2.rules):
        rule = field.options.Extensions[validate_pb2.rules]
        if ((rule.HasField('message') and rule.message.required) or (rule.HasField('duration') and rule.duration.required) or (rule.HasField('string') and (rule.string.min_len > 0)) or (rule.HasField('string') and (rule.string.min_bytes > 0)) or (rule.HasField('repeated') and (rule.repeated.min_items > 0))):
            field_annotations = ['*REQUIRED*']
    leading_comment = type_context.leading_comment
    formatted_leading_comment = FormatCommentWithAnnotations(leading_comment)
    if HideNotImplemented(leading_comment):
        return 
    if field.HasField('oneof_index'):
        oneof_context = outer_type_context.ExtendOneof(field.oneof_index, type_context.oneof_names[field.oneof_index])
        oneof_comment = oneof_context.leading_comment
        formatted_oneof_comment = FormatCommentWithAnnotations(oneof_comment)
        if HideNotImplemented(oneof_comment):
            return 
        if ((len(type_context.oneof_fields[field.oneof_index]) == 1) and type_context.oneof_required[field.oneof_index]):
            field_annotations = ['*REQUIRED*']
        if (len(type_context.oneof_fields[field.oneof_index]) > 1):
            field_annotations = []
            oneof_template = ('\nPrecisely one of %s must be set.\n' if type_context.oneof_required[field.oneof_index] else '\nOnly one of %s may be set.\n')
            formatted_oneof_comment += (oneof_template % ', '.join((FormatInternalLink(f, FieldCrossRefLabel(NormalizeTypeContextName(outer_type_context.ExtendField(i, f).name))) for (i, f) in type_context.oneof_fields[field.oneof_index])))
    else:
        formatted_oneof_comment = 
    if field.options.HasExtension(security_pb2.security):
        manifest_description = protodoc_manifest.fields.get(type_context.name)
        if (not manifest_description):
            raise ProtodocError(('Missing protodoc manifest YAML for %s' % type_context.name))
        formatted_security_options = FormatSecurityOptions(field.options.Extensions[security_pb2.security], field, type_context, manifest_description.edge_config)
    else:
        formatted_security_options = 
    pretty_label_names = {field.LABEL_OPTIONAL: , field.LABEL_REPEATED: '**repeated** '}
    comment = (('(%s) ' % ', '.join(([(pretty_label_names[field.label] + FormatFieldType(type_context, field))] + field_annotations))) + formatted_leading_comment)
    return ((((anchor + field.name) + '\n') + MapLines(functools.partial(Indent, 2), (comment + formatted_oneof_comment))) + formatted_security_options)