Prepare the first stable release (1.8.0) - #677
Merged
Merged
Conversation
Every ACCESS-MOPPy release from moppy-v1.0.0a to moppy-v1.7.20b was a PEP 440 pre-release, so `pip install access_moppy` without `--pre` resolved to nothing and dependency solvers skipped the package by default, while pyproject.toml had already declared Development Status :: 5 - Production/Stable. The first final release is 1.8.0. Gate the CD workflow on whether the version is final. The pypi job now emits a prerelease output; update_analysis3 runs only when it is false, and the conda job uploads pre-releases to the `rc` label instead of `main`. Without this, a moppy-v1.8.0rc1 tag would open a PR putting a release candidate into the analysis3 environment, and a workflow_dispatch run could push a versioneer dev build there too. Document the versioning scheme and state what the compatibility promise covers from 1.8.0 onwards: the moppy-* commands and their documented options, the batch configuration schema, and the documented Python API. Module internals, the generated templates, the tracker database schema and the vendored controlled vocabularies are outside it, and the promise is about the interface rather than byte-identical output, since compliance fixes change file contents by design. Add the release candidate procedure and a submodule check to the maintainer release guide, and correct the command-line reference, which said MOPPy installs nine commands when it installs eleven. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #677 +/- ##
=====================================
Coverage 78.2% 78.2%
=====================================
Files 40 40
Lines 8827 8827
Branches 1665 1665
=====================================
Hits 6901 6901
Misses 1591 1591
Partials 335 335
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
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.
Preparation for leaving the beta series. No functional change to CMORisation.
Why
Every release from
moppy-v1.0.0atomoppy-v1.7.20bwas a PEP 440 pre-release —1.7.20bnormalises to1.7.20b0— sopip install access_moppywithout--preresolves to nothing and dependency solvers skip the package by default, whilepyproject.tomlhas declaredDevelopment Status :: 5 - Production/Stablefor some time. The first final release is1.8.0.The release pipeline was the blocker
update_analysis3fired on anymoppy-v*tag, so taggingmoppy-v1.8.0rc1would have opened a PR putting a release candidate into theanalysis3environment on Gadi.The
pypijob now emits aprereleaseoutput.update_analysis3runs only when it isfalse, and thecondajob uploads pre-releases to therclabel instead ofmain. The rule is "plain digits and dots (optionally.postN) is final, anything else is not", which also catches versioneer's1.8.0+2.gd472486form — so a manualworkflow_dispatchrun can no longer push a dev build intoanalysis3either.--preto installaccessnricondamainlabelrclabelanalysis3Compatibility promise
New
reference/versioning.rststates what will not change incompatibly within a major version: themoppy-*commands and their documented options, the batch configuration schema, and the documented Python API. Module internals, the generated templates, the tracker database schema and the vendored controlled vocabularies are outside it.It also says explicitly that the promise is about the interface, not byte-identical output — compliance fixes change file contents in patch releases by design, which is why the MOPPy version belongs recorded alongside a published dataset.
Also
releasing.rstgains the release-candidate procedure, the final-vs-pre-release table, and agit submodule update --init --recursivestep in the pre-tag checklist. The vocabulary submodules were locally rewound when this work started; CD verifies the vocabularies are present in the wheel but cannot tell they are the revision you meant.cli.rstsaid MOPPy installs nine commands; it installs eleven.moppy-qc-plotsandmoppy-compliance-backfillare documented in the QC how-to, now cross-referenced.Proposed release sequence
moppy-v1.8.0rc1— confirmpypiandcondago green andupdate_analysis3shows as skipped.moppy-v1.8.0on the same commit.Docs build clean with no new warnings.
🤖 Generated with Claude Code