Skip to content

feat: Use SeleneStartupError for errors before shot_start - #170

Merged
jake-arkinstall merged 2 commits into
mainfrom
feat/startup-error-clarification
Apr 27, 2026
Merged

jake-arkinstall merged 2 commits into
mainfrom
feat/startup-error-clarification

Conversation

@jake-arkinstall

Copy link
Copy Markdown
Collaborator

When parsing the result stream, we may get errors arising from plugins starting up, e.g. allocation failures. These are presently raised as a SeleneRuntimeError.

While we previously used SeleneStartupError solely for situations in which the backend failed to start up and connect to the fronend, it is reasonable to also include scenarios in which the backend started but failed to load components under this banner.

This helps distinguish situations where the fault is certainly a configuration issue vs those that may be the result of instructions from the user program.

@jake-arkinstall
jake-arkinstall marked this pull request as ready for review April 27, 2026 15:33
Copilot AI review requested due to automatic review settings April 27, 2026 15:33

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Reclassifies errors that occur while parsing the result stream before the first SHOT_START as SeleneStartupError (instead of SeleneRuntimeError), to better distinguish startup/configuration failures from user-program runtime failures.

Changes:

  • Update result-stream shot extraction to raise SeleneStartupError for errors encountered before SHOT_START.
  • Adjust unit tests to expect SeleneStartupError for plugin startup/allocation failures that occur before any shot begins.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
selene-sim/python/selene_sim/result_handling/extract_shot.py Raises SeleneStartupError for pre-shot-start failures while extracting a shot from the stream.
selene-sim/python/tests/test_unparsed.py Updates unparsed-stream tests to assert SeleneStartupError for pre-shot-start failures.
selene-sim/python/tests/test_guppy.py Updates parsed-interface test to expect SeleneStartupError for plugin-load failure.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread selene-sim/python/selene_sim/result_handling/extract_shot.py Outdated
Comment thread selene-sim/python/selene_sim/result_handling/extract_shot.py
@jake-arkinstall
jake-arkinstall merged commit 85c2907 into main Apr 27, 2026
10 checks passed
@jake-arkinstall
jake-arkinstall deleted the feat/startup-error-clarification branch April 27, 2026 19:16
jake-arkinstall pushed a commit that referenced this pull request Apr 28, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.2.15](selene-sim-v0.2.14...selene-sim-v0.2.15)
(2026-04-28)


### Features

* Use SeleneStartupError for errors before shot_start
([#170](#170))
([85c2907](85c2907))


### Bug Fixes

* make qir-qis optional and stabilize CI
([#164](#164))
([e52c0b2](e52c0b2))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
jake-arkinstall added a commit that referenced this pull request Jun 12, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.3.0-alpha.1](selene-sim-v0.3.0-alpha.0...selene-sim-v0.3.0-alpha.1)
(2026-06-12)


### ⚠ BREAKING CHANGES

* Use struct exports for all plugin types, separate error model and
simulator ([#169](#169))
* Add handling for an additional gateset
([#119](#119))

### Features

* Add __version__ attributes
([#137](#137))
([379ae01](379ae01))
* Add event hook which records measurement results
([#104](#104))
([01300ee](01300ee)),
closes [#103](#103)
* Add handling for an additional gateset
([#119](#119))
([5180b80](5180b80))
* Add simulate_delay functionality
([#139](#139))
([cca97fa](cca97fa))
* Add support for object files provided as bytes
([#94](#94))
([c4cfac6](c4cfac6))
* add timing to builtin runtimes and batching options to softrz runtime
([#158](#158))
([049e123](049e123))
* Better exception handling for parse_shots=False
([#70](#70))
([3caf530](3caf530))
* Build improvements
([#142](#142))
([12f399b](12f399b))
* Bump selene-core dependency and relax guppylang testing dependency
([#120](#120))
([6375791](6375791))
* Cleanup error'd processes before log collection
([#98](#98))
([77e698e](77e698e))
* **compiler:** Bump tket version; add wasm + gpu to the hugr-qis
registry
([c69155d](c69155d))
* correct shot end strategy and error processing
([#91](#91))
([93eaeb0](93eaeb0))
* Emit a nicer error when trying to emulate unsupported pytket ops
([#72](#72))
([d88a28a](d88a28a))
* Fine-grained timeout configuration
([#69](#69))
([072842e](072842e))
* Interactive use of Selene from python
([#135](#135))
([db3028d](db3028d))
* Make interfaces shared, add ArgReader
([#171](#171))
([143e742](143e742))
* QIR support using QIR-QIS
([#114](#114))
([70ab294](70ab294))
* Quest performance improvements
([#133](#133))
([af640e9](af640e9))
* random_advance ([#55](#55))
([974b496](974b496))
* Record simulated delays in event hooks
([#154](#154))
([608884a](608884a))
* Result stream handling refactor
([#93](#93))
([607a55e](607a55e))
* Stim improvements (more ops + state printing)
([#115](#115))
([867d5e5](867d5e5))
* Support state-dump passthrough on quantum replay simulator
([#108](#108))
([1b01a01](1b01a01))
* test on QIS instead of relying on the upper stack
([#150](#150))
([b80a9c4](b80a9c4))
* Test on QIS snapshots
([#134](#134))
([c4d58ab](c4d58ab))
* Traces for analytics
([#160](#160))
([24b9978](24b9978))
* update to tket-qsystem 0.20
([#66](#66))
([7191b07](7191b07))
* Use mingw instead of msvc for windows wheels
([#143](#143))
([3d91514](3d91514))
* Use SeleneStartupError for errors before shot_start
([#170](#170))
([85c2907](85c2907))
* Use struct exports for all plugin types, separate error model and
simulator ([#169](#169))
([c44a5c9](c44a5c9))


### Bug Fixes

* add `___barrier` to Helios QIS for QIR emulation
([#136](#136))
([dfbc4c3](dfbc4c3))
* Add ENDING to allowed shot state on receiving meta information
([#100](#100))
([fc4d673](fc4d673))
* Add numpy dependency back
([#127](#127))
([c9a01eb](c9a01eb))
* avoid using qir_major_version string for QIR detection
([#123](#123))
([deaa0dc](deaa0dc))
* classify lowered qir-qis bitcode as helios
([#157](#157))
([67fca60](67fca60))
* **compiler:** error when entrypoint has arguments
([#84](#84))
([604b131](604b131))
* **compiler:** update tket-qystem to fix CZ bug
([#78](#78))
([3991f11](3991f11))
* correct post_runtime duration metric
([#74](#74))
([0bef66a](0bef66a))
* make qir-qis optional and stabilize CI
([#164](#164))
([e52c0b2](e52c0b2))


### Documentation

* add repository citation guidance and metadata
([#146](#146))
([880a58b](880a58b)),
closes [#145](#145)
* Correct URL to guppy repository
([#121](#121))
([27ded00](27ded00))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: Jake Arkinstall <65358059+jake-arkinstall@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants