Skip to content

Unify the npm and PyPI package version checks - #15204

Draft
rtibbles wants to merge 2 commits into
learningequality:developfrom
rtibbles:unify-package-version-check
Draft

Unify the npm and PyPI package version checks#15204
rtibbles wants to merge 2 commits into
learningequality:developfrom
rtibbles:unify-package-version-check

Conversation

@rtibbles

Copy link
Copy Markdown
Member

Summary

  • Finalize the monorepo python publishing work
  • Update the current npm only workflow that alerts for package updates in PRs to also include PyPi packages
  • Give a mechanism for future private Python packages if needed
  • Add the newly extracted packages to the publishable packages

References

Follows up #13720.

Reviewer guidance

JS tests pass on CI.

AI usage

Used Claude Code to generalise the check across both ecosystems and write the regression test. Verified with the .github/ Jest suite and prek.

rtibbles and others added 2 commits August 15, 2026 17:25
A pull_request payload's base.sha is the base branch tip, not the fork
point. A PR sitting behind its base saw the base's own version bumps
reported back at it, inverted — widget 2.0.0 -> 1.0.0 listed as a
package that merging would publish.

Diff from the merge base instead, and check out the PR head rather than
the merge commit so the report cannot depend on how fresh GitHub's
merge ref is.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PLm9i3T5J88TshHkekaiQM
The npm version check and comment workflows become a general package
version check, driven by a table of ecosystems pairing a root directory,
a manifest filename and a reader. The PR comment gains a Registry column
so npm and PyPI packages share one table.

Publishability is now read from the manifest for both ecosystems.
pypi_publish.sh looped over every python_packages member regardless of
the workflow's paths filter, so any push touching a listed package's
pyproject.toml would have first-published the unlisted ones too. Python
packages now opt out with the Private :: Do Not Upload classifier, which
PyPI also enforces on upload, and the paths filter becomes a glob.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PLm9i3T5J88TshHkekaiQM
@github-actions github-actions Bot added DEV: dev-ops Continuous integration & deployment SIZE: medium labels Aug 16, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

DEV: dev-ops Continuous integration & deployment SIZE: medium

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant