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)
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)
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}')
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