Reduce test runtime and split CI into four shards - #1366
Merged
Merged
Conversation
Co-authored-by: Miles Cranmer <miles.cranmer@gmail.com>
|
Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits. |
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
Co-authored-by: Miles Cranmer <miles.cranmer@gmail.com>
Co-authored-by: Miles Cranmer <miles.cranmer@gmail.com>
MilesCranmer
previously approved these changes
Sep 12, 2026
Co-authored-by: Miles Cranmer <miles.cranmer@gmail.com>
Co-authored-by: Miles Cranmer <miles.cranmer@gmail.com>
MilesCranmer
previously approved these changes
Sep 12, 2026
Co-authored-by: Miles Cranmer <miles.cranmer@gmail.com>
Co-authored-by: Miles Cranmer <miles.cranmer@gmail.com>
Co-authored-by: Miles Cranmer <miles.cranmer@gmail.com>
MilesCranmer
approved these changes
Sep 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes
Verification
On hetzner-dev, the original suite took 35m22s; the optimized unsharded suite took 29m48s. Four isolated shards took 7m40s, 8m31s, 7m47s and 6m11s. These exclude CI setup and are not end-to-end GitHub timings.
The recorded acceptance run passed all 204 tests (203 original plus one sharding regression), four shards of 51 tests, and all 15 JAX/Torch tests. Exact test inventories and skips match. Preservation checks cover 227 original test methods and all 13 CI environment/group combinations. The sharding regression and actionlint were rerun before publication.
Upstream dependency
The clean full-suite and notebook acceptance used the installed wheel from JuliaPy/PythonCall.jl#818. Released JuliaCall can still hit the pre-existing Linux pytest shutdown crash. This PR does not pin an unreleased dependency, disable diagnostics, skip tests or relax timeouts. GitHub CI will measure the unchanged dependency configuration.
GitHub CI results
The initial sharded CI run passed all six workflows: Linux, macOS, Windows, Documentation, CodeQL and slurm. Elapsed time from workflow creation to final job completion, including setup and queueing:
The earlier Linux baseline run 34501985449 took 38m15s; this run took 16m37s, about 57% less elapsed time. These are separate hosted-runner runs, not a controlled benchmark. The Linux sum of job runtimes increased from 244.1 to 337.4 minutes because each shard repeats setup and compilation.
This CI run passed with the existing dependency configuration and no PythonCall override. The upstream shutdown crash did not reproduce here; the earlier local acceptance caveat remains relevant.
Published-package canary
The canary run completes all 189 tests on both Windows versions after capturing output through a regular file, avoiding the Julia asynchronous-output hang. Five matrix jobs pass. Windows Python 3.10 still fails the existing worker-executable test in both import orders. The upstream fix is JuliaPy/PythonCall.jl#820; the canary continues to test released packages without dependency overrides or weaker assertions.
The upstream source-build comparison passes all 189 main/startup tests on both Windows Python 3.10 and 3.14, with the same three skips and the PySR 0.9.35 compatibility assignment removed. Both import orders also launch Python successfully from a Julia worker. The original startup-test file is identical across all eight configurations. These results verify the upstream repair; deployment still requires a coordinated PythonCall/JuliaCall release and a PySR dependency-range update.