Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-cirq for openSUSE:Factory checked in at 2023-02-02 18:08:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-cirq (Old) and /work/SRC/openSUSE:Factory/.python-cirq.new.32243 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-cirq" Thu Feb 2 18:08:12 2023 rev:7 rq:1061911 version:1.1.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-cirq/python-cirq.changes 2022-11-17 17:24:49.237165780 +0100 +++ /work/SRC/openSUSE:Factory/.python-cirq.new.32243/python-cirq.changes 2023-02-02 18:32:16.156895566 +0100 @@ -1,0 +2,30 @@ +Sat Jan 28 19:10:55 UTC 2023 - Ben Greiner <[email protected]> + +- Update to 1.1.0 + * This Cirq release focuses on tracking and improving performance + of key workflows like circuit construction, parameter + resolution etc. The release also adds a new transformers + framework for qubit routing and provides an efficient + implementation of the qubit routing algorithm described in + arXiv:1902.08091 [quant-ph] + ## Backwards Incompatible Changes + * 7892143 Print multi-qubit circuit with asymmetric depolarizing + noise correctly (#5931) by Paige + * af1267d Allow repeated measurements in deferred transformer + (#5857) by Dax Fohl + ## What's New + * New top level objects in cirq-core: + - RoutingSwapTag + - AbstractInitialMapper + - HardCodedInitialMapper + - LineInitialMapper + - MappingManager + - RouteCQC + - routed_circuit_with_mapping +- Add subpackage for cirq_core[contrib] +- Enable -rigetti package: pyquil and all its dependants are + available (gh#quantumlib/Cirq#5681) +- Drop fix-tests.patch +- Add cirq-pr5991-np1.24.patch -- gh#quantumlib/Cirq#5991 + +------------------------------------------------------------------- Old: ---- Cirq-1.0.0.tar.gz fix-tests.patch New: ---- Cirq-1.1.0.tar.gz cirq-pr5991-np1.24.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-cirq.spec ++++++ --- /var/tmp/diff_new_pack.DauoYB/_old 2023-02-02 18:32:16.616898396 +0100 +++ /var/tmp/diff_new_pack.DauoYB/_new 2023-02-02 18:32:16.640898544 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-cirq # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,22 +16,21 @@ # -%define packagename Cirq -%define skip_python2 1 %define plainpython python -# not all requirements available right now -%bcond_with rigetti -%define cirqmodules core aqt google ionq pasqal web %{?_with_rigetty:rigetty} +%define cirqmodules core aqt google ionq pasqal web rigetti Name: python-cirq -Version: 1.0.0 +Version: 1.1.0 Release: 0 Summary: Library for writing quantum circuits License: Apache-2.0 URL: https://github.com/quantumlib/Cirq -Source: https://github.com/quantumlib/Cirq/archive/v%{version}.tar.gz#/%{packagename}-%{version}.tar.gz -# PATCH-FIX-UPSTREAM fix-tests.patch gh#quantumlib/Cirq#5911 -Patch: fix-tests.patch +Source: https://github.com/quantumlib/Cirq/archive/v%{version}.tar.gz#/Cirq-%{version}.tar.gz +# PATCH-FIX-UPSTREAM cirq-pr5991-np1.24.patch gh#quantumlib/Cirq#5991 +Patch0: cirq-pr5991-np1.24.patch +BuildRequires: %{python_module base >= 3.7} +BuildRequires: %{python_module pip} BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module wheel} BuildRequires: fdupes BuildRequires: python-rpm-macros # SECTION cirq-core @@ -56,30 +55,13 @@ # google-api-core[grpc] BuildRequires: %{python_module grpcio} # /SECTION -%if %{with rigetti} -BuildRequires: %{python_module attrs >= 20.3} -BuildRequires: %{python_module certifi >= 2021.5.30} -BuildRequires: %{python_module h11 >= 0.9.0} -BuildRequires: %{python_module httpcore >= 0.11.1} -BuildRequires: %{python_module httpx >= 0.15.5} -BuildRequires: %{python_module idna >= 2.10} -BuildRequires: %{python_module iso8601 >= 0.1.14} -BuildRequires: %{python_module pydantic >= 1.8.2} -BuildRequires: %{python_module pyjwt >= 1.7.1} -BuildRequires: %{python_module pyquil >= 3.0.0} -BuildRequires: %{python_module python-dateutil >= 2.8.1} -BuildRequires: %{python_module qcs-api-client >= 0.8.0} -BuildRequires: %{python_module retrying >= 1.3.3} -BuildRequires: %{python_module rfc3339 >= 6.2} -BuildRequires: %{python_module rfc3986 >= 1.5.0} -BuildRequires: %{python_module sniffio >= 1.2.0} -BuildRequires: %{python_module toml >= 0.10.2} -%endif -# SECTION cirq-core/contrib -BuildRequires: %{python_module ply} +BuildRequires: %{python_module pyquil >= 3.2.0} +# SECTION cirq-core[contrib] +BuildRequires: %{python_module autoray} BuildRequires: %{python_module PyLaTeX >= 1.3.0} BuildRequires: %{python_module numba >= 0.53} -BuildRequires: %{python_module pyquil} +BuildRequires: %{python_module opt-einsum} +BuildRequires: %{python_module ply >= 3.6} BuildRequires: %{python_module quimb} # /SECTION # SECTION test @@ -87,6 +69,8 @@ BuildRequires: %{python_module filelock} BuildRequires: %{python_module freezegun >= 0.3.15} BuildRequires: %{python_module pytest-asyncio} +BuildRequires: %{python_module pytest-randomly} +BuildRequires: %{python_module pytest-xdist} BuildRequires: %{python_module pytest} #/SECTION Requires: %plainpython(abi) = %python_version @@ -95,10 +79,8 @@ Requires: python-cirq-google Requires: python-cirq-ionq Requires: python-cirq-pasqal -Requires: python-cirq-web -%if %{with rigetti} Requires: python-cirq-rigetti -%endif +Requires: python-cirq-web # quimb does not support 32 bit arch. ExcludeArch: %ix86 %arm ppc BuildArch: noarch @@ -131,6 +113,19 @@ This module contains everything you'd need to write quantum algorithms for NISQ devices and run them on the built-in Cirq simulators. In order to run algorithms on a given quantum hardware platform, you'll have to install the right cirq module as well. +%package core-contrib +Summary: Cirq quantum algorithms for NISQ devices +Requires: python-PyLaTeX >= 1.3.0 +Requires: python-autoray +Requires: python-cirq-core = %{version} +Requires: python-numba >= 0.53 +Requires: python-opt-einsum +Requires: python-ply >= 3.6 +Requires: python-quimb + +%description core-contrib +The cirq-core[contrib] extra + %package aqt Summary: Cirq quantum algorithms on AQT quantum computers Requires: python-cirq-core = %{version} @@ -178,25 +173,9 @@ their own visualizations to the module. %package rigetti -Summary: A Cirq package to simulate and connect to Rigetti quantum computers and Quil QVM -Requires: python-attrs >= 20.3 -Requires: python-certifi >= 2021.5.30 +Summary: Cirq package for Rigetti quantum computers and Quil QVM Requires: python-cirq-core = %{version} -Requires: python-h11 >= 0.9.0 -Requires: python-httpcore >= 0.11.1 -Requires: python-httpx >= 0.15.5 -Requires: python-idna >= 2.10 -Requires: python-iso8601 >= 0.1.14 -Requires: python-pydantic >= 1.8.2 -Requires: python-pyjwt >= 1.7.1 -Requires: python-pyquil >= 3.0.0 -Requires: python-python-dateutil >= 2.8.1 -Requires: python-qcs-api-client >= 0.8.0 -Requires: python-retrying >= 1.3.3 -Requires: python-rfc3339 >= 6.2 -Requires: python-rfc3986 >= 1.5.0 -Requires: python-sniffio >= 1.2.0 -Requires: python-toml >= 0.10.2 +Requires: python-pyquil >= 3.2.0 %description rigetti Cirq is a Python library for writing, manipulating, and optimizing quantum @@ -205,36 +184,31 @@ This module provides everything you'll need to run Cirq quantum algorithms on Rigetti quantum computers. %prep -%autosetup -p1 -n %{packagename}-%{version} +%autosetup -p1 -n Cirq-%{version} %build for p in %cirqmodules; do pushd cirq-$p - %python_build + %pyproject_wheel popd done -%python_build +%pyproject_wheel %install for p in %cirqmodules; do - pushd cirq-$p - %python_install - popd + cp cirq-$p/dist/*.whl dist/ done -%python_install +%python_expand cp dist/*.whl build/ +%pyproject_install %python_expand %fdupes %{buildroot}%{$python_sitelib} %check # tests assume testfiles and import path to be the same, but we test BUILDROOT donttest="test_json_test_data_coverage" donttest="$donttest or test_json_and_repr_data" -# mock error -donttest="$donttest or test_get_engine_sampler" -# version in release isn't updated in this test -donttest="$donttest or test_version" for p in %cirqmodules; do pushd cirq-$p - %pytest -k "not ($donttest)" + %pytest -v -k "not ($donttest)" -n auto popd done @@ -249,6 +223,10 @@ %{python_sitelib}/cirq %{python_sitelib}/cirq_core-%{version}*-info +%files %{python_files core-contrib} +%doc cirq-core/README.rst +%license cirq-core/LICENSE + %files %{python_files aqt} %doc cirq-aqt/README.rst %license cirq-aqt/LICENSE @@ -280,12 +258,10 @@ %{python_sitelib}/cirq_web %{python_sitelib}/cirq_web-%{version}*-info -%if %{with rigetti} %files %{python_files rigetti} %doc cirq-rigetti/README.rst %license cirq-rigetti/LICENSE %{python_sitelib}/cirq_rigetti %{python_sitelib}/cirq_rigetti-%{version}*-info -%endif %changelog ++++++ Cirq-1.0.0.tar.gz -> Cirq-1.1.0.tar.gz ++++++ /work/SRC/openSUSE:Factory/python-cirq/Cirq-1.0.0.tar.gz /work/SRC/openSUSE:Factory/.python-cirq.new.32243/Cirq-1.1.0.tar.gz differ: char 13, line 1 ++++++ cirq-pr5991-np1.24.patch ++++++ Index: Cirq-1.1.0/cirq-core/cirq/_compat.py =================================================================== --- Cirq-1.1.0.orig/cirq-core/cirq/_compat.py +++ Cirq-1.1.0/cirq-core/cirq/_compat.py @@ -138,9 +138,7 @@ def proper_repr(value: Any) -> str: return Printer().doprint(value) if isinstance(value, np.ndarray): - if np.issubdtype(value.dtype, np.datetime64): - return f'np.array({value.tolist()!r}, dtype=np.{value.dtype!r})' - return f'np.array({value.tolist()!r}, dtype=np.{value.dtype})' + return f'np.array({value.tolist()!r}, dtype=np.{value.dtype!r})' if isinstance(value, pd.MultiIndex): return f'pd.MultiIndex.from_tuples({repr(list(value))}, names={repr(list(value.names))})' Index: Cirq-1.1.0/cirq-core/cirq/_compat_test.py =================================================================== --- Cirq-1.1.0.orig/cirq-core/cirq/_compat_test.py +++ Cirq-1.1.0/cirq-core/cirq/_compat_test.py @@ -110,7 +110,7 @@ def test_dataclass_repr_numpy(): return dataclass_repr(self, namespace='cirq.testing') tc = TestClass2(np.ones(3)) - assert repr(tc) == "cirq.testing.TestClass2(x=np.array([1.0, 1.0, 1.0], dtype=np.float64))" + assert repr(tc) == "cirq.testing.TestClass2(x=np.array([1.0, 1.0, 1.0], dtype=np.dtype('float64')))" def test_proper_eq(): Index: Cirq-1.1.0/cirq-core/cirq/linalg/decompositions_test.py =================================================================== --- Cirq-1.1.0.orig/cirq-core/cirq/linalg/decompositions_test.py +++ Cirq-1.1.0/cirq-core/cirq/linalg/decompositions_test.py @@ -367,12 +367,12 @@ def test_kak_repr(): cirq.KakDecomposition( interaction_coefficients=(0.5, 0.25, 0), single_qubit_operations_before=( - np.array([[0j, (1+0j)], [(1+0j), 0j]], dtype=np.complex128), - np.array([[0j, -1j], [1j, 0j]], dtype=np.complex128), + np.array([[0j, (1+0j)], [(1+0j), 0j]], dtype=np.dtype('complex128')), + np.array([[0j, -1j], [1j, 0j]], dtype=np.dtype('complex128')), ), single_qubit_operations_after=( - np.array([[1.0, 0.0], [0.0, 1.0]], dtype=np.float64), - np.array([[(1+0j), 0j], [0j, (-1+0j)]], dtype=np.complex128), + np.array([[1.0, 0.0], [0.0, 1.0]], dtype=np.dtype('float64')), + np.array([[(1+0j), 0j], [0j, (-1+0j)]], dtype=np.dtype('complex128')), ), global_phase=1) """.strip() Index: Cirq-1.1.0/cirq-core/cirq/ops/kraus_channel_test.py =================================================================== --- Cirq-1.1.0.orig/cirq-core/cirq/ops/kraus_channel_test.py +++ Cirq-1.1.0/cirq-core/cirq/ops/kraus_channel_test.py @@ -105,8 +105,8 @@ def test_kraus_channel_repr(): repr(x_meas) == """\ cirq.KrausChannel(kraus_ops=[\ -np.array([[(0.5+0j), (0.5+0j)], [(0.5+0j), (0.5+0j)]], dtype=np.complex64), \ -np.array([[(0.5+0j), (-0.5+0j)], [(-0.5+0j), (0.5+0j)]], dtype=np.complex64)], \ +np.array([[(0.5+0j), (0.5+0j)], [(0.5+0j), (0.5+0j)]], dtype=np.dtype('complex64')), \ +np.array([[(0.5+0j), (-0.5+0j)], [(-0.5+0j), (0.5+0j)]], dtype=np.dtype('complex64'))], \ key='x_meas')""" ) Index: Cirq-1.1.0/cirq-core/cirq/ops/measurement_gate_test.py =================================================================== --- Cirq-1.1.0.orig/cirq-core/cirq/ops/measurement_gate_test.py +++ Cirq-1.1.0/cirq-core/cirq/ops/measurement_gate_test.py @@ -317,23 +317,23 @@ def test_op_repr(): b, key='out', invert_mask=(False, True), - confusion_map={(0,): np.array([[0, 1], [1, 0]], dtype=np.int64)}, + confusion_map={(0,): np.array([[0, 1], [1, 0]], dtype=np.dtype('int64'))}, ) ) == ( "cirq.measure(cirq.LineQubit(0), cirq.LineQubit(1), " "key=cirq.MeasurementKey(name='out'), " "invert_mask=(False, True), " - "confusion_map={(0,): np.array([[0, 1], [1, 0]], dtype=np.int64)})" + "confusion_map={(0,): np.array([[0, 1], [1, 0]], dtype=np.dtype('int64'))})" ) def test_repr(): gate = cirq.MeasurementGate( - 3, 'a', (True, False), (1, 2, 3), {(2,): np.array([[0, 1], [1, 0]], dtype=np.int64)} + 3, 'a', (True, False), (1, 2, 3), {(2,): np.array([[0, 1], [1, 0]], dtype=np.dtype('int64'))} ) assert repr(gate) == ( "cirq.MeasurementGate(3, cirq.MeasurementKey(name='a'), (True, False), " - "qid_shape=(1, 2, 3), confusion_map={(2,): np.array([[0, 1], [1, 0]], dtype=np.int64)})" + "qid_shape=(1, 2, 3), confusion_map={(2,): np.array([[0, 1], [1, 0]], dtype=np.dtype('int64'))})" ) Index: Cirq-1.1.0/cirq-core/cirq/ops/mixed_unitary_channel_test.py =================================================================== --- Cirq-1.1.0.orig/cirq-core/cirq/ops/mixed_unitary_channel_test.py +++ Cirq-1.1.0/cirq-core/cirq/ops/mixed_unitary_channel_test.py @@ -95,16 +95,16 @@ def test_matrix_mixture_str(): def test_matrix_mixture_repr(): mix = [ - (0.5, np.array([[1, 0], [0, 1]], dtype=np.complex64)), - (0.5, np.array([[0, 1], [1, 0]], dtype=np.complex64)), + (0.5, np.array([[1, 0], [0, 1]], dtype=np.dtype('complex64'))), + (0.5, np.array([[0, 1], [1, 0]], dtype=np.dtype('complex64'))), ] half_flip = cirq.MixedUnitaryChannel(mix, key='flip') assert ( repr(half_flip) == """\ cirq.MixedUnitaryChannel(mixture=[\ -(0.5, np.array([[(1+0j), 0j], [0j, (1+0j)]], dtype=np.complex64)), \ -(0.5, np.array([[0j, (1+0j)], [(1+0j), 0j]], dtype=np.complex64))], \ +(0.5, np.array([[(1+0j), 0j], [0j, (1+0j)]], dtype=np.dtype('complex64'))), \ +(0.5, np.array([[0j, (1+0j)], [(1+0j), 0j]], dtype=np.dtype('complex64')))], \ key='flip')""" ) Index: Cirq-1.1.0/cirq-core/cirq/sim/density_matrix_simulator_test.py =================================================================== --- Cirq-1.1.0.orig/cirq-core/cirq/sim/density_matrix_simulator_test.py +++ Cirq-1.1.0/cirq-core/cirq/sim/density_matrix_simulator_test.py @@ -951,9 +951,9 @@ def test_density_matrix_step_result_repr ) ) == "cirq.DensityMatrixStepResult(sim_state=cirq.DensityMatrixSimulationState(" - "initial_state=np.array([[(0.5+0j), (0.5+0j)], [(0.5+0j), (0.5+0j)]], dtype=np.complex64), " + "initial_state=np.array([[(0.5+0j), (0.5+0j)], [(0.5+0j), (0.5+0j)]], dtype=np.dtype('complex64')), " "qubits=(cirq.LineQubit(0),), " - "classical_data=cirq.ClassicalDataDictionaryStore()), dtype=np.complex64)" + "classical_data=cirq.ClassicalDataDictionaryStore()), dtype=np.dtype('complex64'))" ) @@ -1034,9 +1034,9 @@ def test_density_matrix_trial_result_rep expected_repr = ( "cirq.DensityMatrixTrialResult(" "params=cirq.ParamResolver({'s': 1}), " - "measurements={'m': np.array([[1]], dtype=np.int32)}, " + "measurements={'m': np.array([[1]], dtype=np.dtype('int32'))}, " "final_simulator_state=cirq.DensityMatrixSimulationState(" - "initial_state=np.array([[(0.5+0j), (0.5+0j)], [(0.5+0j), (0.5+0j)]], dtype=np.complex64), " + "initial_state=np.array([[(0.5+0j), (0.5+0j)], [(0.5+0j), (0.5+0j)]], dtype=np.dtype('complex64')), " "qubits=(cirq.LineQubit(0),), " "classical_data=cirq.ClassicalDataDictionaryStore()))" ) Index: Cirq-1.1.0/cirq-core/cirq/sim/sparse_simulator_test.py =================================================================== --- Cirq-1.1.0.orig/cirq-core/cirq/sim/sparse_simulator_test.py +++ Cirq-1.1.0/cirq-core/cirq/sim/sparse_simulator_test.py @@ -775,9 +775,9 @@ def test_sparse_simulator_repr(): # No equality so cannot use cirq.testing.assert_equivalent_repr assert ( repr(step) == "cirq.SparseSimulatorStep(sim_state=cirq.StateVectorSimulationState(" - "initial_state=np.array([[0j, (1+0j)], [0j, 0j]], dtype=np.complex64), " + "initial_state=np.array([[0j, (1+0j)], [0j, 0j]], dtype=np.dtype('complex64')), " "qubits=(cirq.LineQubit(0), cirq.LineQubit(1)), " - "classical_data=cirq.ClassicalDataDictionaryStore()), dtype=np.complex64)" + "classical_data=cirq.ClassicalDataDictionaryStore()), dtype=np.dtype('complex64'))" ) Index: Cirq-1.1.0/cirq-core/cirq/sim/sparse_simulator.py =================================================================== --- Cirq-1.1.0.orig/cirq-core/cirq/sim/sparse_simulator.py +++ Cirq-1.1.0/cirq-core/cirq/sim/sparse_simulator.py @@ -282,5 +282,5 @@ class SparseSimulatorStep( # Dtype doesn't have a good repr, so we work around by invoking __name__. return ( f'cirq.SparseSimulatorStep(sim_state={self._sim_state!r},' - f' dtype=np.{self._dtype.__name__})' + f' dtype=np.{np.dtype(self._dtype)!r})' ) Index: Cirq-1.1.0/cirq-core/cirq/sim/state_vector_simulator_test.py =================================================================== --- Cirq-1.1.0.orig/cirq-core/cirq/sim/state_vector_simulator_test.py +++ Cirq-1.1.0/cirq-core/cirq/sim/state_vector_simulator_test.py @@ -35,9 +35,9 @@ def test_state_vector_trial_result_repr( expected_repr = ( "cirq.StateVectorTrialResult(" "params=cirq.ParamResolver({'s': 1}), " - "measurements={'m': np.array([[1]], dtype=np.int32)}, " + "measurements={'m': np.array([[1]], dtype=np.dtype('int32'))}, " "final_simulator_state=cirq.StateVectorSimulationState(" - "initial_state=np.array([0j, (1+0j)], dtype=np.complex64), " + "initial_state=np.array([0j, (1+0j)], dtype=np.dtype('complex64')), " "qubits=(cirq.NamedQubit('a'),), " "classical_data=cirq.ClassicalDataDictionaryStore()))" ) Index: Cirq-1.1.0/cirq-core/cirq/sim/density_matrix_simulator.py =================================================================== --- Cirq-1.1.0.orig/cirq-core/cirq/sim/density_matrix_simulator.py +++ Cirq-1.1.0/cirq-core/cirq/sim/density_matrix_simulator.py @@ -303,7 +303,7 @@ class DensityMatrixStepResult(simulator_ # Dtype doesn't have a good repr, so we work around by invoking __name__. return ( f'cirq.DensityMatrixStepResult(sim_state={self._sim_state!r},' - f' dtype=np.{self._dtype.__name__})' + f' dtype=np.{np.dtype(self._dtype)!r})' )
