#!/usr/bin/python2.4
# Generated by the protocol buffer compiler.  DO NOT EDIT!

from froofle.protobuf import descriptor
from froofle.protobuf import message
from froofle.protobuf import reflection
from froofle.protobuf import service
from froofle.protobuf import service_reflection
from froofle.protobuf import descriptor_pb2


_UPLOADBUNDLERESPONSE_CODETYPE = descriptor.EnumDescriptor(
  name='CodeType',
  full_name='codereview.UploadBundleResponse.CodeType',
  filename='CodeType',
  values=[
    descriptor.EnumValueDescriptor(
      name='RECEIVED', index=0, number=1,
      options=None,
      type=None),
    descriptor.EnumValueDescriptor(
      name='CONTINUE', index=1, number=4,
      options=None,
      type=None),
    descriptor.EnumValueDescriptor(
      name='UNAUTHORIZED_USER', index=2, number=7,
      options=None,
      type=None),
    descriptor.EnumValueDescriptor(
      name='UNKNOWN_CHANGE', index=3, number=9,
      options=None,
      type=None),
    descriptor.EnumValueDescriptor(
      name='CHANGE_CLOSED', index=4, number=10,
      options=None,
      type=None),
    descriptor.EnumValueDescriptor(
      name='UNKNOWN_EMAIL', index=5, number=11,
      options=None,
      type=None),
    descriptor.EnumValueDescriptor(
      name='UNKNOWN_PROJECT', index=6, number=2,
      options=None,
      type=None),
    descriptor.EnumValueDescriptor(
      name='UNKNOWN_BRANCH', index=7, number=3,
      options=None,
      type=None),
    descriptor.EnumValueDescriptor(
      name='UNKNOWN_BUNDLE', index=8, number=5,
      options=None,
      type=None),
    descriptor.EnumValueDescriptor(
      name='NOT_BUNDLE_OWNER', index=9, number=6,
      options=None,
      type=None),
    descriptor.EnumValueDescriptor(
      name='BUNDLE_CLOSED', index=10, number=8,
      options=None,
      type=None),
  ],
  options=None,
)


_REPLACEPATCHSET = descriptor.Descriptor(
  name='ReplacePatchSet',
  full_name='codereview.ReplacePatchSet',
  filename='upload_bundle.proto',
  containing_type=None,
  fields=[
    descriptor.FieldDescriptor(
      name='change_id', full_name='codereview.ReplacePatchSet.change_id', index=0,
      number=1, type=9, cpp_type=9, label=2,
      default_value=unicode("", "utf-8"),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    descriptor.FieldDescriptor(
      name='object_id', full_name='codereview.ReplacePatchSet.object_id', index=1,
      number=2, type=9, cpp_type=9, label=2,
      default_value=unicode("", "utf-8"),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],  # TODO(robinson): Implement.
  enum_types=[
  ],
  options=None)


_UPLOADBUNDLEREQUEST = descriptor.Descriptor(
  name='UploadBundleRequest',
  full_name='codereview.UploadBundleRequest',
  filename='upload_bundle.proto',
  containing_type=None,
  fields=[
    descriptor.FieldDescriptor(
      name='dest_project', full_name='codereview.UploadBundleRequest.dest_project', index=0,
      number=10, type=9, cpp_type=9, label=2,
      default_value=unicode("", "utf-8"),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    descriptor.FieldDescriptor(
      name='dest_branch', full_name='codereview.UploadBundleRequest.dest_branch', index=1,
      number=11, type=9, cpp_type=9, label=2,
      default_value=unicode("", "utf-8"),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    descriptor.FieldDescriptor(
      name='partial_upload', full_name='codereview.UploadBundleRequest.partial_upload', index=2,
      number=12, type=8, cpp_type=7, label=2,
      default_value=False,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    descriptor.FieldDescriptor(
      name='bundle_data', full_name='codereview.UploadBundleRequest.bundle_data', index=3,
      number=13, type=12, cpp_type=9, label=2,
      default_value="",
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    descriptor.FieldDescriptor(
      name='contained_object', full_name='codereview.UploadBundleRequest.contained_object', index=4,
      number=1, type=9, cpp_type=9, label=3,
      default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    descriptor.FieldDescriptor(
      name='replace', full_name='codereview.UploadBundleRequest.replace', index=5,
      number=2, type=11, cpp_type=10, label=3,
      default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    descriptor.FieldDescriptor(
      name='reviewers', full_name='codereview.UploadBundleRequest.reviewers', index=6,
      number=3, type=9, cpp_type=9, label=3,
      default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    descriptor.FieldDescriptor(
      name='cc', full_name='codereview.UploadBundleRequest.cc', index=7,
      number=4, type=9, cpp_type=9, label=3,
      default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],  # TODO(robinson): Implement.
  enum_types=[
  ],
  options=None)


_UPLOADBUNDLERESPONSE = descriptor.Descriptor(
  name='UploadBundleResponse',
  full_name='codereview.UploadBundleResponse',
  filename='upload_bundle.proto',
  containing_type=None,
  fields=[
    descriptor.FieldDescriptor(
      name='status_code', full_name='codereview.UploadBundleResponse.status_code', index=0,
      number=10, type=14, cpp_type=8, label=2,
      default_value=1,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    descriptor.FieldDescriptor(
      name='bundle_id', full_name='codereview.UploadBundleResponse.bundle_id', index=1,
      number=11, type=9, cpp_type=9, label=1,
      default_value=unicode("", "utf-8"),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    descriptor.FieldDescriptor(
      name='invalid_reviewers', full_name='codereview.UploadBundleResponse.invalid_reviewers', index=2,
      number=12, type=9, cpp_type=9, label=3,
      default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    descriptor.FieldDescriptor(
      name='invalid_cc', full_name='codereview.UploadBundleResponse.invalid_cc', index=3,
      number=13, type=9, cpp_type=9, label=3,
      default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],  # TODO(robinson): Implement.
  enum_types=[
    _UPLOADBUNDLERESPONSE_CODETYPE,
  ],
  options=None)


_UPLOADBUNDLECONTINUE = descriptor.Descriptor(
  name='UploadBundleContinue',
  full_name='codereview.UploadBundleContinue',
  filename='upload_bundle.proto',
  containing_type=None,
  fields=[
    descriptor.FieldDescriptor(
      name='bundle_id', full_name='codereview.UploadBundleContinue.bundle_id', index=0,
      number=10, type=9, cpp_type=9, label=2,
      default_value=unicode("", "utf-8"),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    descriptor.FieldDescriptor(
      name='segment_id', full_name='codereview.UploadBundleContinue.segment_id', index=1,
      number=11, type=5, cpp_type=1, label=2,
      default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    descriptor.FieldDescriptor(
      name='partial_upload', full_name='codereview.UploadBundleContinue.partial_upload', index=2,
      number=12, type=8, cpp_type=7, label=2,
      default_value=False,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    descriptor.FieldDescriptor(
      name='bundle_data', full_name='codereview.UploadBundleContinue.bundle_data', index=3,
      number=13, type=12, cpp_type=9, label=1,
      default_value="",
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],  # TODO(robinson): Implement.
  enum_types=[
  ],
  options=None)


_UPLOADBUNDLEREQUEST.fields_by_name['replace'].message_type = _REPLACEPATCHSET
_UPLOADBUNDLERESPONSE.fields_by_name['status_code'].enum_type = _UPLOADBUNDLERESPONSE_CODETYPE

class ReplacePatchSet(message.Message):
  __metaclass__ = reflection.GeneratedProtocolMessageType
  DESCRIPTOR = _REPLACEPATCHSET

class UploadBundleRequest(message.Message):
  __metaclass__ = reflection.GeneratedProtocolMessageType
  DESCRIPTOR = _UPLOADBUNDLEREQUEST

class UploadBundleResponse(message.Message):
  __metaclass__ = reflection.GeneratedProtocolMessageType
  DESCRIPTOR = _UPLOADBUNDLERESPONSE

class UploadBundleContinue(message.Message):
  __metaclass__ = reflection.GeneratedProtocolMessageType
  DESCRIPTOR = _UPLOADBUNDLECONTINUE

