GenericMappingTools/pygmt

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 to ignore-words-list in pyproject.toml
  • Check to ensure that:
  • 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)

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:


  • 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 use annotation="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!