Beispiel #1
0
def _wrap_operation(op: ops.Operation) -> ops.Operation:
    new_qubits = [_QCircuitQubit(e) for e in op.qubits]
    diagrammable = known_qcircuit_operation_symbols(op)
    if diagrammable is None:
        info = protocols.circuit_diagram_info(op, default=None)
        if info is not None:
            diagrammable = _TextToQCircuitDiagrammable(
                cast(protocols.SupportsCircuitDiagramInfo, op))
        elif isinstance(op, ops.GateOperation):
            diagrammable = _FallbackQCircuitGate(op.gate)
        else:
            diagrammable = _FallbackQCircuitGate(op)
    return _QCircuitOperation(op, diagrammable).with_qubits(*new_qubits)
Beispiel #2
0
def _wrap_operation(op: ops.Operation) -> ops.Operation:
    new_qubits = [_QCircuitQubit(e) for e in op.qubits]
    diagrammable = fallback_qcircuit_extensions.try_cast(  # type: ignore
        QCircuitDiagrammable, op)
    if diagrammable is None:
        info = protocols.circuit_diagram_info(op, default=None)
        if info is not None:
            diagrammable = _TextToQCircuitDiagrammable(
                cast(protocols.SupportsCircuitDiagramInfo, op))
        else:
            diagrammable = _FallbackQCircuitGate(
                cast(ops.GateOperation, op).gate)
    return _QCircuitOperation(op, diagrammable).with_qubits(*new_qubits)
Beispiel #3
0
def test_FallbackQCircuitSymbolsGate():
    class TestGate(cirq.Gate):
        def __str__(self):
            return 'T'

    g = TestGate()
    f = _FallbackQCircuitGate(g)
    assert f.qcircuit_diagram_info(
        cirq.TextDiagramInfoArgs.UNINFORMED_DEFAULT) == ('\\text{T:0}', )
    assert f.qcircuit_diagram_info(
        cirq.TextDiagramInfoArgs(known_qubits=None,
                                 known_qubit_count=2,
                                 use_unicode_characters=True,
                                 precision=None)) == ('\\text{T:0}',
                                                      '\\text{T:1}')
Beispiel #4
0
def test_FallbackQCircuitSymbolsGate():
    class TestGate(cirq.Gate):
        def __str__(self):
            return 'T'

    g = TestGate()
    f = _FallbackQCircuitGate(g)
    actual_info = f.qcircuit_diagram_info(
            cirq.TextDiagramInfoArgs.UNINFORMED_DEFAULT)
    expected_info = cirq.TextDiagramInfo(('\\text{T:0}',))
    assert actual_info == expected_info

    actual_info = f.qcircuit_diagram_info(cirq.TextDiagramInfoArgs(
        known_qubits=None,
        known_qubit_count=2,
        use_unicode_characters=True,
        precision=None,
        qubit_map=None))
    expected_info = cirq.TextDiagramInfo(('\\text{T:0}', '\\text{T:1}'))
    assert actual_info == expected_info