Fixes crash when printing circuit with controlled MatrixGate #7293
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Fixes #7243
This PR corrects the way Cirq prints a controlled 1×1 MatrixGate in ASCII/Unicode circuit diagrams and tidies up the underlying protocol behavior. Previously, attempting to draw a 1×1 controlled gate raised a TypeError. Now it will render correctly, and a unit test has been created to verify the output.
Changes:
matrix_gates.py
Early‑return NotImplemented for zero‑qubit MatrixGate, deferring to the fallback renderer.
circuit_diagram_info_protocol_test.py
Updated test_controlled_1x1_matrixgate_diagram_error to assert the exact rendered string:
0: ───C[[0.+1.j]]───
Testing:
Ran pytest cirq/protocols/circuit_diagram_info_protocol_test.py — all relevant tests pass.