From 41764fc548fed2760473cc866792683698fe72a7 Mon Sep 17 00:00:00 2001 From: Francesco Murdaca Date: Mon, 27 Apr 2026 12:56:27 +0000 Subject: [PATCH] chore: release 0.2.0 --- CHANGELOG.md | 8 +++ RELEASING.md | 146 +++++++++++++++++++++++++++++++++----------- metoppy/__init__.py | 2 +- pyproject.toml | 2 +- 4 files changed, 122 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b48387f..a29db7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ All notable changes to this project are documented in this file. + +# 0.2.0(2026-04-27) + +### Features + +- Enable with syntax using the new MetopReader.dataset method. ([#17](https://github.com/eumetsat/MetopPy/pull/17)) ([938fe62](https://github.com/eumetsat/MetopPy/commit/acb2a3a795160f02826ce5a1bd1c8abea11a9a40)) + + # 0.1.0 (2025-11-06) First release of metoppy Python package. diff --git a/RELEASING.md b/RELEASING.md index d6894c1..dd6da53 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -1,36 +1,70 @@ # Releasing metoppy -0. Make sure the code references the correct new version you want in the pyproject.yaml and in the __init__.py -1. checkout main branch: `git checkout main` -2. pull from repo: `git pull` -3. run the unittests with pytest. -4. Update the `CHANGELOG.md` file using vim or similar. (`source REPO_URL="https://github.com/eumetsat/MetopPy"`, then `git log --pretty=format:"- %s ([%h]($REPO_URL/commit/%H)) (%an, %ad)" --date=short > CHANGELOG_UNRELEASED.md` You can use `git log $(git describe --tags --abbrev=0)..HEAD --pretty=format:"- %s (%h)" > CHANGELOG_UNRELEASED.md` to generate the list of commits and PR used also) +## Prepare changelog and tag + +### 0. Pull latest main and create new branch +```bash +git checkout main +git pull +git checkout -b release/vX.Y.Z ``` -### Bug Fixes -* Force ansible roles download when new versions exist ([#22](https://github.com/ewcloud/ewccli/pull/22)) ([#3](https://github.com/ewcloud/ewccli/issues/3)) ([9263391](https://github.com/ewcloud/ewccli/commit/92633917a71d3cf5cf6aea23f4fef83e052f3f92)) -* Remove dependency not used ([#19](https://github.com/ewcloud/ewccli/pull/19)) ([#6](https://github.com/ewcloud/ewccli/issues/6)) ([d44135b](https://github.com/ewcloud/ewccli/commit/d44135bbaf8864722dc324f201d0ad4f61c5a89d)) + +### 1. Prepare the version bump + +Update the version in: + +- `pyproject.toml` +- `metoppy/__init__.py` + +### 2. Run the full test suite (it will be run also in the PR but anyway) +```bash +pytest +``` + +### 3. Update the CHANGELOG +Generate the list of commits since the last tag and update the `CHANGELOG.md` file using vim or similar. (You can use for example `git log $(git describe --tags --abbrev=0)..HEAD --pretty=format:"- %s (%h)" > CHANGELOG_UNRELEASED.md` to generate the list of commits and PR used also) +``` +### Features + +- Enable with syntax using the new MetopReader.dataset method. ([#17](https://github.com/eumetsat/MetopPy/pull/17)) ([938fe62](https://github.com/eumetsat/MetopPy/commit/acb2a3a795160f02826ce5a1bd1c8abea11a9a40)) +``` + +### 4. Commit the release changes +```bash +git add CHANGELOG.md pyproject.toml metoppy/__init__.py +git commit --cleanup=whitespace -m "chore: release X.Y.Z" ``` -5. git add CHANGELOG.md -6. git commit --cleanup=whitespace # commit title and body to be added. Example below: + ``` chore: 0.2.0 [skip ci] -# [0.2.0](https://github.com/ewcloud/ewccli/compare/0.1.1...0.2.0) (2025-10-14) +# [0.2.0](https://github.com/ewcloud/metoppy/compare/0.1.1...0.2.0) (2025-10-14) ### Features -- feat: Use defaultSecurityGroups and checkDNS from items index [b77b43b](https://github.com/ewcloud/ewccli/commit/b77b43b3916438e476606b58b965712bc08a407d) -- feat: Introduce checkDNS for items ([#29](https://github.com/ewcloud/ewccli/pull/29)) [7f98a6a](https://github.com/ewcloud/ewccli/commit/7f98a6ab9dcb96825f259663aac8445daaee1b1d) -- feat: bump versions ([#26](https://github.com/ewcloud/ewccli/pull/26)) [78adb02](https://github.com/ewcloud/ewccli/commit/78adb024771c7a3bc8da83c1325c51a171259557) +- feat: Use defaultSecurityGroups and checkDNS from items index [b77b43b](https://github.com/ewcloud/metoppy/commit/b77b43b3916438e476606b58b965712bc08a407d) +- feat: Introduce checkDNS for items ([#29](https://github.com/ewcloud/metoppy/pull/29)) [7f98a6a](https://github.com/ewcloud/metoppy/commit/7f98a6ab9dcb96825f259663aac8445daaee1b1d) +- feat: bump versions ([#26](https://github.com/ewcloud/metoppy/pull/26)) [78adb02](https://github.com/ewcloud/metoppy/commit/78adb024771c7a3bc8da83c1325c51a171259557) ### Bug Fixes -- fix: Set DNS check to 15 minutes [9f24e2f](https://github.com/ewcloud/ewccli/commit/9f24e2f5a7584db980eb0863fc9ab57521536151) -- fix: ewc hub list command item name should show all name always ([#25](https://github.com/ewcloud/ewccli/pull/25)) [e4869fc](https://github.com/ewcloud/ewccli/commit/e4869fcd4757910160ec68894417fae76ca622b5) +- fix: Set DNS check to 15 minutes [9f24e2f](https://github.com/ewcloud/metoppy/commit/9f24e2f5a7584db980eb0863fc9ab57521536151) +- fix: ewc hub list command item name should show all name always ([#25](https://github.com/ewcloud/metoppy/pull/25)) [e4869fc](https://github.com/ewcloud/metoppy/commit/e4869fcd4757910160ec68894417fae76ca622b5) +``` + +### 5. Open a Pull Request titled: `Release X.Y.Z`and Request review from a colleague. +Push your branch: + +```bash +git push -u origin release/vX.Y.Z + ``` -7. Create a tag with the new version number, eg: + +### 6. Once approved and CI pass, merge the PR. + +### 7. Pull the updated main locally and create a tag with the new version number, eg: ``` - git tag -a -m "Version " + git tag -a -m "Version " ``` For example if the previous tag was `0.1.1` and the new release is a @@ -42,23 +76,15 @@ chore: 0.2.0 [skip ci] See [semver.org](http://semver.org/) on how to write a version number. -8. Push commits `git push` -9. Push tags to github `git push --follow-tags` -10. Verify github action unittests passed. -11. Create a "Release" on GitHub by going to - https://github.com/eumetsat/MetopDatasets.jl/releases and clicking "Draft a new release". - On the next page enter the newly created tag in the "Tag version" field, - "Version X.Y.Z" in the "Release title" field, and paste the markdown from - the changelog (the portion under the version section header) in the - "Describe this release" box. Finally click "Publish release". +### 8. Push tags to GitHub `git push --follow-tags` -12. Now you can start the process to release on PyPI (only admins) +## Release on PyPI (only admins with PyPI keys) -12.1 Build package +### 1. Build package -Now generate the distribution. To build the package, use PyPA build. +To build the package and generate the distribution, use PyPA build. -1. Install the build tool +#### 1.1. Install the build tool ```bash pip install -q build ``` @@ -69,9 +95,9 @@ python3 -m build you will end up with a `/dist` file. The .whl file and .tar.gz can then be distributed and installed or pushed to PyPI. -9.2 Push package to PyPI +### 2. Push package to TestPyPI -Install twine +#### 2.1. Install twine ```bash pip install twine ``` @@ -81,8 +107,60 @@ If you want to test first, use TestPyPI: twine upload --repository testpypi dist/* ``` +You'll be prompted for your TestPyPI username & password. + +Once done check on [TestPyPI](https://test.pypi.org/). + +### 3. Push package to PyPI + To upload your package to PyPI, use Twine: ```bash twine upload dist/* ``` -You'll be prompted for your PyPI username & password. \ No newline at end of file +You'll be prompted for your PyPI username & password. + +## Release on conda-forge (only admins) NOT AVAILABLE YET, SKIP FOR NOW. + +Once release is on PyPI, you can create the change on conda-forge (only admins) https://www.pyopensci.org/python-package-guide/tutorials/publish-conda-forge.html# + +Step 1: Install grayskull + +```bash +pip install grayskull +``` + +Step 2: Fork and clone the conda-forge staged-recipes repository + +```bash +git clone git@github.com:conda-forge/staged-recipes.git +``` + +Step 3: Create your conda-forge recipe + +```bash +cd staged-recipes/ +``` + +```bash +cd examples/ +``` + +```bash +grayskull pypi metoppy +``` + +When you run grayskull, it will grab the latest distribution of your package from PyPI and will use that to create a new recipe. + +The recipe will be saved in a directory named after your package’s name, wherever you run the command. + +recipes/packagename/meta.yaml + +Step 3b: Bug fix - add a home url to the about: section + +There is currently a small bug in Grayskull where it doesn’t populate the home: element of the recipe. If you don’t include this, you will receive an error message from the friendly conda-forge linter bot. + +Step 4: tests for conda-forge + +If you need to + +Step 4: Submit a pull request to the staged-recipes repository diff --git a/metoppy/__init__.py b/metoppy/__init__.py index 73f4223..0b7b15d 100644 --- a/metoppy/__init__.py +++ b/metoppy/__init__.py @@ -11,7 +11,7 @@ """Metoppy package initialization.""" # Optional: version info -__version__ = "0.1.1" +__version__ = "0.2.0" # Import main classes/functions from .metopreader import MetopReader diff --git a/pyproject.toml b/pyproject.toml index 1e537ca..54fe929 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "metoppy" -version = "0.1.1" +version = "0.2.0" description = "Python package wrapper of MetopDatasets.jl Julia package for reading products from the METOP satellites." authors = [ { name = "Simon Kok Lupemba", email = "simon.koklupemba@eumetsat.int" },