Skip to content

Move StandardGate definition into its own module#15914

Merged
Cryoris merged 1 commit intoQiskit:mainfrom
jakelishman:circuit-free-qi/7
Apr 1, 2026
Merged

Move StandardGate definition into its own module#15914
Cryoris merged 1 commit intoQiskit:mainfrom
jakelishman:circuit-free-qi/7

Conversation

@jakelishman
Copy link
Copy Markdown
Member

@jakelishman jakelishman commented Mar 30, 2026

This is a staging commit, splitting up the giant monolithic qiskit_circuit::operations to put StandardGate in its own module. The code is unchanged, other than imports.

This is preparatory for moving more code out of quantum_info that connects StandardGate to base quantum-info objects.

Unfortunately I couldn't make this register in git as a giant move, so the best way to review this commit is to verify that the diff of the moved block (lines 1163 to 3084) in crates/circuit/src/operations.rs in the parent of this commit1 is minimal. For example:

( git show 7ceda6324b3d:crates/circuit/src/operations.rs |
        head -n 3084 |
        tail -n+1163 ) |
    diff - crates/circuit/src/standard_gate/mod.rs

shows

0a1,27
> // This code is part of Qiskit.
> //
> // (C) Copyright IBM 2026
> //
> // This code is licensed under the Apache License, Version 2.0. You may
> // obtain a copy of this license in the LICENSE.txt file in the root directory
> // of this source tree or at https://www.apache.org/licenses/LICENSE-2.0.
> //
> // Any modifications or derivative works of this code must retain this
> // copyright notice, and modified files need to carry a notice indicating
> // that they have been altered from the originals.
>
> use crate::circuit_data::{CircuitData, PyCircuitData};
> use crate::operations::{Operation, Param, add_param, clone_param, multiply_param, radd_param};
> use crate::{Qubit, gate_matrix, impl_intopyobject_for_copy_pyclass, imports};
>
> use ndarray::{Array2, aview2};
> use num_complex::Complex64;
> use smallvec::{SmallVec, smallvec};
> use std::f64::consts::PI;
>
> use numpy::{IntoPyArray, PyArray2};
> use pyo3::prelude::*;
> use pyo3::types::{IntoPyDict, PyList, PyTuple};
>
> const FLOAT_ZERO: Param = Param::Float(0.0);
>
1920,1922d1946
<
< const FLOAT_ZERO: Param = Param::Float(0.0);
<

Footnotes

  1. 7ceda63: Revert "Support commutation check between Pauli-based gates and standard gates (Support commutation check between Pauli-based gates and standard gates #15488)" (Revert "Support commutation check between Pauli-based gates and standard gates (#15488)" #15906)

@jakelishman jakelishman requested a review from a team as a code owner March 30, 2026 17:01
@qiskit-bot
Copy link
Copy Markdown
Collaborator

One or more of the following people are relevant to this code:

  • @Qiskit/terra-core
  • @levbishop

@jakelishman jakelishman added type: qa Issues and PRs that relate to testing and code quality Changelog: None Do not include in the GitHub Release changelog. labels Mar 30, 2026
This is a staging commit, splitting up the giant monolithic
`qiskit_circuit::operations` to put `StandardGate` in its own module.
The code is unchanged, other than imports.

This is preparatory for moving more code out of `quantum_info` that
connects `StandardGate` to base `quantum-info` objects.

Unfortunately I couldn't make this register in `git` as a giant move, so
the best way to review this commit is to verify that the diff of the
moved block (lines 1163 to 3084) in `crates/circuit/src/operations.rs`
in the parent of this commit[^1] is minimal.  For example:

```bash
( git show 7ceda63:crates/circuit/src/operations.rs |
        head -n 3084 |
        tail -n+1163 ) |
    diff - crates/circuit/src/standard_gate/mod.rs
```

shows

```text
0a1,27
> // This code is part of Qiskit.
> //
> // (C) Copyright IBM 2026
> //
> // This code is licensed under the Apache License, Version 2.0. You may
> // obtain a copy of this license in the LICENSE.txt file in the root directory
> // of this source tree or at https://www.apache.org/licenses/LICENSE-2.0.
> //
> // Any modifications or derivative works of this code must retain this
> // copyright notice, and modified files need to carry a notice indicating
> // that they have been altered from the originals.
>
> use crate::circuit_data::{CircuitData, PyCircuitData};
> use crate::operations::{Operation, Param, add_param, clone_param, multiply_param, radd_param};
> use crate::{Qubit, gate_matrix, impl_intopyobject_for_copy_pyclass, imports};
>
> use ndarray::{Array2, aview2};
> use num_complex::Complex64;
> use smallvec::{SmallVec, smallvec};
> use std::f64::consts::PI;
>
> use numpy::{IntoPyArray, PyArray2};
> use pyo3::prelude::*;
> use pyo3::types::{IntoPyDict, PyList, PyTuple};
>
> const FLOAT_ZERO: Param = Param::Float(0.0);
>
1920,1922d1946
<
< const FLOAT_ZERO: Param = Param::Float(0.0);
<
```

[^1]: 7ceda63: Revert "Support commutation check between Pauli-based gates and standard gates (Qiskit#15488)" (Qiskit#15906)
Copy link
Copy Markdown
Collaborator

@Cryoris Cryoris left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM I verified locally that this the code matches the original with a diff 👍🏻

@Cryoris Cryoris added this pull request to the merge queue Apr 1, 2026
Merged via the queue into Qiskit:main with commit eb47a1f Apr 1, 2026
25 checks passed
@jakelishman jakelishman deleted the circuit-free-qi/7 branch April 1, 2026 08:21
@ShellyGarion ShellyGarion added this to the 2.5.0 milestone Apr 25, 2026
@github-project-automation github-project-automation Bot moved this from Ready to Done in Qiskit 2.5 Apr 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Changelog: None Do not include in the GitHub Release changelog. type: qa Issues and PRs that relate to testing and code quality

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants