def _serialize_run_context( self, sweeps: List[study.Sweep], repetitions: int, ) -> Dict[str, Any]: proto_version = self.proto_version if proto_version == ProtoVersion.V1: context_descriptor = v1.program_pb2.RunContext.DESCRIPTOR context_dict = {} # type: Dict[str, Any] context_dict['@type'] = TYPE_PREFIX + context_descriptor.full_name context_dict['parameter_sweeps'] = [ v1.sweep_to_proto_dict(sweep, repetitions) for sweep in sweeps ] return context_dict elif proto_version == ProtoVersion.V2: run_context = v2.run_context_pb2.RunContext() for sweep in sweeps: sweep_proto = run_context.parameter_sweeps.add() sweep_proto.repetitions = repetitions v2.sweep_to_proto(sweep, out=sweep_proto.sweep) return _any_dict_from_msg(run_context) else: raise ValueError( 'invalid run context proto version: {}'.format(proto_version))
def _serialize_program_v1( self, program: Program, sweeps: List[Sweep], repetitions: int) -> Tuple[Dict[str, Any], Dict[str, Any]]: schedule = self.program_as_schedule(program) schedule.device.validate_schedule(schedule) program_descriptor = v1.program_pb2.Program.DESCRIPTOR program_dict = {} # type: Dict[str, Any] program_dict['@type'] = TYPE_PREFIX + program_descriptor.full_name program_dict['operations'] = [ op for op in api_v1.schedule_to_proto_dicts(schedule) ] context_descriptor = v1.program_pb2.RunContext.DESCRIPTOR context_dict = {} # type: Dict[str, Any] context_dict['@type'] = TYPE_PREFIX + context_descriptor.full_name context_dict['parameter_sweeps'] = [ api_v1.sweep_to_proto_dict(sweep, repetitions) for sweep in sweeps ] return program_dict, context_dict