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

Qiskit / qiskit / 34398814190
88%
main: 88%

Build:
Build:
LAST BUILD BRANCH: fix-issue-16688
DEFAULT BRANCH: main
Ran 09 Sep 2026 08:36PM UTC
Jobs 1
Files 971
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

09 Sep 2026 08:04PM UTC coverage: 88.099% (-0.004%) from 88.103%
34398814190

Pull #16933

github

mtreinish
Add a shot loop, the op that puts circuits into a program

A shot loop carries a list of circuits and a shot count, takes one operand per
circuit for that circuit's parameter values, and returns one tensor of outcomes
per classical register. Its results are the first an op derives from something
other than its operand types, so it writes its own inference rather than sharing
the catalogue's five: the register widths come from the circuits themselves, and
only the batch axes come from the operands.

An operand must be floating point with one value per parameter in its trailing
axis, so a mismatch is caught where it is made rather than when a backend rejects
the job. Axes ahead of that one are a batch prefix, carried through unchanged onto
that circuit's outcome shapes for any rank of prefix, which is how one program
sweeps many parameter sets. The shots axis is fixed, since a circuit's output
format is static even when the operations it runs are not.

Which register a result belongs to is naming, so it lives in a structure:
`output_structure` describes the results as one entry per circuit keyed by
register name, in the leaf order the results come back in, and a caller reads it
with the same vocabulary as any other structured value. A register whose name
cannot name a slot is rejected when the op is constructed, because such a result
could not be addressed at all.

This is the canonical work Qiskit cannot perform in process, so it reports no
built-in evaluation. A program containing one still builds and reports all its
types; evaluating one fails at the top, naming the instruction that needs a
backend, without computing anything first.
Pull Request #16933: Add the `ShotLoop` node

275 of 289 new or added lines in 2 files covered. (95.16%)

30 existing lines in 4 files now uncovered.

119785 of 135967 relevant lines covered (88.1%)

961099.46 hits per line

Uncovered Changes

Lines Coverage ∆ File
10
94.36
-0.86% crates/providers/src/program/program_function.rs
4
98.42
crates/providers/src/ops/shot_loop.rs

Coverage Regressions

Lines Coverage ∆ File
18
96.69
-1.42% crates/qasm2/src/parse.rs
6
81.64
-0.2% crates/circuit/src/parameter/symbol_expr.rs
5
92.03
-1.03% crates/qasm2/src/lex.rs
1
90.3
0.0% crates/circuit/src/parameter/parameter_expression.rs
Jobs
ID Job ID Ran Files Coverage
1 34398814190.1 09 Sep 2026 08:36PM UTC 971
88.1
GitHub Action Run
Source Files on build 34398814190
  • Tree
  • List 971
  • Changed 6
  • Source Changed 1
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #34398814190
  • Pull Request #16933
  • PR Base - ihincks/qp-06b-datatree-empty-branch (#34398813091)
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