Repository navigation
Release PyGMT v0.17.0 #4100
Description
Activity
welcome commented on Sep 18, 2025
It's time to release v0.17.0 in line with our quarterly release policy. Is 09/30 a good deadline? I'll have limited availability during the first week of October for the Chinese National Day holiday.
Yep, September 30 sounds good! I can help with the post-release bullet points (e.g. forum announcement) if anything slips into October.
It's time to release v0.17.0 in line with our quarterly release policy. Is 09/30 a good deadline? I'll have limited availability during the first week of October for the Chinese National Day holiday.
Sounds good! For me, September 30 is fine.
- Update warnings in
pygmt/_show_versions.pyas well as notes in Not working transparency regarding GMT-Ghostscript incompatibility
Unfortunately, we can't get Ghostscript 10.05.1 and 10.06.0 pushed into conda-forge yet (conda-forge/ghostscript-feedstock#35, conda-forge/ghostscript-feedstock#37), so we still don't know if GMT/PyGMT works well with these new versions.
With the help of @weiji14, we have some last-minute progress on GMT 6.6 and ghostscript 10.05/10.06. I think the plans are:
- Have ghostscript 10.05/10.06 pushed to the conda-forge channel (Bump to Ghostscript 10.05.1 conda-forge/ghostscript-feedstock#35, Bump to ghostscript 10.06.0 conda-forge/ghostscript-feedstock#37)
- Check if GMT 6.5 works with gs 10.05/10.06 Bump to Ghostscript 10.06.0 #4125
- Build GMT 6.6 with GDAL 3.10 (Rebuild GMT 6.6 with GDAL 3.10 rather than 3.11 conda-forge/gmt-feedstock#329)
- Rebuild GMT 6.6 with GDAL 3.11 Rebuild GMT 6.6 with GDAL 3.11 conda-forge/gmt-feedstock#330
- Bump to GMT 6.6 and check if GMT 6.6 works with gs 10.03-10.06 Bump the GMT version to 6.6.0 in CI #4018
- Update warnings in pygmt/_show_versions.py as well as notes in "Not working transparency" regarding GMT-Ghostscript incompatibility, if any
- Drop GMT 6.4 support
- Update the v0.17.0 changelog
We may postpone the v0.17.0 release by a few days, depending on the progress.
- Update warnings in
pygmt/_show_versions.pyas well as notes in Not working transparency regarding GMT-Ghostscript incompatibility
As shown in PR #4125, GMT 6.5 works well with ghostscript 10.05.1 and 10.06.0. Currently, the "Not working transparency" note says:
Ghostscript 10.03 or later for GMT 6.5.0
I think we can either keep it unchanged or change it to "Ghostscript 10.03-10.06 for GMT 6.5.0". Which one is better?
- Bump to GMT 6.6 and check if GMT 6.6 works with gs 10.03-10.06
As shown in #4018 (comment), the rebuilt GMT 6.6 still doesn't work, likely due to conflicts of geos and proj. I guess we should follow our initial plan and release v0.17.0 on Sep 30.
I think we can either keep it unchanged or change it to "Ghostscript 10.03-10.06 for GMT 6.5.0". Which one is better?
I think we can leave the warning as is, and we can update it (if needed) when we add the support for GMT 6.6.
- Bump to GMT 6.6 and check if GMT 6.6 works with gs 10.03-10.06
As shown in #4018 (comment), the rebuilt GMT 6.6 still doesn't work, likely due to conflicts of geos and proj. I guess we should follow our initial plan and release v0.17.0 on Sep 30.
GMT 6.6 appears to be installable now, I'll test them with ghostscript 10.05.1 and 10.06.0 in #4018.
Is it ok to delay the release then by a week? I think best to get GMT 6.6 in and drop GMT 6.4 now rather than in December which is too close to AGU (even though we usually release after AGU).
I'll be AFK for several hours or days. Feel free to make changes you like.
Looking at the failing docs for windwos I found this warning / error:
WARNING: autodoc: failed to import property 'Pattern.pattern' from module 'pygmt.params'; the following exception was raised:
Traceback (most recent call last):
File "C:\Users\runneradmin\micromamba\envs\pygmt\Lib\site-packages\sphinx\util\inspect.py", line 461, in safe_getattr
return getattr(obj, name, *defargs)
AttributeError: type object 'Pattern' has no attribute 'pattern'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\runneradmin\micromamba\envs\pygmt\Lib\site-packages\sphinx\ext\autodoc\importer.py", line 288, in import_object
obj = attrgetter(obj, mangled_name)
File "C:\Users\runneradmin\micromamba\envs\pygmt\Lib\site-packages\sphinx\ext\autodoc\__init__.py", line 384, in get_attr
return autodoc_attrgetter(obj, name, *defargs, registry=self.env._registry)
File "C:\Users\runneradmin\micromamba\envs\pygmt\Lib\site-packages\sphinx\ext\autodoc\__init__.py", line 3149, in autodoc_attrgetter
return safe_getattr(obj, name, *defargs)
File "C:\Users\runneradmin\micromamba\envs\pygmt\Lib\site-packages\sphinx\util\inspect.py", line 477, in safe_getattr
raise AttributeError(name) from exc
AttributeError: pattern
[autodoc.import_object]I'll be AFK for several hours or days. Feel free to make changes you like.
I have made a PR for fixing the alias list for
pygmt.grdclipat #4130 and for adding a note regrading the automatic font size scaling of the colorbar label based on the colorbar width at #4126.
Ok, let's try and get #4126 in, and maybe #4131. I've pushed the release date out to Friday 3rd Oct, so we have a bit more time to polish things up.
FYI, I've turned on immutable releases (https://github.blog/changelog/2025-08-26-releases-now-support-immutability-in-public-preview) in the settings. This means releases on https://github.com/GenericMappingTools/pygmt/releases from v0.17.0 onwards cannot have assets added/changed/deleted, and tags are fixed. It means we'll have to be a bit more careful with releases (otherwise we'll need to publish a new patch release), with the benefit of more security for downstream users.
Just wanted to ask if we should fix the documentation issue (#4138) before releasing? Or we can treat that as minor and stick to the Oct 3rd release date.
FYI, I've turned on immutable releases (https://github.blog/changelog/2025-08-26-releases-now-support-immutability-in-public-preview) in the settings. This means releases on https://github.com/GenericMappingTools/pygmt/releases from v0.17.0 onwards cannot have assets added/changed/deleted, and tags are fixed. It means we'll have to be a bit more careful with releases (otherwise we'll need to publish a new patch release), with the benefit of more security for downstream users.
Release assets baseline-images.zip, pygmt-docs.pdf and pygmt-docs.zip are added by workflows release-baseline-images.yml and ci_docs.yml after making a release. Does "immutable release" means these assets cannot be added?
Just wanted to ask if we should fix the documentation issue (#4138) before releasing? Or we can treat that as minor and stick to the Oct 3rd release date.
I think it's just a minor issue and can be ignored in this release.
Release assets baseline-images.zip, pygmt-docs.pdf and pygmt-docs.zip are added by workflows release-baseline-images.yml and ci_docs.yml after making a release. Does "immutable release" means these assets cannot be added?
Hmm, that's a good point. Let's turn off immutable releases then for now. I didn't find anything in the docs about how to automate adding of assets to an immutable release yet.
Just wanted to ask if we should fix the documentation issue (#4138) before releasing? Or we can treat that as minor and stick to the Oct 3rd release date.
I think it's just a minor issue and can be ignored in this release.
Agree. When starting to work on PR #4131 I thought this is easier/straightforward to fix 🙃.
Ok, release uploads to PyPI and Zenodo, conda-forge packaging and try-gmt updates are done. Remainder is to finalize the announcement draft and post it on the forum + sharing on ResearchGate.
Ok, release uploads to PyPI and Zenodo, conda-forge packaging and try-gmt updates are done.
Great 🎉! Thanks @weiji14 and @seisman for finishing and handling the release 🙏!
Remainder is to finalize the announcement draft and post it on the forum + sharing on ResearchGate.
It seems like @seisman already started an announcement draft at https://hackmd.io/c5dOOqRjRv6AkjbZ53P-4g. I have added a section for the new gallery examples and technical references pages and made some formulation adjustments.
Would be good if somebody else reads through it. Then I can post it already during the weekend on the forum or should we wait until Monday?
Announcement looks good, I've made a few changes. Feel free to post it later @yvonnefroehlich!
Announcement looks good, I've made a few changes. Feel free to post it later @yvonnefroehlich!
Cool, thanks 🙂! Just made the annoucement on the at forum https://forum.generic-mapping-tools.org/t/pygmt-v0-17-0-released/6221.
I've added this release to ResearchGate at https://www.researchgate.net/publication/396311489_PyGMT_A_Python_interface_for_the_Generic_Mapping_Tools_v0170.
I guess we're done with this release and let's move to v0.18.0.
Release: v0.17.0
Scheduled Date:
2025/09/302025/10/03Pull request due date: 2025/09/28
DOI:
10.5281/zenodo.17156962Announcement draft: https://hackmd.io/c5dOOqRjRv6AkjbZ53P-4g
Priority PRs/issues to complete prior to release
Before release:
SPEC 0: Bump minimum supported version to NumPy 2.0 and Xarray 2024.5 #4090[Requires xarray>=2024.06]grep "# TODO" **/*.pyto find all potential TODOs.pygmt/_show_versions.pyas well as notes in Not working transparency regarding GMT-Ghostscript incompatibility Update the GMT/Ghostscript compatibility notes #412910.5281/zenodo.17156962make codespellto check common misspellings. If there are any, either fix them or add them toignore-words-listinpyproject.tomlRelease:
baseline-images.zip,pygmt-docs.zipandpygmt-docs.pdfAfter release:
conda-forge/pygmt-feedstockrepository with the title@conda-forge-admin, please update version. This will trigger the bot immediately. Remember to pin GMT, Python and SPEC0 versions) pygmt v0.17.0 + convert to v1 recipe.yaml syntax conda-forge/pygmt-feedstock#45