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
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
|
-
from
|
|
17
|
+
from collections.abc import Sequence
|
|
18
|
+
from typing import cast, TYPE_CHECKING
|
|
18
19
|
|
|
19
20
|
from cirq import circuits
|
|
20
21
|
from cirq.contrib.acquaintance.executor import AcquaintanceOperation
|
|
@@ -15,8 +15,9 @@
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
17
|
import abc
|
|
18
|
+
from collections.abc import Iterable, Iterator, Sequence
|
|
18
19
|
from types import NotImplementedType
|
|
19
|
-
from typing import Any, cast,
|
|
20
|
+
from typing import Any, cast, TYPE_CHECKING, TypeVar
|
|
20
21
|
|
|
21
22
|
from cirq import circuits, ops, protocols, transformers, value
|
|
22
23
|
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
17
|
import itertools
|
|
18
|
-
from
|
|
18
|
+
from collections.abc import Iterator, Sequence
|
|
19
|
+
from typing import Any, TYPE_CHECKING
|
|
19
20
|
|
|
20
21
|
from cirq import ops, value
|
|
21
22
|
from cirq.contrib.acquaintance.permutation import PermutationGate, SwapPermutationGate
|
|
@@ -16,7 +16,8 @@ from __future__ import annotations
|
|
|
16
16
|
|
|
17
17
|
import functools
|
|
18
18
|
import itertools
|
|
19
|
-
from
|
|
19
|
+
from collections.abc import Iterable, Iterator, Sequence
|
|
20
|
+
from typing import TYPE_CHECKING
|
|
20
21
|
|
|
21
22
|
from cirq import ops
|
|
22
23
|
from cirq.contrib.acquaintance.gates import acquaint
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
|
-
from
|
|
17
|
+
from collections.abc import Sequence
|
|
18
|
+
from typing import TYPE_CHECKING
|
|
18
19
|
|
|
19
20
|
from cirq import circuits, ops
|
|
20
21
|
from cirq.contrib.acquaintance.gates import acquaint
|
|
@@ -54,7 +55,7 @@ def complete_acquaintance_strategy(
|
|
|
54
55
|
if acquaintance_size == len(qubit_order):
|
|
55
56
|
return circuits.Circuit(acquaint(*qubit_order))
|
|
56
57
|
|
|
57
|
-
strategy = circuits.Circuit(
|
|
58
|
+
strategy = circuits.Circuit(acquaint(q) for q in qubit_order)
|
|
58
59
|
for size_to_acquaint in range(2, acquaintance_size + 1):
|
|
59
60
|
expose_acquaintance_gates(strategy)
|
|
60
61
|
replace_acquaintance_with_swap_network(strategy, qubit_order, size_to_acquaint, swap_gate)
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
17
|
import itertools
|
|
18
|
-
from
|
|
18
|
+
from collections.abc import Iterable, Sequence
|
|
19
|
+
from typing import TYPE_CHECKING, TypeVar
|
|
19
20
|
|
|
20
21
|
from cirq import circuits, ops
|
|
21
22
|
from cirq.contrib.acquaintance.gates import acquaint
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
|
-
from
|
|
17
|
+
from collections.abc import Iterable, Sequence
|
|
18
|
+
from typing import cast, TYPE_CHECKING
|
|
18
19
|
|
|
19
20
|
from cirq import circuits
|
|
20
21
|
from cirq.contrib.acquaintance.gates import acquaint, SwapNetworkGate
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
|
-
from
|
|
17
|
+
from collections.abc import Sequence
|
|
18
|
+
from typing import cast, TYPE_CHECKING
|
|
18
19
|
|
|
19
20
|
from cirq import devices, ops, protocols
|
|
20
21
|
from cirq.contrib.acquaintance.permutation import PermutationGate, update_mapping
|
|
@@ -16,7 +16,8 @@ from __future__ import annotations
|
|
|
16
16
|
|
|
17
17
|
import operator
|
|
18
18
|
import random
|
|
19
|
-
from
|
|
19
|
+
from collections.abc import Callable, Iterable
|
|
20
|
+
from typing import Any, cast, TYPE_CHECKING
|
|
20
21
|
|
|
21
22
|
from cirq import ops
|
|
22
23
|
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
17
|
import math
|
|
18
|
-
from
|
|
18
|
+
from collections.abc import Iterator, Sequence
|
|
19
|
+
from typing import Any, cast, TYPE_CHECKING
|
|
19
20
|
|
|
20
21
|
from sympy.combinatorics import GrayCode
|
|
21
22
|
|
|
@@ -70,7 +71,7 @@ def _generate_got_set_for_init_prob(qubit, init_prob):
|
|
|
70
71
|
yield common_gates.ry(_prob_to_angle(init_prob)).on(qubit)
|
|
71
72
|
|
|
72
73
|
|
|
73
|
-
@value.value_equality
|
|
74
|
+
@value.value_equality(unhashable=True)
|
|
74
75
|
class BayesianNetworkGate(raw_types.Gate):
|
|
75
76
|
"""A gate that represents a Bayesian network.
|
|
76
77
|
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
17
|
import functools
|
|
18
|
-
from
|
|
18
|
+
from collections.abc import Callable, Iterator
|
|
19
|
+
from typing import Any, cast, Generic, TypeVar
|
|
19
20
|
|
|
20
21
|
import networkx
|
|
21
22
|
|
|
@@ -72,8 +73,9 @@ class CircuitDag(networkx.DiGraph):
|
|
|
72
73
|
|
|
73
74
|
def __init__(
|
|
74
75
|
self,
|
|
75
|
-
can_reorder: Callable[[cirq.Operation, cirq.Operation], bool] = _disjoint_qubits,
|
|
76
76
|
incoming_graph_data: Any = None,
|
|
77
|
+
*,
|
|
78
|
+
can_reorder: Callable[[cirq.Operation, cirq.Operation], bool] = _disjoint_qubits,
|
|
77
79
|
) -> None:
|
|
78
80
|
"""Initializes a CircuitDag.
|
|
79
81
|
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
|
-
from
|
|
17
|
+
from collections.abc import Sequence
|
|
18
|
+
from typing import Any, Generic, TYPE_CHECKING
|
|
18
19
|
|
|
19
20
|
from cirq import sim
|
|
20
21
|
from cirq.sim.simulation_state import TSimulationState
|
|
@@ -16,7 +16,8 @@ from __future__ import annotations
|
|
|
16
16
|
|
|
17
17
|
import abc
|
|
18
18
|
import itertools
|
|
19
|
-
from
|
|
19
|
+
from collections.abc import Hashable, Iterable
|
|
20
|
+
from typing import Any, cast, NoReturn, TYPE_CHECKING
|
|
20
21
|
|
|
21
22
|
from cirq import devices, ops, value
|
|
22
23
|
from cirq.contrib.graph_device.hypergraph import UndirectedHypergraph
|
|
@@ -16,7 +16,8 @@ from __future__ import annotations
|
|
|
16
16
|
|
|
17
17
|
import itertools
|
|
18
18
|
import random
|
|
19
|
-
from
|
|
19
|
+
from collections.abc import Hashable, Iterable, Mapping
|
|
20
|
+
from typing import Any
|
|
20
21
|
|
|
21
22
|
AdjacencyList = set[frozenset[Hashable]]
|
|
22
23
|
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
|
-
from
|
|
17
|
+
from collections.abc import Hashable, Iterable, Mapping
|
|
18
|
+
from typing import Any
|
|
18
19
|
|
|
19
20
|
from cirq import devices, ops
|
|
20
21
|
from cirq.contrib.graph_device.graph_device import UndirectedGraphDevice, UndirectedGraphDeviceEdge
|
cirq/contrib/json.py
CHANGED
|
@@ -5,6 +5,7 @@ from __future__ import annotations
|
|
|
5
5
|
|
|
6
6
|
import functools
|
|
7
7
|
|
|
8
|
+
from cirq import _compat
|
|
8
9
|
from cirq.protocols.json_serialization import _register_resolver, DEFAULT_RESOLVERS, ObjectFactory
|
|
9
10
|
|
|
10
11
|
|
|
@@ -39,6 +40,17 @@ def _class_resolver_dictionary() -> dict[str, ObjectFactory]:
|
|
|
39
40
|
return {cls.__name__: cls for cls in classes}
|
|
40
41
|
|
|
41
42
|
|
|
42
|
-
DEFAULT_CONTRIB_RESOLVERS = [contrib_class_resolver] + DEFAULT_RESOLVERS
|
|
43
|
-
|
|
44
43
|
_register_resolver(_class_resolver_dictionary)
|
|
44
|
+
|
|
45
|
+
DEFAULT_CONTRIB_RESOLVERS = [contrib_class_resolver, *DEFAULT_RESOLVERS]
|
|
46
|
+
|
|
47
|
+
_compat.deprecate_attributes(
|
|
48
|
+
__name__,
|
|
49
|
+
{
|
|
50
|
+
'DEFAULT_CONTRIB_RESOLVERS': (
|
|
51
|
+
'v1.8',
|
|
52
|
+
'DEFAULT_CONTRIB_RESOLVERS is no longer necessary as contrib classes are now '
|
|
53
|
+
'automatically recognized and resolved with an import of cirq.contrib.',
|
|
54
|
+
)
|
|
55
|
+
},
|
|
56
|
+
)
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cirq_type": "QuantumVolumeResult",
|
|
3
|
+
"model_circuit": {
|
|
4
|
+
"cirq_type": "Circuit",
|
|
5
|
+
"moments": [
|
|
6
|
+
{
|
|
7
|
+
"cirq_type": "Moment",
|
|
8
|
+
"operations": [
|
|
9
|
+
{
|
|
10
|
+
"cirq_type": "GateOperation",
|
|
11
|
+
"gate": {
|
|
12
|
+
"cirq_type": "HPowGate",
|
|
13
|
+
"exponent": 1.0,
|
|
14
|
+
"global_shift": 0.0
|
|
15
|
+
},
|
|
16
|
+
"qubits": [
|
|
17
|
+
{
|
|
18
|
+
"cirq_type": "LineQubit",
|
|
19
|
+
"x": 0
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"cirq_type": "GateOperation",
|
|
25
|
+
"gate": {
|
|
26
|
+
"cirq_type": "HPowGate",
|
|
27
|
+
"exponent": 1.0,
|
|
28
|
+
"global_shift": 0.0
|
|
29
|
+
},
|
|
30
|
+
"qubits": [
|
|
31
|
+
{
|
|
32
|
+
"cirq_type": "LineQubit",
|
|
33
|
+
"x": 1
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"cirq_type": "GateOperation",
|
|
39
|
+
"gate": {
|
|
40
|
+
"cirq_type": "HPowGate",
|
|
41
|
+
"exponent": 1.0,
|
|
42
|
+
"global_shift": 0.0
|
|
43
|
+
},
|
|
44
|
+
"qubits": [
|
|
45
|
+
{
|
|
46
|
+
"cirq_type": "LineQubit",
|
|
47
|
+
"x": 2
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"cirq_type": "GateOperation",
|
|
53
|
+
"gate": {
|
|
54
|
+
"cirq_type": "HPowGate",
|
|
55
|
+
"exponent": 1.0,
|
|
56
|
+
"global_shift": 0.0
|
|
57
|
+
},
|
|
58
|
+
"qubits": [
|
|
59
|
+
{
|
|
60
|
+
"cirq_type": "LineQubit",
|
|
61
|
+
"x": 3
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"cirq_type": "GateOperation",
|
|
67
|
+
"gate": {
|
|
68
|
+
"cirq_type": "HPowGate",
|
|
69
|
+
"exponent": 1.0,
|
|
70
|
+
"global_shift": 0.0
|
|
71
|
+
},
|
|
72
|
+
"qubits": [
|
|
73
|
+
{
|
|
74
|
+
"cirq_type": "LineQubit",
|
|
75
|
+
"x": 4
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
"heavy_set": [
|
|
84
|
+
1,
|
|
85
|
+
2,
|
|
86
|
+
3
|
|
87
|
+
],
|
|
88
|
+
"compiled_circuit": {
|
|
89
|
+
"cirq_type": "Circuit",
|
|
90
|
+
"moments": [
|
|
91
|
+
{
|
|
92
|
+
"cirq_type": "Moment",
|
|
93
|
+
"operations": [
|
|
94
|
+
{
|
|
95
|
+
"cirq_type": "GateOperation",
|
|
96
|
+
"gate": {
|
|
97
|
+
"cirq_type": "HPowGate",
|
|
98
|
+
"exponent": 1.0,
|
|
99
|
+
"global_shift": 0.0
|
|
100
|
+
},
|
|
101
|
+
"qubits": [
|
|
102
|
+
{
|
|
103
|
+
"cirq_type": "LineQubit",
|
|
104
|
+
"x": 0
|
|
105
|
+
}
|
|
106
|
+
]
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"cirq_type": "GateOperation",
|
|
110
|
+
"gate": {
|
|
111
|
+
"cirq_type": "HPowGate",
|
|
112
|
+
"exponent": 1.0,
|
|
113
|
+
"global_shift": 0.0
|
|
114
|
+
},
|
|
115
|
+
"qubits": [
|
|
116
|
+
{
|
|
117
|
+
"cirq_type": "LineQubit",
|
|
118
|
+
"x": 1
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"cirq_type": "GateOperation",
|
|
124
|
+
"gate": {
|
|
125
|
+
"cirq_type": "HPowGate",
|
|
126
|
+
"exponent": 1.0,
|
|
127
|
+
"global_shift": 0.0
|
|
128
|
+
},
|
|
129
|
+
"qubits": [
|
|
130
|
+
{
|
|
131
|
+
"cirq_type": "LineQubit",
|
|
132
|
+
"x": 2
|
|
133
|
+
}
|
|
134
|
+
]
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"cirq_type": "GateOperation",
|
|
138
|
+
"gate": {
|
|
139
|
+
"cirq_type": "HPowGate",
|
|
140
|
+
"exponent": 1.0,
|
|
141
|
+
"global_shift": 0.0
|
|
142
|
+
},
|
|
143
|
+
"qubits": [
|
|
144
|
+
{
|
|
145
|
+
"cirq_type": "LineQubit",
|
|
146
|
+
"x": 3
|
|
147
|
+
}
|
|
148
|
+
]
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"cirq_type": "GateOperation",
|
|
152
|
+
"gate": {
|
|
153
|
+
"cirq_type": "HPowGate",
|
|
154
|
+
"exponent": 1.0,
|
|
155
|
+
"global_shift": 0.0
|
|
156
|
+
},
|
|
157
|
+
"qubits": [
|
|
158
|
+
{
|
|
159
|
+
"cirq_type": "LineQubit",
|
|
160
|
+
"x": 4
|
|
161
|
+
}
|
|
162
|
+
]
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
}
|
|
166
|
+
]
|
|
167
|
+
},
|
|
168
|
+
"sampler_result": 0.1
|
|
169
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
cirq.contrib.quantum_volume.QuantumVolumeResult(
|
|
2
|
+
model_circuit=cirq.Circuit(
|
|
3
|
+
cirq.Moment(
|
|
4
|
+
cirq.H(cirq.LineQubit(0)),
|
|
5
|
+
cirq.H(cirq.LineQubit(1)),
|
|
6
|
+
cirq.H(cirq.LineQubit(2)),
|
|
7
|
+
cirq.H(cirq.LineQubit(3)),
|
|
8
|
+
cirq.H(cirq.LineQubit(4)),
|
|
9
|
+
)
|
|
10
|
+
),
|
|
11
|
+
heavy_set=[1, 2, 3],
|
|
12
|
+
compiled_circuit=cirq.Circuit(
|
|
13
|
+
cirq.Moment(
|
|
14
|
+
cirq.H(cirq.LineQubit(0)),
|
|
15
|
+
cirq.H(cirq.LineQubit(1)),
|
|
16
|
+
cirq.H(cirq.LineQubit(2)),
|
|
17
|
+
cirq.H(cirq.LineQubit(3)),
|
|
18
|
+
cirq.H(cirq.LineQubit(4)),
|
|
19
|
+
)
|
|
20
|
+
),
|
|
21
|
+
sampler_result=0.1,
|
|
22
|
+
)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
cirq.contrib.acquaintance.SwapPermutationGate(swap_gate=cirq.SWAP)
|
|
@@ -27,6 +27,4 @@ TestSpec = ModuleJsonTestSpec(
|
|
|
27
27
|
should_not_be_serialized=["Unique", "CircuitDag"],
|
|
28
28
|
resolver_cache=_class_resolver_dictionary(),
|
|
29
29
|
deprecated={},
|
|
30
|
-
# TODO: #7520 - create .json and .repr for these so they can be tested here
|
|
31
|
-
tested_elsewhere=["QuantumVolumeResult", "SwapPermutationGate", "BayesianNetworkGate"],
|
|
32
30
|
)
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
|
-
from
|
|
17
|
+
from collections.abc import Sequence
|
|
18
|
+
from typing import TYPE_CHECKING
|
|
18
19
|
|
|
19
20
|
from cirq import circuits, devices, ops, value
|
|
20
21
|
from cirq.devices.noise_model import validate_all_measurements
|
|
@@ -21,8 +21,26 @@ from cirq.contrib.paulistring.clifford_target_gateset import CliffordTargetGates
|
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
def clifford_optimized_circuit(circuit: circuits.Circuit, atol: float = 1e-8) -> circuits.Circuit:
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
"""Optimizes a circuit composed of Clifford and CZ gates.
|
|
25
|
+
|
|
26
|
+
This function attempts to simplify a circuit by finding local optimizations.
|
|
27
|
+
It works in two stages:
|
|
28
|
+
1. It converts the circuit to a target gateset consisting of
|
|
29
|
+
`cirq.SingleQubitCliffordGate` and `cirq.CZPowGate` gates.
|
|
30
|
+
2. It then iterates through the circuit, applying the following rules:
|
|
31
|
+
- Merges adjacent single-qubit Clifford gates.
|
|
32
|
+
- Commutes single-qubit Clifford gates past CZ gates, attempting to
|
|
33
|
+
merge them with other single-qubit Clifford gates.
|
|
34
|
+
- Cancels pairs of identical CZ gates.
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
circuit: The circuit to optimize.
|
|
38
|
+
atol: A limit on the amount of absolute error introduced by the decomposition.
|
|
39
|
+
|
|
40
|
+
Returns:
|
|
41
|
+
The optimized circuit.
|
|
42
|
+
"""
|
|
43
|
+
# Convert to a circuit with SingleQubitCliffordGates, CZs and other ignored gates.
|
|
26
44
|
c_cliff = transformers.optimize_for_target_gateset(
|
|
27
45
|
circuit, gateset=CliffordTargetGateset(atol=atol)
|
|
28
46
|
)
|