check:releases
Table of contents
Introduction
check:releases reports where the forge and PyPI disagree, for every releasable package of the workspace. Features, splent_cli, splent_framework and products are all checked. It only reads, and release:resume repairs what it finds.
splent check:releases
Release channels for 24 package(s)
------------------------------------------------------------------
[OK] splent_feature_shop: 12 version(s) on both channels
[X] splent_feature_recipes
1 tag(s) not on PyPI: v0.2.1
[!] splent_feature_gallery: the forge is rate limiting this token
[.] splent_feature_notes: never released
------------------------------------------------------------------
1 package(s) tagged but not on PyPI
splent_feature_recipes v0.2.1
Finish the newest one of each without bumping the version with
splent release:resume splent_feature_recipes
1 package(s) could NOT be checked, so this report does not cover them
splent_feature_gallery the forge is rate limiting this token
Not knowing is not the same as being in sync. Fix the access and run this again.
It exits 1 when anything diverged or could not be checked, and 0 when the two channels agree.
Checking one package
splent check:releases --feature notes
A bare name becomes splent_feature_<name>. A name that matches nothing exits 1 with No package named <name>.
Narrowing the report
splent check:releases --no-core --no-products --divergent-only
--no-core skips splent_cli and splent_framework. --no-products skips the products. --divergent-only prints only the packages with a problem.
Fixing what it reports
| Finding | What to do |
|---|---|
| Tagged but not on PyPI | Run the splent release:resume command it prints. It finishes the newest version without bumping it |
| On PyPI with no tag | Tag the commit that version was built from |
| Tagged with no release on the forge | Run splent release:resume for the package |
| Could not be checked | The forge or PyPI did not answer, and that is never read as “nothing there”. Fix the access it names and run it again |
Reference
| Option | Description |
|---|---|
--feature NAME |
Check one package |
--no-core |
Skip splent_cli and splent_framework |
--no-products |
Skip products |
--divergent-only |
Print only the packages with a problem |
A package is any top-level folder of the workspace with a pyproject.toml. One with no origin remote has nothing to compare, and one with an unreadable [tool.splent.release] cannot be checked.
Versions compare on the number, so v1.2.3 and 1.2.3 are the same release. Every tag is checked for its forge release, not only the newest.
A package that declares channels = ["forge"] in [tool.splent.release] is compared with the forge only, and shows as forge only by declaration. "github" is read as "forge".
Tags and releases come from the configured forge, git.splent.io by default. A token is optional, read as in check:forge. Without one the forge rate limits you quickly, private repositories stay invisible, and the run ends with Set SPLENT_FORGE_TOKEN to avoid rate limits on this command.