cirq-core 1.5.0.dev20250327175906__py3-none-any.whl → 1.5.0.dev20250327210023__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of cirq-core might be problematic. Click here for more details.
- cirq/_compat_test.py +11 -9
- cirq/_import.py +6 -7
- cirq/_version.py +1 -1
- cirq/_version_test.py +1 -1
- cirq/circuits/_block_diagram_drawer.py +1 -2
- cirq/circuits/_block_diagram_drawer_test.py +3 -3
- cirq/circuits/_box_drawing_character_data.py +0 -1
- cirq/circuits/_box_drawing_character_data_test.py +2 -2
- cirq/circuits/_bucket_priority_queue.py +0 -1
- cirq/circuits/_bucket_priority_queue_test.py +1 -1
- cirq/circuits/circuit.py +1 -1
- cirq/circuits/circuit_operation.py +1 -1
- cirq/circuits/circuit_test.py +2 -3
- cirq/circuits/frozen_circuit.py +1 -1
- cirq/circuits/moment.py +4 -5
- cirq/circuits/optimization_pass.py +1 -1
- cirq/circuits/optimization_pass_test.py +3 -2
- cirq/circuits/qasm_output.py +3 -3
- cirq/circuits/qasm_output_test.py +2 -1
- cirq/circuits/text_diagram_drawer.py +3 -3
- cirq/circuits/text_diagram_drawer_test.py +5 -4
- cirq/contrib/acquaintance/bipartite.py +1 -2
- cirq/contrib/acquaintance/bipartite_test.py +0 -1
- cirq/contrib/acquaintance/devices.py +3 -4
- cirq/contrib/acquaintance/devices_test.py +0 -1
- cirq/contrib/acquaintance/executor.py +4 -6
- cirq/contrib/acquaintance/executor_test.py +2 -2
- cirq/contrib/acquaintance/gates.py +2 -3
- cirq/contrib/acquaintance/gates_test.py +1 -1
- cirq/contrib/acquaintance/inspection_utils.py +1 -2
- cirq/contrib/acquaintance/inspection_utils_test.py +1 -1
- cirq/contrib/acquaintance/mutation_utils.py +2 -4
- cirq/contrib/acquaintance/optimizers.py +2 -3
- cirq/contrib/acquaintance/optimizers_test.py +1 -1
- cirq/contrib/acquaintance/permutation.py +1 -1
- cirq/contrib/acquaintance/permutation_test.py +1 -1
- cirq/contrib/acquaintance/shift.py +1 -1
- cirq/contrib/acquaintance/strategies/complete.py +0 -1
- cirq/contrib/acquaintance/strategies/cubic.py +1 -1
- cirq/contrib/circuitdag/circuit_dag.py +2 -2
- cirq/contrib/circuitdag/circuit_dag_test.py +1 -1
- cirq/contrib/graph_device/graph_device.py +1 -3
- cirq/contrib/graph_device/graph_device_test.py +0 -1
- cirq/contrib/graph_device/hypergraph_test.py +1 -0
- cirq/contrib/json_test.py +2 -2
- cirq/contrib/noise_models/noise_models.py +1 -1
- cirq/contrib/paulistring/clifford_optimize.py +1 -1
- cirq/contrib/paulistring/clifford_optimize_test.py +0 -1
- cirq/contrib/paulistring/clifford_target_gateset.py +3 -3
- cirq/contrib/paulistring/optimize.py +2 -2
- cirq/contrib/paulistring/optimize_test.py +0 -1
- cirq/contrib/paulistring/pauli_string_dag_test.py +0 -1
- cirq/contrib/paulistring/pauli_string_measurement_with_readout_mitigation.py +3 -3
- cirq/contrib/paulistring/pauli_string_measurement_with_readout_mitigation_test.py +3 -4
- cirq/contrib/paulistring/pauli_string_optimize_test.py +1 -2
- cirq/contrib/paulistring/recombine.py +2 -2
- cirq/contrib/paulistring/recombine_test.py +1 -1
- cirq/contrib/paulistring/separate.py +1 -2
- cirq/contrib/qasm_import/_lexer.py +1 -0
- cirq/contrib/qasm_import/_lexer_test.py +1 -0
- cirq/contrib/qasm_import/_parser.py +2 -3
- cirq/contrib/qasm_import/_parser_test.py +1 -1
- cirq/contrib/qasm_import/qasm_test.py +1 -1
- cirq/contrib/quantum_volume/quantum_volume.py +1 -1
- cirq/contrib/quantum_volume/quantum_volume_test.py +3 -1
- cirq/contrib/quimb/density_matrix.py +1 -1
- cirq/contrib/quimb/state_vector.py +1 -1
- cirq/contrib/quirk/export_to_quirk.py +3 -3
- cirq/contrib/routing/device.py +1 -1
- cirq/contrib/routing/device_test.py +1 -2
- cirq/contrib/routing/greedy.py +2 -2
- cirq/contrib/routing/initialization_test.py +1 -1
- cirq/contrib/routing/swap_network.py +1 -1
- cirq/contrib/routing/utils.py +2 -2
- cirq/contrib/routing/utils_test.py +1 -2
- cirq/contrib/shuffle_circuits/shuffle_circuits_with_readout_benchmarking.py +2 -2
- cirq/contrib/shuffle_circuits/shuffle_circuits_with_readout_benchmarking_test.py +6 -4
- cirq/contrib/svg/svg.py +2 -3
- cirq/devices/device.py +3 -1
- cirq/devices/device_test.py +1 -0
- cirq/devices/grid_device_metadata.py +2 -1
- cirq/devices/grid_device_metadata_test.py +2 -1
- cirq/devices/grid_qubit.py +2 -2
- cirq/devices/insertion_noise_model.py +1 -1
- cirq/devices/insertion_noise_model_test.py +1 -1
- cirq/devices/line_qubit.py +1 -0
- cirq/devices/named_topologies.py +6 -6
- cirq/devices/named_topologies_test.py +5 -4
- cirq/devices/noise_model.py +2 -2
- cirq/devices/noise_properties.py +2 -2
- cirq/devices/noise_properties_test.py +2 -2
- cirq/devices/noise_utils.py +3 -3
- cirq/devices/superconducting_qubits_noise_properties.py +2 -2
- cirq/devices/superconducting_qubits_noise_properties_test.py +3 -3
- cirq/devices/thermal_noise_model.py +2 -1
- cirq/devices/unconstrained_device.py +1 -1
- cirq/experiments/qubit_characterizations.py +9 -10
- cirq/experiments/qubit_characterizations_test.py +4 -6
- cirq/experiments/random_quantum_circuit_generation.py +3 -4
- cirq/experiments/random_quantum_circuit_generation_test.py +4 -4
- cirq/experiments/readout_confusion_matrix.py +5 -3
- cirq/experiments/readout_confusion_matrix_test.py +2 -2
- cirq/experiments/single_qubit_readout_calibration.py +5 -4
- cirq/experiments/single_qubit_readout_calibration_test.py +1 -1
- cirq/experiments/t1_decay_experiment.py +4 -5
- cirq/experiments/t1_decay_experiment_test.py +1 -2
- cirq/experiments/t2_decay_experiment.py +0 -1
- cirq/experiments/t2_decay_experiment_test.py +1 -2
- cirq/experiments/two_qubit_xeb.py +13 -10
- cirq/experiments/two_qubit_xeb_test.py +3 -4
- cirq/experiments/xeb_fitting.py +6 -3
- cirq/experiments/xeb_fitting_test.py +5 -5
- cirq/experiments/xeb_sampling.py +5 -5
- cirq/experiments/xeb_simulation.py +3 -2
- cirq/experiments/z_phase_calibration.py +4 -3
- cirq/experiments/z_phase_calibration_test.py +4 -5
- cirq/interop/quirk/cells/arithmetic_cells.py +8 -8
- cirq/interop/quirk/cells/arithmetic_cells_test.py +1 -1
- cirq/interop/quirk/cells/cell.py +6 -6
- cirq/interop/quirk/cells/composite_cell.py +5 -5
- cirq/interop/quirk/cells/composite_cell_test.py +1 -1
- cirq/interop/quirk/cells/frequency_space_cells.py +2 -2
- cirq/interop/quirk/cells/ignored_cells.py +1 -1
- cirq/interop/quirk/cells/input_cells.py +1 -1
- cirq/interop/quirk/cells/input_cells_test.py +1 -1
- cirq/interop/quirk/cells/input_rotation_cells.py +1 -1
- cirq/interop/quirk/cells/input_rotation_cells_test.py +1 -1
- cirq/interop/quirk/cells/measurement_cells.py +1 -1
- cirq/interop/quirk/cells/parse.py +3 -4
- cirq/interop/quirk/cells/parse_test.py +1 -1
- cirq/interop/quirk/cells/single_qubit_rotation_cells.py +1 -1
- cirq/interop/quirk/cells/swap_cell_test.py +1 -1
- cirq/interop/quirk/cells/unsupported_cells.py +1 -1
- cirq/interop/quirk/url_to_circuit.py +7 -7
- cirq/interop/quirk/url_to_circuit_test.py +1 -1
- cirq/json_resolver_cache.py +6 -5
- cirq/linalg/combinators.py +2 -2
- cirq/linalg/combinators_test.py +1 -1
- cirq/linalg/decompositions.py +2 -2
- cirq/linalg/decompositions_test.py +1 -2
- cirq/linalg/diagonalize.py +1 -1
- cirq/linalg/diagonalize_test.py +1 -1
- cirq/linalg/predicates.py +2 -2
- cirq/linalg/predicates_test.py +1 -0
- cirq/linalg/tolerance.py +1 -1
- cirq/neutral_atoms/convert_to_neutral_atom_gates_test.py +0 -1
- cirq/ops/arithmetic_operation.py +2 -2
- cirq/ops/arithmetic_operation_test.py +2 -2
- cirq/ops/classically_controlled_operation.py +2 -2
- cirq/ops/clifford_gate.py +3 -3
- cirq/ops/clifford_gate_test.py +1 -1
- cirq/ops/common_channels.py +2 -2
- cirq/ops/common_gate_families.py +1 -1
- cirq/ops/common_gate_families_test.py +1 -0
- cirq/ops/common_gates.py +3 -3
- cirq/ops/control_values.py +2 -2
- cirq/ops/control_values_test.py +2 -1
- cirq/ops/controlled_gate.py +2 -2
- cirq/ops/controlled_operation.py +3 -3
- cirq/ops/dense_pauli_string.py +3 -3
- cirq/ops/diagonal_gate.py +1 -1
- cirq/ops/diagonal_gate_test.py +1 -0
- cirq/ops/eigen_gate.py +1 -1
- cirq/ops/eigen_gate_test.py +1 -1
- cirq/ops/fourier_transform.py +1 -1
- cirq/ops/fourier_transform_test.py +2 -1
- cirq/ops/gate_operation.py +5 -5
- cirq/ops/gateset_test.py +4 -2
- cirq/ops/global_phase_op.py +3 -3
- cirq/ops/identity.py +1 -1
- cirq/ops/kraus_channel.py +1 -0
- cirq/ops/kraus_channel_test.py +2 -1
- cirq/ops/linear_combinations.py +9 -9
- cirq/ops/matrix_gates.py +2 -2
- cirq/ops/measure_util.py +2 -2
- cirq/ops/measurement_gate.py +1 -1
- cirq/ops/measurement_gate_test.py +1 -0
- cirq/ops/mixed_unitary_channel.py +1 -0
- cirq/ops/mixed_unitary_channel_test.py +2 -1
- cirq/ops/named_qubit.py +0 -1
- cirq/ops/op_tree.py +1 -1
- cirq/ops/parallel_gate.py +1 -1
- cirq/ops/parallel_gate_test.py +2 -1
- cirq/ops/parity_gates.py +5 -6
- cirq/ops/pauli_gates.py +4 -5
- cirq/ops/pauli_gates_test.py +1 -0
- cirq/ops/pauli_interaction_gate.py +3 -3
- cirq/ops/pauli_interaction_gate_test.py +2 -3
- cirq/ops/pauli_measurement_gate.py +4 -4
- cirq/ops/pauli_string.py +5 -5
- cirq/ops/pauli_string_phasor.py +6 -7
- cirq/ops/pauli_string_phasor_test.py +2 -1
- cirq/ops/pauli_string_raw_types.py +1 -0
- cirq/ops/pauli_sum_exponential.py +1 -1
- cirq/ops/pauli_sum_exponential_test.py +0 -1
- cirq/ops/permutation_gate_test.py +1 -1
- cirq/ops/phased_x_gate.py +3 -4
- cirq/ops/phased_x_z_gate.py +3 -3
- cirq/ops/qubit_manager.py +2 -1
- cirq/ops/qubit_manager_test.py +2 -1
- cirq/ops/qubit_order.py +1 -1
- cirq/ops/random_gate_channel.py +1 -1
- cirq/ops/raw_types.py +4 -4
- cirq/ops/raw_types_test.py +2 -2
- cirq/ops/state_preparation_channel.py +2 -2
- cirq/ops/state_preparation_channel_test.py +2 -1
- cirq/ops/swap_gates.py +2 -2
- cirq/ops/three_qubit_gates.py +2 -3
- cirq/ops/three_qubit_gates_test.py +1 -0
- cirq/ops/two_qubit_diagonal_gate.py +3 -2
- cirq/ops/uniform_superposition_gate.py +3 -3
- cirq/ops/uniform_superposition_gate_test.py +1 -0
- cirq/ops/wait_gate.py +1 -1
- cirq/protocols/act_on_protocol_test.py +1 -1
- cirq/protocols/apply_channel_protocol.py +2 -2
- cirq/protocols/apply_mixture_protocol.py +1 -1
- cirq/protocols/approximate_equality_protocol.py +3 -4
- cirq/protocols/approximate_equality_protocol_test.py +3 -1
- cirq/protocols/circuit_diagram_info_protocol.py +5 -5
- cirq/protocols/decompose_protocol.py +3 -4
- cirq/protocols/decompose_protocol_test.py +1 -0
- cirq/protocols/equal_up_to_global_phase_protocol_test.py +1 -0
- cirq/protocols/has_stabilizer_effect_protocol.py +5 -5
- cirq/protocols/has_unitary_protocol.py +1 -1
- cirq/protocols/inverse_protocol.py +1 -1
- cirq/protocols/json_serialization_test.py +1 -1
- cirq/protocols/kraus_protocol.py +1 -2
- cirq/protocols/kraus_protocol_test.py +0 -1
- cirq/protocols/mixture_protocol_test.py +1 -2
- cirq/protocols/pauli_expansion_protocol.py +1 -0
- cirq/protocols/pow_protocol.py +1 -1
- cirq/protocols/qasm.py +1 -1
- cirq/protocols/qid_shape_protocol.py +1 -1
- cirq/protocols/resolve_parameters.py +1 -2
- cirq/protocols/resolve_parameters_test.py +2 -1
- cirq/protocols/trace_distance_bound.py +1 -1
- cirq/protocols/trace_distance_bound_test.py +1 -0
- cirq/protocols/unitary_protocol.py +2 -2
- cirq/qis/clifford_tableau.py +2 -1
- cirq/qis/entropy.py +1 -1
- cirq/qis/entropy_test.py +2 -1
- cirq/qis/measures.py +3 -3
- cirq/qis/noise_utils_test.py +4 -4
- cirq/qis/quantum_state_representation.py +1 -1
- cirq/qis/states.py +3 -2
- cirq/sim/classical_simulator.py +7 -6
- cirq/sim/classical_simulator_test.py +3 -1
- cirq/sim/clifford/stabilizer_state_ch_form.py +1 -0
- cirq/sim/density_matrix_simulator.py +1 -1
- cirq/sim/density_matrix_utils.py +1 -1
- cirq/sim/mux.py +2 -2
- cirq/sim/simulation_state.py +3 -4
- cirq/sim/simulation_state_base.py +1 -1
- cirq/sim/simulation_utils_test.py +2 -3
- cirq/sim/simulator_base.py +5 -5
- cirq/sim/simulator_test.py +2 -2
- cirq/sim/sparse_simulator.py +2 -2
- cirq/sim/sparse_simulator_test.py +1 -1
- cirq/sim/state_vector.py +2 -2
- cirq/sim/state_vector_simulator.py +4 -4
- cirq/study/flatten_expressions.py +2 -2
- cirq/study/flatten_expressions_test.py +1 -1
- cirq/study/resolver.py +1 -0
- cirq/study/result.py +3 -3
- cirq/study/sweepable.py +3 -2
- cirq/study/sweeps.py +4 -4
- cirq/study/sweeps_test.py +1 -0
- cirq/testing/circuit_compare.py +3 -4
- cirq/testing/circuit_compare_test.py +1 -2
- cirq/testing/consistent_act_on.py +3 -3
- cirq/testing/consistent_channels_test.py +2 -1
- cirq/testing/consistent_controlled_gate_op.py +3 -2
- cirq/testing/consistent_controlled_gate_op_test.py +2 -3
- cirq/testing/consistent_decomposition.py +1 -1
- cirq/testing/consistent_decomposition_test.py +1 -2
- cirq/testing/consistent_phase_by.py +1 -1
- cirq/testing/consistent_phase_by_test.py +1 -2
- cirq/testing/consistent_protocols.py +9 -9
- cirq/testing/consistent_protocols_test.py +3 -4
- cirq/testing/consistent_qasm.py +1 -1
- cirq/testing/consistent_qasm_test.py +1 -1
- cirq/testing/consistent_resolve_parameters.py +2 -1
- cirq/testing/consistent_specified_has_unitary_test.py +1 -1
- cirq/testing/consistent_unitary.py +3 -1
- cirq/testing/consistent_unitary_test.py +3 -3
- cirq/testing/devices.py +1 -1
- cirq/testing/devices_test.py +1 -0
- cirq/testing/equals_tester.py +1 -3
- cirq/testing/equals_tester_test.py +1 -0
- cirq/testing/equivalent_basis_map.py +1 -0
- cirq/testing/equivalent_basis_map_test.py +0 -1
- cirq/testing/json.py +2 -3
- cirq/testing/lin_alg_utils_test.py +1 -1
- cirq/testing/order_tester.py +1 -1
- cirq/testing/order_tester_test.py +1 -1
- cirq/testing/random_circuit.py +2 -2
- cirq/testing/random_circuit_test.py +1 -1
- cirq/testing/routing_devices_test.py +2 -1
- cirq/testing/sample_circuits.py +1 -1
- cirq/testing/sample_gates.py +3 -2
- cirq/testing/sample_gates_test.py +2 -2
- cirq/transformers/align.py +1 -0
- cirq/transformers/analytical_decompositions/clifford_decomposition.py +2 -1
- cirq/transformers/analytical_decompositions/clifford_decomposition_test.py +1 -1
- cirq/transformers/analytical_decompositions/controlled_gate_decomposition.py +1 -1
- cirq/transformers/analytical_decompositions/cphase_to_fsim_test.py +1 -1
- cirq/transformers/analytical_decompositions/pauli_string_decomposition.py +2 -2
- cirq/transformers/analytical_decompositions/pauli_string_decomposition_test.py +4 -4
- cirq/transformers/analytical_decompositions/quantum_shannon_decomposition.py +6 -7
- cirq/transformers/analytical_decompositions/quantum_shannon_decomposition_test.py +5 -5
- cirq/transformers/analytical_decompositions/single_qubit_decompositions.py +1 -1
- cirq/transformers/analytical_decompositions/single_to_two_qubit_isometry.py +1 -1
- cirq/transformers/analytical_decompositions/single_to_two_qubit_isometry_test.py +1 -0
- cirq/transformers/analytical_decompositions/three_qubit_decomposition.py +2 -3
- cirq/transformers/analytical_decompositions/three_qubit_decomposition_test.py +1 -1
- cirq/transformers/analytical_decompositions/two_qubit_state_preparation.py +2 -1
- cirq/transformers/analytical_decompositions/two_qubit_state_preparation_test.py +2 -1
- cirq/transformers/analytical_decompositions/two_qubit_to_cz.py +5 -6
- cirq/transformers/analytical_decompositions/two_qubit_to_cz_test.py +2 -2
- cirq/transformers/analytical_decompositions/two_qubit_to_fsim.py +1 -1
- cirq/transformers/analytical_decompositions/two_qubit_to_fsim_test.py +1 -2
- cirq/transformers/analytical_decompositions/two_qubit_to_ms.py +2 -2
- cirq/transformers/analytical_decompositions/two_qubit_to_sqrt_iswap.py +1 -1
- cirq/transformers/analytical_decompositions/two_qubit_to_sqrt_iswap_test.py +2 -1
- cirq/transformers/drop_empty_moments.py +1 -0
- cirq/transformers/drop_negligible_operations.py +1 -0
- cirq/transformers/dynamical_decoupling.py +7 -7
- cirq/transformers/dynamical_decoupling_test.py +4 -2
- cirq/transformers/eject_phased_paulis.py +4 -3
- cirq/transformers/eject_phased_paulis_test.py +1 -1
- cirq/transformers/eject_z.py +2 -1
- cirq/transformers/eject_z_test.py +1 -1
- cirq/transformers/gauge_compiling/cphase_gauge.py +5 -5
- cirq/transformers/gauge_compiling/cz_gauge.py +4 -4
- cirq/transformers/gauge_compiling/gauge_compiling.py +9 -9
- cirq/transformers/gauge_compiling/gauge_compiling_test.py +8 -6
- cirq/transformers/gauge_compiling/gauge_compiling_test_utils.py +2 -2
- cirq/transformers/gauge_compiling/gauge_compiling_test_utils_test.py +2 -1
- cirq/transformers/gauge_compiling/iswap_gauge.py +2 -2
- cirq/transformers/gauge_compiling/spin_inversion_gauge.py +2 -2
- cirq/transformers/gauge_compiling/sqrt_cz_gauge.py +5 -5
- cirq/transformers/gauge_compiling/sqrt_iswap_gauge.py +3 -2
- cirq/transformers/heuristic_decompositions/gate_tabulation_math_utils.py +2 -1
- cirq/transformers/heuristic_decompositions/gate_tabulation_math_utils_test.py +1 -1
- cirq/transformers/heuristic_decompositions/two_qubit_gate_tabulation.py +4 -4
- cirq/transformers/heuristic_decompositions/two_qubit_gate_tabulation_test.py +4 -4
- cirq/transformers/insertion_sort.py +1 -1
- cirq/transformers/merge_k_qubit_gates.py +2 -2
- cirq/transformers/merge_single_qubit_gates.py +1 -1
- cirq/transformers/noise_adding.py +4 -3
- cirq/transformers/noise_adding_test.py +3 -2
- cirq/transformers/optimize_for_target_gateset.py +1 -1
- cirq/transformers/optimize_for_target_gateset_test.py +2 -1
- cirq/transformers/randomized_measurements.py +2 -1
- cirq/transformers/randomized_measurements_test.py +2 -1
- cirq/transformers/routing/initial_mapper.py +1 -1
- cirq/transformers/routing/initial_mapper_test.py +1 -0
- cirq/transformers/routing/line_initial_mapper.py +3 -2
- cirq/transformers/routing/mapping_manager.py +2 -2
- cirq/transformers/routing/mapping_manager_test.py +2 -2
- cirq/transformers/routing/route_circuit_cqc.py +3 -2
- cirq/transformers/routing/route_circuit_cqc_test.py +2 -1
- cirq/transformers/routing/visualize_routed_circuit.py +1 -0
- cirq/transformers/routing/visualize_routed_circuit_test.py +1 -0
- cirq/transformers/stratify.py +2 -2
- cirq/transformers/synchronize_terminal_measurements.py +2 -1
- cirq/transformers/target_gatesets/compilation_target_gateset.py +1 -2
- cirq/transformers/target_gatesets/compilation_target_gateset_test.py +2 -0
- cirq/transformers/target_gatesets/cz_gateset.py +1 -1
- cirq/transformers/target_gatesets/cz_gateset_test.py +4 -2
- cirq/transformers/target_gatesets/sqrt_iswap_gateset.py +1 -1
- cirq/transformers/target_gatesets/sqrt_iswap_gateset_test.py +3 -2
- cirq/transformers/transformer_api.py +5 -4
- cirq/transformers/transformer_api_test.py +3 -3
- cirq/transformers/transformer_primitives.py +3 -4
- cirq/transformers/transformer_primitives_test.py +1 -0
- cirq/value/abc_alt.py +1 -2
- cirq/value/angle.py +2 -0
- cirq/value/classical_data.py +1 -0
- cirq/value/digits.py +1 -1
- cirq/value/duration.py +3 -3
- cirq/value/duration_test.py +2 -1
- cirq/value/linear_dict.py +2 -1
- cirq/value/measurement_key.py +1 -2
- cirq/value/periodic_value.py +0 -1
- cirq/value/probability.py +1 -0
- cirq/value/random_state.py +1 -1
- cirq/value/timestamp_test.py +2 -1
- cirq/value/value_equality_attr.py +1 -1
- cirq/vis/density_matrix.py +1 -1
- cirq/vis/density_matrix_test.py +2 -5
- cirq/vis/heatmap.py +0 -1
- cirq/vis/heatmap_test.py +2 -3
- cirq/vis/histogram.py +1 -1
- cirq/vis/histogram_test.py +1 -2
- cirq/vis/state_histogram.py +4 -2
- cirq/vis/state_histogram_test.py +2 -2
- cirq/work/collector.py +1 -1
- cirq/work/observable_grouping.py +2 -2
- cirq/work/observable_measurement.py +3 -3
- cirq/work/observable_measurement_data.py +2 -2
- cirq/work/observable_measurement_test.py +8 -8
- cirq/work/observable_readout_calibration.py +2 -2
- cirq/work/observable_readout_calibration_test.py +2 -1
- cirq/work/observable_settings.py +6 -6
- cirq/work/observable_settings_test.py +2 -2
- cirq/work/pauli_sum_collector.py +1 -1
- cirq/work/sampler.py +2 -3
- cirq/work/sampler_test.py +1 -2
- cirq/work/zeros_sampler.py +1 -1
- {cirq_core-1.5.0.dev20250327175906.dist-info → cirq_core-1.5.0.dev20250327210023.dist-info}/METADATA +1 -1
- {cirq_core-1.5.0.dev20250327175906.dist-info → cirq_core-1.5.0.dev20250327210023.dist-info}/RECORD +415 -415
- {cirq_core-1.5.0.dev20250327175906.dist-info → cirq_core-1.5.0.dev20250327210023.dist-info}/LICENSE +0 -0
- {cirq_core-1.5.0.dev20250327175906.dist-info → cirq_core-1.5.0.dev20250327210023.dist-info}/WHEEL +0 -0
- {cirq_core-1.5.0.dev20250327175906.dist-info → cirq_core-1.5.0.dev20250327210023.dist-info}/top_level.txt +0 -0
cirq/ops/kraus_channel_test.py
CHANGED
cirq/ops/linear_combinations.py
CHANGED
|
@@ -12,34 +12,34 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
+
import numbers
|
|
15
16
|
from collections import defaultdict
|
|
16
17
|
from typing import (
|
|
17
18
|
AbstractSet,
|
|
18
19
|
Any,
|
|
20
|
+
DefaultDict,
|
|
19
21
|
Dict,
|
|
22
|
+
FrozenSet,
|
|
20
23
|
Iterable,
|
|
24
|
+
List,
|
|
21
25
|
Mapping,
|
|
22
26
|
Optional,
|
|
23
27
|
Tuple,
|
|
24
|
-
Union,
|
|
25
|
-
List,
|
|
26
|
-
FrozenSet,
|
|
27
|
-
DefaultDict,
|
|
28
28
|
TYPE_CHECKING,
|
|
29
|
+
Union,
|
|
29
30
|
)
|
|
30
|
-
import numbers
|
|
31
31
|
|
|
32
32
|
import numpy as np
|
|
33
|
-
from
|
|
33
|
+
from scipy.sparse import csr_matrix
|
|
34
34
|
from sympy.core.expr import Expr
|
|
35
35
|
from sympy.core.symbol import Symbol
|
|
36
|
-
from
|
|
36
|
+
from sympy.logic.boolalg import And, Not, Or, Xor
|
|
37
37
|
|
|
38
38
|
from cirq import linalg, protocols, qis, value
|
|
39
39
|
from cirq._doc import document
|
|
40
40
|
from cirq.linalg import operator_spaces
|
|
41
|
-
from cirq.ops import identity,
|
|
42
|
-
from cirq.ops.pauli_string import
|
|
41
|
+
from cirq.ops import identity, pauli_gates, pauli_string, raw_types
|
|
42
|
+
from cirq.ops.pauli_string import _validate_qubit_mapping, PauliString
|
|
43
43
|
from cirq.ops.projector import ProjectorString
|
|
44
44
|
from cirq.value.linear_dict import _format_terms
|
|
45
45
|
|
cirq/ops/matrix_gates.py
CHANGED
|
@@ -18,9 +18,9 @@ from typing import Any, Dict, Iterable, Optional, Tuple, TYPE_CHECKING
|
|
|
18
18
|
|
|
19
19
|
import numpy as np
|
|
20
20
|
|
|
21
|
-
from cirq import linalg, protocols
|
|
21
|
+
from cirq import _import, linalg, protocols
|
|
22
22
|
from cirq._compat import proper_repr
|
|
23
|
-
from cirq.ops import
|
|
23
|
+
from cirq.ops import phased_x_z_gate, raw_types
|
|
24
24
|
|
|
25
25
|
if TYPE_CHECKING:
|
|
26
26
|
import cirq
|
cirq/ops/measure_util.py
CHANGED
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import Callable, Dict, Iterable, List,
|
|
15
|
+
from typing import Callable, Dict, Iterable, List, Optional, overload, Tuple, TYPE_CHECKING, Union
|
|
16
16
|
|
|
17
17
|
import numpy as np
|
|
18
18
|
|
|
19
19
|
from cirq import protocols
|
|
20
|
-
from cirq.ops import
|
|
20
|
+
from cirq.ops import pauli_string, raw_types
|
|
21
21
|
from cirq.ops.measurement_gate import MeasurementGate
|
|
22
22
|
from cirq.ops.pauli_measurement_gate import PauliMeasurementGate
|
|
23
23
|
|
cirq/ops/measurement_gate.py
CHANGED
cirq/ops/named_qubit.py
CHANGED
cirq/ops/op_tree.py
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
"""A recursive type describing trees of operations, and utility methods for it."""
|
|
16
16
|
|
|
17
|
-
from typing import Callable, Iterable, Iterator, NoReturn,
|
|
17
|
+
from typing import Callable, Iterable, Iterator, NoReturn, TYPE_CHECKING, Union
|
|
18
18
|
|
|
19
19
|
from cirq._doc import document
|
|
20
20
|
from cirq._import import LazyLoader
|
cirq/ops/parallel_gate.py
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
from types import NotImplementedType
|
|
16
|
-
from typing import AbstractSet,
|
|
16
|
+
from typing import AbstractSet, Any, Dict, Optional, Tuple, TYPE_CHECKING, Union
|
|
17
17
|
|
|
18
18
|
import numpy as np
|
|
19
19
|
|
cirq/ops/parallel_gate_test.py
CHANGED
cirq/ops/parity_gates.py
CHANGED
|
@@ -14,24 +14,23 @@
|
|
|
14
14
|
|
|
15
15
|
"""Quantum gates that phase with respect to product-of-pauli observables."""
|
|
16
16
|
|
|
17
|
-
from typing import Any, Dict,
|
|
18
|
-
from typing_extensions import Self
|
|
17
|
+
from typing import Any, Dict, Iterator, List, Optional, Sequence, Tuple, TYPE_CHECKING, Union
|
|
19
18
|
|
|
20
19
|
import numpy as np
|
|
20
|
+
from typing_extensions import Self
|
|
21
21
|
|
|
22
22
|
from cirq import protocols, value
|
|
23
23
|
from cirq._compat import proper_repr
|
|
24
24
|
from cirq._doc import document
|
|
25
25
|
from cirq.ops import (
|
|
26
|
-
|
|
27
|
-
eigen_gate,
|
|
26
|
+
clifford_gate,
|
|
28
27
|
common_gates,
|
|
28
|
+
eigen_gate,
|
|
29
|
+
gate_features,
|
|
29
30
|
pauli_gates,
|
|
30
|
-
clifford_gate,
|
|
31
31
|
pauli_interaction_gate,
|
|
32
32
|
)
|
|
33
33
|
|
|
34
|
-
|
|
35
34
|
if TYPE_CHECKING:
|
|
36
35
|
import cirq
|
|
37
36
|
|
cirq/ops/pauli_gates.py
CHANGED
|
@@ -13,21 +13,20 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
import abc
|
|
15
15
|
from types import NotImplementedType
|
|
16
|
-
from typing import Any, cast, Tuple, TYPE_CHECKING, Union
|
|
16
|
+
from typing import Any, cast, Dict, Tuple, TYPE_CHECKING, Union
|
|
17
17
|
|
|
18
18
|
from cirq._doc import document
|
|
19
19
|
from cirq._import import LazyLoader
|
|
20
|
-
from cirq.ops import common_gates,
|
|
21
|
-
|
|
20
|
+
from cirq.ops import common_gates, identity, raw_types
|
|
22
21
|
|
|
23
22
|
if TYPE_CHECKING:
|
|
24
23
|
import cirq
|
|
25
24
|
from cirq.ops.pauli_string import SingleQubitPauliStringGateOperation
|
|
26
|
-
from cirq.value.product_state import (
|
|
25
|
+
from cirq.value.product_state import ( # pragma: no cover
|
|
27
26
|
_XEigenState,
|
|
28
27
|
_YEigenState,
|
|
29
28
|
_ZEigenState,
|
|
30
|
-
)
|
|
29
|
+
)
|
|
31
30
|
|
|
32
31
|
|
|
33
32
|
pauli_string = LazyLoader("pauli_string", globals(), "cirq.ops.pauli_string")
|
cirq/ops/pauli_gates_test.py
CHANGED
|
@@ -12,13 +12,13 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import Any, Dict, Iterator, List, Sequence,
|
|
15
|
+
from typing import Any, Dict, Iterator, List, Sequence, Tuple, TYPE_CHECKING
|
|
16
16
|
|
|
17
17
|
import numpy as np
|
|
18
18
|
|
|
19
|
-
from cirq import
|
|
19
|
+
from cirq import protocols, value
|
|
20
20
|
from cirq._compat import proper_repr
|
|
21
|
-
from cirq.ops import
|
|
21
|
+
from cirq.ops import common_gates, eigen_gate, gate_features, pauli_gates
|
|
22
22
|
from cirq.ops.clifford_gate import SingleQubitCliffordGate
|
|
23
23
|
|
|
24
24
|
if TYPE_CHECKING:
|
|
@@ -14,26 +14,26 @@
|
|
|
14
14
|
|
|
15
15
|
from typing import (
|
|
16
16
|
Any,
|
|
17
|
+
cast,
|
|
17
18
|
Dict,
|
|
18
19
|
FrozenSet,
|
|
19
20
|
Iterable,
|
|
20
21
|
Iterator,
|
|
21
22
|
Mapping,
|
|
22
|
-
Tuple,
|
|
23
23
|
Sequence,
|
|
24
|
+
Tuple,
|
|
24
25
|
TYPE_CHECKING,
|
|
25
26
|
Union,
|
|
26
|
-
cast,
|
|
27
27
|
)
|
|
28
28
|
|
|
29
29
|
from cirq import protocols, value
|
|
30
30
|
from cirq.ops import (
|
|
31
|
-
|
|
31
|
+
dense_pauli_string as dps,
|
|
32
32
|
measurement_gate,
|
|
33
33
|
op_tree,
|
|
34
|
-
dense_pauli_string as dps,
|
|
35
34
|
pauli_gates,
|
|
36
35
|
pauli_string_phasor,
|
|
36
|
+
raw_types,
|
|
37
37
|
)
|
|
38
38
|
|
|
39
39
|
if TYPE_CHECKING:
|
cirq/ops/pauli_string.py
CHANGED
|
@@ -16,9 +16,12 @@ import math
|
|
|
16
16
|
import numbers
|
|
17
17
|
from types import NotImplementedType
|
|
18
18
|
from typing import (
|
|
19
|
+
AbstractSet,
|
|
19
20
|
Any,
|
|
21
|
+
Callable,
|
|
20
22
|
cast,
|
|
21
23
|
Dict,
|
|
24
|
+
Generic,
|
|
22
25
|
ItemsView,
|
|
23
26
|
Iterable,
|
|
24
27
|
Iterator,
|
|
@@ -33,20 +36,18 @@ from typing import (
|
|
|
33
36
|
TypeVar,
|
|
34
37
|
Union,
|
|
35
38
|
ValuesView,
|
|
36
|
-
AbstractSet,
|
|
37
|
-
Callable,
|
|
38
|
-
Generic,
|
|
39
39
|
)
|
|
40
40
|
|
|
41
41
|
import numpy as np
|
|
42
42
|
import sympy
|
|
43
43
|
|
|
44
|
-
from cirq import
|
|
44
|
+
from cirq import _compat, linalg, protocols, qis, value
|
|
45
45
|
from cirq._doc import document
|
|
46
46
|
from cirq._import import LazyLoader
|
|
47
47
|
from cirq.ops import (
|
|
48
48
|
clifford_gate,
|
|
49
49
|
common_gates,
|
|
50
|
+
dense_pauli_string,
|
|
50
51
|
gate_operation,
|
|
51
52
|
global_phase_op,
|
|
52
53
|
identity,
|
|
@@ -54,7 +55,6 @@ from cirq.ops import (
|
|
|
54
55
|
pauli_gates,
|
|
55
56
|
pauli_interaction_gate,
|
|
56
57
|
raw_types,
|
|
57
|
-
dense_pauli_string,
|
|
58
58
|
)
|
|
59
59
|
|
|
60
60
|
if TYPE_CHECKING:
|
cirq/ops/pauli_string_phasor.py
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
+
import numbers
|
|
15
16
|
from typing import (
|
|
16
17
|
AbstractSet,
|
|
17
18
|
cast,
|
|
@@ -24,20 +25,18 @@ from typing import (
|
|
|
24
25
|
Union,
|
|
25
26
|
)
|
|
26
27
|
|
|
27
|
-
import numbers
|
|
28
|
-
|
|
29
28
|
import sympy
|
|
30
29
|
|
|
31
|
-
from cirq import
|
|
30
|
+
from cirq import protocols, value
|
|
32
31
|
from cirq._compat import proper_repr
|
|
33
32
|
from cirq.ops import (
|
|
34
|
-
raw_types,
|
|
35
33
|
common_gates,
|
|
36
|
-
gate_operation,
|
|
37
34
|
dense_pauli_string as dps,
|
|
38
|
-
|
|
39
|
-
pauli_gates,
|
|
35
|
+
gate_operation,
|
|
40
36
|
op_tree,
|
|
37
|
+
pauli_gates,
|
|
38
|
+
pauli_string as ps,
|
|
39
|
+
raw_types,
|
|
41
40
|
)
|
|
42
41
|
|
|
43
42
|
if TYPE_CHECKING:
|
|
@@ -15,7 +15,7 @@ from typing import Any, Iterator, Tuple, TYPE_CHECKING
|
|
|
15
15
|
|
|
16
16
|
import numpy as np
|
|
17
17
|
|
|
18
|
-
from cirq import linalg, protocols, value
|
|
18
|
+
from cirq import _compat, linalg, protocols, value
|
|
19
19
|
from cirq.ops import linear_combinations, pauli_string_phasor
|
|
20
20
|
|
|
21
21
|
if TYPE_CHECKING:
|
cirq/ops/phased_x_gate.py
CHANGED
|
@@ -13,17 +13,16 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
"""An `XPowGate` conjugated by `ZPowGate`s."""
|
|
15
15
|
|
|
16
|
-
from types import NotImplementedType
|
|
17
|
-
from typing import AbstractSet, Any, cast, Dict, Optional, Sequence, Tuple, Union
|
|
18
|
-
|
|
19
16
|
import math
|
|
20
17
|
import numbers
|
|
18
|
+
from types import NotImplementedType
|
|
19
|
+
from typing import AbstractSet, Any, cast, Dict, Optional, Sequence, Tuple, Union
|
|
21
20
|
|
|
22
21
|
import numpy as np
|
|
23
22
|
import sympy
|
|
24
23
|
|
|
25
24
|
import cirq
|
|
26
|
-
from cirq import
|
|
25
|
+
from cirq import protocols, value
|
|
27
26
|
from cirq._compat import proper_repr
|
|
28
27
|
from cirq.ops import common_gates, raw_types
|
|
29
28
|
|
cirq/ops/phased_x_z_gate.py
CHANGED
|
@@ -12,15 +12,15 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import AbstractSet, Any, Dict, Iterator, Optional, Sequence, Tuple, TYPE_CHECKING, Union
|
|
16
15
|
import numbers
|
|
16
|
+
from typing import AbstractSet, Any, Dict, Iterator, Optional, Sequence, Tuple, TYPE_CHECKING, Union
|
|
17
17
|
|
|
18
18
|
import numpy as np
|
|
19
19
|
import sympy
|
|
20
20
|
|
|
21
|
-
from cirq import
|
|
22
|
-
from cirq.ops import raw_types
|
|
21
|
+
from cirq import linalg, ops, protocols, value
|
|
23
22
|
from cirq._compat import proper_repr
|
|
23
|
+
from cirq.ops import raw_types
|
|
24
24
|
|
|
25
25
|
if TYPE_CHECKING:
|
|
26
26
|
import cirq
|
cirq/ops/qubit_manager.py
CHANGED
cirq/ops/qubit_manager_test.py
CHANGED
cirq/ops/qubit_order.py
CHANGED
cirq/ops/random_gate_channel.py
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
import numbers
|
|
16
|
-
from typing import AbstractSet,
|
|
16
|
+
from typing import AbstractSet, Any, cast, Dict, Optional, SupportsFloat, Tuple, TYPE_CHECKING
|
|
17
17
|
|
|
18
18
|
import numpy as np
|
|
19
19
|
|
cirq/ops/raw_types.py
CHANGED
|
@@ -18,10 +18,10 @@ import abc
|
|
|
18
18
|
import functools
|
|
19
19
|
from types import NotImplementedType
|
|
20
20
|
from typing import (
|
|
21
|
-
cast,
|
|
22
21
|
AbstractSet,
|
|
23
22
|
Any,
|
|
24
23
|
Callable,
|
|
24
|
+
cast,
|
|
25
25
|
Collection,
|
|
26
26
|
Dict,
|
|
27
27
|
FrozenSet,
|
|
@@ -35,14 +35,14 @@ from typing import (
|
|
|
35
35
|
TYPE_CHECKING,
|
|
36
36
|
Union,
|
|
37
37
|
)
|
|
38
|
-
from typing_extensions import Self
|
|
39
38
|
|
|
40
39
|
import numpy as np
|
|
41
40
|
import sympy
|
|
41
|
+
from typing_extensions import Self
|
|
42
42
|
|
|
43
43
|
from cirq import protocols, value
|
|
44
|
-
from cirq._import import LazyLoader
|
|
45
44
|
from cirq._compat import __cirq_debug__, _method_cache_name, cached_method
|
|
45
|
+
from cirq._import import LazyLoader
|
|
46
46
|
from cirq.ops import control_values as cv
|
|
47
47
|
|
|
48
48
|
# Lazy imports to break circular dependencies.
|
|
@@ -1014,7 +1014,7 @@ class _InverseCompositeGate(Gate):
|
|
|
1014
1014
|
)
|
|
1015
1015
|
|
|
1016
1016
|
def _has_unitary_(self):
|
|
1017
|
-
from cirq import
|
|
1017
|
+
from cirq import devices, protocols
|
|
1018
1018
|
|
|
1019
1019
|
qubits = devices.LineQid.for_gate(self)
|
|
1020
1020
|
return all(
|
cirq/ops/raw_types_test.py
CHANGED
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import AbstractSet,
|
|
15
|
+
from typing import AbstractSet, Any, Iterator
|
|
16
16
|
|
|
17
|
-
import pytest
|
|
18
17
|
import numpy as np
|
|
18
|
+
import pytest
|
|
19
19
|
import sympy
|
|
20
20
|
|
|
21
21
|
import cirq
|
|
@@ -14,13 +14,13 @@
|
|
|
14
14
|
|
|
15
15
|
"""Quantum gates to prepare a given target state."""
|
|
16
16
|
|
|
17
|
-
from typing import Any, Dict,
|
|
17
|
+
from typing import Any, Dict, Iterable, Tuple, TYPE_CHECKING
|
|
18
18
|
|
|
19
19
|
import numpy as np
|
|
20
20
|
|
|
21
21
|
from cirq import protocols
|
|
22
|
-
from cirq.ops import raw_types
|
|
23
22
|
from cirq._compat import proper_repr
|
|
23
|
+
from cirq.ops import raw_types
|
|
24
24
|
|
|
25
25
|
if TYPE_CHECKING:
|
|
26
26
|
import cirq
|
cirq/ops/swap_gates.py
CHANGED
|
@@ -25,7 +25,7 @@ raised to a power (i.e. SQRT_ISWAP_INV=cirq.ISWAP**-0.5). See the definition in
|
|
|
25
25
|
EigenGate.
|
|
26
26
|
"""
|
|
27
27
|
|
|
28
|
-
from typing import cast, Optional, Tuple, TYPE_CHECKING
|
|
28
|
+
from typing import cast, List, Optional, Tuple, TYPE_CHECKING
|
|
29
29
|
|
|
30
30
|
import numpy as np
|
|
31
31
|
import sympy
|
|
@@ -33,7 +33,7 @@ import sympy
|
|
|
33
33
|
from cirq import protocols, value
|
|
34
34
|
from cirq._compat import proper_repr
|
|
35
35
|
from cirq._doc import document
|
|
36
|
-
from cirq.ops import common_gates,
|
|
36
|
+
from cirq.ops import common_gates, eigen_gate, gate_features
|
|
37
37
|
|
|
38
38
|
if TYPE_CHECKING:
|
|
39
39
|
import cirq
|
cirq/ops/three_qubit_gates.py
CHANGED
|
@@ -36,15 +36,14 @@ from cirq._compat import proper_repr
|
|
|
36
36
|
from cirq._doc import document
|
|
37
37
|
from cirq.ops import (
|
|
38
38
|
common_gates,
|
|
39
|
+
control_values as cv,
|
|
39
40
|
controlled_gate,
|
|
40
41
|
eigen_gate,
|
|
41
42
|
gate_features,
|
|
43
|
+
global_phase_op,
|
|
42
44
|
pauli_gates,
|
|
43
45
|
raw_types,
|
|
44
46
|
swap_gates,
|
|
45
|
-
raw_types,
|
|
46
|
-
control_values as cv,
|
|
47
|
-
global_phase_op,
|
|
48
47
|
)
|
|
49
48
|
|
|
50
49
|
if TYPE_CHECKING:
|
|
@@ -18,13 +18,14 @@ The gate is used to create a 4x4 matrix with the diagonal elements
|
|
|
18
18
|
passed as a list.
|
|
19
19
|
"""
|
|
20
20
|
|
|
21
|
-
from typing import AbstractSet, Any, Dict, Iterator,
|
|
21
|
+
from typing import AbstractSet, Any, Dict, Iterator, Optional, Sequence, Tuple, TYPE_CHECKING
|
|
22
|
+
|
|
22
23
|
import numpy as np
|
|
23
24
|
import sympy
|
|
24
25
|
|
|
25
26
|
from cirq import protocols, value
|
|
26
27
|
from cirq._compat import proper_repr
|
|
27
|
-
from cirq.ops import
|
|
28
|
+
from cirq.ops import common_gates, raw_types
|
|
28
29
|
|
|
29
30
|
if TYPE_CHECKING:
|
|
30
31
|
import cirq
|