def make_enum_pb2(name: str, *values: typing.Sequence[str], **kwargs) -> desc.EnumDescriptorProto: enum_value_pbs = [ desc.EnumValueDescriptorProto(name=n, number=i) for i, n in enumerate(values) ] enum_pb = desc.EnumDescriptorProto(name=name, value=enum_value_pbs, **kwargs) return enum_pb
def make_enum_pb2(name: str, values: Tuple[str, int], **kwargs) -> desc.EnumDescriptorProto: """Mock an EnumDescriptorProto that is used to create wrappers.Enum""" enum_value_pbs = [ make_enum_value_pb2(name=i[0], number=i[1]) for i in values ] enum_pb = desc.EnumDescriptorProto(name=name, value=enum_value_pbs, **kwargs) return enum_pb
def enum_factory(name: str, variants: Iterable[str]) -> wrappers.EnumType: enum_pb = descriptor_pb2.EnumDescriptorProto( name=name, value=tuple( descriptor_pb2.EnumValueDescriptorProto(name=v, number=i) for i, v in enumerate(variants))) enum = wrappers.EnumType(enum_pb=enum_pb, values=[ wrappers.EnumValueType(enum_value_pb=v) for v in enum_pb.value ]) return enum