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

Qiskit / qiskit / 35909879487
88%
main: 88%

Build:
Build:
LAST BUILD BRANCH: no-str-parser/1
DEFAULT BRANCH: main
Ran 23 Sep 2026 08:05PM UTC
Jobs 1
Files 973
Run time 3min
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

23 Sep 2026 07:31PM UTC coverage: 87.905% (+0.02%) from 87.89%
35909879487

push

github

web-flow
Update the QuantumProgram node trait to support monomorphism (#16916)

* Make the op contract flat, positional, and monomorphic

An op declares its arity, whether Qiskit ships an in-process implementation of
it, how to derive its result types from its operand types, and how to evaluate
itself. Operands and results are flat slices in positional order, so an op
describes its interface as two lists rather than as a tree of named ports.

That makes a dtype concrete by construction: the polymorphism the contract used
to express as `DTypeLike::Var` and `DTypeLike::Promotion` inside static type
trees is subsumed by `infer_output_types`, which is handed real operand types.
`DTypeLike`, `DTypeVar` and `DTypePromotion` go, `TensorType` pairs a `DType`
with a shape, and with the polymorphic dtype gone it derives `PartialEq`, `Eq`
and `Hash` and renders itself as `F64[4000, <=2]`.

`Store`, which held a whole data tree, becomes `Constant`, which holds one
tensor and produces one value. The catalogue moves up beside it, so an op is
reached as `ops::Add` rather than `ops::math::Add`, and what the arithmetic,
bitwise and reduction ops share lives in `ops/inference.rs` and `ops/error.rs`.

The ops still coerce their operands: dtypes promote and shapes broadcast, as
they did when a type tree expressed it. Inference is written once per family,
with each op contributing only the dtypes it accepts, so the catalogue cannot
drift towards one rule per op. Which dtypes an op admits is checked against the
dtype its operands promote to, since that is the one it computes in. So `add`
takes a bit tensor alongside a float and refuses only two bit tensors together,
and `mean` of a bit tensor is a float, which no promotion rule could have
expressed.

A value satisfies a type rather than equalling it. `Tensor::matches` admits any
size up to a bounded axis's bound, since a tensor's shape is how much of it
means something.

Two panics a caller could reach become values instead. Averag... (continued)

749 of 850 new or added lines in 8 files covered. (88.12%)

10 existing lines in 3 files now uncovered.

119677 of 136144 relevant lines covered (87.9%)

962356.96 hits per line

Uncovered Changes

Lines Coverage ∆ File
51
75.6
crates/providers/src/ops/bitwise.rs
25
85.39
crates/providers/src/ops/reduction.rs
18
89.71
crates/providers/src/ops/binary.rs
5
93.53
-0.24% crates/providers/src/tensor/value.rs
2
98.43
crates/providers/src/ops/inference.rs

Coverage Regressions

Lines Coverage ∆ File
6
96.25
-0.47% crates/qasm2/src/parse.rs
3
92.54
0.26% crates/qasm2/src/lex.rs
1
81.66
0.03% crates/circuit/src/parameter/symbol_expr.rs
Jobs
ID Job ID Ran Files Coverage
1 35909879487.1 23 Sep 2026 08:05PM UTC 973
87.9
GitHub Action Run
Source Files on build 35909879487
  • Tree
  • List 973
  • Changed 8
  • Source Changed 5
  • Coverage Changed 8
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #35909879487
  • 395ba0f8 on github
  • Prev Build on gh-readonly-queue/main/pr-16936-26e808f290afc22a9959d070408e70dcfa0365a0 (#35902338680)
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