Skip to content

Fix test_sequence.py for pytest >= 9.2 - #435

Merged
schuenke merged 2 commits into
masterfrom
fix_pytest
Oct 29, 2026
Merged

schuenke merged 2 commits into
masterfrom
fix_pytest

Conversation

@schuenke

@schuenke schuenke commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

There is an upstream PyTest change leading to failing tests:

We used a private import (from _pytest.python_api import ApproxBase) for our Approx class in the sequence tests. This private import no longer exists, instead a public pytest.Approx was introduced.

Our CI matrix still tests Python 3.8, and pytest 9.x requires Python >= 3.9, so that job always resolves to pytest <= 8.3 without pytest.Approx. Once Python 3.8 support is dropped, we can set pytest>=9.2, remove the _pytest.python_api fallback, and subclass pytest.Approx directly.

That would also be a good moment for a general cleanup of the TestSequence class.

@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Coverage

Coverage Report

Warning: Comment truncated due to GitHub's 65536 character limit

FileStmtsMissCoverMissing
/home/runner/.local/lib/python3.12/site-packages/pypulseq
   add_gradients.py1376056%44, 52, 58, 61, 75–86, 92, 125–128, 135–136, 155, 162, 167–263
   add_ramps.py36360%1–92
   align.py35489%41, 45, 69, 73
   calc_duration.py33294%43, 50
   calc_ramp.py2202162%48–359
   calc_rf_bandwidth.py372824%45–81, 85–89
   check_timing.py962970%78, 82, 107, 180, 199, 232, 239, 249–293
   compress_shape.py30197%28
   convert.py40880%42, 48, 66, 72–73, 82, 88–89
   event_lib.py961584%6–9, 48–51, 70–71, 185, 205–210
   make_adc.py981486%77, 80, 90–94, 97, 146, 149, 153, 159, 163, 202, 204, 206, 214
   make_adiabatic_pulse.py1323970%208–212, 232–236, 244–245, 268, 274, 343–362, 466–475, 513–521
   make_arbitrary_grad.py53492%80, 109, 118, 130
   make_arbitrary_rf.py756316%95–179
   make_block_pulse.py48198%128
   make_delay.py9189%27
   make_digital_output_pulse.py16288%42, 50
   make_extended_trapezoid.py561279%67, 70, 76, 82, 85, 88, 91, 94, 116, 134, 136, 139
   make_extended_trapezoid_area.py104496%68, 71, 261, 264
   make_gauss_pulse.py77594%171, 179–181, 196
   make_label.py21290%68, 70
   make_sigpy_pulse.py1193075%12–13, 122, 125, 129, 166–170, 174, 177–178, 181–182, 197, 204, 209, 221, 224, 249–259, 273, 276, 306–316
   make_sinc_pulse.py74593%110, 175–177, 192
   make_soft_delay.py26292%107, 125
   make_trapezoid.py111794%177, 190, 196, 214, 232, 237, 255
   make_trigger.py16288%47, 55
   opts.py66986%78, 83, 102, 142, 166–170
   points_to_waveform.py9189%27
   rotate.py691480%15, 55, 66–69, 85–90, 112, 119–120
   scale_grad.py30197%65
   sigpy_pulse_opts.py26773%34–41
   split_gradient.py393121%46–103
   split_gradient_at.py702761%63–90, 110, 114, 118–120, 154–156
   traj_to_grad.py13931%26–40
/home/runner/.local/lib/python3.12/site-packages/pypulseq/SAR
   SAR_calc.py5180%9
/home/runner/.local/lib/python3.12/site-packages/pypulseq/Sequence
   block.py4525588%64, 67, 75, 81, 96, 104, 110, 121, 124, 127, 135, 140, 149, 160, 168, 208, 210, 214, 329, 333, 336, 357, 372, 382, 393, 402, 434, 438, 447, 460, 471, 480–484, 502, 534–541, 558, 568, 594, 632, 650, 671, 685, 712, 791, 828, 852
   calc_grad_spectrum.py81766%68–190
   calc_pns.py403122%45–96
   ext_grad_check.py55296%51, 53
   ext_test_report.py1671193%79, 156, 167–168, 337–343
   install.py754244%31, 52, 69, 71, 112–131, 148, 181–184, 200–212, 254–278
   parula.py4250%19–86
   read_seq.py4084190%44–45, 110, 117, 130, 133–134, 138, 184, 223–224, 242, 415, 436–453, 516, 519, 604, 628, 668, 699, 715–719, 726, 837, 848
   sequence.py64113379%10–13, 107–117, 138–151, 205, 270–273, 320, 364, 440, 467–472, 509, 537–540, 631, 659–668, 680, 702, 743–746, 775, 801–807, 842, 853–854, 860, 871, 877, 879, 887, 920–928, 1060, 1158, 1164, 1167, 1170, 1209, 1334–1347, 1405, 1427–1429, 1450, 1513, 1521, 1619, 1630–1643, 1712–1713, 1724–1742, 1766, 1796–1804, 1840, 1854–1864
   write_seq.py362798%45, 77–79, 313, 347–349, 499
/home/runner/.local/lib/python3.12/site-packages/pypulseq/utils
   cumsum.py14193%17
   paper_plot.py63588%49–132

@fzimmermann89

Copy link
Copy Markdown
Collaborator

Agree on both the fix as well as that this might need a better solution at some point in the future

@schuenke schuenke changed the title Fix pytest workflow after upstream changes Fix test_sequence.py for pytest >= 9.2 Oct 29, 2026
@schuenke
schuenke merged commit 631ba04 into master Oct 29, 2026
4 checks passed
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.

2 participants