diff --git a/qiskit/quantum_info/__init__.py b/qiskit/quantum_info/__init__.py index 6021955e8d54..b906908f855d 100644 --- a/qiskit/quantum_info/__init__.py +++ b/qiskit/quantum_info/__init__.py @@ -96,7 +96,6 @@ .. autofunction:: random_cnotdihedral .. autofunction:: random_pauli_table .. autofunction:: random_pauli_list -.. autofunction:: random_stabilizer_table Analysis ========= @@ -152,7 +151,6 @@ random_pauli_list, random_pauli_table, random_quantum_channel, - random_stabilizer_table, random_statevector, random_unitary, ) diff --git a/qiskit/quantum_info/operators/random.py b/qiskit/quantum_info/operators/random.py index 8e63f4dffe8f..bb9baad93930 100644 --- a/qiskit/quantum_info/operators/random.py +++ b/qiskit/quantum_info/operators/random.py @@ -28,7 +28,6 @@ random_pauli, random_pauli_list, random_pauli_table, - random_stabilizer_table, ) DEFAULT_RNG = default_rng() diff --git a/qiskit/quantum_info/operators/symplectic/pauli_utils.py b/qiskit/quantum_info/operators/symplectic/pauli_utils.py index 45bc29e1e05e..e132499d54c0 100644 --- a/qiskit/quantum_info/operators/symplectic/pauli_utils.py +++ b/qiskit/quantum_info/operators/symplectic/pauli_utils.py @@ -15,30 +15,19 @@ from __future__ import annotations from qiskit.quantum_info.operators.symplectic.pauli_list import PauliList -from qiskit.utils.deprecation import deprecate_arg -@deprecate_arg( - "pauli_basis", - since="0.22", - additional_msg=( - "The argument ``pauli_list`` has no effect as the function always returns a PauliList." - ), -) -def pauli_basis(num_qubits: int, weight: bool = False, pauli_list=None) -> PauliList: +def pauli_basis(num_qubits: int, weight: bool = False) -> PauliList: """Return the ordered PauliTable or PauliList for the n-qubit Pauli basis. Args: num_qubits (int): number of qubits weight (bool): if True optionally return the basis sorted by Pauli weight rather than lexicographic order (Default: False) - pauli_list (bool): [Deprecated] This argument is deprecated and remains - for backwards compatability. It has no effect. Returns: PauliList: the Paulis for the basis """ - del pauli_list pauli_1q = PauliList(["I", "X", "Y", "Z"]) if num_qubits == 1: return pauli_1q diff --git a/qiskit/quantum_info/operators/symplectic/random.py b/qiskit/quantum_info/operators/symplectic/random.py index d7a1b293db85..2e4d4b89ad74 100644 --- a/qiskit/quantum_info/operators/symplectic/random.py +++ b/qiskit/quantum_info/operators/symplectic/random.py @@ -17,13 +17,11 @@ import numpy as np from numpy.random import default_rng -from qiskit.utils.deprecation import deprecate_func from .clifford import Clifford from .pauli import Pauli from .pauli_list import PauliList from .pauli_table import PauliTable -from .stabilizer_table import StabilizerTable def random_pauli( @@ -113,34 +111,6 @@ def random_pauli_table( return PauliTable(table) -@deprecate_func( - additional_msg="Instead, use the function ``random_pauli_list``.", - since="0.22.0", -) -def random_stabilizer_table(num_qubits, size=1, seed=None): - """DEPRECATED: Return a random StabilizerTable. - - Args: - num_qubits (int): the number of qubits. - size (int): Optional. The number of rows of the table (Default: 1). - seed (int or np.random.Generator): Optional. Set a fixed seed or - generator for RNG. - - Returns: - PauliTable: a random StabilizerTable. - """ - if seed is None: - rng = np.random.default_rng() - elif isinstance(seed, np.random.Generator): - rng = seed - else: - rng = default_rng(seed) - - table = rng.integers(2, size=(size, 2 * num_qubits)).astype(bool) - phase = rng.integers(2, size=size).astype(bool) - return StabilizerTable(table, phase) - - def random_clifford(num_qubits: int, seed: int | np.random.Generator | None = None): """Return a random Clifford operator. diff --git a/qiskit/quantum_info/random.py b/qiskit/quantum_info/random.py index 65907de1a5af..ef648446899c 100644 --- a/qiskit/quantum_info/random.py +++ b/qiskit/quantum_info/random.py @@ -22,7 +22,6 @@ random_pauli_list, random_pauli_table, random_quantum_channel, - random_stabilizer_table, random_unitary, ) from qiskit.quantum_info.states.random import random_density_matrix, random_statevector diff --git a/releasenotes/notes/remove-deprecated-code-in-0.22-128475199e6f3cc2.yaml b/releasenotes/notes/remove-deprecated-code-in-0.22-128475199e6f3cc2.yaml new file mode 100644 index 000000000000..d4851ded41ab --- /dev/null +++ b/releasenotes/notes/remove-deprecated-code-in-0.22-128475199e6f3cc2.yaml @@ -0,0 +1,12 @@ +--- +upgrade: + - | + The method :meth:`qiskit.quantum_info.pauli_basis` + does not accept `pauli_list` argument any more. + It was deprecated in Qiskit 0.39 (with Terra 0.22), released on Oct 2022. + + - | + The function ``random_stabilizer_table`` + in the class :class:`qiskit.quantum_info.random` is removed. + It was deprecated in Qiskit 0.39 (with Terra 0.22), released on Oct 2022. + Instead, use :func:``qiskit.quantum_info.random.random_pauli_list``. diff --git a/test/python/quantum_info/operators/test_random.py b/test/python/quantum_info/operators/test_random.py index c1987be4746a..0ade4e016d02 100644 --- a/test/python/quantum_info/operators/test_random.py +++ b/test/python/quantum_info/operators/test_random.py @@ -24,7 +24,6 @@ Operator, PauliList, PauliTable, - StabilizerTable, Stinespring, ) from qiskit.quantum_info.operators.predicates import is_hermitian_matrix @@ -34,7 +33,6 @@ random_pauli_list, random_pauli_table, random_quantum_channel, - random_stabilizer_table, random_unitary, ) from qiskit.test import QiskitTestCase @@ -284,42 +282,5 @@ def test_not_global_seed(self): self.assertFalse(np.all(rng_before == rng_after)) -@ddt -class TestRandomStabilizerTable(QiskitTestCase): - """Testing random_stabilizer_table function.""" - - @combine(num_qubits=[1, 2, 3, 4, 5, 10, 50, 100, 200, 250], size=[1, 10, 100]) - def test_valid(self, num_qubits, size): - """Test random_stabilizer_table {num_qubits}-qubits, size {size}.""" - with self.assertWarns(DeprecationWarning): - value = random_stabilizer_table(num_qubits, size=size) - with self.subTest(msg="Test type"): - self.assertIsInstance(value, StabilizerTable) - with self.subTest(msg="Test num_qubits"): - self.assertEqual(value.num_qubits, num_qubits) - with self.subTest(msg="Test type"): - self.assertEqual(len(value), size) - - def test_fixed_seed(self): - """Test fixing seed fixes output""" - seed = 1532 - with self.assertWarns(DeprecationWarning): - value1 = random_stabilizer_table(10, size=10, seed=seed) - value2 = random_stabilizer_table(10, size=10, seed=seed) - self.assertEqual(value1, value2) - - def test_not_global_seed(self): - """Test fixing random_hermitian seed is locally scoped.""" - seed = 314159 - test_cases = 100 - with self.assertWarns(DeprecationWarning): - random_stabilizer_table(10, size=10, seed=seed) - rng_before = np.random.randint(1000, size=test_cases) - with self.assertWarns(DeprecationWarning): - random_stabilizer_table(10, seed=seed) - rng_after = np.random.randint(1000, size=test_cases) - self.assertFalse(np.all(rng_before == rng_after)) - - if __name__ == "__main__": unittest.main()