Conversation
CI has never measured anything: python.yml ran `pytest --cov={{packageName}}`,
an unrendered Mustache template, so coverage reported "No data to report" while
the job still exited 0. Point it at the real package.
Publishing was driven by `release: published`, which decouples the artifact from
the release name: run 29043124220 fired from the release tagged v4.21.1 but ran
against ref v4.20.0 and published 4.20.0, so 4.21.1 never reached PyPI. Trigger
on tag push instead, and fail the job when the tag does not match the version of
the distribution actually built.
Also bump the deprecated checkout@v3/setup-python@v3 actions and drop .travis.yml,
which has never reported a commit status on this repository.
Author
|
@codex review |
The hand-written packaging tests arriving with the platform-side sync read the built distribution's metadata through importlib.metadata and skip when no distribution is installed, which is exactly the regression they guard against (every release up to 4.28.0 published requires_python: None). Installing the package also makes --cov measure the installed artifact.
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.
Summary
python.ymlranpytest --cov={{packageName}}— an unrendered Mustache template. Coverage emittedCovReportWarning: No data to reportand the job still exited0. Now--cov=platform_api_python_client.release: publishedtrigger decoupled the published artifact from the release name. Run29043124220fired from the release taggedv4.21.1but ran against refv4.20.0, published4.20.0, and left4.21.1permanently absent from PyPI. Seven tags never reached PyPI in total.0or>1sdists. This would have hard-failed the 4.21.1/4.20.0 mismatch instead of silently shipping the wrong version.twine check --strictas a metadata regression guard, plusenvironment: pypiandcontents: read, and bumped the deprecatedcheckout@v3/setup-python@v3(andsetup-python@v4inpython.yml)..travis.yml.Notes for reviewers
The tag filter matches both spellings on purpose. CCL-467 specifies
tags: ["v*"], but 4 of the 31 existing tags carry novprefix (3.2.5–3.2.8). A tag matching no pattern produces no run, no error and no alert — the exact silent-skip this workflow exists to remove. Patterns are["v*", "[0-9]*"]; all 31 existing tags match.The version check deviates from the snippet in CCL-467. That snippet reads
tomllib.load(...)['project']['version'], butpyproject.tomlhas no[project]table — it declares[tool.poetry]while building with thesetuptoolsbackend (which readssetup.py). The snippet raisesKeyError: 'project'and would have failed every release. Reading the version from the built distribution is backend-agnostic and keeps working after CCL-470 moves the project to PEP 621.twine check --strictpasses on the current tree, so contrary to the ticket it would not have caught the placeholder PyPI description — it validates description rendering, not metadata completeness. It is a regression guard here; CCL-470 is what actually fixes the listing. Importantly this means the gate does not block CCL-471..gitlab-ci.ymlwas deliberately kept, departing from CCL-467's third acceptance criterion, which asks for both files to be deleted. The commit-status test below is conclusive for Travis (a GitHub App that always reports) but not for GitLab, since a one-way mirror to an internal GitLab need not report back to GitHub. Left byte-identical pending confirmation of whether such a mirror exists.python.ymlunless it is extended. All three files this PR touches are generator-owned and tracked upstream atCentML/platform:client/python/platform_api_python_client/, including a.github/workflows/python.ymlthat still contains the{{packageName}}bug. They survive today only becausesync_client.ymluses globs that skip dot-paths. CCL-468 proposescp -r .../., which does copy dotfiles and would silently restore the broken workflow and resurrect.travis.yml. That ticket must additionallygit rmthe upstream.github/workflows/python.ymland.travis.ymland add them to the platform-side.openapi-generator-ignore— ignoring alone is insufficient because the upstream copies are already tracked. A warning to this effect is in thepython.ymlheader.Out of scope, left alone deliberately:
.openapi-generator/FILESstill lists the deleted file (already stale by 26 entries; owned by CCL-468), andLICENSE/CHANGELOG.md/ real tests (CCL-470, must land upstream).Testing
actionlint .github/workflows/{publish,python}.yml— passpython -m build --sdist --wheel— pass,platform_api_python_client-4.28.0.{tar.gz,whl}twine check --strict dist/*— pass, both distributionspytest --cov=platform_api_python_client— 203 passed, TOTAL 47% (previouslyNo data to report, exit 0)1 failed, 203 passed, exit 1 (red build confirmed; canary not committed)GITHUB_REF_NAME=v4.28.0→ exit 0;4.28.0(no prefix) → exit 0;v9.9.9→ exit 1;v4.28.0-rc1→ exit 1; 0 sdists → exit 1; 2 sdists → exit 1gh api .../commits/{sha}/statusover 2024-06 → 2026-09 — 0 commit statuses ever, andgh api .../actions/workflowslists only the two workflow files plus GitHub's dynamic Dependabot/CodeQL entries, so nothing consumed.travis.ymlNot verified: the PyPI trusted-publisher settings are not visible to me. Adding
environment: pypiis inferred safe because 24 releases published with noenvironment:set, so the publisher entry cannot be pinning one. Note GitHub auto-creates the environment without protection rules — required reviewers must be added in repo settings for the approval gate to be real. The workflows themselves have not yet executed on CI.Linear