text: # -*- coding: utf-8 -*-
  # Generated by the protocol buffer compiler.  DO NOT EDIT!
  # source: google/cloud/monitoring_v3/proto/common.proto
  
  import sys
  _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
  from google.protobuf.internal import enum_type_wrapper
  from google.protobuf import descriptor as _descriptor
  from google.protobuf import message as _message
  from google.protobuf import reflection as _reflection
  from google.protobuf import symbol_database as _symbol_database
  from google.protobuf import descriptor_pb2
  # @@protoc_insertion_point(imports)
  
  _sym_db = _symbol_database.Default()
  
  
  from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
  from google.api import distribution_pb2 as google_dot_api_dot_distribution__pb2
  from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2
  from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
  
  
  DESCRIPTOR = _descriptor.FileDescriptor(
    name='google/cloud/monitoring_v3/proto/common.proto',
    package='google.monitoring.v3',
    syntax='proto3',
    serialized_pb=_b('\n-google/cloud/monitoring_v3/proto/common.proto\x12\x14google.monitoring.v3\x1a\x1cgoogle/api/annotations.proto\x1a\x1dgoogle/api/distribution.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xaa\x01\n\nTypedValue\x12\x14\n\nbool_value\x18\x01 \x01(\x08H\x00\x12\x15\n\x0bint64_value\x18\x02 \x01(\x03H\x00\x12\x16\n\x0c\x64ouble_value\x18\x03 \x01(\x01H\x00\x12\x16\n\x0cstring_value\x18\x04 \x01(\tH\x00\x12\x36\n\x12\x64istribution_value\x18\x05 \x01(\x0b\x32\x18.google.api.DistributionH\x00\x42\x07\n\x05value\"l\n\x0cTimeInterval\x12,\n\x08\x65nd_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xad\x07\n\x0b\x41ggregation\x12\x33\n\x10\x61lignment_period\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x45\n\x12per_series_aligner\x18\x02 \x01(\x0e\x32).google.monitoring.v3.Aggregation.Aligner\x12G\n\x14\x63ross_series_reducer\x18\x04 \x01(\x0e\x32).google.monitoring.v3.Aggregation.Reducer\x12\x17\n\x0fgroup_by_fields\x18\x05 \x03(\t\"\x8b\x03\n\x07\x41ligner\x12\x0e\n\nALIGN_NONE\x10\x00\x12\x0f\n\x0b\x41LIGN_DELTA\x10\x01\x12\x0e\n\nALIGN_RATE\x10\x02\x12\x15\n\x11\x41LIGN_INTERPOLATE\x10\x03\x12\x14\n\x10\x41LIGN_NEXT_OLDER\x10\x04\x12\r\n\tALIGN_MIN\x10\n\x12\r\n\tALIGN_MAX\x10\x0b\x12\x0e\n\nALIGN_MEAN\x10\x0c\x12\x0f\n\x0b\x41LIGN_COUNT\x10\r\x12\r\n\tALIGN_SUM\x10\x0e\x12\x10\n\x0c\x41LIGN_STDDEV\x10\x0f\x12\x14\n\x10\x41LIGN_COUNT_TRUE\x10\x10\x12\x15\n\x11\x41LIGN_COUNT_FALSE\x10\x18\x12\x17\n\x13\x41LIGN_FRACTION_TRUE\x10\x11\x12\x17\n\x13\x41LIGN_PERCENTILE_99\x10\x12\x12\x17\n\x13\x41LIGN_PERCENTILE_95\x10\x13\x12\x17\n\x13\x41LIGN_PERCENTILE_50\x10\x14\x12\x17\n\x13\x41LIGN_PERCENTILE_05\x10\x15\x12\x18\n\x14\x41LIGN_PERCENT_CHANGE\x10\x17\"\xb1\x02\n\x07Reducer\x12\x0f\n\x0bREDUCE_NONE\x10\x00\x12\x0f\n\x0bREDUCE_MEAN\x10\x01\x12\x0e\n\nREDUCE_MIN\x10\x02\x12\x0e\n\nREDUCE_MAX\x10\x03\x12\x0e\n\nREDUCE_SUM\x10\x04\x12\x11\n\rREDUCE_STDDEV\x10\x05\x12\x10\n\x0cREDUCE_COUNT\x10\x06\x12\x15\n\x11REDUCE_COUNT_TRUE\x10\x07\x12\x16\n\x12REDUCE_COUNT_FALSE\x10\x0f\x12\x18\n\x14REDUCE_FRACTION_TRUE\x10\x08\x12\x18\n\x14REDUCE_PERCENTILE_99\x10\t\x12\x18\n\x14REDUCE_PERCENTILE_95\x10\n\x12\x18\n\x14REDUCE_PERCENTILE_50\x10\x0b\x12\x18\n\x14REDUCE_PERCENTILE_05\x10\x0c*\x9e\x01\n\x0e\x43omparisonType\x12\x1a\n\x16\x43OMPARISON_UNSPECIFIED\x10\x00\x12\x11\n\rCOMPARISON_GT\x10\x01\x12\x11\n\rCOMPARISON_GE\x10\x02\x12\x11\n\rCOMPARISON_LT\x10\x03\x12\x11\n\rCOMPARISON_LE\x10\x04\x12\x11\n\rCOMPARISON_EQ\x10\x05\x12\x11\n\rCOMPARISON_NE\x10\x06*]\n\x0bServiceTier\x12\x1c\n\x18SERVICE_TIER_UNSPECIFIED\x10\x00\x12\x16\n\x12SERVICE_TIER_BASIC\x10\x01\x12\x18\n\x14SERVICE_TIER_PREMIUM\x10\x02\x42\xa3\x01\n\x18\x63om.google.monitoring.v3B\x0b\x43ommonProtoP\x01Z>google.golang.org/genproto/googleapis/monitoring/v3;monitoring\xaa\x02\x1aGoogle.Cloud.Monitoring.V3\xca\x02\x1aGoogle\\Cloud\\Monitoring\\V3b\x06proto3')
    ,
    dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,google_dot_api_dot_distribution__pb2.DESCRIPTOR,google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,])
  
  _COMPARISONTYPE = _descriptor.EnumDescriptor(
    name='ComparisonType',
    full_name='google.monitoring.v3.ComparisonType',
    filename=None,
    file=DESCRIPTOR,
    values=[
      _descriptor.EnumValueDescriptor(
        name='COMPARISON_UNSPECIFIED', index=0, number=0,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='COMPARISON_GT', index=1, number=1,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='COMPARISON_GE', index=2, number=2,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='COMPARISON_LT', index=3, number=3,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='COMPARISON_LE', index=4, number=4,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='COMPARISON_EQ', index=5, number=5,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='COMPARISON_NE', index=6, number=6,
        options=None,
        type=None),
    ],
    containing_type=None,
    options=None,
    serialized_start=1425,
    serialized_end=1583,
  )
  _sym_db.RegisterEnumDescriptor(_COMPARISONTYPE)
  
  ComparisonType = enum_type_wrapper.EnumTypeWrapper(_COMPARISONTYPE)
  _SERVICETIER = _descriptor.EnumDescriptor(
    name='ServiceTier',
    full_name='google.monitoring.v3.ServiceTier',
    filename=None,
    file=DESCRIPTOR,
    values=[
      _descriptor.EnumValueDescriptor(
        name='SERVICE_TIER_UNSPECIFIED', index=0, number=0,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='SERVICE_TIER_BASIC', index=1, number=1,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='SERVICE_TIER_PREMIUM', index=2, number=2,
        options=None,
        type=None),
    ],
    containing_type=None,
    options=None,
    serialized_start=1585,
    serialized_end=1678,
  )
  _sym_db.RegisterEnumDescriptor(_SERVICETIER)
  
  ServiceTier = enum_type_wrapper.EnumTypeWrapper(_SERVICETIER)
  COMPARISON_UNSPECIFIED = 0
  COMPARISON_GT = 1
  COMPARISON_GE = 2
  COMPARISON_LT = 3
  COMPARISON_LE = 4
  COMPARISON_EQ = 5
  COMPARISON_NE = 6
  SERVICE_TIER_UNSPECIFIED = 0
  SERVICE_TIER_BASIC = 1
  SERVICE_TIER_PREMIUM = 2
  
  
  _AGGREGATION_ALIGNER = _descriptor.EnumDescriptor(
    name='Aligner',
    full_name='google.monitoring.v3.Aggregation.Aligner',
    filename=None,
    file=DESCRIPTOR,
    values=[
      _descriptor.EnumValueDescriptor(
        name='ALIGN_NONE', index=0, number=0,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='ALIGN_DELTA', index=1, number=1,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='ALIGN_RATE', index=2, number=2,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='ALIGN_INTERPOLATE', index=3, number=3,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='ALIGN_NEXT_OLDER', index=4, number=4,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='ALIGN_MIN', index=5, number=10,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='ALIGN_MAX', index=6, number=11,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='ALIGN_MEAN', index=7, number=12,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='ALIGN_COUNT', index=8, number=13,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='ALIGN_SUM', index=9, number=14,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='ALIGN_STDDEV', index=10, number=15,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='ALIGN_COUNT_TRUE', index=11, number=16,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='ALIGN_COUNT_FALSE', index=12, number=24,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='ALIGN_FRACTION_TRUE', index=13, number=17,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='ALIGN_PERCENTILE_99', index=14, number=18,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='ALIGN_PERCENTILE_95', index=15, number=19,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='ALIGN_PERCENTILE_50', index=16, number=20,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='ALIGN_PERCENTILE_05', index=17, number=21,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='ALIGN_PERCENT_CHANGE', index=18, number=23,
        options=None,
        type=None),
    ],
    containing_type=None,
    options=None,
    serialized_start=719,
    serialized_end=1114,
  )
  _sym_db.RegisterEnumDescriptor(_AGGREGATION_ALIGNER)
  
  _AGGREGATION_REDUCER = _descriptor.EnumDescriptor(
    name='Reducer',
    full_name='google.monitoring.v3.Aggregation.Reducer',
    filename=None,
    file=DESCRIPTOR,
    values=[
      _descriptor.EnumValueDescriptor(
        name='REDUCE_NONE', index=0, number=0,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='REDUCE_MEAN', index=1, number=1,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='REDUCE_MIN', index=2, number=2,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='REDUCE_MAX', index=3, number=3,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='REDUCE_SUM', index=4, number=4,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='REDUCE_STDDEV', index=5, number=5,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='REDUCE_COUNT', index=6, number=6,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='REDUCE_COUNT_TRUE', index=7, number=7,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='REDUCE_COUNT_FALSE', index=8, number=15,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='REDUCE_FRACTION_TRUE', index=9, number=8,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='REDUCE_PERCENTILE_99', index=10, number=9,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='REDUCE_PERCENTILE_95', index=11, number=10,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='REDUCE_PERCENTILE_50', index=12, number=11,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='REDUCE_PERCENTILE_05', index=13, number=12,
        options=None,
        type=None),
    ],
    containing_type=None,
    options=None,
    serialized_start=1117,
    serialized_end=1422,
  )
  _sym_db.RegisterEnumDescriptor(_AGGREGATION_REDUCER)
  
  
  _TYPEDVALUE = _descriptor.Descriptor(
    name='TypedValue',
    full_name='google.monitoring.v3.TypedValue',
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
      _descriptor.FieldDescriptor(
        name='bool_value', full_name='google.monitoring.v3.TypedValue.bool_value', index=0,
        number=1, type=8, cpp_type=7, label=1,
        has_default_value=False, default_value=False,
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None, file=DESCRIPTOR),
      _descriptor.FieldDescriptor(
        name='int64_value', full_name='google.monitoring.v3.TypedValue.int64_value', index=1,
        number=2, type=3, cpp_type=2, label=1,
        has_default_value=False, default_value=0,
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None, file=DESCRIPTOR),
      _descriptor.FieldDescriptor(
        name='double_value', full_name='google.monitoring.v3.TypedValue.double_value', index=2,
        number=3, type=1, cpp_type=5, label=1,
        has_default_value=False, default_value=float(0),
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None, file=DESCRIPTOR),
      _descriptor.FieldDescriptor(
        name='string_value', full_name='google.monitoring.v3.TypedValue.string_value', index=3,
        number=4, type=9, cpp_type=9, label=1,
        has_default_value=False, default_value=_b("").decode('utf-8'),
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None, file=DESCRIPTOR),
      _descriptor.FieldDescriptor(
        name='distribution_value', full_name='google.monitoring.v3.TypedValue.distribution_value', index=4,
        number=5, type=11, cpp_type=10, label=1,
        has_default_value=False, default_value=None,
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None, file=DESCRIPTOR),
    ],
    extensions=[
    ],
    nested_types=[],
    enum_types=[
    ],
    options=None,
    is_extendable=False,
    syntax='proto3',
    extension_ranges=[],
    oneofs=[
      _descriptor.OneofDescriptor(
        name='value', full_name='google.monitoring.v3.TypedValue.value',
        index=0, containing_type=None, fields=[]),
    ],
    serialized_start=198,
    serialized_end=368,
  )
  
  
  _TIMEINTERVAL = _descriptor.Descriptor(
    name='TimeInterval',
    full_name='google.monitoring.v3.TimeInterval',
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
      _descriptor.FieldDescriptor(
        name='end_time', full_name='google.monitoring.v3.TimeInterval.end_time', index=0,
        number=2, type=11, cpp_type=10, label=1,
        has_default_value=False, default_value=None,
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None, file=DESCRIPTOR),
      _descriptor.FieldDescriptor(
        name='start_time', full_name='google.monitoring.v3.TimeInterval.start_time', index=1,
        number=1, type=11, cpp_type=10, label=1,
        has_default_value=False, default_value=None,
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None, file=DESCRIPTOR),
    ],
    extensions=[
    ],
    nested_types=[],
    enum_types=[
    ],
    options=None,
    is_extendable=False,
    syntax='proto3',
    extension_ranges=[],
    oneofs=[
    ],
    serialized_start=370,
    serialized_end=478,
  )
  
  
  _AGGREGATION = _descriptor.Descriptor(
    name='Aggregation',
    full_name='google.monitoring.v3.Aggregation',
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
      _descriptor.FieldDescriptor(
        name='alignment_period', full_name='google.monitoring.v3.Aggregation.alignment_period', index=0,
        number=1, type=11, cpp_type=10, label=1,
        has_default_value=False, default_value=None,
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None, file=DESCRIPTOR),
      _descriptor.FieldDescriptor(
        name='per_series_aligner', full_name='google.monitoring.v3.Aggregation.per_series_aligner', index=1,
        number=2, type=14, cpp_type=8, label=1,
        has_default_value=False, default_value=0,
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None, file=DESCRIPTOR),
      _descriptor.FieldDescriptor(
        name='cross_series_reducer', full_name='google.monitoring.v3.Aggregation.cross_series_reducer', index=2,
        number=4, type=14, cpp_type=8, label=1,
        has_default_value=False, default_value=0,
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None, file=DESCRIPTOR),
      _descriptor.FieldDescriptor(
        name='group_by_fields', full_name='google.monitoring.v3.Aggregation.group_by_fields', index=3,
        number=5, type=9, cpp_type=9, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None, file=DESCRIPTOR),
    ],
    extensions=[
    ],
    nested_types=[],
    enum_types=[
      _AGGREGATION_ALIGNER,
      _AGGREGATION_REDUCER,
    ],
    options=None,
    is_extendable=False,
    syntax='proto3',
    extension_ranges=[],
    oneofs=[
    ],
    serialized_start=481,
    serialized_end=1422,
  )
  
  _TYPEDVALUE.fields_by_name['distribution_value'].message_type = google_dot_api_dot_distribution__pb2._DISTRIBUTION
  _TYPEDVALUE.oneofs_by_name['value'].fields.append(
    _TYPEDVALUE.fields_by_name['bool_value'])
  _TYPEDVALUE.fields_by_name['bool_value'].containing_oneof = _TYPEDVALUE.oneofs_by_name['value']
  _TYPEDVALUE.oneofs_by_name['value'].fields.append(
    _TYPEDVALUE.fields_by_name['int64_value'])
  _TYPEDVALUE.fields_by_name['int64_value'].containing_oneof = _TYPEDVALUE.oneofs_by_name['value']
  _TYPEDVALUE.oneofs_by_name['value'].fields.append(
    _TYPEDVALUE.fields_by_name['double_value'])
  _TYPEDVALUE.fields_by_name['double_value'].containing_oneof = _TYPEDVALUE.oneofs_by_name['value']
  _TYPEDVALUE.oneofs_by_name['value'].fields.append(
    _TYPEDVALUE.fields_by_name['string_value'])
  _TYPEDVALUE.fields_by_name['string_value'].containing_oneof = _TYPEDVALUE.oneofs_by_name['value']
  _TYPEDVALUE.oneofs_by_name['value'].fields.append(
    _TYPEDVALUE.fields_by_name['distribution_value'])
  _TYPEDVALUE.fields_by_name['distribution_value'].containing_oneof = _TYPEDVALUE.oneofs_by_name['value']
  _TIMEINTERVAL.fields_by_name['end_time'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP
  _TIMEINTERVAL.fields_by_name['start_time'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP
  _AGGREGATION.fields_by_name['alignment_period'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION
  _AGGREGATION.fields_by_name['per_series_aligner'].enum_type = _AGGREGATION_ALIGNER
  _AGGREGATION.fields_by_name['cross_series_reducer'].enum_type = _AGGREGATION_REDUCER
  _AGGREGATION_ALIGNER.containing_type = _AGGREGATION
  _AGGREGATION_REDUCER.containing_type = _AGGREGATION
  DESCRIPTOR.message_types_by_name['TypedValue'] = _TYPEDVALUE
  DESCRIPTOR.message_types_by_name['TimeInterval'] = _TIMEINTERVAL
  DESCRIPTOR.message_types_by_name['Aggregation'] = _AGGREGATION
  DESCRIPTOR.enum_types_by_name['ComparisonType'] = _COMPARISONTYPE
  DESCRIPTOR.enum_types_by_name['ServiceTier'] = _SERVICETIER
  _sym_db.RegisterFileDescriptor(DESCRIPTOR)
  
  TypedValue = _reflection.GeneratedProtocolMessageType('TypedValue', (_message.Message,), dict(
    DESCRIPTOR = _TYPEDVALUE,
    __module__ = 'google.cloud.monitoring_v3.proto.common_pb2'
    ,
    __doc__ = """A single strongly-typed value.
    
    
    Attributes:
        value:
            The typed value field.
        bool_value:
            A Boolean value: ``true`` or ``false``.
        int64_value:
            A 64-bit integer. Its range is approximately ±9.2x1018.
        double_value:
            A 64-bit double-precision floating-point number. Its magnitude
            is approximately ±10±300 and it has 16 significant digits of
            precision.
        string_value:
            A variable-length string value.
        distribution_value:
            A distribution value.
    """,
    # @@protoc_insertion_point(class_scope:google.monitoring.v3.TypedValue)
    ))
  _sym_db.RegisterMessage(TypedValue)
  
  TimeInterval = _reflection.GeneratedProtocolMessageType('TimeInterval', (_message.Message,), dict(
    DESCRIPTOR = _TIMEINTERVAL,
    __module__ = 'google.cloud.monitoring_v3.proto.common_pb2'
    ,
    __doc__ = """A time interval extending just after a start time through an end time.
    If the start time is the same as the end time, then the interval
    represents a single point in time.
    
    
    Attributes:
        end_time:
            Required. The end of the time interval.
        start_time:
            Optional. The beginning of the time interval. The default
            value for the start time is the end time. The start time must
            not be later than the end time.
    """,
    # @@protoc_insertion_point(class_scope:google.monitoring.v3.TimeInterval)
    ))
  _sym_db.RegisterMessage(TimeInterval)
  
  Aggregation = _reflection.GeneratedProtocolMessageType('Aggregation', (_message.Message,), dict(
    DESCRIPTOR = _AGGREGATION,
    __module__ = 'google.cloud.monitoring_v3.proto.common_pb2'
    ,
    __doc__ = """Describes how to combine multiple time series to provide different views
    of the data. Aggregation consists of an alignment step on individual
    time series (``alignment_period`` and ``per_series_aligner``) followed
    by an optional reduction step of the data across the aligned time series
    (``cross_series_reducer`` and ``group_by_fields``). For more details,
    see `Aggregation </monitoring/api/learn_more#aggregation>`__.
    
    
    Attributes:
        alignment_period:
            The alignment period for per-[time
            series][google.monitoring.v3.TimeSeries] alignment. If
            present, ``alignmentPeriod`` must be at least 60 seconds.
            After per-time series alignment, each time series will contain
            data points only on the period boundaries. If
            ``perSeriesAligner`` is not specified or equals
            ``ALIGN_NONE``, then this field is ignored. If
            ``perSeriesAligner`` is specified and does not equal
            ``ALIGN_NONE``, then this field must be defined; otherwise an
            error is returned.
        per_series_aligner:
            The approach to be used to align individual time series. Not
            all alignment functions may be applied to all time series,
            depending on the metric type and value type of the original
            time series. Alignment may change the metric type or the value
            type of the time series.  Time series data must be aligned in
            order to perform cross-time series reduction. If
            ``crossSeriesReducer`` is specified, then ``perSeriesAligner``
            must be specified and not equal ``ALIGN_NONE`` and
            ``alignmentPeriod`` must be specified; otherwise, an error is
            returned.
        cross_series_reducer:
            The approach to be used to combine time series. Not all
            reducer functions may be applied to all time series, depending
            on the metric type and the value type of the original time
            series. Reduction may change the metric type of value type of
            the time series.  Time series data must be aligned in order to
            perform cross-time series reduction. If ``crossSeriesReducer``
            is specified, then ``perSeriesAligner`` must be specified and
            not equal ``ALIGN_NONE`` and ``alignmentPeriod`` must be
            specified; otherwise, an error is returned.
        group_by_fields:
            The set of fields to preserve when ``crossSeriesReducer`` is
            specified. The ``groupByFields`` determine how the time series
            are partitioned into subsets prior to applying the aggregation
            function. Each subset contains time series that have the same
            value for each of the grouping fields. Each individual time
            series is a member of exactly one subset. The
            ``crossSeriesReducer`` is applied to each subset of time
            series. It is not possible to reduce across different resource
            types, so this field implicitly contains ``resource.type``.
            Fields not specified in ``groupByFields`` are aggregated away.
            If ``groupByFields`` is not specified and all the time series
            have the same resource type, then the time series are
            aggregated into a single output time series. If
            ``crossSeriesReducer`` is not defined, this field is ignored.
    """,
    # @@protoc_insertion_point(class_scope:google.monitoring.v3.Aggregation)
    ))
  _sym_db.RegisterMessage(Aggregation)
  
  
  DESCRIPTOR.has_options = True
  DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n\030com.google.monitoring.v3B\013CommonProtoP\001Z>google.golang.org/genproto/googleapis/monitoring/v3;monitoring\252\002\032Google.Cloud.Monitoring.V3\312\002\032Google\\Cloud\\Monitoring\\V3'))
  # @@protoc_insertion_point(module_scope)
  