Exemple #1
0
def test_batch_run_context_to_proto(pass_out: bool) -> None:
    msg = v2.batch_pb2.BatchRunContext() if pass_out else None
    out = v2.batch_run_context_to_proto([], out=msg)
    if pass_out:
        assert out is msg
    assert len(out.run_contexts) == 0

    msg = v2.batch_pb2.BatchRunContext() if pass_out else None
    out = v2.batch_run_context_to_proto([(None, 10)], out=msg)
    if pass_out:
        assert out is msg
    assert len(out.run_contexts) == 1
    sweep_message = out.run_contexts[0].parameter_sweeps[0]
    assert v2.sweep_from_proto(sweep_message.sweep) == cirq.UnitSweep
    assert sweep_message.repetitions == 10

    sweep = cirq.Linspace('a', 0, 1, 21)
    msg = v2.batch_pb2.BatchRunContext() if pass_out else None
    out = v2.batch_run_context_to_proto([(None, 10), (sweep, 100)], out=msg)
    if pass_out:
        assert out is msg
    assert len(out.run_contexts) == 2
    sweep_message0 = out.run_contexts[0].parameter_sweeps[0]
    assert v2.sweep_from_proto(sweep_message0.sweep) == cirq.UnitSweep
    assert sweep_message0.repetitions == 10
    sweep_message1 = out.run_contexts[1].parameter_sweeps[0]
    assert v2.sweep_from_proto(sweep_message1.sweep) == sweep
    assert sweep_message1.repetitions == 100
Exemple #2
0
def test_run_context_to_proto(pass_out: bool) -> None:
    msg = v2.run_context_pb2.RunContext() if pass_out else None
    out = v2.run_context_to_proto(None, 10, out=msg)
    if pass_out:
        assert out is msg
    assert len(out.parameter_sweeps) == 1
    assert v2.sweep_from_proto(out.parameter_sweeps[0].sweep) == cirq.UnitSweep
    assert out.parameter_sweeps[0].repetitions == 10

    sweep = cirq.Linspace('a', 0, 1, 21)
    msg = v2.run_context_pb2.RunContext() if pass_out else None
    out = v2.run_context_to_proto(sweep, 100, out=msg)
    if pass_out:
        assert out is msg
    assert len(out.parameter_sweeps) == 1
    assert v2.sweep_from_proto(out.parameter_sweeps[0].sweep) == sweep
    assert out.parameter_sweeps[0].repetitions == 100
Exemple #3
0
def _deserialize_run_context(
    run_context: quantum.types.any_pb2.Any, ) -> Tuple[int, List[cirq.Sweep]]:
    import cirq_google.engine.engine as engine_base

    run_context_type = run_context.type_url[len(engine_base.TYPE_PREFIX):]
    if (run_context_type == 'cirq.google.api.v1.RunContext'
            or run_context_type == 'cirq.api.google.v1.RunContext'):
        raise ValueError('deserializing a v1 RunContext is not supported')
    if (run_context_type == 'cirq.google.api.v2.RunContext'
            or run_context_type == 'cirq.api.google.v2.RunContext'):
        v2_run_context = v2.run_context_pb2.RunContext.FromString(
            run_context.value)
        return v2_run_context.parameter_sweeps[0].repetitions, [
            v2.sweep_from_proto(s.sweep)
            for s in v2_run_context.parameter_sweeps
        ]
    raise ValueError(f'unsupported run_context type: {run_context_type}')
Exemple #4
0
def test_sweep_to_proto_roundtrip(sweep):
    msg = v2.sweep_to_proto(sweep)
    deserialized = v2.sweep_from_proto(msg)
    assert deserialized == sweep
Exemple #5
0
def test_sweep_from_proto_single_sweep_type_not_set():
    proto = v2.run_context_pb2.Sweep()
    proto.single_sweep.parameter_key = 'foo'
    with pytest.raises(ValueError, match='single sweep type not set'):
        v2.sweep_from_proto(proto)
Exemple #6
0
def test_sweep_from_proto_sweep_function_not_set():
    proto = v2.run_context_pb2.Sweep()
    proto.sweep_function.sweeps.add()
    with pytest.raises(ValueError, match='invalid sweep function type'):
        v2.sweep_from_proto(proto)