Release PyGMT v0.12.0
seisman opened this issue ยท 17 comments
Release: v0.12.0
Scheduled Date: 2024/05/01
Pull request due date: 2024/04/28
Priority PRs/issues to complete prior to release
Before release:
- Check SPEC 0 to see if we need to bump the minimum supported versions of GMT, Python and core package dependencies (NumPy/Pandas/Xarray) [@seisman]
- Run
make codespell
to check common misspellings. If there are any, either fix them or add them toignore-words-list
inpyproject.toml
- Check to ensure that:
- All tests pass in the "GMT Legacy Tests" workflow
- All tests pass in the "GMT Dev Tests" workflow
- All tests pass in the "Doctests" workflow
- Deprecations and related tests are removed for this version by running
grep --include="*.py" -r 'remove_version="vX.Y.Z"' pygmt
from the base of the repository
- Reserve a DOI on Zenodo by clicking on "New Version"
10.5281/zenodo.11062720
- Finish up 'Changelog entry for v0.x.x' Pull Request: #3201
- Add a new entry in
doc/_static/version_switch.js
for documentation switcher - Update
CITATION.cff
and BibTeX at https://github.com/GenericMappingTools/pygmt#citing-pygmt- Update authorship list
- Update DOI (and url for BibTeX)
- Update version
- Update date released
- Add the documentation link
doc/minversions.md
- Add minimum required version information
doc/minversions.md
- Copy draft changelog from Release Drafter and edit it to look nice (see maintainers guide for details)
- Add a new entry in
Release:
- At the PyGMT release page on GitHub:
- Edit the draft release notes with the finalized changelog
- Set the tag version and release title to vX.Y.Z
- Make a release by clicking the 'Publish Release' button, this will automatically create a tag too
- Manually upload the pygmt-vX.Y.Z.zip and baseline-images.zip files to https://zenodo.org/deposit, ensure that it is filed under the correct reserved DOI
After release:
- Update conda-forge pygmt-feedstock [Done automatically by conda-forge's bot, but remember to pin SPEC0 versions] conda-forge/pygmt-feedstock#30
- Bump PyGMT version on https://github.com/GenericMappingTools/try-gmt (after conda-forge update) GenericMappingTools/try-gmt#53
- Announce the release on:
- GMT forum (do this announcement first! draft on https://hackmd.io/@pygmt. requires moderator status) https://hackmd.io/@pygmt/v0-12-0_announcement
- ResearchGate (after forum announcement, add new version as research item via the code category, be sure to include the corresponding new Zenodo DOI)
- Party ๐ (don't tick before all other checkboxes are ticked!)
@GenericMappingTools/pygmt-maintainers
It has been 2.5 months since the release of PyGMT v0.11.0 and there are more than 100 commits since then. I think it's time to prepare for the v0.12.0 release.
Please review your PRs/issues and see if there are any PRs/issues that you want to address before v0.12.0.
@weiji14 Please reserver a DOI on Zenodo. I can do it to GMT and GSHHG, but not PyGMT and DCW. Not sure why.
@weiji14 Please reserver a DOI on Zenodo.
Ok, DOI reserved: 10.5281/zenodo.11062720
.
I can do it to GMT and GSHHG, but not PyGMT and DCW. Not sure why.
Same issue as before at #601 (comment), we can continue the discussion there, maybe we need to email someone at Zenodo?
Starting draft announcement at https://hackmd.io/@pygmt/v0-12-0_announcement
Starting draft announcement at https://hackmd.io/@pygmt/v0-12-0_announcement
Thanks for the initiation @weiji14. Made already a few adjustments.
Starting draft announcement at https://hackmd.io/@pygmt/v0-12-0_announcement
Thanks for the initiation @weiji14. Made already a few adjustments.
Thanks @weiji14 for setting up the release draft. I also made some adjustments.
In the "GMT Legacy Tests" workflow, we have some failures with geopandas inputs, e.g.,:
=================================== FAILURES ===================================
______________ test_geopandas_info_shapely[multipolygon-desired0] ______________
geojson = <shapely.geometry.multipolygon.MultiPolygon object at 0x7fb12b12cb50>
@contextmanager
def tempfile_from_geojson(geojson):
"""
Saves any geo-like Python object which implements ``__geo_interface__`` (e.g. a
geopandas.GeoDataFrame or shapely.geometry) to a temporary OGR_GMT text file.
Parameters
----------
geojson : geopandas.GeoDataFrame
A geopandas GeoDataFrame, or any geo-like Python object which
implements __geo_interface__, i.e. a GeoJSON.
Yields
------
tmpfilename : str
A temporary OGR_GMT format file holding the geographical data.
E.g. '1a2b3c4d5e6.gmt'.
"""
with GMTTempFile(suffix=".gmt") as tmpfile:
import geopandas as gpd
Path(tmpfile.name).unlink() # Ensure file is deleted first
ogrgmt_kwargs = {"filename": tmpfile.name, "driver": "OGR_GMT", "mode": "w"}
try:
# OGR_GMT only supports 32-bit integers. We need to map int/int64
# types to int32/float types depending on if the column has an
# 32-bit integer overflow issue. Related issues:
# https://github.com/geopandas/geopandas/issues/967#issuecomment-842877704
# https://github.com/GenericMappingTools/pygmt/issues/2497
> if geojson.index.name is None:
E AttributeError: 'MultiPolygon' object has no attribute 'index'
../pygmt/helpers/tempfile.py:142: AttributeError
During handling of the above exception, another exception occurred:
> ???
fiona/_shim.pyx:83:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> ???
E fiona._err.CPLE_OpenFailedError: <fiona.io.MemoryFile object at 0x7fb12b1ed340>: No such file or directory
fiona/_err.pyx:291: CPLE_OpenFailedError
but these tests pass in the "Tests" workflow, so I'm not sure what's happening.
The "GMT Dev Tests" workflow also fail, because cftime is incompatible with numpy 2.x (https://github.com/GenericMappingTools/pygmt/actions/runs/8871676257). In #3208, I pinned numpy to v1.x and there are some failures (https://github.com/GenericMappingTools/pygmt/actions/runs/8872483491/job/24356892546?pr=3208), because geopandas v1.0.0-alpha changes its default engine from fiona to pyogrio (https://github.com/geopandas/geopandas/releases/tag/v1.0.0-alpha1). I guess we need to migrate from fiona to pyogrio in either this release or next release (https://geopandas.org/en/latest/docs/user_guide/fiona_to_pyogrio.html).
Ok release has been tagged at https://github.com/GenericMappingTools/pygmt/releases/tag/v0.12.0, and Zenodo upload done at https://doi.org/10.5281/zenodo.11062720. Gonna go to bed now, and sort out the conda-forge bot update tomorrow (unless someone else gets to it first).
In the meantime, feel free anyone to update the forum post draft. Seems like there are more deprecation warnings to add?
Ok release has been tagged at https://github.com/GenericMappingTools/pygmt/releases/tag/v0.12.0, and Zenodo upload done at https://doi.org/10.5281/zenodo.11062720.
Thanks for making the release @weiji14 !
In the meantime, feel free anyone to update the forum post draft. Seems like there are more deprecation warnings to add?
Hm, you mean we may want to add a separate section with the deprecations in this release, mentioning:
* Figure.plot/plot3d/rose: Remove deprecated parameter "color", use "fill" instead (deprecated since v0.8.0) ([#3032](https://github.com/GenericMappingTools/pygmt/pull/3032))
* Figure.velo: Remove deprecated parameters "color"/"uncertaintycolor", use "fill"/"uncertaintyfill" instead (deprecated since v0.8.0) ([#3034](https://github.com/GenericMappingTools/pygmt/pull/3034))
* Figure.wiggle: Remove deprecated parameter "color", use "fillpositive"/"fillnegative" instead (deprecated since v0.8.0) ([#3035](https://github.com/GenericMappingTools/pygmt/pull/3035))
* Figure.grdimage: Remove deprecated parameter "bit_color", use "bitcolor" instead (deprecated since v0.8.0) ([#3036](https://github.com/GenericMappingTools/pygmt/pull/3036))
* Figure: Remove deprecated "xshift" ("X") and "yshift" ("Y") parameters, use "Figure.shift_origin" instead (deprecated since v0.8.0) ([#3044](https://github.com/GenericMappingTools/pygmt/pull/3044))
* Figure: Remove deprecated "timestamp" ("U") parameter, use "Figure.timestamp" instead (deprecated since v0.9.0) ([#3045](https://github.com/GenericMappingTools/pygmt/pull/3045))
The following points are already added under "Upcoming deprecations":
* Deprecate the "build_arg_string" function, use build_arg_list instead (deprecated since v0.12.0, will be removed in v0.14.0) ([#3184](https://github.com/GenericMappingTools/pygmt/pull/3184))
* Deprecate the "sequence_plus" converter, only used for the "annotation" parameter of Figure.grdcontour (deprecated since v0.12.0, will be removed in v0.14.0) ([#3207](https://github.com/GenericMappingTools/pygmt/pull/3207))
* Figure.grdcontour: Deprecate parameter "interval" to "levels" (FutureWarning since v0.12.0, will be removed in v0.16.0) ([#3209](https://github.com/GenericMappingTools/pygmt/pull/3209))
Regarding the point
* clib: Rename the "virtualfile_from_data" method to "virtualfile_in" ([#3068](https://github.com/GenericMappingTools/pygmt/pull/3068))
I was / am a bit unsure, as there ins no FutureWarning added and not version stated when virtuealfile_frome_data
is removed.
Hm, you mean we may want to add a separate section with the deprecations in this release, mentioning:
Oh no, we don't need to mention the deprecations/removals, only the upcoming deprecations for v0.13.0 and beyond.
Hm, you mean we may want to add a separate section with the deprecations in this release, mentioning:
Oh no, we don't need to mention the deprecations/removals, only the upcoming deprecations for v0.13.0 and beyond.
Then I think, all deprecations/removals are included in the release draft. Please correct me, in case I overlooked something.
Hm, you mean we may want to add a separate section with the deprecations in this release, mentioning:
Oh no, we don't need to mention the deprecations/removals, only the upcoming deprecations for v0.13.0 and beyond.
Then I think, all deprecations/removals are included in the release draft. Please correct me, in case I overlooked something.
@GenericMappingTools/pygmt-maintainers are there any improvements regarding the announcement draft? If not, I think we can post it on the GMT forum. I should find time to do this later the day.
Then I think, all deprecations/removals are included in the release draft. Please correct me, in case I overlooked something.
@GenericMappingTools/pygmt-maintainers are there any improvements regarding the announcement draft? If not, I think we can post it on the GMT forum. I should find time to do this later the day.
Yep, I just added one more note that passing something like Figure.grdcontour(..., annotation=[100, "e", "f10p", "gred"]
is deprecated since #3116, and people should use annotation="100+e+f10p+gred"
instead. Feel free to post the announcement on the forum!
Then I think, all deprecations/removals are included in the release draft. Please correct me, in case I overlooked something.
@GenericMappingTools/pygmt-maintainers are there any improvements regarding the announcement draft? If not, I think we can post it on the GMT forum. I should find time to do this later the day.
Yep, I just added one more note that passing something like
Figure.grdcontour(..., annotation=[100, "e", "f10p", "gred"]
is deprecated since #3116, and people should useannotation="100+e+f10p+gred"
instead. Feel free to post the announcement on the forum!
Thanks for proof reading @weiji14! I just moved the bug report part before the "Updates on Intros, Tutorials, and Gallery examples" section. The GMT forum announcement is at https://forum.generic-mapping-tools.org/t/pygmt-v0-12-0/4864.
Thanks for proof reading @weiji14! I just moved the bug report part before the "Updates on Intros, Tutorials, and Gallery examples" section. The GMT forum announcement is at https://forum.generic-mapping-tools.org/t/pygmt-v0-12-0/4864.
Wonderful! I've cross-posted this using my personal Mastodon account at https://mastodon.nz/@weiji14/112381710673099960 (since we haven't set up a Fediverse account yet for GMT/PyGMT). I'll need to find time to follow up on that at https://forum.generic-mapping-tools.org/t/gmt-and-pygmt-mastodon-migration/4227/2 ๐
Last task is the ResearchGate upload. Who would like to do this?
Can make the RG post later this day or tomorrow.
Added at RG.
Great work everyone. Let's move forward to v0.13.0!