diff --git a/.github/ISSUE_TEMPLATE/bump_gmt_checklist.md b/.github/ISSUE_TEMPLATE/bump_gmt_checklist.md index ada57a114c0..b87f8fba11b 100644 --- a/.github/ISSUE_TEMPLATE/bump_gmt_checklist.md +++ b/.github/ISSUE_TEMPLATE/bump_gmt_checklist.md @@ -37,7 +37,7 @@ using the following command: - [ ] Bump the minimum required GMT version (1 PR) - [ ] Update `required_version` in `pygmt/clib/session.py` - [ ] Update `test_get_default` in `pygmt/tests/test_clib.py` - - [ ] Update compatibility table in `README.rst` + - [ ] Update minimum required versions in `doc/minversions.rst` - [ ] Remove unsupported GMT version from `.github/workflows/ci_tests_legacy.yaml` - [ ] Remove [xfail](https://docs.pytest.org/en/stable/skipping.html#xfail-mark-test-functions-as-expected-to-fail) pytest markers on tests that are now xpass - [ ] Update deprecated syntax in source code and examples based on the [GMT Changelog](https://docs.generic-mapping-tools.org/latest/changes.html) diff --git a/.github/ISSUE_TEMPLATE/release_checklist.md b/.github/ISSUE_TEMPLATE/release_checklist.md index c938b285f2a..6a36d0665f6 100644 --- a/.github/ISSUE_TEMPLATE/release_checklist.md +++ b/.github/ISSUE_TEMPLATE/release_checklist.md @@ -31,8 +31,8 @@ assignees: '' - [ ] Update DOI (and url for BibTeX) - [ ] Update version - [ ] Update date released - - [ ] Add the documentation link https://github.com/GenericMappingTools/pygmt#compatibility-with-gmtpythonnumpy-versions - - [ ] Add compatibility information https://github.com/GenericMappingTools/pygmt#compatibility-with-gmtpythonnumpy-versions + - [ ] Add the documentation link `doc/minversions.rst` + - [ ] Add minimum required version information `doc/minversions.rst` - [ ] Copy draft changelog from Release Drafter and edit it to look nice ([see maintainers guide for details](https://www.pygmt.org/dev/maintenance.html#updating-the-changelog)) **Release**: diff --git a/README.rst b/README.rst index 9b0647506b3..6a8872708ce 100644 --- a/README.rst +++ b/README.rst @@ -47,7 +47,7 @@ PyGMT :alt: Contributor Code of Conduct :target: CODE_OF_CONDUCT.md -.. placeholder-for-doc-index +.. doc-index-start-after Why PyGMT? @@ -251,101 +251,18 @@ Other non-official Python wrappers for GMT (not maintained): * `pygmt `__ by `Ian Rose `__ * `PyGMT `__ by `Magnus Hagdorn `__ +.. doc-index-end-before -Compatibility with GMT/Python/NumPy versions --------------------------------------------- - -.. list-table:: - :widths: 25 30 15 20 15 - :header-rows: 1 - - * - PyGMT Version - - Documentation - - GMT - - Python - - NumPy - * - `Dev `_ (upcoming release) - - `Dev Documentation `_ (reflects `main branch `_) - - >=6.3.0 - - >=3.9 - - >=1.23 - * - `v0.10.0 `_ (latest release) - - `v0.10.0 Documentation `_ - - >=6.3.0 - - >=3.9 - - >=1.22 - * - `v0.9.0 `_ - - `v0.9.0 Documentation `_ - - >=6.3.0 - - >=3.8 - - >=1.21 - * - `v0.8.0 `_ - - `v0.8.0 Documentation `_ - - >=6.3.0 - - >=3.8 - - >=1.20 - * - `v0.7.0 `_ - - `v0.7.0 Documentation `_ - - >=6.3.0 - - >=3.8 - - >=1.20 - * - `v0.6.1 `_ - - `v0.6.1 Documentation `_ - - >=6.3.0 - - >=3.8 - - >=1.19 - * - `v0.6.0 `_ - - `v0.6.0 Documentation `_ - - >=6.3.0 - - >=3.8 - - >=1.19 - * - `v0.5.0 `_ - - `v0.5.0 Documentation `_ - - >=6.2.0 - - >=3.7 - - >=1.18 - * - `v0.4.1 `_ - - `v0.4.1 Documentation `_ - - >=6.2.0 - - >=3.7 - - >=1.17 - * - `v0.4.0 `_ - - `v0.4.0 Documentation `_ - - >=6.2.0 - - >=3.7 - - >=1.17 - * - `v0.3.1 `_ - - `v0.3.1 Documentation `_ - - >=6.1.1 - - >=3.7 - - - * - `v0.3.0 `_ - - `v0.3.0 Documentation `_ - - >=6.1.1 - - >=3.7 - - - * - `v0.2.1 `_ - - `v0.2.1 Documentation `_ - - >=6.1.1 - - >=3.6 - - - * - `v0.2.0 `_ - - `v0.2.0 Documentation `_ - - >=6.1.1 - - 3.6 - 3.8 - - - * - `v0.1.2 `_ - - `v0.1.2 Documentation `_ - - >=6.0.0 - - 3.6 - 3.8 - - - * - `v0.1.1 `_ - - `v0.1.1 Documentation `_ - - >=6.0.0 - - 3.6 - 3.8 - - - * - `v0.1.0 `_ - - `v0.1.0 Documentation `_ - - >=6.0.0 - - 3.6 - 3.8 - - +Minimum Supported GMT/Python/NumPy Versions +------------------------------------------- + +PyGMT has adopted `NEP29 `__ +alongside the rest of the Scientific Python ecosystem, and therefore supports: + +* All minor versions of Python released 42 months prior to the project, and at minimum + the two latest minor versions. +* All minor versions of NumPy released in the 24 months prior to the project, and at + minimum the last three minor versions. + +For the supported GMT versions as well as the minimum required Python and NumPy versions +please see `Minimum Required Versions `__. diff --git a/doc/index.rst b/doc/index.rst index bc0ec2f7c66..4130e5e51b5 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -11,7 +11,8 @@ .. include:: ../README.rst - :start-after: placeholder-for-doc-index + :start-after: doc-index-start-after + :end-before: doc-index-end-before .. toctree:: :maxdepth: 2 @@ -39,6 +40,7 @@ api/index.rst changes.md + Minimum Supported Versions .. toctree:: :maxdepth: 2 diff --git a/doc/install.md b/doc/install.md index 4ae00878cc7..887e971ce55 100644 --- a/doc/install.md +++ b/doc/install.md @@ -83,12 +83,16 @@ We recommend following the instructions further on to install GMT 6. PyGMT requires the following libraries to be installed: -- [numpy](https://numpy.org) (>= 1.23) +- [numpy](https://numpy.org) - [pandas](https://pandas.pydata.org) - [xarray](https://xarray.dev/) - [netCDF4](https://unidata.github.io/netcdf4-python) - [packaging](https://packaging.pypa.io) +:::{note} +For the minimum supported versions of the dependencies, please see {doc}`minversions`. +::: + The following are optional dependencies: - [IPython](https://ipython.org): For embedding the figures in Jupyter notebooks (recommended). diff --git a/doc/maintenance.md b/doc/maintenance.md index 42f5c2904a6..20007c272eb 100644 --- a/doc/maintenance.md +++ b/doc/maintenance.md @@ -220,11 +220,11 @@ publishing the actual release notes at {doc}`changes`. 7. Edit the list of people who contributed to the release, linking to their GitHub accounts. Sort their names by the number of commits made since the last release (e.g., use `git shortlog HEAD...v0.4.0 -sne`). -8. Update `README.rst` with new information on the new release version, - including a vX.Y.Z documentation link, and compatibility with - GMT/Python/NumPy versions. Follow +8. Update `doc/minversions.rst` with new information on the new release version, + including a vX.Y.Z documentation link, and minimum required GMT/Python/NumPy + versions. Follow [NEP 29](https://numpy.org/neps/nep-0029-deprecation_policy.html#detailed-description) - for compatibility updates. + for updates. 9. Refresh citation information. Specifically, the BibTeX in `README.rst` and `CITATION.cff` needs to be updated with any metadata changes, including the DOI, release date, and version information. Please also follow diff --git a/doc/minversions.rst b/doc/minversions.rst new file mode 100644 index 00000000000..99ff919274f --- /dev/null +++ b/doc/minversions.rst @@ -0,0 +1,105 @@ +Minimum Supported GMT/Python/NumPy Versions +------------------------------------------- + +PyGMT has adopted `NEP29 `__ +alongside the rest of the Scientific Python ecosystem, and therefore supports: + +* All minor versions of Python released 42 months prior to the project, and at minimum + the two latest minor versions. +* All minor versions of NumPy released in the 24 months prior to the project, and at + minimum the last three minor versions. + +.. list-table:: + :widths: 25 30 15 20 15 + :header-rows: 1 + + * - PyGMT Version + - Documentation + - GMT + - Python + - NumPy + * - `Dev `_ (upcoming release) + - `Dev Documentation `_ (reflects `main branch `_) + - >=6.3.0 + - >=3.9 + - >=1.23 + * - `v0.10.0 `_ (latest release) + - `v0.10.0 Documentation `_ + - >=6.3.0 + - >=3.9 + - >=1.22 + * - `v0.9.0 `_ + - `v0.9.0 Documentation `_ + - >=6.3.0 + - >=3.8 + - >=1.21 + * - `v0.8.0 `_ + - `v0.8.0 Documentation `_ + - >=6.3.0 + - >=3.8 + - >=1.20 + * - `v0.7.0 `_ + - `v0.7.0 Documentation `_ + - >=6.3.0 + - >=3.8 + - >=1.20 + * - `v0.6.1 `_ + - `v0.6.1 Documentation `_ + - >=6.3.0 + - >=3.8 + - >=1.19 + * - `v0.6.0 `_ + - `v0.6.0 Documentation `_ + - >=6.3.0 + - >=3.8 + - >=1.19 + * - `v0.5.0 `_ + - `v0.5.0 Documentation `_ + - >=6.2.0 + - >=3.7 + - >=1.18 + * - `v0.4.1 `_ + - `v0.4.1 Documentation `_ + - >=6.2.0 + - >=3.7 + - >=1.17 + * - `v0.4.0 `_ + - `v0.4.0 Documentation `_ + - >=6.2.0 + - >=3.7 + - >=1.17 + * - `v0.3.1 `_ + - `v0.3.1 Documentation `_ + - >=6.1.1 + - >=3.7 + - + * - `v0.3.0 `_ + - `v0.3.0 Documentation `_ + - >=6.1.1 + - >=3.7 + - + * - `v0.2.1 `_ + - `v0.2.1 Documentation `_ + - >=6.1.1 + - >=3.6 + - + * - `v0.2.0 `_ + - `v0.2.0 Documentation `_ + - >=6.1.1 + - 3.6 - 3.8 + - + * - `v0.1.2 `_ + - `v0.1.2 Documentation `_ + - >=6.0.0 + - 3.6 - 3.8 + - + * - `v0.1.1 `_ + - `v0.1.1 Documentation `_ + - >=6.0.0 + - 3.6 - 3.8 + - + * - `v0.1.0 `_ + - `v0.1.0 Documentation `_ + - >=6.0.0 + - 3.6 - 3.8 + -