# Deprecations¶

## Pending deprecations¶

The RandomLayers.compute_decomposition keyword argument ratio_imprivitive will be changed to ratio_imprim to match the call signature of the operation.

Deprecated in v0.32

Removed in v0.33

`qml.enable_return`

and`qml.disable_return`

are deprecated. Please avoid calling`disable_return`

, as the old return system is deprecated along with these switch functions.Deprecated in v0.32

Will be removed in v0.33

The

`mode`

keyword argument in`QNode`

is deprecated, as it was only used in the old return system (which is also deprecated). Please use`grad_on_execution`

instead.Deprecated in v0.32

Will be removed in v0.33

The

`observables`

argument in`QubitDevice.statistics`

is deprecated. Please use`circuit`

instead. Using a list of observables in`QubitDevice.statistics`

is deprecated. Please use a`QuantumTape`

instead.Still accessible in v0.28, v0.29, v0.30

Will be removed in v0.31

`qml.ExpvalCost`

has been deprecated, and usage will now raise a warning.Deprecated in v0.24

Will be removed in v0.32

Instead, it is recommended to simply pass Hamiltonians to the

`qml.expval`

function inside QNodes:@qml.qnode(dev) def ansatz(params): some_qfunc(params) return qml.expval(Hamiltonian)

The behaviour of

`Operator.__eq__`

and`Operator.__hash__`

will be updated soon. Their documentation has been updated to reflect the incoming changes.The upcoming changes to operator equality will allow users to use operator equality the same way as with

`qml.equal`

. With the changes to hashing, unique operators that are equal will have the same hash. These changes will allow behaviour such as the following:>>> qml.RX(0.1, wires=0) == qml.RX(0.1, wires=0) True >>> {qml.PauliZ(0), qml.PauliZ(0)} {PauliZ(wires=[0])}

Meanwhile, the current behaviour is shown below:

>>> qml.RX(0.1, wires=0) == qml.RX(0.1, wires=0) False >>> {qml.PauliZ(0), qml.PauliZ(0)} {PauliZ(wires=[0]), PauliZ(wires=[0])}

Added in v0.32

Behaviour will change in v0.33

The public methods of

`DefaultQubit`

are pending changes to follow the new device API, as used in`DefaultQubit2`

.We will be switching to the new device interface in a coming release. In this new interface, simulation implementation details will be abstracted away from the device class itself and provided by composition, rather than inheritance. Therefore, some public and private methods from

`DefaultQubit`

will no longer exist, though its behaviour in a workflow will remain the same.If you directly interact with device methods, please consult

`pennylane.devices.experimental.Device`

and`pennylane.devices.experimental.DefaultQubit2`

for more information on what the new interface will look like and be prepared to make updates in a coming release. If you have any feedback on these changes, please create an issue or post in our discussion forum.Deprecated in v0.31

`qml.qchem.jordan_wigner`

is deprecated, and usage will now raise a warning. Use`qml.jordan_wigner`

instead. List input to define the fermionic operator is also deprecated; the fermionic operators`qml.FermiA`

,`qml.FermiC`

,`qml.FermiWord`

and`qml.FermiSentence`

should be used instead. See the`pennylane.fermi`

module documentation and the Fermionic Operator tutorial for more details.The CV observables

`qml.X`

and`qml.P`

have been deprecated, and usage will now raise a warning. Please use`qml.QuadX`

and`qml.QuadP`

instead.Deprecated in v0.32

Will be removed in v0.33

The method

`tape.unwrap()`

and corresponding`UnwrapTape`

and`Unwrap`

classes are deprecated, and usage will now raise a warning.Instead of

`tape.unwrap()`

, use`convert_to_numpy_parameters()`

:from pennylane.transforms import convert_to_numpy_parameters qscript = qml.tape.QuantumTape([qml.RX(torch.tensor(0.1234), 0)], [qml.expval(qml.Hermitian(torch.eye(2), 0))] ) unwrapped_qscript = convert_to_numpy_parameters(qscript) torch_params = qscript.get_parameters() numpy_params = unwrapped_qscript.get_parameters()

The

`QuantumScript.set_parameters`

method and the`QuantumScript.data`

setter has been deprecated. Please use`QuantumScript.bind_new_parameters`

instead.Deprecated in v0.32

Will be removed in v0.33

The

`tuple`

input type in`qubit_observable`

has been deprecated. Please use a fermionic operator object. The`tuple`

return type in`fermionic_hamiltonian`

and`fermionic_observable`

has been deprecated and these functions will return a fermionic operator by default.Deprecated in v0.32

Will be removed in v0.33

The

`sampler_seed`

argument of`qml.gradients.spsa_grad`

has been deprecated, along with a bug fix of the seed-setting behaviour. Instead, the`sampler_rng`

argument should be set, either to an integer value, which will be used to create a PRNG internally, or to a NumPy pseudo-random number generator (PRNG) created via`np.random.default_rng(seed)`

. The advantage of passing a PRNG is that one can reuse that PRNG when calling`spsa_grad`

multiple times, for instance during an optimization procedure.Deprecated in v0.32

Will be removed in v0.33

## Completed deprecation cycles¶

`qml.math.purity`

,`qml.math.vn_entropy`

,`qml.math.mutual_info`

,`qml.math.fidelity`

,`qml.math.relative_entropy`

, and`qml.math.max_entropy`

no longer support state vectors as input. Please call`qml.math.dm_from_state_vector`

on the input before passing to any of these functions.Still accepted in v0.31

Removed in v0.32

The

`do_queue`

keyword argument in`qml.operation.Operator`

has been removed. This affects all child classes, such as`Operation`

,`Observable`

,`SymbolicOp`

and more. Instead of setting`do_queue=False`

, use the`qml.QueuingManager.stop_recording()`

context.Deprecated in v0.31

Removed in v0.32

The

`qml.specs`

dictionary longer supports direct key access to certain keys. Instead these quantities can be accessed as fields of the new`Resources`

object saved under`specs_dict["resources"]`

:`num_operations`

is no longer supported, use`specs_dict["resources"].num_gates`

`num_used_wires`

is no longer supported, use`specs_dict["resources"].num_wires`

`gate_types`

is no longer supported, use`specs_dict["resources"].gate_types`

`gate_sizes`

is no longer supported, use`specs_dict["resources"].gate_sizes`

`depth`

is no longer supported, use`specs_dict["resources"].depth`

These keys were still accessible in v0.31 and removed in v0.32.

`qml.math.reduced_dm`

has been removed. Please use`qml.math.reduce_dm`

or`qml.math.reduce_statevector`

instead.Still accessible in v0.31

Removed in v0.32

`QuantumScript`

’s`name`

keyword argument and property are removed. This also affects`QuantumTape`

and`OperationRecorder`

.Deprecated in v0.31

Removed in v0.32

The

`Operation.base_name`

property is removed. Please use`Operator.name`

or`type(obj).__name__`

instead.Still accessible in v0.31

Removed in v0.32

`LieAlgebraOptimizer`

has been renamed. Please use`RiemannianGradientOptimizer`

instead.Deprecated in v0.31

Removed in v0.32

The

`grouping_type`

and`grouping_method`

arguments of`qchem.molecular_hamiltonian()`

are removed.Deprecated in v0.31

Removed in v0.32

Instead, simply construct a new instance of

`Hamiltonian`

with the grouping specified:H, qubits = molecular_hamiltonian(symbols, coordinates) grouped_h = qml.Hamiltonian( H.coeffs, H.ops, grouping_type=grouping_type, groupingmethod=grouping_method, )

`zyz_decomposition`

and`xyx_decomposition`

are removed, use`one_qubit_decomposition`

with a rotations keyword instead.Deprecated in v0.31

Removed in v0.32

The

`qml.utils.sparse_hamiltonian`

function has been removed.`~.Hamiltonian.sparse_matrix`

should be used instead.Deprecated in v0.29

Removed in v0.31

The

`collections`

module has been removed.Deprecated in v0.29

Removed in v0.31

`qml.op_sum`

has been removed. Users should use`qml.sum`

instead.Deprecated in v0.29.

Removed in v0.31.

The argument

`argnum`

for gradient transforms using the Jax interface is replaced by`argnums`

.`argnum`

is automatically changed to`argnums`

for gradient transforms using JAX and a warning is raised in v0.30`argnums`

is the only option for gradient transforms using JAX in v0.31

`Evolution`

now adds a`-1`

to the input parameter. Beforehand, the minus sign was not included.Transition warning added in v0.29.

Updated to current behaviour in v0.30.

The

`seed_recipes`

argument in`qml.classical_shadow`

and`qml.shadow_expval`

has been removed. An argument`seed`

which defaults to`None`

can contain an integer with the wanted seed.Still accessible in v0.28, v0.29

Removed in v0.30

The

`get_operation`

tape method is updated to return the operation index as well, changing its signature.The new signature is available by changing the arg

`return_op_index`

to`True`

in v0.29The old signature is replaced with the new one in v0.30

The

`grouping`

module has been removed. The functionality has been moved and reorganized in the new`pauli`

module under`pauli/utils.py`

or`pauli/grouping/`

.Still accessible in v0.27, v0.28, v0.29, v0.30

Removed in v0.31

The functions from

`grouping/pauli.py`

,`grouping/transformations.py`

and`grouping/utils.py`

have been moved to`pauli/utils.py`

. The remaining functions have been consolidated in the`pauli/grouping/`

directory.`qml.VQECost`

is removed.Deprecated in 0.13

Removed in 0.29

In-place inversion —

`op.inv()`

and`op.inverse=value`

— is deprecated. Please use`qml.adjoint`

or`qml.pow`

instead.Still accessible in v0.27 and v0.28

Removed in v0.29

Don’t use:

>>> v1 = qml.PauliX(0).inv() >>> v2 = qml.PauliX(0) >>> v2.inverse = True

Instead, use:

>>> qml.adjoint(qml.PauliX(0)) Adjoint(PauliX(wires=[0])) >>> qml.pow(qml.PauliX(0), -1) PauliX(wires=[0])**-1 >>> qml.pow(qml.PauliX(0), -1, lazy=False) PauliX(wires=[0]) >>> qml.PauliX(0) ** -1 PauliX(wires=[0])**-1

The

`qml.utils.decompose_hamiltonian()`

method is removed. Please use`qml.pauli_decompose()`

.Still accessible in v0.27

Removed in v0.28

`qml.tape.get_active_tape`

is deprecated. Please use`qml.QueuingManager.active_context()`

instead.Deprecated in v0.27

Removed in v0.28

`qml.transforms.qcut.remap_tape_wires`

is deprecated. Please use`qml.map_wires`

instead.Deprecated in v0.27

Removed in v0.28

`QuantumTape.inv()`

is deprecated. Please use`QuantumTape.adjoint()`

instead. This method returns a new tape instead of modifying itself in-place.Deprecated in v0.27

Removed in v0.28

`qml.tape.stop_recording`

and`QuantumTape.stop_recording`

are moved to`qml.QueuingManager.stop_recording`

Deprecated in v0.27

Removed in v0.28

`QueuingContext`

is renamed`QueuingManager`

.Deprecated name

`QueuingContext`

in v0.27Removed in v0.28

`QueuingManager.safe_update_info`

and`AnnotateQueue.safe_update_info`

are removed.Deprecated in v0.27

Removed in v0.28

`ObservableReturnTypes`

`Sample`

,`Variance`

,`Expectation`

,`Probability`

,`State`

, and`MidMeasure`

are moved to`measurements`

from`operation`

.Deprecated in v0.23

Removed in v0.27

The

`qml.utils.expand`

function is deprecated.`qml.math.expand_matrix`

should be used instead.Deprecated in v0.24

Removed in v0.27

The

`qml.Operation.get_parameter_shift`

method is removed. Use the methods of the`gradients`

module for general parameter-shift rules instead.Deprecated in v0.22

Removed in v0.28

`qml.transforms.measurement_grouping`

has been removed. Please use`qml.transforms.hamiltonian_expand`

instead.Deprecated in v0.28

Removed in v0.29

`qml.transforms.make_tape`

was previously deprecated, but there is no longer a plan to remove it. It no longer raises a warning, and the functionality is unchanged.Deprecated in v0.28

Un-deprecated in v0.29