Skip to content

Commit ea367c8

Browse files
committed
Merge branch 'refactor/virtualfile_in' into refactor/validate_data_input
2 parents 3c61fea + da874d1 commit ea367c8

39 files changed

+424
-293
lines changed

.github/ISSUE_TEMPLATE/4-release_checklist.md

+6-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ assignees: ''
1111
**Scheduled Date**: 20YY/MM/DD
1212
**Pull request due date**: 20YY/MM/DD
1313
**DOI**: `10.5281/zenodo.XXXXXXX`
14+
**Announcement draft**: https://hackmd.io/@pygmt/xxxxxxxx
1415

1516
**Priority PRs/issues to complete prior to release**
1617

@@ -39,11 +40,15 @@ assignees: ''
3940
- [ ] Edit the draft release notes with the finalized changelog
4041
- [ ] Set the tag version and release title to vX.Y.Z
4142
- [ ] Make a release by clicking the 'Publish Release' button, this will automatically create a tag too
43+
- [ ] Verify that [all workflows triggered by the release](https://github.com/GenericMappingTools/pygmt/actions?query=event%3Arelease) pass
44+
- [ ] The latest version is correct on [PyPI](https://pypi.org/project/pygmt/)
45+
- [ ] The latest version is correct on https://www.pygmt.org/latest/
46+
- [ ] The [release page](https://github.com/GenericMappingTools/pygmt/releases) has five assets, including `baseline-images.zip`, `pygmt-docs.zip` and `pygmt-docs.pdf`
4247
- [ ] Download pygmt-X.Y.Z.zip (rename to pygmt-vX.Y.Z.zip) and baseline-images.zip from the release page, and upload the two zip files to https://zenodo.org/deposit, ensure that they are filed under the correct reserved DOI
4348

4449
**After release**:
4550

46-
- [ ] Update conda-forge [pygmt-feedstock](https://github.com/conda-forge/pygmt-feedstock) [Done automatically by conda-forge's bot. Remember to pin GMT, Python and SPEC0 versions]
51+
- [ ] Update conda-forge [pygmt-feedstock](https://github.com/conda-forge/pygmt-feedstock) (Done automatically by conda-forge's bot. If you don't want to wait, open a new issue in the `conda-forge/pygmt-feedstock` repository with the title `@conda-forge-admin, please update version`. This will trigger the bot immediately. Remember to pin GMT, Python and SPEC0 versions)
4752
- [ ] Bump PyGMT version on https://github.com/GenericMappingTools/try-gmt (after conda-forge update)
4853
- [ ] Announce the release on:
4954
- [ ] GMT [forum](https://forum.generic-mapping-tools.org/c/news/) (do this announcement first! Requires moderator status)

.github/workflows/cache_data.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ jobs:
7575

7676
# Upload the downloaded files as artifacts to GitHub
7777
- name: Upload artifacts to GitHub
78-
uses: actions/[email protected].1
78+
uses: actions/[email protected].2
7979
with:
8080
name: gmt-cache
8181
include-hidden-files: true

.github/workflows/check-links.yml

+4-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Check links in the repository and documentation
22
#
3-
# This workflow runs the lychee tool to check all external links in plaintext
4-
# and HTML files. It will create an issue if broken links are found.
3+
# This workflow runs the lychee tool to check all external links in plaintext and HTML
4+
# files. It will create an issue if broken links are found.
55
#
66
# It is scheduled to run weekly at 12 noon every Sunday.
77
#
@@ -66,11 +66,8 @@ jobs:
6666
--exclude "^https://www.pygmt.org/%7B%7Bpath%7D%7D"
6767
--exclude "^https://www.researchgate.net/"
6868
--exclude "^https://zenodo.org/badge/DOI/"
69-
--exclude-path "repository/doc/**/*.rst"
70-
--exclude-path "repository/doc/**/*.md"
7169
--verbose
72-
"repository/**/*.rst"
73-
"repository/**/*.md"
70+
"repository/*.md"
7471
"repository/**/*.py"
7572
"documentation/dev/**/*.html"
7673
@@ -79,7 +76,7 @@ jobs:
7976
run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
8077

8178
- name: Create Issue From File
82-
if: ${{ steps.lychee.outputs.exit_code }} != 0
79+
if: steps.lychee.outputs.exit_code != 0
8380
run: |
8481
cd repository/
8582
title="Link Checker Report on ${CURRENT_DATE}"

.github/workflows/ci_docs.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ jobs:
114114
sphinx-copybutton
115115
sphinx-design
116116
sphinx-gallery
117-
sphinx_rtd_theme<3.0
117+
sphinx_rtd_theme
118118
cairosvg
119119
sphinxcontrib-svg2pdfconverter
120120
tectonic
@@ -151,7 +151,7 @@ jobs:
151151
cd ../..
152152
153153
- name: Upload PDF as artifact for previewing on pull requests
154-
uses: actions/[email protected].1
154+
uses: actions/[email protected].2
155155
if: github.event_name == 'pull_request' && matrix.os == 'ubuntu-latest'
156156
with:
157157
name: artifact-pygmt-docs-pdf

.github/workflows/ci_tests.yaml

+6-6
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ concurrency:
4949

5050
jobs:
5151
test:
52-
name: ${{ matrix.os }} - Python ${{ matrix.python-version }} / NumPy ${{ matrix.numpy-version }}
52+
name: ${{ matrix.os }} - Python ${{ matrix.python-version }}
5353
runs-on: ${{ matrix.os }}
5454
permissions:
5555
id-token: write # This is required for requesting OIDC token for codecov
@@ -73,15 +73,15 @@ jobs:
7373
# Python 3.11 + core packages (minimum supported versions) + optional packages (minimum supported versions if any)
7474
- python-version: '3.11'
7575
numpy-version: '1.25'
76-
pandas-version: '=2.0'
76+
pandas-version: '=2.1'
7777
xarray-version: '=2023.04'
78-
optional-packages: ' contextily geopandas<1 ipython pyarrow-core rioxarray sphinx-gallery'
78+
optional-packages: ' contextily geopandas ipython pyarrow-core rioxarray sphinx-gallery'
7979
# Python 3.13 + core packages (latest versions) + optional packages
8080
- python-version: '3.13'
8181
numpy-version: '2.2'
8282
pandas-version: ''
8383
xarray-version: ''
84-
optional-packages: ' contextily geopandas>=1.0 ipython pyarrow-core rioxarray sphinx-gallery'
84+
optional-packages: ' contextily geopandas ipython pyarrow-core rioxarray sphinx-gallery'
8585
# Python 3.12 + core packages (Linux only)
8686
- os: 'ubuntu-latest'
8787
python-version: '3.12'
@@ -152,7 +152,7 @@ jobs:
152152
GH_TOKEN: ${{ github.token }}
153153

154154
- name: Install uv
155-
uses: astral-sh/[email protected].0
155+
uses: astral-sh/[email protected].1
156156
with:
157157
python-version: ${{ matrix.python-version }}
158158

@@ -175,7 +175,7 @@ jobs:
175175

176176
# Upload diff images on test failure
177177
- name: Upload diff images if any test fails
178-
uses: actions/[email protected].1
178+
uses: actions/[email protected].2
179179
if: failure()
180180
with:
181181
name: artifact-${{ matrix.os }}-${{ matrix.python-version }}

.github/workflows/ci_tests_dev.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ jobs:
186186

187187
# Upload diff images on test failure
188188
- name: Upload diff images if any test fails
189-
uses: actions/[email protected].1
189+
uses: actions/[email protected].2
190190
if: ${{ failure() }}
191191
with:
192192
name: artifact-${{ matrix.os }}-GMT-${{ matrix.gmt_git_ref }}

.github/workflows/ci_tests_legacy.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ jobs:
6767
netCDF4
6868
packaging
6969
contextily
70-
geopandas
70+
geopandas=1.0
7171
ipython
7272
pyarrow-core
7373
rioxarray

.github/workflows/format-command.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
runs-on: ubuntu-latest
1717
steps:
1818
# Generate token from GenericMappingTools bot
19-
- uses: actions/create-github-app-token@v1.11.6
19+
- uses: actions/create-github-app-token@v1.12.0
2020
id: generate-token
2121
with:
2222
app-id: ${{ secrets.APP_ID }}

.github/workflows/publish-to-pypi.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ jobs:
7474
ls -lh dist/
7575
7676
- name: Store the distribution packages
77-
uses: actions/[email protected].1
77+
uses: actions/[email protected].2
7878
with:
7979
name: python-package-distributions
8080
path: dist/
@@ -93,7 +93,7 @@ jobs:
9393

9494
steps:
9595
- name: Download all the dists
96-
uses: actions/[email protected].0
96+
uses: actions/[email protected].1
9797
with:
9898
name: python-package-distributions
9999
path: dist/
@@ -117,7 +117,7 @@ jobs:
117117

118118
steps:
119119
- name: Download all the dists
120-
uses: actions/[email protected].0
120+
uses: actions/[email protected].1
121121
with:
122122
name: python-package-distributions
123123
path: dist/

.mailmap

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
Dongdong Tian <[email protected]>
2+
3+
Jiayuan Yao <[email protected]>
4+
5+
Jing-Hui Tong <[email protected]>
6+
7+
Max Jones <[email protected]>
8+
9+
10+
11+
12+
13+
14+
Wei Ji Leong <[email protected]>
15+
16+
17+
18+
19+

.pre-commit-config.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ repos:
1616
- id: chmod
1717
args: ['644']
1818
- repo: https://github.com/woodruffw/zizmor-pre-commit
19-
rev: v1.5.1
19+
rev: v1.5.2
2020
hooks:
2121
- id: zizmor
2222

AUTHORSHIP.md

+51-58
Original file line numberDiff line numberDiff line change
@@ -1,90 +1,83 @@
11
# Authorship guidelines for academic papers and software archives
22

3-
First of all, we are deeply thankful to everyone who has helped make PyGMT
4-
what it is today. Our goal for this document is to establish guidelines
5-
for giving credit to contributors for their work.
6-
To do so, we will attempt to define:
3+
First of all, we are deeply thankful to everyone who has helped to make PyGMT what it
4+
is today. Our goal for this document is to establish guidelines for giving credit to
5+
contributors for their work. To do so, we will attempt to define:
76

87
- Fair and diverse ways of providing recognition for contributors' efforts.
9-
- Define _contributions_ in a broad way: writing code and/or documentation,
10-
providing ideas, fostering the community, etc.
8+
- Define _contributions_ in a broad way: writing code and/or documentation, providing
9+
ideas, fostering the community, etc.
1110

12-
The following are the ways in which individuals who have contributed will be
13-
recognized.
11+
The following are the ways in which individuals who have contributed will be recognized.
1412

15-
> **Note**: These policies are not set in stone and may be changed to
16-
> accommodate the growth of the project or the preferences of the community.
13+
> **Note**: These policies are not set in stone and may be changed to accommodate the
14+
> growth of the project or the preferences of the community.
1715
1816
## The `AUTHORS.md` file
1917

20-
Anyone who has contributed a pull request to the project is welcome to add
21-
themselves to the `AUTHORS.md` file. This file lives in the repository and is
22-
packaged with distributions. This is an optional process.
18+
Anyone who has contributed a pull request to the project is welcome to add themselves to
19+
the `AUTHORS.md` file. This file lives in the repository and is packaged with
20+
distributions. This is an optional process.
2321

2422
## Changelog for each release
2523

26-
Every time we make a release, everyone who has made a commit to the repository
27-
since the previous release will be mentioned in the changelog entry. If their
28-
full name is available on GitHub, we will use it. Otherwise, we will use the
29-
GitHub handle. This is a way of saying "Thank you".
24+
Every time we make a release, everyone who has made a commit to the repository since the
25+
previous release will be mentioned in the changelog entry. If their full name is
26+
available on GitHub, we will use it. Otherwise, we will use the GitHub handle. This is a
27+
way of saying "Thank you".
3028

3129
## Authorship on Zenodo archives of releases
3230

33-
Anyone who has contributed to the repository (i.e., appears on `git log`) will
34-
be invited to be an author on the Zenodo archive of new releases.
31+
Anyone who has contributed to the repository (i.e., appears on `git log`) will be
32+
invited to be an author on the Zenodo archive of new releases.
3533

36-
To be included as an author, you *must* add the following to the `AUTHORS.md`
37-
file of the repository:
34+
To be included as an author, you *must* add the following to the `AUTHORS.md` file of
35+
the repository:
3836

3937
1. Full name (and a link to your website or GitHub page)
4038
2. [ORCID](https://orcid.org) (optional)
4139
3. Affiliation (if omitted, we will use "Unaffiliated")
4240

4341
The order of authors will be defined by the number of commits to the repository
44-
(`git shortlog -sne`). The order can also be changed on a case-by-case basis.
45-
The most common reasons for case-by-case changes are contributions to the PyGMT
46-
project that due not relate to commit numbers, including developing PyGMT
47-
lessons such as the [ROSES unit](https://www.youtube.com/watch?v=SSIGJEe0BIk),
48-
organizing workshops/sprints such as the
49-
[FOSS4G Workshop](https://github.com/GenericMappingTools/foss4g2019oceania),
50-
the 2020 and 2021 SciPy sprints, writing grants/proposals to support PyGMT,
51-
and team programming efforts (including reviewing PRs).
52-
53-
If you have contributed and do not wish to be included in Zenodo archives,
54-
there are a few options:
42+
(`git shortlog -sne`). The order can also be changed on a case-by-case basis. The most
43+
common reasons for case-by-case changes are contributions to the PyGMT project that due
44+
not relate to commit numbers, including developing PyGMT lessons such as the
45+
[ROSES unit](https://www.youtube.com/watch?v=SSIGJEe0BIk), organizing workshops/sprints
46+
such as the [FOSS4G Workshop](https://github.com/GenericMappingTools/foss4g2019oceania),
47+
the 2020 and 2021 SciPy sprints, writing grants/proposals to support PyGMT, and team
48+
programming efforts (including reviewing PRs).
49+
50+
If you have contributed and do not wish to be included in Zenodo archives, there are a
51+
few options:
5552

5653
1. Don't add yourself to `AUTHORS.md`
5754
2. Remove yourself from `AUTHORS.md`
58-
3. Indicate next to your name on `AUTHORS.md` that you do not wish to be
59-
included with something like `(not included in Zenodo)`.
55+
3. Indicate next to your name on `AUTHORS.md` that you do not wish to be included with
56+
something like `(not included in Zenodo)`.
6057

61-
Note that authors included in the Zenodo archive will also have their name
62-
listed in the `CITATION.cff` file. This is a machine (and human) readable file
63-
that enables people to cite the PyGMT software easily, and the file will be
64-
updated by the PyGMT maintainers each time a new release is made.
58+
Note that authors included in the Zenodo archive will also have their name listed in the
59+
`CITATION.cff` file. This is a machine (and human) readable file that enables people to
60+
cite the PyGMT software easily, and the file will be updated by the PyGMT maintainers
61+
each time a new release is made.
6562

6663
## Scientific publications (papers)
6764

68-
We aim to write academic papers for most of our software packages. Ideally, we
69-
will publish updated papers for major changes or significant new components of
70-
the package.
65+
We aim to write academic papers for most of our software packages. Ideally, we will
66+
publish updated papers for major changes or significant new components of the package.
7167

72-
To be included as an author on the paper, you *must* satisfy the following
73-
criteria:
68+
To be included as an author on the paper, you *must* satisfy the following criteria:
7469

75-
1. Have made multiple and regular contributions to the repository, or the GMT
76-
repository, in numerous facets, such as wrapping functions, testing, and/or
77-
writing documentation.
78-
2. Have made non-coding contributions, including project administration and
79-
decision making.
70+
1. Have made multiple and regular contributions to the repository, or the GMT repository,
71+
in numerous facets, such as wrapping functions, testing, and/or writing documentation.
72+
2. Have made non-coding contributions, including project administration and decision
73+
making.
8074
3. Have participated in the writing and reviewing of the paper.
81-
4. Add your full name, affiliation, and (optionally) ORCID to the paper. These
82-
can be submitted on pull requests to the corresponding paper repository.
83-
5. Write and/or read and review the manuscript in a timely manner and provide
84-
comments on the paper (even if it's just an "OK", but preferably more).
85-
86-
The order of authors will be defined by the number of commits made since the
87-
previous major release that has an associated paper (`git shortlog
88-
vX.0.0...HEAD -sne`). The order of any author who hasn't made any commits will
89-
be decided by all authors. The order can also be changed on a case-by-case
90-
basis.
75+
4. Add your full name, affiliation, and (optionally) ORCID to the paper. These can be
76+
submitted on pull requests to the corresponding paper repository.
77+
5. Write and/or read and review the manuscript in a timely manner and provide comments
78+
on the paper (even if it's just an "OK", but preferably more).
79+
80+
The order of authors will be defined by the number of commits made since the previous
81+
major release that has an associated paper (`git shortlog vX.0.0...HEAD -sne`). The order
82+
of any author who hasn't made any commits will be decided by all authors. The order can
83+
also be changed on a case-by-case basis.

CITATION.cff

+3-3
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,9 @@ authors:
7676
family-names: Wessel
7777
affiliation: University of Hawaiʻi at Mānoa, USA
7878
orcid: https://orcid.org/0000-0001-5708-7336
79-
date-released: 2025-02-15
80-
doi: 10.5281/zenodo.14868324
79+
date-released: 2025-03-31
80+
doi: 10.5281/zenodo.15071586
8181
license: BSD-3-Clause
8282
repository-code: https://github.com/GenericMappingTools/pygmt
8383
type: software
84-
version: 0.14.2
84+
version: 0.15.0

MANIFEST.in

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ exclude .dvcignore
88
exclude .gitignore
99
exclude .pre-commit-config.yaml
1010
exclude .readthedocs.yaml
11+
exclude .mailmap
1112
exclude AUTHORSHIP.md
1213
exclude CONTRIBUTING.md
1314
exclude Makefile

0 commit comments

Comments
 (0)