Skip to content

Prepare 0.3.0rc1, check release tags, backfill the changelog, test Python 3.15 - #91

Merged
ryan-kipawa merged 3 commits into
masterfrom
release/0.3.0rc1
Nov 12, 2026
Merged

ryan-kipawa merged 3 commits into
masterfrom
release/0.3.0rc1

Conversation

@ryan-kipawa

@ryan-kipawa ryan-kipawa commented Nov 12, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Prepares the first release candidate of 0.3.0. pyproject.toml is still the only place the version is set (mikecore.__version__ reads it from the installed package metadata). Publishing now fails if the release tag doesn't match it.

 pyproject.toml
-version = "0.3.0a1"
+version = "0.3.0rc1"

 .github/workflows/build_package.yml  (build job)
   checkout
+  on release: fail unless tag == "v" + pyproject version
   install uv → build wheel → test wheel → publish

 .github/CODEOWNERS
-* @JesperGr
+* @JesperGr @ryan-kipawa @ecomodeller

 CHANGELOG.md
-[Unreleased]: .../compare/v0.3.a1...HEAD
+[Unreleased]: .../compare/v0.2.2...HEAD
+## [0.2.2] … ## [0.1.0]   (backfilled, one per final release)

The changelog doesn't list alpha, beta or rc releases, so [Unreleased] now compares against the last final release, 0.2.2.

The changelog now also has a section for each past final release, 0.1.0 to 0.2.2: 0.1.0, 0.1.2, 0.1.3, 0.1.4, 0.2.0, 0.2.1 and 0.2.2. There was never a final 0.1.1. Dates are PyPI upload dates. Only v0.1.0 and v0.2.2 were tagged. The other releases were matched to the commit whose mikecore/*.py equals the PyPI wheel exactly, and their links compare those commits.

Python 3.15 replaces 3.14 as the newest version tested in CI (full_test.yml: 3.11 and 3.15, test_mikeio.yml: 3.12 and 3.15). It is also added to the classifiers and to the ADR 0001 end-of-life table. The CHANGELOG now says mikecore supports Python 3.11 to 3.15. requires-python stays >=3.11, with no upper limit.

Starting with this release, tags use the exact package version: v0.3.0rc1. Earlier tags used a different form (v0.3.a1).

Evidence

  • Before: a release tagged v0.3.rc1 would publish whatever version pyproject.toml held.
    After: the tag check, run locally against this branch:

    tag v0.3.0rc1 → OK
    tag v0.3.rc1  → FAIL: does not match pyproject.toml version 0.3.0rc1
    
  • uv run pytest: 342 passed, 1 skipped, 8 xfailed, on Python 3.11 and 3.15.2 locally. The PR's test jobs pass on Ubuntu and Windows × 3.11/3.15. This includes tests/test_version.py, which checks that __version__ equals the metadata version.

  • MIKE IO downstream suite (run on cd85019, MIKE IO main, Ubuntu/Windows × Python 3.12/3.15; earlier run with 3.14 failed the same way): failed on all 4 jobs, but the failures predate this PR. The same tests fail on master (d2048e6) and every other branch run since.

    Test Jobs Cause
    test_eum.py::test_eum_conversion all 4 ValueError: <eumItem.eumICarbonEmmisionFactor: 110321> is not a valid EUMType. The bundled 2026 EUM has items MIKE IO's EUMType doesn't know yet. Needs a MIKE IO fix.
    test_dfs2.py::test_select_area_rotated_UTM_2 Ubuntu Exact float comparison: -22.238790239263466 == -22.238790239263462. The test needs a tolerance.

    Other tests: 1157 passed (Ubuntu), 1057 passed + 101 skipped (Windows).

Merge Danger

Door: two-way

Merging publishes nothing. 0.3.0rc1 reaches PyPI only when someone publishes the v0.3.0rc1 GitHub pre-release after this merges. That step can't be undone: a PyPI version can't be uploaded again.

Blast Radius: releases

The tag check runs only on release events. A wrongly named tag stops the publish; nothing else is affected. The new code owners will be requested to review every PR.

🤖 Generated with Claude Code

Set the version to 0.3.0rc1. pyproject.toml stays the only place the
version is set; the build workflow now refuses to publish a release whose
tag is not v<version>. Point the Unreleased changelog link at v0.2.2, as
pre-releases get no changelog section. Add ryan-kipawa and ecomodeller
as code owners.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ryan-kipawa

Copy link
Copy Markdown
Collaborator Author

Downstream MIKE IO suite (mikeio main) run on this branch: https://github.com/DHI/mikecore-python/actions/runs/43187794146

@ryan-kipawa

Copy link
Copy Markdown
Collaborator Author

MIKE IO run result: failed on all 4 jobs, but the failures predate this PR. The same tests fail on the earlier runs, including master (d2048e6):

  • tests/test_eum.py::test_eum_conversion (all jobs): ValueError: <eumItem.eumICarbonEmmisionFactor: 110321> is not a valid EUMType. The bundled 2026 EUM has items MIKE IO's EUMType doesn't know yet.
  • tests/test_dfs2.py::test_select_area_rotated_UTM_2 (Ubuntu only): -22.238790239263466 == -22.238790239263462. An exact float comparison, last-digit difference.

Other tests: 1057–1157 passed per job.

Add a section for each final release on PyPI. Pre-releases get no
section. Untagged releases are matched to the commit whose source equals
the PyPI wheel, and their links compare those commits.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ryan-kipawa ryan-kipawa changed the title Prepare 0.3.0rc1 and check release tags against pyproject.toml Prepare 0.3.0rc1, check release tags, backfill the changelog Nov 12, 2026
Run the test and MIKE IO workflows on 3.15 instead of 3.14, add the 3.15
classifier, add 3.15 to the ADR 0001 end-of-life table, and note the
supported range (3.11 to 3.15) in the changelog.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ryan-kipawa ryan-kipawa changed the title Prepare 0.3.0rc1, check release tags, backfill the changelog Prepare 0.3.0rc1, check release tags, backfill the changelog, test Python 3.15 Nov 12, 2026
@ryan-kipawa
ryan-kipawa merged commit 32d6e89 into master Nov 12, 2026
10 of 14 checks passed
@ryan-kipawa
ryan-kipawa deleted the release/0.3.0rc1 branch November 12, 2026 09:16
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