Skip to content

Update Python versions#396

Draft
schuenke wants to merge 4 commits into
masterfrom
python_version
Draft

Update Python versions#396
schuenke wants to merge 4 commits into
masterfrom
python_version

Conversation

@schuenke
Copy link
Copy Markdown
Collaborator

@schuenke schuenke commented May 27, 2026

Fixes #393

@github-actions
Copy link
Copy Markdown

Coverage

Coverage Report
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.py961485%6–9, 48–51, 70–71, 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.py531572%71, 74, 77, 80, 96–98, 107, 109, 117–121, 130
   make_arbitrary_rf.py756316%95–179
   make_block_pulse.py48394%121–125, 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.py732073%142–146, 149–173, 180, 183
   make_label.py22482%64, 66, 68, 75
   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.py701086%104, 110, 138–142, 146, 149–150, 153–154, 176
   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.py4697983%63, 66, 74, 80, 95, 103, 109, 120, 123, 126, 134, 139, 148, 159, 167, 207, 209, 213, 225, 274, 278, 294, 319–345, 382–385, 421–429, 436, 466–470, 512, 518, 551, 587–594, 611, 621, 647, 685, 703, 706, 724, 738, 765, 844, 881, 905
   calc_grad_spectrum.py81766%68–190
   calc_pns.py403122%45–96
   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.py4003990%44–45, 110, 117, 130, 133–134, 138, 184, 228, 401, 422–439, 502, 505, 590, 614, 654, 685, 701–705, 712, 823, 834
   sequence.py63612880%10–13, 105–115, 136–149, 203, 268–271, 318, 362, 438, 465–470, 507, 535–538, 629, 657–666, 678, 700, 741–744, 798, 836, 847–848, 854, 865, 871, 873, 881, 914–922, 1054, 1152, 1158, 1161, 1164, 1201, 1326–1339, 1397, 1419–1421, 1442, 1505, 1513, 1611, 1622–1635, 1704–1705, 1716–1734, 1758, 1788–1796, 1832, 1846–1856
   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
   safe_pns_prediction.py12611310%50–87, 102–189, 197–214, 222, 244–250, 279–286, 310–336, 344–383, 396–411, 415
   seq_plot.py40718654%22, 106, 138–139, 159, 176–178, 183–225, 235–242, 249–314, 318–324, 328–336, 359, 361, 363, 390–412, 457–458, 461–464, 487–496, 508, 525–535, 544–546, 565–567, 569–570, 572–573, 657–658, 674–691, 739–743
   tracing.py16662%33–34, 42, 54–55, 75
/home/runner/.local/lib/python3.12/site-packages/pypulseq/utils/siemens
   asc_to_hw.py58539%21–28, 48–106
   readasc.py59788%103–104, 110–111, 122–124
TOTAL5198156570% 

Tests Skipped Failures Errors Time
1288 24 💤 0 ❌ 0 🔥 4m 54s ⏱️

@mcencini
Copy link
Copy Markdown
Collaborator

mcencini commented May 27, 2026

I was wondering, given the plan to eventually replace Unions with "|", does it make sense to support anything below 3.10 (which are also end-of-life)? Should we deprecate 3.8 and 3.9 instead of adding 3.7?

To clarify, I am perfectly fine with deferring the deprecation at later stage and adding 3.7 as long as we officially support it.

@schuenke
Copy link
Copy Markdown
Collaborator Author

There are actually some incompatibilities with scipy and matplotlib in Python 3.7. Thus, the minimum version should be 3.8 at the moment. Reducing the test matrix to 3.8 and 3.14 should be fine and avoids wasting resources on unnecessary tests.

Before changing the the Union type syntax to X | Y (which was introduced in Python 3.10), I would stick with Python 3.8 beeing the minimum version and make sure that we do another release before switching the syntax and min Python version to 3.10.

fail-fast: false
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
python-version: ["3.8", "3.14"]
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The python-version defines Python 3.8 and 3.14 jobs, but the workflow did not use version for python setup.
The current implementation will run both jobs using the default Python from ubuntu-latest.
For example, if the current ubuntu-latest image version is 24.04, the default python version is Python 3.12.

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.

Inconsistent Python Version

3 participants