Repository navigation
Commit c8fc05c
committed
Install only the dependency group each CI job needs
The 3.14t (free-threaded) test jobs took 4-6x longer than every other
matrix entry: 227s on Linux, 268s on macOS, 466s on Windows, versus
~60-100s elsewhere.
The tests were never the problem. Splitting run 33980426857 by step
shows pytest itself finishing in 30s on 3.14t versus 34s on 3.14 --
the free-threaded build is marginally faster. The time went entirely
to "Install the project", 172s versus 5s. The install log pinpoints
it: zensical has no cp314t wheel on PyPI, so uv compiled the Rust
extension from source, taking 2m46s.
zensical is a docs dependency that the test job never uses. It was
pulled in because the job ran `uv sync --all-extras --dev`, and the
dev group carries zensical alongside mypy, ruff, ty, ipython and
prek. (`--all-extras` was also a no-op; the project defines no
optional-dependencies.) The repo already had a purpose-built `test`
group that was going unused.
Switch each workflow to the group it actually needs. `--no-default-
groups` is required because uv syncs `dev` by default, so a bare
`--group test` still drags zensical in.
Measured on a real 3.14t interpreter with a cold cache: install drops
from 100s to 2.0s, and the suite still reports 1856 passed, 2 skipped
with 99% coverage. The quality and docs jobs shed unused packages too,
72 -> 10 and 72 -> 36 respectively; those run only on non-free-threaded
3.14 where wheels exist, so the gain there is download time rather than
a compile. Verified by running each job's real command against a clean
group-only venv: all 14 prek hooks pass, and `zensical build -s`
reports no issues.
This was purely a CI packaging artifact. Nothing about cmd2 on
free-threaded Python is slow.
Claude-Session: https://claude.ai/code/session_018CfZY5p6TbSt3WtNrwU1Ej1 parent bf2a3ba commit c8fc05c
3 files changed
Lines changed: 3 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
29 | | - | |
| 29 | + | |
30 | 30 | | |
31 | 31 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
31 | | - | |
| 31 | + | |
32 | 32 | | |
33 | 33 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
36 | | - | |
| 36 | + | |
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| |||
0 commit comments