# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: openhtf/output/proto/test_runs.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.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2


DESCRIPTOR = _descriptor.FileDescriptor(
  name='openhtf/output/proto/test_runs.proto',
  package='openhtf',
  syntax='proto2',
  serialized_pb=_b('\n$openhtf/output/proto/test_runs.proto\x12\x07openhtf\x1a google/protobuf/descriptor.proto\",\n\x0b\x46\x61ilureCode\x12\x0c\n\x04\x63ode\x18\x01 \x01(\t\x12\x0f\n\x07\x64\x65tails\x18\x02 \x01(\t\">\n\x08TimeInfo\x12\x19\n\x11start_time_millis\x18\x01 \x01(\x03\x12\x17\n\x0f\x65nd_time_millis\x18\x02 \x01(\x03\"Q\n\x06Timing\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12$\n\ttime_info\x18\x03 \x01(\x0b\x32\x11.openhtf.TimeInfo\"c\n\x05Phase\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x14\n\x0c\x63\x61pabilities\x18\x03 \x03(\t\x12!\n\x06timing\x18\x04 \x01(\x0b\x32\x11.openhtf.TimeInfo\"\xf2\x02\n\rTestParameter\x12\x0c\n\x04name\x18\x01 \x02(\t\x12\x1f\n\x06status\x18\x02 \x01(\x0e\x32\x0f.openhtf.Status\x12\x13\n\x0b\x64\x65scription\x18\x06 \x01(\t\x12\x11\n\timportant\x18\x12 \x01(\x08\x12\x15\n\rparameter_tag\x18\x10 \x01(\t\x12\x15\n\rnumeric_value\x18\x0b \x01(\x01\x12\x17\n\x0fnumeric_minimum\x18\x0c \x01(\x01\x12\x17\n\x0fnumeric_maximum\x18\r \x01(\x01\x12\x12\n\ntext_value\x18\x0e \x01(\t\x12\x15\n\rexpected_text\x18\x0f \x01(\t\x12\x13\n\x0bis_optional\x18\x11 \x01(\x08\x12\x17\n\x0fset_time_millis\x18\x13 \x01(\x03\x12*\n\tunit_code\x18\x14 \x01(\x0e\x32\x17.openhtf.Units.UnitCode\x12\x1d\n\x15\x61ssociated_attachment\x18\x15 \x01(\t*\x06\x08\x88\'\x10\xd0(\"\x81\x02\n\x11TestRunLogMessage\x12\x18\n\x10timestamp_millis\x18\x01 \x01(\x03\x12\x13\n\x0blog_message\x18\x02 \x01(\t\x12\x13\n\x0blogger_name\x18\x03 \x01(\t\x12\x0f\n\x07levelno\x18\x04 \x01(\x05\x12/\n\x05level\x18\x07 \x01(\x0e\x32 .openhtf.TestRunLogMessage.Level\x12\x12\n\nlog_source\x18\x05 \x01(\t\x12\x0e\n\x06lineno\x18\x06 \x01(\x05\"B\n\x05Level\x12\t\n\x05\x44\x45\x42UG\x10\n\x12\x08\n\x04INFO\x10\x14\x12\x0b\n\x07WARNING\x10\x1e\x12\t\n\x05\x45RROR\x10(\x12\x0c\n\x08\x43RITICAL\x10\x32\"\xc0\x04\n\x07TestRun\x12\x12\n\ndut_serial\x18\x01 \x02(\t\x12\x13\n\x0btester_name\x18\x02 \x02(\t\x12$\n\ttest_info\x18\x03 \x02(\x0b\x32\x11.openhtf.TestInfo\x12-\n\x0btest_status\x18\x04 \x02(\x0e\x32\x0f.openhtf.Status:\x07\x43REATED\x12\x19\n\x11start_time_millis\x18\x08 \x01(\x03\x12\x17\n\x0f\x65nd_time_millis\x18\t \x01(\x03\x12\x10\n\x08run_name\x18\n \x01(\t\x12/\n\x0ftest_parameters\x18\x05 \x03(\x0b\x32\x16.openhtf.TestParameter\x12\x36\n\x0finfo_parameters\x18\x06 \x03(\x0b\x32\x1d.openhtf.InformationParameter\x12-\n\ttest_logs\x18\x0b \x03(\x0b\x32\x1a.openhtf.TestRunLogMessage\x12+\n\rfailure_codes\x18\x13 \x03(\x0b\x32\x14.openhtf.FailureCode\x12\x15\n\roperator_name\x18\x16 \x01(\t\x12\x12\n\nlot_number\x18\x17 \x01(\t\x12\x0f\n\x07part_id\x18\x18 \x01(\t\x12\x15\n\rsynthetic_dut\x18\x19 \x01(\x08\x12 \n\x07timings\x18\x1b \x03(\x0b\x32\x0f.openhtf.Timing\x12\x1e\n\x06phases\x18\x1c \x03(\x0b\x32\x0e.openhtf.Phase\x12\x17\n\x0f\x66ramework_build\x18\x11 \x01(\t\"E\n\x08TestInfo\x12\x0c\n\x04name\x18\x01 \x02(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x16\n\x0eversion_string\x18\x05 \x01(\t\"\xb1\x01\n\x14InformationParameter\x12\x0c\n\x04name\x18\x01 \x02(\t\x12\x14\n\x0cvalue_binary\x18\x07 \x01(\x0c\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x17\n\x0fset_time_millis\x18\x08 \x01(\x03\x12\x15\n\rparameter_tag\x18\x05 \x01(\t\x12\x30\n\x04type\x18\x04 \x01(\x0e\x32\x17.openhtf.InformationTag:\tTEXT_UTF8\"\xa4\t\n\x05Units\"\x9a\t\n\x08UnitCode\x12\x08\n\x04NONE\x10\x01\x12\x1c\n\x07PERCENT\x10\x02\x1a\x0f\xd2\xb0\xd6\xc0\x01\x02P1\x9a\xd0\x86\xfd\x01\x01%\x12\x1b\n\x0cNO_DIMENSION\x10\x03\x1a\t\xd2\xb0\xd6\xc0\x01\x03NDL\x12\x1b\n\x05PIXEL\x10\x04\x1a\x10\xd2\xb0\xd6\xc0\x01\x02PX\x9a\xd0\x86\xfd\x01\x02px\x12\x1a\n\x0bPIXEL_LEVEL\x10\x05\x1a\t\xd2\xb0\xd6\xc0\x01\x03PXL\x12,\n\x14ROTATIONS_PER_MINUTE\x10\x07\x1a\x12\xd2\xb0\xd6\xc0\x01\x03RPM\x9a\xd0\x86\xfd\x01\x03rpm\x12\x1c\n\x06SECOND\x10\n\x1a\x10\xd2\xb0\xd6\xc0\x01\x03SEC\x9a\xd0\x86\xfd\x01\x01s\x12\x1b\n\x03MHZ\x10\x0b\x1a\x12\xd2\xb0\xd6\xc0\x01\x03MHZ\x9a\xd0\x86\xfd\x01\x03MHz\x12\x1c\n\x05HERTZ\x10\x0c\x1a\x11\xd2\xb0\xd6\xc0\x01\x03HTZ\x9a\xd0\x86\xfd\x01\x02Hz\x12#\n\x0bMICROSECOND\x10\r\x1a\x12\xd2\xb0\xd6\xc0\x01\x03\x42\x39\x38\x9a\xd0\x86\xfd\x01\x03\xc2\xb5s\x12!\n\nMILLIMETER\x10\x15\x1a\x11\xd2\xb0\xd6\xc0\x01\x03MMT\x9a\xd0\x86\xfd\x01\x02mm\x12 \n\nCENTIMETER\x10\x16\x1a\x10\xd2\xb0\xd6\xc0\x01\x02LC\x9a\xd0\x86\xfd\x01\x02\x63m\x12\x1b\n\x05METER\x10\x17\x1a\x10\xd2\xb0\xd6\xc0\x01\x03MTR\x9a\xd0\x86\xfd\x01\x01m\x12$\n\tPER_METER\x10\x18\x1a\x15\xd2\xb0\xd6\xc0\x01\x03M0R\x9a\xd0\x86\xfd\x01\x06m\xe2\x81\xbb\xc2\xb9\x12!\n\nMILLILITER\x10\x19\x1a\x11\xd2\xb0\xd6\xc0\x01\x03MLT\x9a\xd0\x86\xfd\x01\x02mL\x12#\n\nCUBIC_FOOT\x10\x1a\x1a\x13\xd2\xb0\xd6\xc0\x01\x03MTQ\x9a\xd0\x86\xfd\x01\x04\x46t\xc2\xb3\x12\x1d\n\x07\x44\x45\x43IBEL\x10\x1e\x1a\x10\xd2\xb0\xd6\xc0\x01\x02\x32N\x9a\xd0\x86\xfd\x01\x02\x64\x42\x12\"\n\nDECIBEL_MW\x10\x1f\x1a\x12\xd2\xb0\xd6\xc0\x01\x02\x32N\x9a\xd0\x86\xfd\x01\x04\x64\x42mW\x12 \n\x08MICROAMP\x10 \x1a\x12\xd2\xb0\xd6\xc0\x01\x03\x42\x38\x34\x9a\xd0\x86\xfd\x01\x03\xc2\xb5\x41\x12\x1e\n\x08MILLIAMP\x10!\x1a\x10\xd2\xb0\xd6\xc0\x01\x02\x34K\x9a\xd0\x86\xfd\x01\x02mA\x12!\n\tMICROVOLT\x10\"\x1a\x12\xd2\xb0\xd6\xc0\x01\x03\x44\x38\x32\x9a\xd0\x86\xfd\x01\x03\xc2\xb5V\x12\x1a\n\x04VOLT\x10#\x1a\x10\xd2\xb0\xd6\xc0\x01\x03VLT\x9a\xd0\x86\xfd\x01\x01V\x12\x1f\n\tPICOFARAD\x10$\x1a\x10\xd2\xb0\xd6\xc0\x01\x02\x34T\x9a\xd0\x86\xfd\x01\x02pF\x12\x16\n\x07\x43OULOMB\x10%\x1a\t\xd2\xb0\xd6\xc0\x01\x03\x43OU\x12\x1f\n\tMILLIVOLT\x10&\x1a\x10\xd2\xb0\xd6\xc0\x01\x02\x32Z\x9a\xd0\x86\xfd\x01\x02mV\x12\x1a\n\x04WATT\x10\'\x1a\x10\xd2\xb0\xd6\xc0\x01\x03WTT\x9a\xd0\x86\xfd\x01\x01W\x12\x1c\n\x06\x41MPERE\x10\x1d\x1a\x10\xd2\xb0\xd6\xc0\x01\x03\x41MP\x9a\xd0\x86\xfd\x01\x01\x41\x12&\n\x0e\x44\x45GREE_CELSIUS\x10(\x1a\x12\xd2\xb0\xd6\xc0\x01\x03\x43\x45L\x9a\xd0\x86\xfd\x01\x03\xc2\xb0\x43\x12\x1c\n\x06KELVIN\x10)\x1a\x10\xd2\xb0\xd6\xc0\x01\x03KEL\x9a\xd0\x86\xfd\x01\x01K\x12\x12\n\x04\x42YTE\x10\x32\x1a\x08\xd2\xb0\xd6\xc0\x01\x02\x41\x44\x12/\n\x15MEGA_BYTES_PER_SECOND\x10\x33\x1a\x14\xd2\xb0\xd6\xc0\x01\x04MBPS\x9a\xd0\x86\xfd\x01\x04MB/s\x12\x1c\n\x06\x44\x45GREE\x10<\x1a\x10\xd2\xb0\xd6\xc0\x01\x02\x44\x44\x9a\xd0\x86\xfd\x01\x02\xc2\xb0\x12\x1e\n\x06RADIAN\x10=\x1a\x12\xd2\xb0\xd6\xc0\x01\x03\x43\x38\x31\x9a\xd0\x86\xfd\x01\x03rad\x12\x1c\n\x06NEWTON\x10\x46\x1a\x10\xd2\xb0\xd6\xc0\x01\x03NEW\x9a\xd0\x86\xfd\x01\x01N\x12\x32\n\x18\x43UBIC_CENTIMETER_PER_SEC\x10P\x1a\x14\xd2\xb0\xd6\xc0\x01\x02\x32J\x9a\xd0\x86\xfd\x01\x06\x63m\xc2\xb3/s\x12!\n\x08MILLIBAR\x10Q\x1a\x13\xd2\xb0\xd6\xc0\x01\x03MBR\x9a\xd0\x86\xfd\x01\x04mbar*\x85\x01\n\x0eInformationTag\x12\x07\n\x03JPG\x10\x02\x12\x07\n\x03PNG\x10\x03\x12\x07\n\x03WAV\x10\x04\x12\x08\n\x04TIFF\x10\x08\x12\x07\n\x03MP4\x10\t\x12\x07\n\x03\x41VI\x10\x0b\x12\n\n\x06\x42INARY\x10\x05\x12\x0e\n\nTIMESERIES\x10\x06\x12\r\n\tTEXT_UTF8\x10\x07\x12\x11\n\rMULTIDIM_JSON\x10\n*\xa0\x01\n\x06Status\x12\x08\n\x04PASS\x10\x01\x12\x08\n\x04\x46\x41IL\x10\x02\x12\t\n\x05\x45RROR\x10\x03\x12\x0b\n\x07RUNNING\x10\x04\x12\x0b\n\x07\x43REATED\x10\x05\x12\x0b\n\x07TIMEOUT\x10\x06\x12\x0b\n\x07\x41\x42ORTED\x10\x07\x12\x0b\n\x07WAITING\x10\x08\x12\x0b\n\x07\x43ONSUME\x10\n\x12\x07\n\x03RMA\x10\x0b\x12\n\n\x06REWORK\x10\x0c\x12\t\n\x05SCRAP\x10\r\x12\t\n\x05\x44\x45\x42UG\x10\x0e:6\n\x08uom_code\x12!.google.protobuf.EnumValueOptions\x18\x8a\xe6\x8a\x18 \x01(\t:8\n\nuom_suffix\x12!.google.protobuf.EnumValueOptions\x18\x83\xea\xd0\x1f \x01(\t')
  ,
  dependencies=[google_dot_protobuf_dot_descriptor__pb2.DESCRIPTOR,])
_sym_db.RegisterFileDescriptor(DESCRIPTOR)

_INFORMATIONTAG = _descriptor.EnumDescriptor(
  name='InformationTag',
  full_name='openhtf.InformationTag',
  filename=None,
  file=DESCRIPTOR,
  values=[
    _descriptor.EnumValueDescriptor(
      name='JPG', index=0, number=2,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='PNG', index=1, number=3,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='WAV', index=2, number=4,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='TIFF', index=3, number=8,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='MP4', index=4, number=9,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='AVI', index=5, number=11,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='BINARY', index=6, number=5,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='TIMESERIES', index=7, number=6,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='TEXT_UTF8', index=8, number=7,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='MULTIDIM_JSON', index=9, number=10,
      options=None,
      type=None),
  ],
  containing_type=None,
  options=None,
  serialized_start=3032,
  serialized_end=3165,
)
_sym_db.RegisterEnumDescriptor(_INFORMATIONTAG)

InformationTag = enum_type_wrapper.EnumTypeWrapper(_INFORMATIONTAG)
_STATUS = _descriptor.EnumDescriptor(
  name='Status',
  full_name='openhtf.Status',
  filename=None,
  file=DESCRIPTOR,
  values=[
    _descriptor.EnumValueDescriptor(
      name='PASS', index=0, number=1,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='FAIL', index=1, number=2,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='ERROR', index=2, number=3,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='RUNNING', index=3, number=4,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='CREATED', index=4, number=5,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='TIMEOUT', index=5, number=6,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='ABORTED', index=6, number=7,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='WAITING', index=7, number=8,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='CONSUME', index=8, number=10,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='RMA', index=9, number=11,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='REWORK', index=10, number=12,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='SCRAP', index=11, number=13,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='DEBUG', index=12, number=14,
      options=None,
      type=None),
  ],
  containing_type=None,
  options=None,
  serialized_start=3168,
  serialized_end=3328,
)
_sym_db.RegisterEnumDescriptor(_STATUS)

Status = enum_type_wrapper.EnumTypeWrapper(_STATUS)
JPG = 2
PNG = 3
WAV = 4
TIFF = 8
MP4 = 9
AVI = 11
BINARY = 5
TIMESERIES = 6
TEXT_UTF8 = 7
MULTIDIM_JSON = 10
PASS = 1
FAIL = 2
ERROR = 3
RUNNING = 4
CREATED = 5
TIMEOUT = 6
ABORTED = 7
WAITING = 8
CONSUME = 10
RMA = 11
REWORK = 12
SCRAP = 13
DEBUG = 14

UOM_CODE_FIELD_NUMBER = 50508554
uom_code = _descriptor.FieldDescriptor(
  name='uom_code', full_name='openhtf.uom_code', index=0,
  number=50508554, 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=True, extension_scope=None,
  options=None)
UOM_SUFFIX_FIELD_NUMBER = 66336003
uom_suffix = _descriptor.FieldDescriptor(
  name='uom_suffix', full_name='openhtf.uom_suffix', index=1,
  number=66336003, 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=True, extension_scope=None,
  options=None)

_TESTRUNLOGMESSAGE_LEVEL = _descriptor.EnumDescriptor(
  name='Level',
  full_name='openhtf.TestRunLogMessage.Level',
  filename=None,
  file=DESCRIPTOR,
  values=[
    _descriptor.EnumValueDescriptor(
      name='DEBUG', index=0, number=10,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='INFO', index=1, number=20,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='WARNING', index=2, number=30,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='ERROR', index=3, number=40,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='CRITICAL', index=4, number=50,
      options=None,
      type=None),
  ],
  containing_type=None,
  options=None,
  serialized_start=942,
  serialized_end=1008,
)
_sym_db.RegisterEnumDescriptor(_TESTRUNLOGMESSAGE_LEVEL)

_UNITS_UNITCODE = _descriptor.EnumDescriptor(
  name='UnitCode',
  full_name='openhtf.Units.UnitCode',
  filename=None,
  file=DESCRIPTOR,
  values=[
    _descriptor.EnumValueDescriptor(
      name='NONE', index=0, number=1,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='PERCENT', index=1, number=2,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\002P1\232\320\206\375\001\001%')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='NO_DIMENSION', index=2, number=3,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003NDL')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='PIXEL', index=3, number=4,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\002PX\232\320\206\375\001\002px')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='PIXEL_LEVEL', index=4, number=5,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003PXL')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='ROTATIONS_PER_MINUTE', index=5, number=7,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003RPM\232\320\206\375\001\003rpm')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='SECOND', index=6, number=10,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003SEC\232\320\206\375\001\001s')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='MHZ', index=7, number=11,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003MHZ\232\320\206\375\001\003MHz')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='HERTZ', index=8, number=12,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003HTZ\232\320\206\375\001\002Hz')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='MICROSECOND', index=9, number=13,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003B98\232\320\206\375\001\003\302\265s')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='MILLIMETER', index=10, number=21,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003MMT\232\320\206\375\001\002mm')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='CENTIMETER', index=11, number=22,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\002LC\232\320\206\375\001\002cm')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='METER', index=12, number=23,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003MTR\232\320\206\375\001\001m')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='PER_METER', index=13, number=24,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003M0R\232\320\206\375\001\006m\342\201\273\302\271')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='MILLILITER', index=14, number=25,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003MLT\232\320\206\375\001\002mL')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='CUBIC_FOOT', index=15, number=26,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003MTQ\232\320\206\375\001\004Ft\302\263')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='DECIBEL', index=16, number=30,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\0022N\232\320\206\375\001\002dB')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='DECIBEL_MW', index=17, number=31,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\0022N\232\320\206\375\001\004dBmW')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='MICROAMP', index=18, number=32,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003B84\232\320\206\375\001\003\302\265A')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='MILLIAMP', index=19, number=33,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\0024K\232\320\206\375\001\002mA')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='MICROVOLT', index=20, number=34,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003D82\232\320\206\375\001\003\302\265V')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='VOLT', index=21, number=35,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003VLT\232\320\206\375\001\001V')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='PICOFARAD', index=22, number=36,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\0024T\232\320\206\375\001\002pF')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='COULOMB', index=23, number=37,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003COU')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='MILLIVOLT', index=24, number=38,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\0022Z\232\320\206\375\001\002mV')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='WATT', index=25, number=39,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003WTT\232\320\206\375\001\001W')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='AMPERE', index=26, number=29,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003AMP\232\320\206\375\001\001A')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='DEGREE_CELSIUS', index=27, number=40,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003CEL\232\320\206\375\001\003\302\260C')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='KELVIN', index=28, number=41,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003KEL\232\320\206\375\001\001K')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='BYTE', index=29, number=50,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\002AD')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='MEGA_BYTES_PER_SECOND', index=30, number=51,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\004MBPS\232\320\206\375\001\004MB/s')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='DEGREE', index=31, number=60,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\002DD\232\320\206\375\001\002\302\260')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='RADIAN', index=32, number=61,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003C81\232\320\206\375\001\003rad')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='NEWTON', index=33, number=70,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003NEW\232\320\206\375\001\001N')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='CUBIC_CENTIMETER_PER_SEC', index=34, number=80,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\0022J\232\320\206\375\001\006cm\302\263/s')),
      type=None),
    _descriptor.EnumValueDescriptor(
      name='MILLIBAR', index=35, number=81,
      options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003MBR\232\320\206\375\001\004mbar')),
      type=None),
  ],
  containing_type=None,
  options=None,
  serialized_start=1851,
  serialized_end=3029,
)
_sym_db.RegisterEnumDescriptor(_UNITS_UNITCODE)


_FAILURECODE = _descriptor.Descriptor(
  name='FailureCode',
  full_name='openhtf.FailureCode',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='code', full_name='openhtf.FailureCode.code', index=0,
      number=1, 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),
    _descriptor.FieldDescriptor(
      name='details', full_name='openhtf.FailureCode.details', index=1,
      number=2, 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),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=83,
  serialized_end=127,
)


_TIMEINFO = _descriptor.Descriptor(
  name='TimeInfo',
  full_name='openhtf.TimeInfo',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='start_time_millis', full_name='openhtf.TimeInfo.start_time_millis', index=0,
      number=1, 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),
    _descriptor.FieldDescriptor(
      name='end_time_millis', full_name='openhtf.TimeInfo.end_time_millis', 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),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=129,
  serialized_end=191,
)


_TIMING = _descriptor.Descriptor(
  name='Timing',
  full_name='openhtf.Timing',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='name', full_name='openhtf.Timing.name', index=0,
      number=1, 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),
    _descriptor.FieldDescriptor(
      name='description', full_name='openhtf.Timing.description', index=1,
      number=2, 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),
    _descriptor.FieldDescriptor(
      name='time_info', full_name='openhtf.Timing.time_info', index=2,
      number=3, 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),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=193,
  serialized_end=274,
)


_PHASE = _descriptor.Descriptor(
  name='Phase',
  full_name='openhtf.Phase',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='name', full_name='openhtf.Phase.name', index=0,
      number=1, 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),
    _descriptor.FieldDescriptor(
      name='description', full_name='openhtf.Phase.description', index=1,
      number=2, 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),
    _descriptor.FieldDescriptor(
      name='capabilities', full_name='openhtf.Phase.capabilities', index=2,
      number=3, 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),
    _descriptor.FieldDescriptor(
      name='timing', full_name='openhtf.Phase.timing', index=3,
      number=4, 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),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=276,
  serialized_end=375,
)


_TESTPARAMETER = _descriptor.Descriptor(
  name='TestParameter',
  full_name='openhtf.TestParameter',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='name', full_name='openhtf.TestParameter.name', index=0,
      number=1, type=9, cpp_type=9, label=2,
      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),
    _descriptor.FieldDescriptor(
      name='status', full_name='openhtf.TestParameter.status', index=1,
      number=2, type=14, cpp_type=8, label=1,
      has_default_value=False, default_value=1,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='description', full_name='openhtf.TestParameter.description', index=2,
      number=6, 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),
    _descriptor.FieldDescriptor(
      name='important', full_name='openhtf.TestParameter.important', index=3,
      number=18, 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),
    _descriptor.FieldDescriptor(
      name='parameter_tag', full_name='openhtf.TestParameter.parameter_tag', index=4,
      number=16, 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),
    _descriptor.FieldDescriptor(
      name='numeric_value', full_name='openhtf.TestParameter.numeric_value', index=5,
      number=11, 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),
    _descriptor.FieldDescriptor(
      name='numeric_minimum', full_name='openhtf.TestParameter.numeric_minimum', index=6,
      number=12, 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),
    _descriptor.FieldDescriptor(
      name='numeric_maximum', full_name='openhtf.TestParameter.numeric_maximum', index=7,
      number=13, 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),
    _descriptor.FieldDescriptor(
      name='text_value', full_name='openhtf.TestParameter.text_value', index=8,
      number=14, 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),
    _descriptor.FieldDescriptor(
      name='expected_text', full_name='openhtf.TestParameter.expected_text', index=9,
      number=15, 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),
    _descriptor.FieldDescriptor(
      name='is_optional', full_name='openhtf.TestParameter.is_optional', index=10,
      number=17, 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),
    _descriptor.FieldDescriptor(
      name='set_time_millis', full_name='openhtf.TestParameter.set_time_millis', index=11,
      number=19, 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),
    _descriptor.FieldDescriptor(
      name='unit_code', full_name='openhtf.TestParameter.unit_code', index=12,
      number=20, type=14, cpp_type=8, label=1,
      has_default_value=False, default_value=1,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='associated_attachment', full_name='openhtf.TestParameter.associated_attachment', index=13,
      number=21, 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),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=True,
  syntax='proto2',
  extension_ranges=[(5000, 5200), ],
  oneofs=[
  ],
  serialized_start=378,
  serialized_end=748,
)


_TESTRUNLOGMESSAGE = _descriptor.Descriptor(
  name='TestRunLogMessage',
  full_name='openhtf.TestRunLogMessage',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='timestamp_millis', full_name='openhtf.TestRunLogMessage.timestamp_millis', index=0,
      number=1, 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),
    _descriptor.FieldDescriptor(
      name='log_message', full_name='openhtf.TestRunLogMessage.log_message', index=1,
      number=2, 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),
    _descriptor.FieldDescriptor(
      name='logger_name', full_name='openhtf.TestRunLogMessage.logger_name', index=2,
      number=3, 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),
    _descriptor.FieldDescriptor(
      name='levelno', full_name='openhtf.TestRunLogMessage.levelno', index=3,
      number=4, type=5, cpp_type=1, 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),
    _descriptor.FieldDescriptor(
      name='level', full_name='openhtf.TestRunLogMessage.level', index=4,
      number=7, type=14, cpp_type=8, label=1,
      has_default_value=False, default_value=10,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='log_source', full_name='openhtf.TestRunLogMessage.log_source', index=5,
      number=5, 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),
    _descriptor.FieldDescriptor(
      name='lineno', full_name='openhtf.TestRunLogMessage.lineno', index=6,
      number=6, type=5, cpp_type=1, 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),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
    _TESTRUNLOGMESSAGE_LEVEL,
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=751,
  serialized_end=1008,
)


_TESTRUN = _descriptor.Descriptor(
  name='TestRun',
  full_name='openhtf.TestRun',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='dut_serial', full_name='openhtf.TestRun.dut_serial', index=0,
      number=1, type=9, cpp_type=9, label=2,
      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),
    _descriptor.FieldDescriptor(
      name='tester_name', full_name='openhtf.TestRun.tester_name', index=1,
      number=2, type=9, cpp_type=9, label=2,
      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),
    _descriptor.FieldDescriptor(
      name='test_info', full_name='openhtf.TestRun.test_info', index=2,
      number=3, type=11, cpp_type=10, label=2,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='test_status', full_name='openhtf.TestRun.test_status', index=3,
      number=4, type=14, cpp_type=8, label=2,
      has_default_value=True, default_value=5,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='start_time_millis', full_name='openhtf.TestRun.start_time_millis', index=4,
      number=8, 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),
    _descriptor.FieldDescriptor(
      name='end_time_millis', full_name='openhtf.TestRun.end_time_millis', index=5,
      number=9, 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),
    _descriptor.FieldDescriptor(
      name='run_name', full_name='openhtf.TestRun.run_name', index=6,
      number=10, 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),
    _descriptor.FieldDescriptor(
      name='test_parameters', full_name='openhtf.TestRun.test_parameters', index=7,
      number=5, type=11, cpp_type=10, 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),
    _descriptor.FieldDescriptor(
      name='info_parameters', full_name='openhtf.TestRun.info_parameters', index=8,
      number=6, type=11, cpp_type=10, 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),
    _descriptor.FieldDescriptor(
      name='test_logs', full_name='openhtf.TestRun.test_logs', index=9,
      number=11, type=11, cpp_type=10, 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),
    _descriptor.FieldDescriptor(
      name='failure_codes', full_name='openhtf.TestRun.failure_codes', index=10,
      number=19, type=11, cpp_type=10, 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),
    _descriptor.FieldDescriptor(
      name='operator_name', full_name='openhtf.TestRun.operator_name', index=11,
      number=22, 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),
    _descriptor.FieldDescriptor(
      name='lot_number', full_name='openhtf.TestRun.lot_number', index=12,
      number=23, 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),
    _descriptor.FieldDescriptor(
      name='part_id', full_name='openhtf.TestRun.part_id', index=13,
      number=24, 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),
    _descriptor.FieldDescriptor(
      name='synthetic_dut', full_name='openhtf.TestRun.synthetic_dut', index=14,
      number=25, 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),
    _descriptor.FieldDescriptor(
      name='timings', full_name='openhtf.TestRun.timings', index=15,
      number=27, type=11, cpp_type=10, 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),
    _descriptor.FieldDescriptor(
      name='phases', full_name='openhtf.TestRun.phases', index=16,
      number=28, type=11, cpp_type=10, 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),
    _descriptor.FieldDescriptor(
      name='framework_build', full_name='openhtf.TestRun.framework_build', index=17,
      number=17, 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),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1011,
  serialized_end=1587,
)


_TESTINFO = _descriptor.Descriptor(
  name='TestInfo',
  full_name='openhtf.TestInfo',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='name', full_name='openhtf.TestInfo.name', index=0,
      number=1, type=9, cpp_type=9, label=2,
      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),
    _descriptor.FieldDescriptor(
      name='description', full_name='openhtf.TestInfo.description', index=1,
      number=2, 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),
    _descriptor.FieldDescriptor(
      name='version_string', full_name='openhtf.TestInfo.version_string', index=2,
      number=5, 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),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1589,
  serialized_end=1658,
)


_INFORMATIONPARAMETER = _descriptor.Descriptor(
  name='InformationParameter',
  full_name='openhtf.InformationParameter',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='name', full_name='openhtf.InformationParameter.name', index=0,
      number=1, type=9, cpp_type=9, label=2,
      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),
    _descriptor.FieldDescriptor(
      name='value_binary', full_name='openhtf.InformationParameter.value_binary', index=1,
      number=7, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='description', full_name='openhtf.InformationParameter.description', index=2,
      number=3, 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),
    _descriptor.FieldDescriptor(
      name='set_time_millis', full_name='openhtf.InformationParameter.set_time_millis', index=3,
      number=8, 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),
    _descriptor.FieldDescriptor(
      name='parameter_tag', full_name='openhtf.InformationParameter.parameter_tag', index=4,
      number=5, 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),
    _descriptor.FieldDescriptor(
      name='type', full_name='openhtf.InformationParameter.type', index=5,
      number=4, type=14, cpp_type=8, label=1,
      has_default_value=True, default_value=7,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1661,
  serialized_end=1838,
)


_UNITS = _descriptor.Descriptor(
  name='Units',
  full_name='openhtf.Units',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
    _UNITS_UNITCODE,
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1841,
  serialized_end=3029,
)

_TIMING.fields_by_name['time_info'].message_type = _TIMEINFO
_PHASE.fields_by_name['timing'].message_type = _TIMEINFO
_TESTPARAMETER.fields_by_name['status'].enum_type = _STATUS
_TESTPARAMETER.fields_by_name['unit_code'].enum_type = _UNITS_UNITCODE
_TESTRUNLOGMESSAGE.fields_by_name['level'].enum_type = _TESTRUNLOGMESSAGE_LEVEL
_TESTRUNLOGMESSAGE_LEVEL.containing_type = _TESTRUNLOGMESSAGE
_TESTRUN.fields_by_name['test_info'].message_type = _TESTINFO
_TESTRUN.fields_by_name['test_status'].enum_type = _STATUS
_TESTRUN.fields_by_name['test_parameters'].message_type = _TESTPARAMETER
_TESTRUN.fields_by_name['info_parameters'].message_type = _INFORMATIONPARAMETER
_TESTRUN.fields_by_name['test_logs'].message_type = _TESTRUNLOGMESSAGE
_TESTRUN.fields_by_name['failure_codes'].message_type = _FAILURECODE
_TESTRUN.fields_by_name['timings'].message_type = _TIMING
_TESTRUN.fields_by_name['phases'].message_type = _PHASE
_INFORMATIONPARAMETER.fields_by_name['type'].enum_type = _INFORMATIONTAG
_UNITS_UNITCODE.containing_type = _UNITS
DESCRIPTOR.message_types_by_name['FailureCode'] = _FAILURECODE
DESCRIPTOR.message_types_by_name['TimeInfo'] = _TIMEINFO
DESCRIPTOR.message_types_by_name['Timing'] = _TIMING
DESCRIPTOR.message_types_by_name['Phase'] = _PHASE
DESCRIPTOR.message_types_by_name['TestParameter'] = _TESTPARAMETER
DESCRIPTOR.message_types_by_name['TestRunLogMessage'] = _TESTRUNLOGMESSAGE
DESCRIPTOR.message_types_by_name['TestRun'] = _TESTRUN
DESCRIPTOR.message_types_by_name['TestInfo'] = _TESTINFO
DESCRIPTOR.message_types_by_name['InformationParameter'] = _INFORMATIONPARAMETER
DESCRIPTOR.message_types_by_name['Units'] = _UNITS
DESCRIPTOR.enum_types_by_name['InformationTag'] = _INFORMATIONTAG
DESCRIPTOR.enum_types_by_name['Status'] = _STATUS
DESCRIPTOR.extensions_by_name['uom_code'] = uom_code
DESCRIPTOR.extensions_by_name['uom_suffix'] = uom_suffix

FailureCode = _reflection.GeneratedProtocolMessageType('FailureCode', (_message.Message,), dict(
  DESCRIPTOR = _FAILURECODE,
  __module__ = 'openhtf.output.proto.test_runs_pb2'
  # @@protoc_insertion_point(class_scope:openhtf.FailureCode)
  ))
_sym_db.RegisterMessage(FailureCode)

TimeInfo = _reflection.GeneratedProtocolMessageType('TimeInfo', (_message.Message,), dict(
  DESCRIPTOR = _TIMEINFO,
  __module__ = 'openhtf.output.proto.test_runs_pb2'
  # @@protoc_insertion_point(class_scope:openhtf.TimeInfo)
  ))
_sym_db.RegisterMessage(TimeInfo)

Timing = _reflection.GeneratedProtocolMessageType('Timing', (_message.Message,), dict(
  DESCRIPTOR = _TIMING,
  __module__ = 'openhtf.output.proto.test_runs_pb2'
  # @@protoc_insertion_point(class_scope:openhtf.Timing)
  ))
_sym_db.RegisterMessage(Timing)

Phase = _reflection.GeneratedProtocolMessageType('Phase', (_message.Message,), dict(
  DESCRIPTOR = _PHASE,
  __module__ = 'openhtf.output.proto.test_runs_pb2'
  # @@protoc_insertion_point(class_scope:openhtf.Phase)
  ))
_sym_db.RegisterMessage(Phase)

TestParameter = _reflection.GeneratedProtocolMessageType('TestParameter', (_message.Message,), dict(
  DESCRIPTOR = _TESTPARAMETER,
  __module__ = 'openhtf.output.proto.test_runs_pb2'
  # @@protoc_insertion_point(class_scope:openhtf.TestParameter)
  ))
_sym_db.RegisterMessage(TestParameter)

TestRunLogMessage = _reflection.GeneratedProtocolMessageType('TestRunLogMessage', (_message.Message,), dict(
  DESCRIPTOR = _TESTRUNLOGMESSAGE,
  __module__ = 'openhtf.output.proto.test_runs_pb2'
  # @@protoc_insertion_point(class_scope:openhtf.TestRunLogMessage)
  ))
_sym_db.RegisterMessage(TestRunLogMessage)

TestRun = _reflection.GeneratedProtocolMessageType('TestRun', (_message.Message,), dict(
  DESCRIPTOR = _TESTRUN,
  __module__ = 'openhtf.output.proto.test_runs_pb2'
  # @@protoc_insertion_point(class_scope:openhtf.TestRun)
  ))
_sym_db.RegisterMessage(TestRun)

TestInfo = _reflection.GeneratedProtocolMessageType('TestInfo', (_message.Message,), dict(
  DESCRIPTOR = _TESTINFO,
  __module__ = 'openhtf.output.proto.test_runs_pb2'
  # @@protoc_insertion_point(class_scope:openhtf.TestInfo)
  ))
_sym_db.RegisterMessage(TestInfo)

InformationParameter = _reflection.GeneratedProtocolMessageType('InformationParameter', (_message.Message,), dict(
  DESCRIPTOR = _INFORMATIONPARAMETER,
  __module__ = 'openhtf.output.proto.test_runs_pb2'
  # @@protoc_insertion_point(class_scope:openhtf.InformationParameter)
  ))
_sym_db.RegisterMessage(InformationParameter)

Units = _reflection.GeneratedProtocolMessageType('Units', (_message.Message,), dict(
  DESCRIPTOR = _UNITS,
  __module__ = 'openhtf.output.proto.test_runs_pb2'
  # @@protoc_insertion_point(class_scope:openhtf.Units)
  ))
_sym_db.RegisterMessage(Units)

google_dot_protobuf_dot_descriptor__pb2.EnumValueOptions.RegisterExtension(uom_code)
google_dot_protobuf_dot_descriptor__pb2.EnumValueOptions.RegisterExtension(uom_suffix)

_UNITS_UNITCODE.values_by_name["PERCENT"].has_options = True
_UNITS_UNITCODE.values_by_name["PERCENT"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\002P1\232\320\206\375\001\001%'))
_UNITS_UNITCODE.values_by_name["NO_DIMENSION"].has_options = True
_UNITS_UNITCODE.values_by_name["NO_DIMENSION"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003NDL'))
_UNITS_UNITCODE.values_by_name["PIXEL"].has_options = True
_UNITS_UNITCODE.values_by_name["PIXEL"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\002PX\232\320\206\375\001\002px'))
_UNITS_UNITCODE.values_by_name["PIXEL_LEVEL"].has_options = True
_UNITS_UNITCODE.values_by_name["PIXEL_LEVEL"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003PXL'))
_UNITS_UNITCODE.values_by_name["ROTATIONS_PER_MINUTE"].has_options = True
_UNITS_UNITCODE.values_by_name["ROTATIONS_PER_MINUTE"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003RPM\232\320\206\375\001\003rpm'))
_UNITS_UNITCODE.values_by_name["SECOND"].has_options = True
_UNITS_UNITCODE.values_by_name["SECOND"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003SEC\232\320\206\375\001\001s'))
_UNITS_UNITCODE.values_by_name["MHZ"].has_options = True
_UNITS_UNITCODE.values_by_name["MHZ"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003MHZ\232\320\206\375\001\003MHz'))
_UNITS_UNITCODE.values_by_name["HERTZ"].has_options = True
_UNITS_UNITCODE.values_by_name["HERTZ"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003HTZ\232\320\206\375\001\002Hz'))
_UNITS_UNITCODE.values_by_name["MICROSECOND"].has_options = True
_UNITS_UNITCODE.values_by_name["MICROSECOND"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003B98\232\320\206\375\001\003\302\265s'))
_UNITS_UNITCODE.values_by_name["MILLIMETER"].has_options = True
_UNITS_UNITCODE.values_by_name["MILLIMETER"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003MMT\232\320\206\375\001\002mm'))
_UNITS_UNITCODE.values_by_name["CENTIMETER"].has_options = True
_UNITS_UNITCODE.values_by_name["CENTIMETER"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\002LC\232\320\206\375\001\002cm'))
_UNITS_UNITCODE.values_by_name["METER"].has_options = True
_UNITS_UNITCODE.values_by_name["METER"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003MTR\232\320\206\375\001\001m'))
_UNITS_UNITCODE.values_by_name["PER_METER"].has_options = True
_UNITS_UNITCODE.values_by_name["PER_METER"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003M0R\232\320\206\375\001\006m\342\201\273\302\271'))
_UNITS_UNITCODE.values_by_name["MILLILITER"].has_options = True
_UNITS_UNITCODE.values_by_name["MILLILITER"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003MLT\232\320\206\375\001\002mL'))
_UNITS_UNITCODE.values_by_name["CUBIC_FOOT"].has_options = True
_UNITS_UNITCODE.values_by_name["CUBIC_FOOT"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003MTQ\232\320\206\375\001\004Ft\302\263'))
_UNITS_UNITCODE.values_by_name["DECIBEL"].has_options = True
_UNITS_UNITCODE.values_by_name["DECIBEL"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\0022N\232\320\206\375\001\002dB'))
_UNITS_UNITCODE.values_by_name["DECIBEL_MW"].has_options = True
_UNITS_UNITCODE.values_by_name["DECIBEL_MW"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\0022N\232\320\206\375\001\004dBmW'))
_UNITS_UNITCODE.values_by_name["MICROAMP"].has_options = True
_UNITS_UNITCODE.values_by_name["MICROAMP"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003B84\232\320\206\375\001\003\302\265A'))
_UNITS_UNITCODE.values_by_name["MILLIAMP"].has_options = True
_UNITS_UNITCODE.values_by_name["MILLIAMP"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\0024K\232\320\206\375\001\002mA'))
_UNITS_UNITCODE.values_by_name["MICROVOLT"].has_options = True
_UNITS_UNITCODE.values_by_name["MICROVOLT"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003D82\232\320\206\375\001\003\302\265V'))
_UNITS_UNITCODE.values_by_name["VOLT"].has_options = True
_UNITS_UNITCODE.values_by_name["VOLT"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003VLT\232\320\206\375\001\001V'))
_UNITS_UNITCODE.values_by_name["PICOFARAD"].has_options = True
_UNITS_UNITCODE.values_by_name["PICOFARAD"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\0024T\232\320\206\375\001\002pF'))
_UNITS_UNITCODE.values_by_name["COULOMB"].has_options = True
_UNITS_UNITCODE.values_by_name["COULOMB"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003COU'))
_UNITS_UNITCODE.values_by_name["MILLIVOLT"].has_options = True
_UNITS_UNITCODE.values_by_name["MILLIVOLT"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\0022Z\232\320\206\375\001\002mV'))
_UNITS_UNITCODE.values_by_name["WATT"].has_options = True
_UNITS_UNITCODE.values_by_name["WATT"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003WTT\232\320\206\375\001\001W'))
_UNITS_UNITCODE.values_by_name["AMPERE"].has_options = True
_UNITS_UNITCODE.values_by_name["AMPERE"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003AMP\232\320\206\375\001\001A'))
_UNITS_UNITCODE.values_by_name["DEGREE_CELSIUS"].has_options = True
_UNITS_UNITCODE.values_by_name["DEGREE_CELSIUS"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003CEL\232\320\206\375\001\003\302\260C'))
_UNITS_UNITCODE.values_by_name["KELVIN"].has_options = True
_UNITS_UNITCODE.values_by_name["KELVIN"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003KEL\232\320\206\375\001\001K'))
_UNITS_UNITCODE.values_by_name["BYTE"].has_options = True
_UNITS_UNITCODE.values_by_name["BYTE"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\002AD'))
_UNITS_UNITCODE.values_by_name["MEGA_BYTES_PER_SECOND"].has_options = True
_UNITS_UNITCODE.values_by_name["MEGA_BYTES_PER_SECOND"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\004MBPS\232\320\206\375\001\004MB/s'))
_UNITS_UNITCODE.values_by_name["DEGREE"].has_options = True
_UNITS_UNITCODE.values_by_name["DEGREE"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\002DD\232\320\206\375\001\002\302\260'))
_UNITS_UNITCODE.values_by_name["RADIAN"].has_options = True
_UNITS_UNITCODE.values_by_name["RADIAN"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003C81\232\320\206\375\001\003rad'))
_UNITS_UNITCODE.values_by_name["NEWTON"].has_options = True
_UNITS_UNITCODE.values_by_name["NEWTON"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003NEW\232\320\206\375\001\001N'))
_UNITS_UNITCODE.values_by_name["CUBIC_CENTIMETER_PER_SEC"].has_options = True
_UNITS_UNITCODE.values_by_name["CUBIC_CENTIMETER_PER_SEC"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\0022J\232\320\206\375\001\006cm\302\263/s'))
_UNITS_UNITCODE.values_by_name["MILLIBAR"].has_options = True
_UNITS_UNITCODE.values_by_name["MILLIBAR"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\322\260\326\300\001\003MBR\232\320\206\375\001\004mbar'))
# @@protoc_insertion_point(module_scope)
