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

sandialabs / LoQS / 41145590705

30 Oct 2026 11:37PM UTC coverage: 88.913% (+0.07%) from 88.844%
41145590705

push

github

web-flow
Close checkpointing gaps for thread executors, submitit/MPI runs and Windows (#160)

* Refuse thread executors under checkpointing

Checkpointing with a ThreadPoolExecutor ran but could silently lose
progress, so it now fails with a ValueError before any work starts.
- QuantumProgram.run refuses a thread shot_executor when checkpoint is
  on, before anything touches disk.
- MultiProgramRunner.run refuses a thread program_executor, live or
  factory-built, under item or shot checkpointing, before runner.h5.
- Minor: refusal tests per axis; a test that ledger recovery leaves a
  file this process holds open alone; parallel.md and run docstring.

Co-authored-by: claude-sonnet-5-5 <noreply@anthropic.com>
Co-authored-by: claude-opus-5-5 <noreply@anthropic.com>

* Add ExecutorSpec constructors for submitit and mpi4py

Checkpointing a submitit run needed a module-level factory stored as
source, which fails from a notebook or __main__, so ExecutorSpec gets
data-only constructors that a runner file stores and a resume rebuilds.
- ExecutorSpec.submitit(folder, cluster, **parameters) builds an
  AutoExecutor and applies parameters via update_parameters.
- ExecutorSpec.mpi4py(**kwargs) builds an MPIPoolExecutor; both store
  only data, so they pickle and round-trip through JSON and HDF5.
- Minor: merge _get_encoding_attr's per-axis branches and name the new
  constructors in its errors; round-trip, MPI stub and checkpointed
  submitit resume tests; parallel.md and docstrings.

Co-authored-by: claude-sonnet-5-5 <noreply@anthropic.com>
Co-authored-by: claude-opus-5-5 <noreply@anthropic.com>

* Recover a killed writer's ledger on Windows

Reusing a killed writer's worker_id failed on Windows, since ledger
recovery needed fcntl, so it now locks and replaces the file there too.
- The writer lock is msvcrt.locking on a byte past the file's end on
  Windows (flock elsewhere), released through a new _release_lock.
- On Windows, recovery drops its lock before the rename a... (continued)

3668 of 4406 branches covered (83.25%)

Branch coverage included in aggregate %.

11914 of 13119 relevant lines covered (90.81%)

0.91 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

95.83
/tools/multiprogramrunner.py


Source Not Available

The file "tools/multiprogramrunner.py" isn't available on github. Either it's been removed, or the repo root directory needs to be updated.

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