Skip to content

Prepare the first stable release (1.8.0) - #677

Merged
rbeucher merged 1 commit into
mainfrom
release/prepare-1.8.0
Aug 27, 2026
Merged

Prepare the first stable release (1.8.0)#677
rbeucher merged 1 commit into
mainfrom
release/prepare-1.8.0

Conversation

@rbeucher

Copy link
Copy Markdown
Member

Preparation for leaving the beta series. No functional change to CMORisation.

Why

Every release from moppy-v1.0.0a to moppy-v1.7.20b was a PEP 440 pre-release — 1.7.20b normalises to 1.7.20b0 — so pip install access_moppy without --pre resolves to nothing and dependency solvers skip the package by default, while pyproject.toml has declared Development Status :: 5 - Production/Stable for some time. The first final release is 1.8.0.

The release pipeline was the blocker

update_analysis3 fired on any moppy-v* tag, so tagging moppy-v1.8.0rc1 would have opened a PR putting a release candidate into the analysis3 environment on Gadi.

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. The rule is "plain digits and dots (optionally .postN) is final, anything else is not", which also catches versioneer's 1.8.0+2.gd472486 form — so a manual workflow_dispatch run can no longer push a dev build into analysis3 either.

Final release Pre-release
PyPI published published, --pre to install
accessnri conda main label rc label
analysis3 updated not updated

Compatibility promise

New reference/versioning.rst states what will not change incompatibly within a major version: 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.

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.rst gains the release-candidate procedure, the final-vs-pre-release table, and a git submodule update --init --recursive step 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.rst said MOPPy installs nine commands; it installs eleven. moppy-qc-plots and moppy-compliance-backfill are documented in the QC how-to, now cross-referenced.

Proposed release sequence

  1. Merge this.
  2. Tag moppy-v1.8.0rc1 — confirm pypi and conda go green and update_analysis3 shows as skipped.
  3. Tag moppy-v1.8.0 on the same commit.

Docs build clean with no new warnings.

🤖 Generated with Claude Code

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

codecov Bot commented Aug 27, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 78.2%. Comparing base (d472486) to head (85b73f7).

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           
Flag Coverage Δ
unit 78.2% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@rbeucher
rbeucher merged commit f2307f7 into main Aug 27, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant