Skip to content

ci(python): the version updater flags a job its update would empty (#1747) - #1750

Merged
JarryShaw merged 1 commit into
mainfrom
ci/1747-updater-flags-empty-job
Oct 15, 2026
Merged

JarryShaw merged 1 commit into
mainfrom
ci/1747-updater-flags-empty-job

Conversation

@JarryShaw

Copy link
Copy Markdown
Owner

Please follow the guide below

What is the purpose of your pull request?

Tick the commit type your subject line carries.

  • fix — corrects a defect
  • feat — adds a feature
  • perf — changes performance, not behaviour
  • refactor — changes neither behaviour nor performance
  • test — tests only
  • docs — documentation only
  • ci — workflows or build tooling
  • release — bumps the version or rolls up a distribution
  • chore — anything else

Closes #1747. Since #1746, pypcap-parity holds only supported legs. Once 3.11 reaches end of life its matrix is empty, but required-checks still needs it. Under the owner's ruling, the updater retires nothing itself; it flags the job instead.

  • Detection: emptied_jobs() finds every matrix job the script reads that goes from at least one leg to none, KTLO twins and experimental.yml included. It emits a manual note naming the job, the version moves that empty it, and the jobs that needs: it. Example: "pypcap-parity would have no leg left once 3.11 moves to KTLO; retire or remove the job (and its needs: in required-checks) before merging this update."
  • Where the note shows: first in the PR body, in bold before the ruleset edit. The run also annotates it as a warning and records it in plan.json.
  • What the updater writes: the tiers exactly as computed. The fingerprint stays tiers-only, so retiring the job on main does not re-propose the update and recreate the branch.
  • Docs: the "Python Versions" paragraph of workflows.rst is updated.
  • Tests: a new test_python_versions_empty_job_1747.py (5 tests, all failing on main). The 1660, 1738, queue and doc-claims suites pass.

…1747)

Since #1746, `pypcap-parity` holds supported legs only, so 3.11 reaching
end of life leaves it an empty matrix that `required-checks` still needs.
Per the owner's ruling the updater retires nothing; it now names the job.

- `emptied_jobs()` compares every script-read matrix before and after the
  tiers move; each job going from one leg or more to none becomes a
  `manual` note naming the job, the version moves that empty it, and the
  jobs whose `needs:` list it.
- The plan carries them as `retire`; the body puts them first, in bold,
  before the ruleset edit, and not again under "Not done here".
- The tier file is written as computed. The fingerprint stays the tiers
  alone, so retiring the job on `main` does not re-propose them.
- workflows.rst's Python Versions section says so.

Tests: test_python_versions_empty_job_1747 (5, each failing on main).

Closes #1747
@JarryShaw JarryShaw added the ci Pull requests that change CI or workflow configuration (ci: subject prefix) label Oct 15, 2026
@JarryShaw

Copy link
Copy Markdown
Owner Author

Verdict: GOOD TO GO at fb36baaad. A Sonnet cross-review checked it (author: Opus).

  • Scenarios: the reviewer built its own, calling emptied_jobs directly and running a real update --out and body. With 3.11 leaving the supported tier there is one note, for pypcap-parity, naming required-checks. A KTLO twin emptying is flagged on its own. A job dropping to one leg gets no note.
  • Scope: only util/update_python_versions.py, the two tests and workflows.rst change. No workflow file and nothing under pcapkit/**.
  • Tests: the new tests fail on main and pass here.
  • My own re-run in the PR's tree: 1747 (5 passed), update_1660 (57) and unit_tests_queue (38).

@JarryShaw JarryShaw added the review: good-to-go Cross-review at the current head says ready; CI state is separate label Oct 15, 2026
@JarryShaw JarryShaw moved this to In review in PyPCAPKit Oct 15, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Coverage: 89.57% (unit tier, Python 3.15, fb36baaad, Unit Tests run success)

Package Statements Missed Branches Partial Cover
pcapkit (top level) 104 3 20 3 95.16%
pcapkit/const 18860 954 2368 868 91.06%
pcapkit/corekit 2457 69 780 35 96.54%
pcapkit/dumpkit 276 3 100 3 98.40%
pcapkit/foundation 2906 164 1016 34 93.57%
pcapkit/interface 138 7 52 5 93.68%
pcapkit/protocols 17174 225 4588 190 98.07%
pcapkit/toolkit 864 182 298 9 76.33%
pcapkit/utilities 512 2 158 4 99.10%
pcapkit/vendor 4417 2342 1010 157 43.38%

Per-file detail: the coverage-html artifact of this run.

@JarryShaw
JarryShaw merged commit 0665285 into main Oct 15, 2026
55 of 56 checks passed
@JarryShaw
JarryShaw deleted the ci/1747-updater-flags-empty-job branch October 15, 2026 01:35
@github-project-automation github-project-automation Bot moved this from In review to Done in PyPCAPKit Oct 15, 2026
@JarryShaw JarryShaw removed the review: good-to-go Cross-review at the current head says ready; CI state is separate label Oct 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci Pull requests that change CI or workflow configuration (ci: subject prefix)

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

ci(python): pypcap-parity has no leg left once 3.11 reaches end of life (after #1746)

1 participant