cirq-core 1.7.0.dev20250924231107__py3-none-any.whl → 1.7.0.dev20251203004401__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.
- cirq/__init__.py +1 -0
- cirq/_compat.py +3 -2
- cirq/_compat_test.py +16 -15
- cirq/_doc.py +4 -3
- cirq/_import.py +2 -1
- cirq/_version.py +1 -1
- cirq/_version_test.py +1 -1
- cirq/circuits/_bucket_priority_queue.py +2 -1
- cirq/circuits/circuit.py +7 -13
- cirq/circuits/circuit_operation.py +2 -1
- cirq/circuits/circuit_test.py +13 -12
- cirq/circuits/frozen_circuit.py +3 -2
- cirq/circuits/moment.py +3 -15
- cirq/circuits/optimization_pass.py +2 -1
- cirq/circuits/qasm_output.py +39 -10
- cirq/circuits/qasm_output_test.py +51 -2
- cirq/circuits/text_diagram_drawer.py +2 -1
- cirq/contrib/acquaintance/bipartite.py +2 -1
- cirq/contrib/acquaintance/devices.py +1 -1
- cirq/contrib/acquaintance/executor.py +4 -5
- cirq/contrib/acquaintance/executor_test.py +2 -1
- cirq/contrib/acquaintance/gates.py +2 -1
- cirq/contrib/acquaintance/gates_test.py +1 -1
- cirq/contrib/acquaintance/inspection_utils.py +2 -1
- cirq/contrib/acquaintance/mutation_utils.py +2 -1
- cirq/contrib/acquaintance/optimizers.py +2 -1
- cirq/contrib/acquaintance/permutation.py +2 -1
- cirq/contrib/acquaintance/permutation_test.py +1 -1
- cirq/contrib/acquaintance/shift.py +2 -1
- cirq/contrib/acquaintance/shift_swap_network.py +2 -1
- cirq/contrib/acquaintance/strategies/complete.py +3 -2
- cirq/contrib/acquaintance/strategies/cubic.py +2 -1
- cirq/contrib/acquaintance/strategies/quartic_paired.py +2 -1
- cirq/contrib/acquaintance/strategies/quartic_paired_test.py +1 -1
- cirq/contrib/acquaintance/testing.py +2 -1
- cirq/contrib/acquaintance/topological_sort.py +2 -1
- cirq/contrib/bayesian_network/bayesian_network_gate.py +3 -2
- cirq/contrib/circuitdag/circuit_dag.py +4 -2
- cirq/contrib/custom_simulators/custom_state_simulator.py +2 -1
- cirq/contrib/custom_simulators/custom_state_simulator_test.py +1 -1
- cirq/contrib/graph_device/graph_device.py +2 -1
- cirq/contrib/graph_device/graph_device_test.py +2 -1
- cirq/contrib/graph_device/hypergraph.py +2 -1
- cirq/contrib/graph_device/uniform_graph_device.py +2 -1
- cirq/contrib/json.py +14 -2
- cirq/contrib/json_test_data/BayesianNetworkGate.json +10 -0
- cirq/contrib/json_test_data/BayesianNetworkGate.repr +3 -0
- cirq/contrib/json_test_data/QuantumVolumeResult.json +169 -0
- cirq/contrib/json_test_data/QuantumVolumeResult.repr +22 -0
- cirq/contrib/json_test_data/SwapPermutationGate.json +3 -0
- cirq/contrib/json_test_data/SwapPermutationGate.repr +1 -0
- cirq/contrib/json_test_data/spec.py +0 -2
- cirq/contrib/noise_models/noise_models.py +2 -1
- cirq/contrib/paulistring/clifford_optimize.py +20 -2
- cirq/contrib/paulistring/optimize.py +1 -1
- cirq/contrib/paulistring/pauli_string_measurement_with_readout_mitigation.py +146 -35
- cirq/contrib/paulistring/pauli_string_measurement_with_readout_mitigation_test.py +74 -171
- cirq/contrib/paulistring/recombine.py +5 -2
- cirq/contrib/paulistring/separate.py +1 -1
- cirq/contrib/qasm_import/_parser.py +2 -1
- cirq/contrib/qasm_import/_parser_test.py +3 -3
- cirq/contrib/quantikz/__init__.py +21 -0
- cirq/contrib/quantikz/circuit_to_latex_quantikz.py +680 -0
- cirq/contrib/quantikz/circuit_to_latex_quantikz_test.py +253 -0
- cirq/contrib/quantikz/circuit_to_latex_render.py +424 -0
- cirq/contrib/quantikz/circuit_to_latex_render_test.py +44 -0
- cirq/contrib/quantum_volume/quantum_volume.py +2 -1
- cirq/contrib/quimb/density_matrix.py +1 -1
- cirq/contrib/quimb/grid_circuits.py +2 -1
- cirq/contrib/quimb/grid_circuits_test.py +1 -1
- cirq/contrib/quimb/mps_simulator.py +4 -3
- cirq/contrib/quimb/state_vector.py +2 -1
- cirq/contrib/quirk/export_to_quirk.py +2 -1
- cirq/contrib/quirk/linearize_circuit.py +1 -1
- cirq/contrib/quirk/quirk_gate.py +2 -1
- cirq/contrib/routing/device.py +1 -1
- cirq/contrib/routing/greedy.py +2 -1
- cirq/contrib/routing/initialization.py +2 -1
- cirq/contrib/routing/router.py +2 -1
- cirq/contrib/routing/swap_network.py +2 -1
- cirq/contrib/routing/utils.py +2 -1
- cirq/contrib/shuffle_circuits/shuffle_circuits_with_readout_benchmarking.py +7 -5
- cirq/contrib/shuffle_circuits/shuffle_circuits_with_readout_benchmarking_test.py +6 -6
- cirq/devices/device.py +2 -1
- cirq/devices/grid_device_metadata.py +2 -1
- cirq/devices/grid_qubit.py +7 -6
- cirq/devices/insertion_noise_model.py +2 -1
- cirq/devices/line_qubit.py +2 -1
- cirq/devices/named_topologies.py +2 -1
- cirq/devices/noise_model.py +2 -1
- cirq/devices/noise_model_test.py +1 -1
- cirq/devices/noise_properties.py +2 -1
- cirq/devices/superconducting_qubits_noise_properties_test.py +2 -1
- cirq/devices/thermal_noise_model.py +2 -1
- cirq/experiments/__init__.py +2 -0
- cirq/experiments/benchmarking/parallel_xeb.py +2 -1
- cirq/experiments/benchmarking/parallel_xeb_test.py +1 -1
- cirq/experiments/fidelity_estimation.py +2 -1
- cirq/experiments/fidelity_estimation_test.py +1 -1
- cirq/experiments/ghz_2d.py +150 -0
- cirq/experiments/ghz_2d_test.py +155 -0
- cirq/experiments/n_qubit_tomography.py +2 -1
- cirq/experiments/n_qubit_tomography_test.py +1 -1
- cirq/experiments/purity_estimation.py +1 -1
- cirq/experiments/qubit_characterizations.py +2 -1
- cirq/experiments/random_quantum_circuit_generation.py +2 -1
- cirq/experiments/random_quantum_circuit_generation_test.py +2 -1
- cirq/experiments/readout_confusion_matrix.py +2 -1
- cirq/experiments/readout_confusion_matrix_test.py +1 -1
- cirq/experiments/single_qubit_readout_calibration.py +2 -1
- cirq/experiments/single_qubit_readout_calibration_test.py +1 -1
- cirq/experiments/t1_decay_experiment.py +2 -1
- cirq/experiments/two_qubit_xeb.py +2 -1
- cirq/experiments/two_qubit_xeb_test.py +1 -1
- cirq/experiments/xeb_fitting.py +2 -1
- cirq/experiments/xeb_fitting_test.py +1 -1
- cirq/experiments/xeb_sampling.py +5 -3
- cirq/experiments/xeb_sampling_test.py +1 -1
- cirq/experiments/xeb_simulation.py +2 -1
- cirq/experiments/xeb_simulation_test.py +2 -1
- cirq/experiments/z_phase_calibration.py +2 -1
- cirq/experiments/z_phase_calibration_test.py +18 -3
- cirq/interop/quirk/cells/__init__.py +1 -2
- cirq/interop/quirk/cells/all_cells.py +2 -1
- cirq/interop/quirk/cells/arithmetic_cells.py +2 -1
- cirq/interop/quirk/cells/cell.py +2 -1
- cirq/interop/quirk/cells/composite_cell.py +2 -1
- cirq/interop/quirk/cells/composite_cell_test.py +1 -1
- cirq/interop/quirk/cells/control_cells.py +2 -1
- cirq/interop/quirk/cells/frequency_space_cells.py +1 -1
- cirq/interop/quirk/cells/ignored_cells.py +1 -1
- cirq/interop/quirk/cells/input_cells.py +2 -1
- cirq/interop/quirk/cells/input_rotation_cells.py +2 -1
- cirq/interop/quirk/cells/measurement_cells.py +2 -1
- cirq/interop/quirk/cells/parse.py +2 -11
- cirq/interop/quirk/cells/qubit_permutation_cells.py +2 -1
- cirq/interop/quirk/cells/scalar_cells.py +2 -1
- cirq/interop/quirk/cells/single_qubit_rotation_cells.py +2 -1
- cirq/interop/quirk/cells/swap_cell.py +2 -1
- cirq/interop/quirk/cells/unsupported_cells.py +1 -1
- cirq/interop/quirk/url_to_circuit.py +2 -1
- cirq/json_resolver_cache.py +0 -2
- cirq/linalg/decompositions.py +6 -2
- cirq/linalg/decompositions_test.py +1 -0
- cirq/linalg/diagonalize.py +1 -1
- cirq/linalg/predicates.py +2 -1
- cirq/linalg/tolerance.py +2 -1
- cirq/linalg/transformations.py +2 -1
- cirq/ops/arithmetic_operation.py +2 -1
- cirq/ops/arithmetic_operation_test.py +1 -1
- cirq/ops/boolean_hamiltonian.py +4 -3
- cirq/ops/classically_controlled_operation.py +3 -2
- cirq/ops/clifford_gate.py +2 -1
- cirq/ops/clifford_gate_test.py +1 -2
- cirq/ops/common_channels.py +2 -1
- cirq/ops/common_gates.py +2 -1
- cirq/ops/control_values.py +2 -1
- cirq/ops/controlled_gate.py +3 -2
- cirq/ops/controlled_gate_test.py +2 -1
- cirq/ops/controlled_operation.py +3 -2
- cirq/ops/controlled_operation_test.py +2 -1
- cirq/ops/dense_pauli_string.py +3 -13
- cirq/ops/diagonal_gate.py +3 -2
- cirq/ops/eigen_gate.py +9 -7
- cirq/ops/fourier_transform.py +3 -2
- cirq/ops/fourier_transform_test.py +2 -4
- cirq/ops/fsim_gate.py +3 -2
- cirq/ops/gate_operation.py +8 -12
- cirq/ops/gateset.py +22 -2
- cirq/ops/global_phase_op.py +3 -2
- cirq/ops/greedy_qubit_manager.py +2 -1
- cirq/ops/identity.py +2 -1
- cirq/ops/kraus_channel.py +2 -1
- cirq/ops/linear_combinations.py +8 -3
- cirq/ops/linear_combinations_test.py +23 -1
- cirq/ops/matrix_gates.py +2 -1
- cirq/ops/measure_util.py +2 -1
- cirq/ops/measurement_gate.py +2 -1
- cirq/ops/mixed_unitary_channel.py +2 -1
- cirq/ops/named_qubit.py +2 -2
- cirq/ops/op_tree.py +2 -1
- cirq/ops/parallel_gate.py +3 -2
- cirq/ops/parity_gates.py +2 -1
- cirq/ops/pauli_interaction_gate.py +2 -1
- cirq/ops/pauli_measurement_gate.py +2 -1
- cirq/ops/pauli_string.py +6 -12
- cirq/ops/pauli_string_phasor.py +3 -2
- cirq/ops/pauli_string_raw_types.py +2 -1
- cirq/ops/pauli_string_test.py +2 -2
- cirq/ops/pauli_sum_exponential.py +2 -1
- cirq/ops/permutation_gate.py +2 -1
- cirq/ops/phased_iswap_gate.py +3 -2
- cirq/ops/phased_x_gate.py +5 -4
- cirq/ops/phased_x_z_gate.py +12 -5
- cirq/ops/projector.py +2 -1
- cirq/ops/qubit_manager.py +2 -1
- cirq/ops/qubit_order.py +2 -1
- cirq/ops/qubit_order_or_list.py +1 -1
- cirq/ops/random_gate_channel.py +3 -2
- cirq/ops/raw_types.py +7 -15
- cirq/ops/raw_types_test.py +4 -3
- cirq/ops/state_preparation_channel.py +2 -1
- cirq/ops/three_qubit_gates.py +3 -2
- cirq/ops/two_qubit_diagonal_gate.py +3 -2
- cirq/ops/uniform_superposition_gate.py +2 -1
- cirq/ops/wait_gate.py +10 -4
- cirq/protocols/act_on_protocol.py +2 -1
- cirq/protocols/act_on_protocol_test.py +2 -1
- cirq/protocols/apply_channel_protocol.py +2 -1
- cirq/protocols/apply_mixture_protocol.py +2 -1
- cirq/protocols/apply_mixture_protocol_test.py +2 -1
- cirq/protocols/apply_unitary_protocol.py +2 -1
- cirq/protocols/apply_unitary_protocol_test.py +2 -0
- cirq/protocols/approximate_equality_protocol.py +2 -1
- cirq/protocols/circuit_diagram_info_protocol.py +2 -1
- cirq/protocols/decompose_protocol.py +2 -12
- cirq/protocols/has_stabilizer_effect_protocol.py +1 -1
- cirq/protocols/hash_from_pickle_test.py +2 -2
- cirq/protocols/inverse_protocol.py +2 -1
- cirq/protocols/json_serialization.py +2 -1
- cirq/protocols/kraus_protocol.py +4 -3
- cirq/protocols/kraus_protocol_test.py +2 -2
- cirq/protocols/measurement_key_protocol.py +2 -1
- cirq/protocols/mixture_protocol.py +2 -1
- cirq/protocols/pow_protocol.py +2 -1
- cirq/protocols/qasm.py +2 -1
- cirq/protocols/qid_shape_protocol.py +2 -1
- cirq/protocols/resolve_parameters.py +16 -14
- cirq/protocols/trace_distance_bound.py +2 -1
- cirq/protocols/unitary_protocol.py +21 -21
- cirq/qis/channels.py +1 -1
- cirq/qis/channels_test.py +1 -1
- cirq/qis/clifford_tableau.py +2 -1
- cirq/qis/entropy.py +2 -2
- cirq/qis/quantum_state_representation.py +2 -1
- cirq/qis/states.py +7 -2
- cirq/sim/classical_simulator.py +2 -1
- cirq/sim/clifford/clifford_simulator.py +2 -1
- cirq/sim/clifford/clifford_simulator_test.py +1 -1
- cirq/sim/clifford/clifford_tableau_simulation_state.py +2 -1
- cirq/sim/clifford/stabilizer_ch_form_simulation_state.py +2 -1
- cirq/sim/clifford/stabilizer_sampler.py +1 -1
- cirq/sim/clifford/stabilizer_simulation_state.py +2 -1
- cirq/sim/clifford/stabilizer_state_ch_form.py +3 -2
- cirq/sim/clifford/stabilizer_state_ch_form_test.py +0 -1
- cirq/sim/density_matrix_simulation_state.py +2 -1
- cirq/sim/density_matrix_simulator.py +2 -1
- cirq/sim/density_matrix_utils.py +2 -1
- cirq/sim/mux.py +2 -1
- cirq/sim/mux_test.py +0 -1
- cirq/sim/simulation_product_state.py +2 -1
- cirq/sim/simulation_product_state_test.py +2 -1
- cirq/sim/simulation_state.py +2 -1
- cirq/sim/simulation_state_base.py +2 -1
- cirq/sim/simulation_state_test.py +2 -1
- cirq/sim/simulation_utils.py +2 -1
- cirq/sim/simulator.py +2 -1
- cirq/sim/simulator_base.py +2 -1
- cirq/sim/simulator_base_test.py +2 -1
- cirq/sim/simulator_test.py +2 -1
- cirq/sim/sparse_simulator.py +2 -1
- cirq/sim/state_vector.py +2 -1
- cirq/sim/state_vector_simulation_state.py +2 -1
- cirq/sim/state_vector_simulator.py +2 -1
- cirq/sim/state_vector_test.py +1 -2
- cirq/study/__init__.py +1 -0
- cirq/study/flatten_expressions.py +2 -1
- cirq/study/resolver.py +31 -18
- cirq/study/resolver_test.py +1 -1
- cirq/study/result.py +2 -1
- cirq/study/sweepable.py +2 -1
- cirq/study/sweeps.py +26 -1
- cirq/study/sweeps_test.py +24 -0
- cirq/testing/_compat_test_data/__init__.py +3 -3
- cirq/testing/circuit_compare.py +2 -1
- cirq/testing/consistent_act_on_test.py +1 -1
- cirq/testing/consistent_controlled_gate_op.py +1 -1
- cirq/testing/consistent_controlled_gate_op_test.py +2 -1
- cirq/testing/consistent_protocols.py +2 -1
- cirq/testing/consistent_protocols_test.py +3 -3
- cirq/testing/consistent_qasm.py +2 -1
- cirq/testing/consistent_resolve_parameters.py +1 -1
- cirq/testing/consistent_unitary.py +1 -1
- cirq/testing/consistent_unitary_test.py +1 -1
- cirq/testing/deprecation.py +1 -1
- cirq/testing/devices.py +3 -2
- cirq/testing/equals_tester.py +4 -3
- cirq/testing/equivalent_basis_map.py +4 -2
- cirq/testing/json.py +3 -2
- cirq/testing/logs.py +1 -1
- cirq/testing/op_tree.py +1 -1
- cirq/testing/order_tester.py +2 -2
- cirq/testing/pytest_utils.py +2 -1
- cirq/testing/random_circuit.py +2 -1
- cirq/testing/random_circuit_test.py +2 -1
- cirq/testing/repr_pretty_tester.py +3 -3
- cirq/transformers/__init__.py +1 -0
- cirq/transformers/_connected_component.py +231 -0
- cirq/transformers/_connected_component_test.py +200 -0
- cirq/transformers/align_test.py +13 -13
- cirq/transformers/analytical_decompositions/clifford_decomposition.py +8 -7
- cirq/transformers/analytical_decompositions/clifford_decomposition_test.py +5 -5
- cirq/transformers/analytical_decompositions/controlled_gate_decomposition.py +11 -10
- cirq/transformers/analytical_decompositions/controlled_gate_decomposition_test.py +6 -6
- cirq/transformers/analytical_decompositions/cphase_to_fsim.py +3 -2
- cirq/transformers/analytical_decompositions/cphase_to_fsim_test.py +11 -10
- cirq/transformers/analytical_decompositions/quantum_shannon_decomposition.py +8 -7
- cirq/transformers/analytical_decompositions/quantum_shannon_decomposition_test.py +17 -20
- cirq/transformers/analytical_decompositions/single_qubit_decompositions_test.py +33 -27
- cirq/transformers/analytical_decompositions/single_to_two_qubit_isometry_test.py +1 -1
- cirq/transformers/analytical_decompositions/three_qubit_decomposition.py +1 -1
- cirq/transformers/analytical_decompositions/two_qubit_state_preparation_test.py +12 -11
- cirq/transformers/analytical_decompositions/two_qubit_to_cz.py +5 -2
- cirq/transformers/analytical_decompositions/two_qubit_to_cz_test.py +3 -3
- cirq/transformers/analytical_decompositions/two_qubit_to_fsim.py +2 -1
- cirq/transformers/analytical_decompositions/two_qubit_to_ms.py +2 -1
- cirq/transformers/analytical_decompositions/two_qubit_to_ms_test.py +2 -2
- cirq/transformers/analytical_decompositions/two_qubit_to_sqrt_iswap.py +2 -1
- cirq/transformers/analytical_decompositions/two_qubit_to_sqrt_iswap_test.py +32 -30
- cirq/transformers/drop_negligible_operations_test.py +7 -7
- cirq/transformers/dynamical_decoupling.py +185 -112
- cirq/transformers/dynamical_decoupling_test.py +195 -201
- cirq/transformers/eject_phased_paulis.py +2 -1
- cirq/transformers/eject_phased_paulis_test.py +3 -2
- cirq/transformers/eject_z.py +4 -3
- cirq/transformers/eject_z_test.py +23 -25
- cirq/transformers/expand_composite.py +3 -2
- cirq/transformers/expand_composite_test.py +14 -14
- cirq/transformers/gauge_compiling/__init__.py +8 -0
- cirq/transformers/gauge_compiling/gauge_compiling.py +3 -2
- cirq/transformers/gauge_compiling/gauge_compiling_test.py +14 -12
- cirq/transformers/gauge_compiling/gauge_compiling_test_utils.py +3 -3
- cirq/transformers/gauge_compiling/idle_moments_gauge.py +5 -2
- cirq/transformers/gauge_compiling/multi_moment_cphase_gauge.py +242 -0
- cirq/transformers/gauge_compiling/multi_moment_cphase_gauge_test.py +243 -0
- cirq/transformers/gauge_compiling/multi_moment_gauge_compiling.py +151 -0
- cirq/transformers/gauge_compiling/sqrt_cz_gauge.py +2 -1
- cirq/transformers/heuristic_decompositions/gate_tabulation_math_utils.py +1 -1
- cirq/transformers/heuristic_decompositions/gate_tabulation_math_utils_test.py +6 -6
- cirq/transformers/heuristic_decompositions/two_qubit_gate_tabulation.py +2 -1
- cirq/transformers/measurement_transformers.py +2 -1
- cirq/transformers/measurement_transformers_test.py +45 -39
- cirq/transformers/merge_k_qubit_gates.py +2 -1
- cirq/transformers/merge_k_qubit_gates_test.py +1 -1
- cirq/transformers/merge_single_qubit_gates.py +2 -1
- cirq/transformers/merge_single_qubit_gates_test.py +22 -22
- cirq/transformers/noise_adding_test.py +2 -2
- cirq/transformers/optimize_for_target_gateset.py +2 -1
- cirq/transformers/optimize_for_target_gateset_test.py +11 -9
- cirq/transformers/qubit_management_transformers_test.py +6 -2
- cirq/transformers/routing/mapping_manager.py +2 -1
- cirq/transformers/routing/route_circuit_cqc.py +2 -1
- cirq/transformers/stratify.py +2 -1
- cirq/transformers/symbolize.py +2 -1
- cirq/transformers/tag_transformers.py +2 -1
- cirq/transformers/target_gatesets/compilation_target_gateset.py +2 -1
- cirq/transformers/target_gatesets/cz_gateset.py +2 -1
- cirq/transformers/target_gatesets/cz_gateset_test.py +1 -1
- cirq/transformers/target_gatesets/sqrt_iswap_gateset.py +2 -1
- cirq/transformers/transformer_api.py +2 -1
- cirq/transformers/transformer_primitives.py +271 -145
- cirq/transformers/transformer_primitives_test.py +185 -1
- cirq/value/abc_alt.py +2 -1
- cirq/value/classical_data.py +2 -1
- cirq/value/condition.py +2 -1
- cirq/value/digits.py +9 -2
- cirq/value/duration.py +6 -5
- cirq/value/linear_dict.py +4 -9
- cirq/value/measurement_key.py +2 -1
- cirq/value/periodic_value.py +3 -2
- cirq/value/product_state.py +2 -1
- cirq/value/value_equality_attr.py +2 -1
- cirq/vis/density_matrix.py +1 -1
- cirq/vis/heatmap.py +2 -1
- cirq/vis/histogram.py +2 -1
- cirq/vis/state_histogram.py +2 -1
- cirq/work/collector.py +2 -1
- cirq/work/observable_grouping.py +2 -1
- cirq/work/observable_measurement.py +2 -1
- cirq/work/observable_measurement_data.py +2 -1
- cirq/work/observable_measurement_test.py +1 -1
- cirq/work/observable_readout_calibration.py +2 -1
- cirq/work/observable_readout_calibration_test.py +1 -1
- cirq/work/observable_settings.py +2 -1
- cirq/work/sampler.py +2 -1
- cirq/work/sampler_test.py +1 -1
- {cirq_core-1.7.0.dev20250924231107.dist-info → cirq_core-1.7.0.dev20251203004401.dist-info}/METADATA +4 -4
- {cirq_core-1.7.0.dev20250924231107.dist-info → cirq_core-1.7.0.dev20251203004401.dist-info}/RECORD +391 -374
- cirq/contrib/json_test.py +0 -33
- {cirq_core-1.7.0.dev20250924231107.dist-info → cirq_core-1.7.0.dev20251203004401.dist-info}/WHEEL +0 -0
- {cirq_core-1.7.0.dev20250924231107.dist-info → cirq_core-1.7.0.dev20251203004401.dist-info}/licenses/LICENSE +0 -0
- {cirq_core-1.7.0.dev20250924231107.dist-info → cirq_core-1.7.0.dev20251203004401.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Copyright 2025 The Cirq Developers
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
import pathlib
|
|
16
|
+
|
|
17
|
+
import numpy as np
|
|
18
|
+
|
|
19
|
+
import cirq
|
|
20
|
+
from cirq.contrib.quantikz.circuit_to_latex_render import render_circuit
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def test_render_circuit(tmp_path: pathlib.Path) -> None:
|
|
24
|
+
q0, q1 = cirq.LineQubit.range(2)
|
|
25
|
+
circuit = cirq.Circuit(
|
|
26
|
+
cirq.H(q0),
|
|
27
|
+
cirq.CNOT(q0, q1),
|
|
28
|
+
cirq.rx(0.25 * np.pi).on(q1),
|
|
29
|
+
cirq.measure(q0, q1, key='result'),
|
|
30
|
+
)
|
|
31
|
+
# Render and display in Jupyter (if available), also save to a file
|
|
32
|
+
img_or_path = render_circuit(
|
|
33
|
+
circuit,
|
|
34
|
+
output_png_path=tmp_path / "my_circuit.png",
|
|
35
|
+
output_tex_path=tmp_path / "my_circuit.tex",
|
|
36
|
+
output_pdf_path=tmp_path / "my_circuit.pdf",
|
|
37
|
+
fold_at=2,
|
|
38
|
+
debug=True,
|
|
39
|
+
wire_labels="qid",
|
|
40
|
+
)
|
|
41
|
+
assert img_or_path is not None
|
|
42
|
+
assert (tmp_path / "my_circuit.png").is_file()
|
|
43
|
+
assert (tmp_path / "my_circuit.tex").is_file()
|
|
44
|
+
assert (tmp_path / "my_circuit.pdf").is_file()
|
|
@@ -21,7 +21,8 @@ from __future__ import annotations
|
|
|
21
21
|
|
|
22
22
|
import dataclasses
|
|
23
23
|
import math
|
|
24
|
-
from
|
|
24
|
+
from collections.abc import Sequence
|
|
25
|
+
from typing import Any, TYPE_CHECKING
|
|
25
26
|
|
|
26
27
|
import numpy as np
|
|
27
28
|
import quimb.tensor as qtn
|
|
@@ -42,7 +43,7 @@ class MPSOptions:
|
|
|
42
43
|
|
|
43
44
|
# How to split the tensor. Refer to the Quimb documentation for the exact meaning.
|
|
44
45
|
method: str = 'svds'
|
|
45
|
-
# If integer, the
|
|
46
|
+
# If integer, the maximum number of singular values to keep, regardless of ``cutoff``.
|
|
46
47
|
max_bond: int | None = None
|
|
47
48
|
# Method with which to apply the cutoff threshold. Refer to the Quimb documentation.
|
|
48
49
|
cutoff_mode: str = 'rsum2'
|
|
@@ -142,7 +143,7 @@ class MPSSimulator(
|
|
|
142
143
|
|
|
143
144
|
|
|
144
145
|
class MPSTrialResult(simulator_base.SimulationTrialResultBase['MPSState']):
|
|
145
|
-
"""A single trial
|
|
146
|
+
"""A single trial result"""
|
|
146
147
|
|
|
147
148
|
def __init__(
|
|
148
149
|
self,
|
|
@@ -16,7 +16,8 @@ from __future__ import annotations
|
|
|
16
16
|
|
|
17
17
|
import json
|
|
18
18
|
import urllib.parse
|
|
19
|
-
from
|
|
19
|
+
from collections.abc import Iterable
|
|
20
|
+
from typing import Any, cast
|
|
20
21
|
|
|
21
22
|
from cirq import circuits, devices, ops, protocols
|
|
22
23
|
from cirq.contrib.quirk.linearize_circuit import linearize_circuit_qubits
|
cirq/contrib/quirk/quirk_gate.py
CHANGED
cirq/contrib/routing/device.py
CHANGED
cirq/contrib/routing/greedy.py
CHANGED
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
17
|
import itertools
|
|
18
|
-
from
|
|
18
|
+
from collections.abc import Callable, Iterable, Sequence
|
|
19
|
+
from typing import cast, TYPE_CHECKING
|
|
19
20
|
|
|
20
21
|
import networkx as nx
|
|
21
22
|
import numpy as np
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
17
|
import itertools
|
|
18
|
-
from
|
|
18
|
+
from collections.abc import Hashable
|
|
19
|
+
from typing import cast, TYPE_CHECKING
|
|
19
20
|
|
|
20
21
|
import networkx as nx
|
|
21
22
|
from sortedcontainers import SortedDict, SortedSet
|
cirq/contrib/routing/router.py
CHANGED
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
|
-
from
|
|
17
|
+
from collections.abc import Callable
|
|
18
|
+
from typing import TYPE_CHECKING
|
|
18
19
|
|
|
19
20
|
from cirq import circuits, protocols
|
|
20
21
|
from cirq.contrib.routing.greedy import route_circuit_greedily
|
cirq/contrib/routing/utils.py
CHANGED
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
from __future__ import annotations
|
|
18
18
|
|
|
19
19
|
import time
|
|
20
|
-
from
|
|
20
|
+
from collections.abc import Sequence
|
|
21
|
+
from typing import TYPE_CHECKING
|
|
21
22
|
|
|
22
23
|
import attrs
|
|
23
24
|
import numpy as np
|
|
@@ -105,7 +106,7 @@ def _generate_readout_calibration_circuits(
|
|
|
105
106
|
readout_calibration_circuits.append(
|
|
106
107
|
circuits.Circuit(
|
|
107
108
|
[bit_to_gate[bit](qubit) for bit, qubit in zip(bitstr, qubits)]
|
|
108
|
-
+ [ops.M(qubits, key="
|
|
109
|
+
+ [ops.M(qubits, key="result")]
|
|
109
110
|
)
|
|
110
111
|
)
|
|
111
112
|
return readout_calibration_circuits, random_bitstrings
|
|
@@ -137,11 +138,12 @@ def _generate_parameterized_readout_calibration_circuit_with_sweep(
|
|
|
137
138
|
|
|
138
139
|
exp_symbols = [sympy.Symbol(f'exp_{qubit}') for qubit in qubits]
|
|
139
140
|
parameterized_readout_calibration_circuit = circuits.Circuit(
|
|
140
|
-
[ops.X(qubit) ** exp for exp, qubit in zip(exp_symbols, qubits)],
|
|
141
|
+
[ops.X(qubit) ** exp for exp, qubit in zip(exp_symbols, qubits)],
|
|
142
|
+
ops.M(*qubits, key="result"),
|
|
141
143
|
)
|
|
142
144
|
sweep_params = []
|
|
143
145
|
for bitstr in random_bitstrings:
|
|
144
|
-
sweep_params.append({exp: bit for exp, bit in zip(exp_symbols, bitstr)})
|
|
146
|
+
sweep_params.append({str(exp): bit for exp, bit in zip(exp_symbols, bitstr)})
|
|
145
147
|
|
|
146
148
|
return parameterized_readout_calibration_circuit, sweep_params, random_bitstrings
|
|
147
149
|
|
|
@@ -272,7 +274,7 @@ def _analyze_readout_results(
|
|
|
272
274
|
)
|
|
273
275
|
|
|
274
276
|
|
|
275
|
-
@deprecated(deadline="
|
|
277
|
+
@deprecated(deadline="v1.8", fix="Use run_shuffled_circuits_with_readout_benchmarking() instead.")
|
|
276
278
|
def run_shuffled_with_readout_benchmarking(
|
|
277
279
|
input_circuits: list[circuits.Circuit],
|
|
278
280
|
sampler: work.Sampler,
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
17
|
import itertools
|
|
18
|
-
from
|
|
18
|
+
from collections.abc import Sequence
|
|
19
19
|
|
|
20
20
|
import numpy as np
|
|
21
21
|
import pytest
|
|
@@ -401,7 +401,7 @@ def test_deprecated_run_shuffled_with_readout_benchmarking() -> None:
|
|
|
401
401
|
num_random_bitstrings = 100
|
|
402
402
|
|
|
403
403
|
# Test with an integer seed.
|
|
404
|
-
with cirq.testing.assert_deprecated(deadline='
|
|
404
|
+
with cirq.testing.assert_deprecated(deadline='v1.8', count=1):
|
|
405
405
|
measurements_seed, results_seed = sc_readout.run_shuffled_with_readout_benchmarking(
|
|
406
406
|
input_circuits=input_circuits,
|
|
407
407
|
sampler=sampler,
|
|
@@ -420,7 +420,7 @@ def test_deprecated_run_shuffled_with_readout_benchmarking() -> None:
|
|
|
420
420
|
assert 0.18 < error < 0.22
|
|
421
421
|
|
|
422
422
|
# Test with qubits=None to cover the auto-detection branch.
|
|
423
|
-
with cirq.testing.assert_deprecated(deadline='
|
|
423
|
+
with cirq.testing.assert_deprecated(deadline='v1.8', count=1):
|
|
424
424
|
_, results_none = sc_readout.run_shuffled_with_readout_benchmarking(
|
|
425
425
|
input_circuits=input_circuits,
|
|
426
426
|
sampler=sampler,
|
|
@@ -434,7 +434,7 @@ def test_deprecated_run_shuffled_with_readout_benchmarking() -> None:
|
|
|
434
434
|
assert set(qlist_none) == set(qubits)
|
|
435
435
|
|
|
436
436
|
# Test circuit_repetitions must be > 0
|
|
437
|
-
with cirq.testing.assert_deprecated(deadline="
|
|
437
|
+
with cirq.testing.assert_deprecated(deadline="v1.8", count=1):
|
|
438
438
|
with pytest.raises(ValueError, match="Must provide non-zero circuit_repetitions."):
|
|
439
439
|
sc_readout.run_shuffled_with_readout_benchmarking(
|
|
440
440
|
input_circuits,
|
|
@@ -446,7 +446,7 @@ def test_deprecated_run_shuffled_with_readout_benchmarking() -> None:
|
|
|
446
446
|
)
|
|
447
447
|
|
|
448
448
|
# Test num_random_bitstrings must be >= 0
|
|
449
|
-
with cirq.testing.assert_deprecated(deadline="
|
|
449
|
+
with cirq.testing.assert_deprecated(deadline="v1.8", count=1):
|
|
450
450
|
with pytest.raises(ValueError, match="Must provide zero or more num_random_bitstrings."):
|
|
451
451
|
sc_readout.run_shuffled_with_readout_benchmarking(
|
|
452
452
|
input_circuits,
|
|
@@ -458,7 +458,7 @@ def test_deprecated_run_shuffled_with_readout_benchmarking() -> None:
|
|
|
458
458
|
)
|
|
459
459
|
|
|
460
460
|
# Test readout_repetitions must be > 0
|
|
461
|
-
with cirq.testing.assert_deprecated(deadline="
|
|
461
|
+
with cirq.testing.assert_deprecated(deadline="v1.8", count=1):
|
|
462
462
|
with pytest.raises(
|
|
463
463
|
ValueError, match="Must provide non-zero readout_repetitions for readout calibration."
|
|
464
464
|
):
|
cirq/devices/device.py
CHANGED
cirq/devices/grid_qubit.py
CHANGED
|
@@ -17,7 +17,8 @@ from __future__ import annotations
|
|
|
17
17
|
import abc
|
|
18
18
|
import functools
|
|
19
19
|
import weakref
|
|
20
|
-
from
|
|
20
|
+
from collections.abc import Iterable
|
|
21
|
+
from typing import Any, Self, TYPE_CHECKING
|
|
21
22
|
|
|
22
23
|
import numpy as np
|
|
23
24
|
|
|
@@ -285,7 +286,7 @@ class GridQid(_BaseGridQid):
|
|
|
285
286
|
|
|
286
287
|
@staticmethod
|
|
287
288
|
def from_diagram(diagram: str, dimension: int) -> list[GridQid]:
|
|
288
|
-
"""Parse ASCII art device layout into a device.
|
|
289
|
+
r"""Parse ASCII art device layout into a device.
|
|
289
290
|
|
|
290
291
|
As an example, the below diagram will create a list of GridQid in a
|
|
291
292
|
pyramid structure.
|
|
@@ -322,7 +323,7 @@ class GridQid(_BaseGridQid):
|
|
|
322
323
|
a row. Alphanumeric characters are assigned as qid.
|
|
323
324
|
Dots ('.'), dashes ('-'), and spaces (' ') are treated as
|
|
324
325
|
empty locations in the grid. If diagram has characters other
|
|
325
|
-
than alphanumerics, spacers, and newlines ('
|
|
326
|
+
than alphanumerics, spacers, and newlines ('\n'), an error will
|
|
326
327
|
be thrown. The top-left corner of the diagram will be have
|
|
327
328
|
coordinate (0, 0).
|
|
328
329
|
|
|
@@ -439,7 +440,7 @@ class GridQubit(_BaseGridQid):
|
|
|
439
440
|
|
|
440
441
|
@staticmethod
|
|
441
442
|
def from_diagram(diagram: str) -> list[GridQubit]:
|
|
442
|
-
"""Parse ASCII art into device layout info.
|
|
443
|
+
r"""Parse ASCII art into device layout info.
|
|
443
444
|
|
|
444
445
|
As an example, the below diagram will create a list of
|
|
445
446
|
GridQubit in a pyramid structure.
|
|
@@ -476,7 +477,7 @@ class GridQubit(_BaseGridQid):
|
|
|
476
477
|
a row. Alphanumeric characters are assigned as qid.
|
|
477
478
|
Dots ('.'), dashes ('-'), and spaces (' ') are treated as
|
|
478
479
|
empty locations in the grid. If diagram has characters other
|
|
479
|
-
than alphanumerics, spacers, and newlines ('
|
|
480
|
+
than alphanumerics, spacers, and newlines ('\n'), an error will
|
|
480
481
|
be thrown. The top-left corner of the diagram will be have
|
|
481
482
|
coordinate (0,0).
|
|
482
483
|
|
|
@@ -503,7 +504,7 @@ class GridQubit(_BaseGridQid):
|
|
|
503
504
|
|
|
504
505
|
|
|
505
506
|
def _ascii_diagram_to_coords(diagram: str) -> list[tuple[int, int]]:
|
|
506
|
-
"""Parse ASCII art device layout into info about qids coordinates
|
|
507
|
+
r"""Parse ASCII art device layout into info about qids coordinates
|
|
507
508
|
|
|
508
509
|
Args:
|
|
509
510
|
diagram: String representing the qid layout. Each line represents
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
17
|
import dataclasses
|
|
18
|
-
from
|
|
18
|
+
from collections.abc import Mapping, Sequence
|
|
19
|
+
from typing import Any, TYPE_CHECKING
|
|
19
20
|
|
|
20
21
|
from cirq import devices
|
|
21
22
|
from cirq.devices import noise_utils
|
cirq/devices/line_qubit.py
CHANGED
|
@@ -17,7 +17,8 @@ from __future__ import annotations
|
|
|
17
17
|
import abc
|
|
18
18
|
import functools
|
|
19
19
|
import weakref
|
|
20
|
-
from
|
|
20
|
+
from collections.abc import Iterable, Sequence
|
|
21
|
+
from typing import Any, Self, TYPE_CHECKING
|
|
21
22
|
|
|
22
23
|
from cirq import ops, protocols
|
|
23
24
|
|
cirq/devices/named_topologies.py
CHANGED
|
@@ -16,8 +16,9 @@ from __future__ import annotations
|
|
|
16
16
|
|
|
17
17
|
import abc
|
|
18
18
|
import warnings
|
|
19
|
+
from collections.abc import Callable, Iterable, Sequence
|
|
19
20
|
from dataclasses import dataclass
|
|
20
|
-
from typing import Any,
|
|
21
|
+
from typing import Any, TYPE_CHECKING, Union
|
|
21
22
|
|
|
22
23
|
import networkx as nx
|
|
23
24
|
from matplotlib import pyplot as plt
|
cirq/devices/noise_model.py
CHANGED
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
|
-
from
|
|
17
|
+
from collections.abc import Callable, Iterable, Sequence
|
|
18
|
+
from typing import Any, TYPE_CHECKING, Union
|
|
18
19
|
|
|
19
20
|
from cirq import ops, protocols, value
|
|
20
21
|
from cirq._doc import document
|
cirq/devices/noise_model_test.py
CHANGED
cirq/devices/noise_properties.py
CHANGED
|
@@ -22,7 +22,8 @@ noise models to produce a single noise model which replicates device noise.
|
|
|
22
22
|
from __future__ import annotations
|
|
23
23
|
|
|
24
24
|
import abc
|
|
25
|
-
from
|
|
25
|
+
from collections.abc import Iterable, Sequence
|
|
26
|
+
from typing import TYPE_CHECKING
|
|
26
27
|
|
|
27
28
|
from cirq import _import, devices, ops, protocols, value
|
|
28
29
|
from cirq.devices.noise_utils import PHYSICAL_GATE_TAG
|
cirq/experiments/__init__.py
CHANGED
|
@@ -16,8 +16,9 @@
|
|
|
16
16
|
|
|
17
17
|
from __future__ import annotations
|
|
18
18
|
|
|
19
|
+
from collections.abc import Iterable, Mapping, Sequence
|
|
19
20
|
from concurrent import futures
|
|
20
|
-
from typing import
|
|
21
|
+
from typing import overload, TYPE_CHECKING, Union
|
|
21
22
|
|
|
22
23
|
import attrs
|
|
23
24
|
import networkx as nx
|