• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Qiskit / qiskit / 37006711080
88%
main: 88%

Build:
Build:
LAST BUILD BRANCH: no-printf
DEFAULT BRANCH: main
Ran 02 Oct 2026 12:59PM UTC
Jobs 1
Files 987
Run time 10min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

02 Oct 2026 12:26PM UTC coverage: 88.121% (-0.01%) from 88.132%
37006711080

push

github

web-flow
Define Python API for Rust-native `PassManager` (#17089)

* Define Python API for Rust-native `PassManager`

This defines a three-way split in responsibilities for exposing the
Rust-native `PassManager` to Python in a Pythonic manner, and defines
the user-facing interface we want to present, without supplying the full
implementation yet.

The three-way split of `qiskit-passmanager` (Rust), `qiskit-pyext`
(Rust) and `qiskit.passmanager` (Python) is intended to remain, and the
responsibilities are:

- `qiskit-passmanager`: the base Rust logic, which is all the actual
  business logic.  This is separately exposed to C.

- `qiskit-pyext`: low-level wrappers for the Rust logic, which define
  how the ownership/memory is shared between Rust and Python. This isn't
  directly user-facing, and is the actual Rust/Python interface.

- `qiskit.passmanager`: the Pythonic interface that users are meant to
  subclass and directly interact with.  This is defined in Python, and
  translates the high-level Pythonic interface in the low-level calls of
  the Rust-Python interface boundary in `qiskit-pyext`.  This is to keep
  the Rust-Python interface code simple, and to allow Python-native code
  to be written in Python, which is much easier and accessible for
  downstream users.

The two "interface" classes that define a subclassing interface are
defined very clearly to permit expansion of the interfaces in the
future without considering it a breaking change; we have to enforce both
that _users_ do not consume our methods (which would prevent us from
changing signatures / adding options), and that _implementers_ do not
risk naming collisions.  You can think of `Pass` (e.g.) as
defining objects that are "inputs" to Qiskit only; we're free to add
more (optional) methods or make the object have more _possible_
representations, because we know that we own all the places that can
call these objects.

The removal of `pub use qiskit_cext::*` from `pyext` is because we don't
h... (continued)

60 of 79 new or added lines in 5 files covered. (75.95%)

12 existing lines in 3 files now uncovered.

122855 of 139417 relevant lines covered (88.12%)

939567.79 hits per line

Uncovered Changes

Lines Coverage ∆ File
19
72.06
qiskit/passmanager/lowering_passmanager.py

Coverage Regressions

Lines Coverage ∆ File
6
97.19
-0.47% crates/qasm2/src/parse.rs
5
91.77
0.0% crates/qasm2/src/lex.rs
1
81.69
-0.03% crates/circuit/src/parameter/symbol_expr.rs
Jobs
ID Job ID Ran Files Coverage
1 37006711080.1 02 Oct 2026 12:59PM UTC 987
88.12
GitHub Action Run
Source Files on build 37006711080
  • Tree
  • List 987
  • Changed 6
  • Source Changed 3
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #37006711080
  • d364f0a3 on github
  • Prev Build on gh-readonly-queue/main/pr-17118-32c1f79e6133d3d0c8c65e9f8e7721038cd24152 (#36985668662)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc