Pygmt

Latest version: v0.14.2

Safety actively analyzes 707009 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 4

0.14.1

[![Digital Object Identifier for PyGMT v0.14.1](https://zenodo.org/badge/DOI/10.5281/zenodo.14742338.svg)](https://doi.org/10.5281/zenodo.14742338)

Highlights

- **Patch release fixing critical bugs in PyGMT v0.14.0**
- Fix the bug of converting Python sequence of datetime-like objects ([3760](https://github.com/GenericMappingTools/pygmt/pull/3760))

Maintenance

- CI: Separate jobs for publishing to TestPyPI and PyPI ([3742](https://github.com/GenericMappingTools/pygmt/pull/3742))
- clib.conversion._to_numpy: Add tests for Python sequence of datetime-like objects ([3758](https://github.com/GenericMappingTools/pygmt/pull/3758))
- Fix an image in README.md (broken on PyPI) and rewrap to 88 characters ([3740](https://github.com/GenericMappingTools/pygmt/pull/3740))
- Fix the dataset link in the RGB image gallery example ([3781](https://github.com/GenericMappingTools/pygmt/pull/3781))
- Update License year to 2025 ([3737](https://github.com/GenericMappingTools/pygmt/pull/3737))

**Full Changelog**: <https://github.com/GenericMappingTools/pygmt/compare/v0.14.0...v0.14.1>

Contributors

* [Dongdong Tian](https://github.com/seisman)
* [Wei Ji Leong](https://github.com/weiji14)

---

0.14.0

[![Digital Object Identifier for PyGMT v0.14.0](https://zenodo.org/badge/DOI/10.5281/zenodo.14535921.svg)](https://doi.org/10.5281/zenodo.14535921)

Highlights

* 🎉 **Fourteenth minor release of PyGMT** 🎉
* Bump minimum supported version to GMT>=6.4.0 ([3450](https://github.com/GenericMappingTools/pygmt/pull/3450))
* Two new plotting methods and six new functions to access more GMT remote datasets
* PyArrow as an optional dependency and improved support of PyArrow data types ([3592](https://github.com/GenericMappingTools/pygmt/pull/3592))

New Features

* Add Figure.hlines for plotting horizontal lines ([923](https://github.com/GenericMappingTools/pygmt/pull/923))
* Add Figure.vlines for plotting vertical lines ([3726](https://github.com/GenericMappingTools/pygmt/pull/3726))
* Add load_black_marble to load "Black Marble" dataset ([3469](https://github.com/GenericMappingTools/pygmt/pull/3469))
* Add load_blue_marble to load "Blue Marble" dataset ([2235](https://github.com/GenericMappingTools/pygmt/pull/2235))
* Add load_earth_deflection to load "IGPP Earth east-west and north-south deflection" datasets ([3728](https://github.com/GenericMappingTools/pygmt/pull/3728))
* Add load_earth_dist to load "GSHHG Earth distance to shoreline" dataset ([3706](https://github.com/GenericMappingTools/pygmt/pull/3706))
* Add load_earth_mean_dynamic_topography to load "CNES Earth Mean Dynamic Topography" dataset ([3718](https://github.com/GenericMappingTools/pygmt/pull/3718))
* Add load_earth_mean_sea_surface to load "CNES Earth Mean Sea Surface" dataset ([3717](https://github.com/GenericMappingTools/pygmt/pull/3717))
* load_earth_free_air_anomaly: Add "uncertainty" parameter to load the "IGPP Earth free-air anomaly uncertainty" dataset ([3727](https://github.com/GenericMappingTools/pygmt/pull/3727))


Enhancements

* Figure.plot: Add the "symbol" parameter to support plotting data points with varying symbols ([1117](https://github.com/GenericMappingTools/pygmt/pull/1117))
* Figure.plot3d: Add the "symbol" parameter to support plotting data points with varying symbols ([3559](https://github.com/GenericMappingTools/pygmt/pull/3559))
* Figure.legend: Support passing a StringIO object as the legend specification ([3438](https://github.com/GenericMappingTools/pygmt/pull/3438))
* load_tile_map: Add parameter "crs" to set the CRS of the returned dataarray ([3554](https://github.com/GenericMappingTools/pygmt/pull/3554))
* PyArrow: Support pyarrow arrays with string/large_string/string_view types ([3619](https://github.com/GenericMappingTools/pygmt/pull/3619))
* Support 1-D/2-D numpy arrays with longlong and ulonglong dtype ([3566](https://github.com/GenericMappingTools/pygmt/pull/3566))
* GMT_IMAGE: Implement the to_dataarray method for 3-band images ([3128](https://github.com/GenericMappingTools/pygmt/pull/3128))
* Ensure non-ASCII characters are typeset correctly even if PS_CHAR_ENCODING is not "ISOLatin1+" ([3611](https://github.com/GenericMappingTools/pygmt/pull/3611))
* Add enums GridRegistration and GridType for grid registration and type ([3693](https://github.com/GenericMappingTools/pygmt/pull/3693))

Deprecations

* SPEC 0: Bump minimum supported versions to Python 3.11, NumPy 1.25, pandas>=2.0 and xarray>=2023.04 ([3460](https://github.com/GenericMappingTools/pygmt/pull/3460), [#3606](https://github.com/GenericMappingTools/pygmt/pull/3606), [#3697](https://github.com/GenericMappingTools/pygmt/pull/3697))
* clib.Session.virtualfile_from_vectors: Now takes a sequence of vectors as its single argument (Passing multiple arguments will be unsupported in v0.16.0) ([3522](https://github.com/GenericMappingTools/pygmt/pull/3522))
* Remove the deprecated build_arg_string function (deprecated since v0.12.0) ([3427](https://github.com/GenericMappingTools/pygmt/pull/3427))
* Figure.grdcontour: Remove the deprecated syntax for the 'annotation' parameter (deprecated since v0.12.0) ([3428](https://github.com/GenericMappingTools/pygmt/pull/3428))

Bug Fixes

* launch_external_viewer: Use full path when opening the file in a web browser ([3647](https://github.com/GenericMappingTools/pygmt/pull/3647))
* PyArrow: Map date32[day]/date64[ms] dtypes in pandas objects to np.datetime64 with correct date/time units ([3617](https://github.com/GenericMappingTools/pygmt/pull/3617))
* clib.session: Add the GMT_SESSION_NOGDALCLOSE flag to keep GDAL open ([3672](https://github.com/GenericMappingTools/pygmt/pull/3672))
* Set the "Conventions" attribute to "CF-1.7" for netCDF grids only ([3463](https://github.com/GenericMappingTools/pygmt/pull/3463))
* Fix the conversion error for pandas.Series with missing values in pandas<=2.1 ([3505](https://github.com/GenericMappingTools/pygmt/pull/3505), [#3596](https://github.com/GenericMappingTools/pygmt/pull/3596))
* GeoPandas: Explicitly convert columns with overflow integers to avoid OverflowError with fiona 1.10 ([3455](https://github.com/GenericMappingTools/pygmt/pull/3455))
* Figure.plot/Figure.plot3d: Improve the check of the "style" parameter for "v" or "V" ([3603](https://github.com/GenericMappingTools/pygmt/pull/3603))
* Correctly reserve the grid data dtype by converting ctypes array to numpy array with np.ctypeslib.as_array ([3446](https://github.com/GenericMappingTools/pygmt/pull/3446))
* **Breaking**: Figure.text: Fix typesetting of integers when mixed with floating-point values ([3493](https://github.com/GenericMappingTools/pygmt/pull/3493))

Documentation

* Add basic tutorial "Plotting polygons" ([3593](https://github.com/GenericMappingTools/pygmt/pull/3593))
* Update the gallery example for plotting lines with LineString/MultiLineString geometry ([3711](https://github.com/GenericMappingTools/pygmt/pull/3711))
* Add the PyGMT ecosystem page ([3475](https://github.com/GenericMappingTools/pygmt/pull/3475))
* Document the support policy for optional packages ([3616](https://github.com/GenericMappingTools/pygmt/pull/3616))
* Document the environment variables that can affect the behavior of PyGMT ([3432](https://github.com/GenericMappingTools/pygmt/pull/3432))
* Document the built-in patterns in the Technical Reference section ([3466](https://github.com/GenericMappingTools/pygmt/pull/3466))
* Document Continuous Benchmarking in Maintainers Guides ([3631](https://github.com/GenericMappingTools/pygmt/pull/3631))
* Add instructions for installing optional dependencies ([3506](https://github.com/GenericMappingTools/pygmt/pull/3506))
* Update "PyData Ecosystem" to "Scientific Python Ecosystem" ([3447](https://github.com/GenericMappingTools/pygmt/pull/3447))
* Figure.savefig: Clarify that the "transparent" parameter also works for the PNG file associated with the KML format ([3579](https://github.com/GenericMappingTools/pygmt/pull/3579))
* Add the PyGMT talk at AGU24 to the "Overview" section ([3685](https://github.com/GenericMappingTools/pygmt/pull/3685))
* Add the GMT/PyGMT pre-conference workshop at AGU24 to the "External resources" section ([3689](https://github.com/GenericMappingTools/pygmt/pull/3689))
* Add TODO comments in the maintainers guides and update the release checklist ([3724](https://github.com/GenericMappingTools/pygmt/pull/3724))

Maintenance

* **Breaking**: data_kind: data is None and required now returns the "empty" kind ([3482](https://github.com/GenericMappingTools/pygmt/pull/3482))
* **Breaking**: data_kind: Now "matrix" represents a 2-D numpy array and unrecognized data types fall back to "vectors" ([3351](https://github.com/GenericMappingTools/pygmt/pull/3351))
* Add Support for Python 3.13 ([3490](https://github.com/GenericMappingTools/pygmt/pull/3490))
* Add the Session.virtualfile_from_stringio method to allow StringIO input for certain functions/methods ([3326](https://github.com/GenericMappingTools/pygmt/pull/3326))
* Add "geodatasets" as a dependency for docs and update the choropleth example ([3719](https://github.com/GenericMappingTools/pygmt/pull/3719))
* PyArrow: Check compatibility of pyarrow.array with string type ([2933](https://github.com/GenericMappingTools/pygmt/pull/2933))
* Rename sphinx-gallery's README.txt to GALLERY_HEADER.rst and require Sphinx-Gallery>=0.17.0 ([3348](https://github.com/GenericMappingTools/pygmt/pull/3348))
* clib.conversion: Remove the as_c_contiguous function and use np.ascontiguousarray instead ([3492](https://github.com/GenericMappingTools/pygmt/pull/3492))
* Use TODO comments to track deprecations and workarounds ([3722](https://github.com/GenericMappingTools/pygmt/pull/3722))
* Move Figure.psconvert into a separate file ([3553](https://github.com/GenericMappingTools/pygmt/pull/3553))
* Improve the data type checking for 2-D arrays passed to the GMT C API ([3563](https://github.com/GenericMappingTools/pygmt/pull/3563))
* Enable ruff's TD (flake8-todos), COM (flake8-commas), TRY (tryceratops), and EM (flake8-errmsg) rules ([3723](https://github.com/GenericMappingTools/pygmt/pull/3723), [#3531](https://github.com/GenericMappingTools/pygmt/pull/3531), [#3665](https://github.com/GenericMappingTools/pygmt/pull/3665), [#3661](https://github.com/GenericMappingTools/pygmt/pull/3661))
* CI: Install pyarrow-core instead of pyarrow from conda-forge ([3698](https://github.com/GenericMappingTools/pygmt/pull/3698))
* CI: Ensure no hyphens in Python file and directory names in the "Style Checks" workflow ([3703](https://github.com/GenericMappingTools/pygmt/pull/3703))
* Bump to ruff>=0.8.0 and rename rule TCH to TC ([3662](https://github.com/GenericMappingTools/pygmt/pull/3662))
* Bump to Ghostscript 10.04.0 ([3443](https://github.com/GenericMappingTools/pygmt/pull/3443))
* Add enums GridFormat for GMT grid format ID ([3449](https://github.com/GenericMappingTools/pygmt/pull/3449))

**Full Changelog**: <https://github.com/GenericMappingTools/pygmt/compare/v0.13.0...v0.14.0>

Contributors

* [Dongdong Tian](https://github.com/seisman)
* [Yvonne Fröhlich](https://github.com/yvonnefroehlich)
* [Wei Ji Leong](https://github.com/weiji14)
* [Michael Grund](https://github.com/michaelgrund)
* [Will Schlitzer](https://github.com/willschlitzer)
* [Jiayuan Yao](https://github.com/core-man)

---

0.13.0

[![Digital Object Identifier for PyGMT v0.13.0](https://zenodo.org/badge/DOI/10.5281/zenodo.13679420.svg)](https://doi.org/10.5281/zenodo.13679420)

Highlights

* 🎉 **Thirteenth minor release of PyGMT** 🎉
* Add new documentation section "Technical Reference" and document the supported encodings and fonts
* Tutorial for "Draping a dataset on top of a topographic surface" ([3316](https://github.com/GenericMappingTools/pygmt/pull/3316))
* Tutorial for "Typesetting non-ASCII characters" ([3389](https://github.com/GenericMappingTools/pygmt/pull/3389))

New Features

* Wrap the GMT API function GMT_Read_Data to read data into GMT data containers ([3324](https://github.com/GenericMappingTools/pygmt/pull/3324))
* Wrap GMT's standard data type GMT_IMAGE for images ([3338](https://github.com/GenericMappingTools/pygmt/pull/3338))

Enhancements

* **Breaking**: pygmt.x2sys_cross: Refactor to use virtualfiles for output tables ([3182](https://github.com/GenericMappingTools/pygmt/pull/3182))
* pygmt.show_versions: Warn about incompatible Ghostscript versions ([3244](https://github.com/GenericMappingTools/pygmt/pull/3244))
* pygmt.show_versions: Show GDAL version ([3364](https://github.com/GenericMappingTools/pygmt/pull/3364), [#3376](https://github.com/GenericMappingTools/pygmt/pull/3376))
* pygmt.datasets.load_*: Add autocompletion support for the 'resolution' parameter ([3260](https://github.com/GenericMappingTools/pygmt/pull/3260))
* clib.Session: Refactor the `__getitem__` special method to avoid calling API function GMT_Get_Enum repeatedly ([3261](https://github.com/GenericMappingTools/pygmt/pull/3261))
* clib: Refactor to avoid checking GMT version repeatedly and only check once when loading the GMT library ([3254](https://github.com/GenericMappingTools/pygmt/pull/3254))
* Support non-ASCII characters in ISO-8859-x charsets ([3310](https://github.com/GenericMappingTools/pygmt/pull/3310))
* Refactor to improve the user experience with non-ASCII characters ([3206](https://github.com/GenericMappingTools/pygmt/pull/3206))

Deprecations

* SPEC 0: Bump minimum supported version to xarray 2022.09 ([3372](https://github.com/GenericMappingTools/pygmt/pull/3372))
* SPEC 0: Bump minimum supported version to NumPy 1.24 ([3286](https://github.com/GenericMappingTools/pygmt/pull/3286))
* clib: Deprecate API function 'Session.virtualfile_from_data', use 'Session.virtualfile_in' instead (will be removed in v0.15.0) ([3225](https://github.com/GenericMappingTools/pygmt/pull/3225))
* Remove the unused pygmt.print_clib_info function ([3257](https://github.com/GenericMappingTools/pygmt/pull/3257))
* Figure.timestamp: Remove deprecated parameter 'justification', use 'justify' instead (deprecated since v0.11.0) ([3222](https://github.com/GenericMappingTools/pygmt/pull/3222))

Bug Fixes

* pygmt.set_display: Fix the bug that `method=None` doesn't reset to the default display method ([3396](https://github.com/GenericMappingTools/pygmt/pull/3396))
* load_tile_map: Register the rio accessor by importing rioxarray, so the returned raster has CRS ([3323](https://github.com/GenericMappingTools/pygmt/pull/3323))
* load_tile_map: Fix the raster band indexing, should start from 1 ([3322](https://github.com/GenericMappingTools/pygmt/pull/3322))
* load_tile_map: Replace deprecated rio.set_crs with rio.write_crs ([3321](https://github.com/GenericMappingTools/pygmt/pull/3321))
* PYGMT_USE_EXTERNAL_DISPLAY should NOT disable image display in Jupyter notebook environment ([3418](https://github.com/GenericMappingTools/pygmt/pull/3418))

Documentation

* External Resources: Add tutorial in Portuguese and using PyGMT in Google Colab ([3360](https://github.com/GenericMappingTools/pygmt/pull/3360))
* Remove the non-official GMT wrappers from README ([3413](https://github.com/GenericMappingTools/pygmt/pull/3413))
* Give recommendations about GMT-Ghostscript incompatibility and the testing example ([3249](https://github.com/GenericMappingTools/pygmt/pull/3249))
* Document the supported 35 standard Postscript fonts in the Technical Reference section ([3378](https://github.com/GenericMappingTools/pygmt/pull/3378))
* Add an offboarding access checklist for maintainers ([3411](https://github.com/GenericMappingTools/pygmt/pull/3411))
* Update the onboarding access checklist in Maintainers Guides ([3404](https://github.com/GenericMappingTools/pygmt/pull/3404))
* Add sphinx extension myst-nb to enable writing executable Markdown notebooks ([3379](https://github.com/GenericMappingTools/pygmt/pull/3379))

Maintenance

* pygmt.grd2cpt & pygmt.makecpt: Simplify the logic for dealing with CPT output ([3334](https://github.com/GenericMappingTools/pygmt/pull/3334))
* geopandas: Use io.StringIO to read geojson data and handle compatibility with geopandas v0.x and v1.x ([3247](https://github.com/GenericMappingTools/pygmt/pull/3247))
* Simplify the "Minimum Supported Versions" page using MyST customized URL schemes ([3383](https://github.com/GenericMappingTools/pygmt/pull/3383))
* build_arg_list: Raise an exception if an invalid output file name is given ([3336](https://github.com/GenericMappingTools/pygmt/pull/3336))
* sphinx-gallery: Temporarily pin to < 0.17.0 ([3350](https://github.com/GenericMappingTools/pygmt/pull/3350))
* Run pytest with `--color=yes` to force GitHub Actions logs to have color ([3330](https://github.com/GenericMappingTools/pygmt/pull/3330))
* Patch the callback print function to suppress the UnicodeDecodeError ([3367](https://github.com/GenericMappingTools/pygmt/pull/3367))
* Move Will from Active Maintainers to Distinguished Contributors ([3388](https://github.com/GenericMappingTools/pygmt/pull/3388))
* Enable ruff's unspecified-encoding (PLW1514) rule and fix violations ([3319](https://github.com/GenericMappingTools/pygmt/pull/3319))
* Enable ruff's literal-membership (PLR6201) rule and fix violations ([3317](https://github.com/GenericMappingTools/pygmt/pull/3317))
* Determine the minimum required versions of dependencies from package metadata for docs ([3380](https://github.com/GenericMappingTools/pygmt/pull/3380))
* CI: Use OIDC token for codecov uploading ([3163](https://github.com/GenericMappingTools/pygmt/pull/3163))
* CI: Test NumPy 2.1 in the GMT Tests workflow ([3401](https://github.com/GenericMappingTools/pygmt/pull/3401))
* CI: Set GMT_ENABLE_OPENMP to TRUE to enable OpenMP support on macOS ([3266](https://github.com/GenericMappingTools/pygmt/pull/3266))
* CI: Fix the name of the 'build' package to 'python-build' on conda-forge ([3408](https://github.com/GenericMappingTools/pygmt/pull/3408))
* CI: Bump to ubuntu-24.04 and mambaforge-23.11 in ReadTheDocs ([3296](https://github.com/GenericMappingTools/pygmt/pull/3296))
* CI: Build GMT dev source code with OpenMP enabled on Linux and GThreads enabled on Linux/macOS ([3011](https://github.com/GenericMappingTools/pygmt/pull/3011))
* CI: Add pytest plugins pytest-xdist and pytest-rerunfailures ([3193](https://github.com/GenericMappingTools/pygmt/pull/3193), [#3267](https://github.com/GenericMappingTools/pygmt/pull/3267))
* Add pre-commit config with pre-commit-hooks and enable pre-commit.ci to update hooks quarterly ([3283](https://github.com/GenericMappingTools/pygmt/pull/3283), [#3414](https://github.com/GenericMappingTools/pygmt/pull/3414))
* Add a test to make sure PyGMT works with paths that contain non-ASCII characters ([3280](https://github.com/GenericMappingTools/pygmt/pull/3280))

**Full Changelog**: <https://github.com/GenericMappingTools/pygmt/compare/v0.12.0...v0.13.0>

Contributors

* [Dongdong Tian](https://github.com/seisman)
* [Yvonne Fröhlich](https://github.com/yvonnefroehlich)
* [Wei Ji Leong](https://github.com/weiji14)
* [Michael Grund](https://github.com/michaelgrund)
* [Andre L. Belem](https://github.com/andrebelem)

---

0.12.0

[![Digital Object Identifier for PyGMT v0.12.0](https://zenodo.org/badge/DOI/10.5281/zenodo.11062720.svg)](https://doi.org/10.5281/zenodo.11062720)

Highlights

* 🎉 **Twelfth minor release of PyGMT** 🎉
* 🚀 Almost all module wrappers (with a few exceptions) now use in-memory GMT *virtual files* instead of intermediate temporary files to improve performance ([2730](https://github.com/GenericMappingTools/pygmt/issues/2730))
* Almost all module wrappers (with a few exceptions) now have consistent behavior for table-like output ([1318](https://github.com/GenericMappingTools/pygmt/issues/1318))
* Adopt [SPEC 0](https://scientific-python.org/specs/spec-0000/) policy for minimum supported versions of GMT, Python, and other core dependencies

Enhancements

* **Breaking**: (Unneeded) extra double quotes around text strings (containing whitespaces) are now considered as part of the text string ([3132](https://github.com/GenericMappingTools/pygmt/pull/3132), [#3457](https://github.com/GenericMappingTools/pygmt/issues/3457))
* pygmt.project: Add 'output_type' parameter for output in pandas/numpy/file formats ([3110](https://github.com/GenericMappingTools/pygmt/pull/3110))
* pygmt.grdtrack: Add 'output_type' parameter for output in pandas/numpy/file formats ([3106](https://github.com/GenericMappingTools/pygmt/pull/3106))
* pygmt.blockm*: Add 'output_type' parameter for output in pandas/numpy/file formats ([3103](https://github.com/GenericMappingTools/pygmt/pull/3103))
* Figure.grdcontour: Adjust processing arguments passed to "annotation" and "interval" parameters ([3116](https://github.com/GenericMappingTools/pygmt/pull/3116))
* Figure.contour: Adjust processing arguments passed to "annotation" and "levels" parameters ([2706](https://github.com/GenericMappingTools/pygmt/pull/2706))
* clib: Wrap the GMT API function GMT_Read_VirtualFile ([2993](https://github.com/GenericMappingTools/pygmt/pull/2993))
* clib: Add virtualfile_to_dataset method for converting virtualfile to a dataset ([3083](https://github.com/GenericMappingTools/pygmt/pull/3083), [#3140](https://github.com/GenericMappingTools/pygmt/pull/3140), [#3157](https://github.com/GenericMappingTools/pygmt/pull/3157),
[3117](https://github.com/GenericMappingTools/pygmt/pull/3117))
* clib: Add the virtualfile_out method for creating output virtualfile ([3057](https://github.com/GenericMappingTools/pygmt/pull/3057))
* Wrap GMT_Inquire_VirtualFile to get the family of virtualfiles ([3152](https://github.com/GenericMappingTools/pygmt/pull/3152))
* Wrap GMT's standard data type GMT_GRID for grids ([2398](https://github.com/GenericMappingTools/pygmt/pull/2398))
* Wrap GMT's standard data type GMT_DATASET for table inputs ([2729](https://github.com/GenericMappingTools/pygmt/pull/2729), [#3131](https://github.com/GenericMappingTools/pygmt/pull/3131), [#3174](https://github.com/GenericMappingTools/pygmt/pull/3174))
* Wrap GMT's data structure GMT_GRID_HEADER for grid/image/cube headers ([3127](https://github.com/GenericMappingTools/pygmt/pull/3127), [#3134](https://github.com/GenericMappingTools/pygmt/pull/3134))
* Session.call_module: Support passing a list of argument strings ([3139](https://github.com/GenericMappingTools/pygmt/pull/3139))
* Refactor the _load_remote_dataset function to load tiled and non-tiled grids in a consistent way ([3120](https://github.com/GenericMappingTools/pygmt/pull/3120))
* Refactor all wrappers to pass an argument list to Session.call_module ([3132](https://github.com/GenericMappingTools/pygmt/pull/3132))
* Add function build_arg_list for building arguments list from keyword dictionaries ([3149](https://github.com/GenericMappingTools/pygmt/pull/3149))
* Support left/right single quotation marks in text and arguments ([3192](https://github.com/GenericMappingTools/pygmt/pull/3192))
* non_ascii_to_octal: Return the input string if it only contains printable ASCII characters ([3199](https://github.com/GenericMappingTools/pygmt/pull/3199))

Deprecations

* SPEC 0: Set minimum supported versions to Python>=3.10, pandas>=1.5 and xarray>=2022.06 ([3043](https://github.com/GenericMappingTools/pygmt/pull/3043), [#3039](https://github.com/GenericMappingTools/pygmt/pull/3039), [#3151](https://github.com/GenericMappingTools/pygmt/pull/3151))
* 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))
* clib: Rename the "virtualfile_from_data" method to "virtualfile_in" ([3068](https://github.com/GenericMappingTools/pygmt/pull/3068))
* 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))

Documentation

* External Resources: Add repository "gmt-pygmt-plotting" ([3213](https://github.com/GenericMappingTools/pygmt/pull/3213))
* Gallery example "Custom symbols": Mention own custom symbols ([3186](https://github.com/GenericMappingTools/pygmt/pull/3186))
* Intro "04 Table inputs": Document that a list of file names, pathlib.Path objects, URLs, or remote files is supported ([3214](https://github.com/GenericMappingTools/pygmt/pull/3214))
* Tutorial "Plotting text": Rewrite to improve structure, explain more parameters, show list input ([2760](https://github.com/GenericMappingTools/pygmt/pull/2760))

Maintenance

* pygmt.filter1d: Improve performance by storing output in virtual files ([3085](https://github.com/GenericMappingTools/pygmt/pull/3085))
* pygmt.grdvolume: Refactor to store output in virtual files instead of temporary files ([3102](https://github.com/GenericMappingTools/pygmt/pull/3102))
* pygmt.grdhisteq.compute_bins: Refactor to store output in virtual files instead of temporary files ([3109](https://github.com/GenericMappingTools/pygmt/pull/3109))
* pygmt.grd2xyz: Improve performance by storing output in virtual files ([3097](https://github.com/GenericMappingTools/pygmt/pull/3097))
* pygmt.select: Improve performance by storing output in virtual files ([3108](https://github.com/GenericMappingTools/pygmt/pull/3108))
* pygmt.triangulate.delaunay_triples: Improve performance by storing output in virtual files ([3107](https://github.com/GenericMappingTools/pygmt/pull/3107))
* pygmt.which: Refactor to get rid of temporary files ([3148](https://github.com/GenericMappingTools/pygmt/pull/3148))
* Use consistent names (vintbl and vingrd) for input virtual files ([3082](https://github.com/GenericMappingTools/pygmt/pull/3082))
* Add sequence_to_ctypes_array to convert a sequence to a ctypes array ([3136](https://github.com/GenericMappingTools/pygmt/pull/3136))
* Add strings_to_ctypes_array to convert a sequence of strings into a ctypes array ([3137](https://github.com/GenericMappingTools/pygmt/pull/3137))
* Figure.psconvert: Ignore the unrecognized "metadata" parameter added by pytest-mpl v0.17.0 ([3054](https://github.com/GenericMappingTools/pygmt/pull/3054))
* Remote Datasets: Adjust attributes - remove "title", use default of "name" and "long_name", introduce "description" ([3048](https://github.com/GenericMappingTools/pygmt/pull/3048))
* Adopt SPEC 0 policy and drop NEP 29 policy ([3037](https://github.com/GenericMappingTools/pygmt/pull/3037))
* Document the support policy for minimum required GMT versions ([3070](https://github.com/GenericMappingTools/pygmt/pull/3070))
* Bump to ghostscript 10.03.0 ([3112](https://github.com/GenericMappingTools/pygmt/pull/3112))
* Bump to ruff 0.3.0 ([3081](https://github.com/GenericMappingTools/pygmt/pull/3081))
* Enable ruff's PTH (flake8-use-pathlib) rules and fix violations ([3129](https://github.com/GenericMappingTools/pygmt/pull/3129))
* Change the dev dependency "matplotlib" to "matplotlib-base" to reduce environment size ([3158](https://github.com/GenericMappingTools/pygmt/pull/3158))
* Migrate from os.path to pathlib ([3119](https://github.com/GenericMappingTools/pygmt/pull/3119))
* CI: Use "gh release" to upload assets to release ([3187](https://github.com/GenericMappingTools/pygmt/pull/3187))
* CI: Consistently use github.token instead of secrets.GITHUB_TOKEN ([3189](https://github.com/GenericMappingTools/pygmt/pull/3189))
* CI: Configure workflows to run on "workflow_dispatch" event ([3133](https://github.com/GenericMappingTools/pygmt/pull/3133))
* Switch to official GitHub action for managing app tokens ([3165](https://github.com/GenericMappingTools/pygmt/pull/3165))

**Full Changelog**: <https://github.com/GenericMappingTools/pygmt/compare/v0.11.0...v0.12.0>

Contributors

* [Dongdong Tian](https://github.com/seisman)
* [Yvonne Fröhlich](https://github.com/yvonnefroehlich)
* [Michael Grund](https://github.com/michaelgrund)
* [Wei Ji Leong](https://github.com/weiji14)

---

0.11.0

[![Digital Object Identifier for PyGMT v0.11.0](https://zenodo.org/badge/DOI/10.5281/zenodo.10578540.svg)](https://doi.org/10.5281/zenodo.10578540)

Highlights

* 🎉 **Eleventh minor release of PyGMT** 🎉
* Tutorial for table inputs ([2722](https://github.com/GenericMappingTools/pygmt/pull/2722)) and gallery example for choropleth map ([#2796](https://github.com/GenericMappingTools/pygmt/pull/2796))
* Easy access to planetary relief datasets (Mercury, Venus, Moon, Mars, Pluto) ([3028](https://github.com/GenericMappingTools/pygmt/pull/3028), [#2906](https://github.com/GenericMappingTools/pygmt/pull/2906), [#2674](https://github.com/GenericMappingTools/pygmt/pull/2674), [#2847](https://github.com/GenericMappingTools/pygmt/pull/2847), [#3027](https://github.com/GenericMappingTools/pygmt/pull/3027))
* Faster PyGMT by ~0.1 seconds for each module call ([2930](https://github.com/GenericMappingTools/pygmt/pull/2930))

New Features

* Support timedelta64 dtype as input ([2884](https://github.com/GenericMappingTools/pygmt/pull/2884))
* Figure.text: Support passing in a list of angle/font/justify values ([2720](https://github.com/GenericMappingTools/pygmt/pull/2720))
* Figure.savefig: Support saving figures in PPM (.ppm) format ([2771](https://github.com/GenericMappingTools/pygmt/pull/2771))
* Figure.savefig: Support generating GeoTIFF file (with extension '.tiff') ([2698](https://github.com/GenericMappingTools/pygmt/pull/2698))
* Figure.savefig: Add the 'worldfile' parameter to write a companion world file for raster images ([2766](https://github.com/GenericMappingTools/pygmt/pull/2766))

Enhancements

* geopandas: Correctly handle columns with integer values bigger than the largest 32-bit integer ([2841](https://github.com/GenericMappingTools/pygmt/pull/2841))
* pyarrow: Support date32[day] and date64[ms] dtypes in pandas objects ([2845](https://github.com/GenericMappingTools/pygmt/pull/2845))
* datasets.load_tile_map and Figure.tilemap: Add "zoom_adjust" parameter ([2934](https://github.com/GenericMappingTools/pygmt/pull/2934))
* grdlandmask: Add common alias "cores" for "x" ([2944](https://github.com/GenericMappingTools/pygmt/pull/2944))
* Figure.coast: Add alias "box" for "-F" ([2823](https://github.com/GenericMappingTools/pygmt/pull/2823))
* Improve the error messages for unsupported numpy dtypes ([2856](https://github.com/GenericMappingTools/pygmt/pull/2856))
* Set GMT_SESSION_NAME to a unique name on Windows for multiprocessing support ([2938](https://github.com/GenericMappingTools/pygmt/pull/2938))
* Figure.savefig: Support .jpeg as JPEG image extension ([2691](https://github.com/GenericMappingTools/pygmt/pull/2691))
* Figure.savefig: Support uppercase file extensions (e.g., PNG, PDF) ([2697](https://github.com/GenericMappingTools/pygmt/pull/2697))

Deprecations

* Rename API function Session.open_virtual_file to Session.open_virtualfile (remove in v0.15.0) ([2996](https://github.com/GenericMappingTools/pygmt/pull/2996))
* NEP29: Set minimum required version to NumPy 1.23+ ([2991](https://github.com/GenericMappingTools/pygmt/pull/2991))
* Figure.timestamp: Deprecate parameter 'justification' to 'justify' (remove in v0.13.0) ([3002](https://github.com/GenericMappingTools/pygmt/pull/3002))
* Figure.grdimage: Remove the unsupported 'img_out'/'A' parameter ([2907](https://github.com/GenericMappingTools/pygmt/pull/2907))

Bug Fixes

* pygmt.which: Fix the bug when passing multiple files ([2726](https://github.com/GenericMappingTools/pygmt/pull/2726))
* pygmt.filter1d: Fix the bug that the first line is read as headers ([2780](https://github.com/GenericMappingTools/pygmt/pull/2780))
* clib: Fix the bug when passing multiple columns of strings with variable lengths to the GMT C API ([2719](https://github.com/GenericMappingTools/pygmt/pull/2719))
* Let kwargs_to_strings work with default values and positional arguments ([2826](https://github.com/GenericMappingTools/pygmt/pull/2826))
* Figure.meca: Fix typo pricipal_axis -> principal_axis ([2940](https://github.com/GenericMappingTools/pygmt/pull/2940))

Documentation

* Add gallery example "Scale bar" ([2822](https://github.com/GenericMappingTools/pygmt/pull/2822))
* Add gallery example for plotting connection lines ("connection" parameter of Figure.plot) ([2999](https://github.com/GenericMappingTools/pygmt/pull/2999))
* Add gallery example showing how to adjust line segment ends (caps and joints) ([3015](https://github.com/GenericMappingTools/pygmt/pull/3015))
* Gallery example "Legend": Update regarding input data and multi-column legends ([2762](https://github.com/GenericMappingTools/pygmt/pull/2762))
* Add the Japanese "PyGMT-HOWTO" tutorial to "External Resources" ([2743](https://github.com/GenericMappingTools/pygmt/pull/2743))
* Figure.plot: Update docstring for "connection" parameter to GMT 6.5 ([2994](https://github.com/GenericMappingTools/pygmt/pull/2994))
* Use consistent description for the "outgrid" parameter ([2874](https://github.com/GenericMappingTools/pygmt/pull/2874))
* Improve the onboarding access checklist for contributors, maintainers and administrators ([2656](https://github.com/GenericMappingTools/pygmt/pull/2656))
* Recommend Miniforge instead of Mambaforge ([2833](https://github.com/GenericMappingTools/pygmt/pull/2833))

Maintenance

* pyarrow: Check compatibility of pyarrow-backed pandas objects with numeric dtypes ([2774](https://github.com/GenericMappingTools/pygmt/pull/2774))
* Switch away from Stamen basemaps ([2717](https://github.com/GenericMappingTools/pygmt/pull/2717))
* Add the "validate_output_table_type" function to check the "output_type" parameter ([2772](https://github.com/GenericMappingTools/pygmt/pull/2772))
* Create "skip_if_no" helper function to skip tests when missing a package ([2883](https://github.com/GenericMappingTools/pygmt/pull/2883))
* Fix "fixture_xr_image" to open "earth_day_01d" directly with rioxarray ([2963](https://github.com/GenericMappingTools/pygmt/pull/2963))
* Improve the way to import optional modules ([2809](https://github.com/GenericMappingTools/pygmt/pull/2809))
* Move variable `__gmt_version__` to pygmt.clib to avoid cyclic-import errors ([2713](https://github.com/GenericMappingTools/pygmt/pull/2713))
* Refactor the internal "_load_remote_dataset function" to simplify datasets' definitions ([2917](https://github.com/GenericMappingTools/pygmt/pull/2917))
* Benchmark grdsample, grdfilter and sph2grd with fixed cores ([2945](https://github.com/GenericMappingTools/pygmt/pull/2945))
* Setup Continuous Benchmarking workflow with pytest-codspeed ([2908](https://github.com/GenericMappingTools/pygmt/pull/2908))
* Update output shape and mean values from some x2sys_cross tests ([2986](https://github.com/GenericMappingTools/pygmt/pull/2986))
* Bump the GMT version in CI to 6.5.0 ([2962](https://github.com/GenericMappingTools/pygmt/pull/2962))
* Bump ghostscript to 10.02.1 ([2694](https://github.com/GenericMappingTools/pygmt/pull/2694))
* Add support for Python 3.12 ([2711](https://github.com/GenericMappingTools/pygmt/pull/2711))
* NEP29: Test PyGMT on NumPy 1.26 ([2692](https://github.com/GenericMappingTools/pygmt/pull/2692))
* CI: Trigger the cache_data workflow in PRs if cache files are added/deleted/updated ([2939](https://github.com/GenericMappingTools/pygmt/pull/2939))
* CI: Test GMT dev version on Windows by building from source ([2773](https://github.com/GenericMappingTools/pygmt/pull/2773))
* CI: Set cache-downloads to false to speedup the "Setup Micromamba" step ([2946](https://github.com/GenericMappingTools/pygmt/pull/2946))
* CI: Run certain GitHub Actions workflows on official repo only ([2951](https://github.com/GenericMappingTools/pygmt/pull/2951))
* CI: Run benchmarks if PR is labeled with "run/benchmark" ([2958](https://github.com/GenericMappingTools/pygmt/pull/2958))
* CI: Run "GMT Dev Tests" if PR is labeled with "run/test-gmt-dev" ([2960](https://github.com/GenericMappingTools/pygmt/pull/2960))
* CI: Require at least one code block separator for example files in the Style Checks workflow ([2810](https://github.com/GenericMappingTools/pygmt/pull/2810))
* Add Mypy for static type checking ([2808](https://github.com/GenericMappingTools/pygmt/pull/2808))
* TYP: Improve the doc style for type hints ([2813](https://github.com/GenericMappingTools/pygmt/pull/2813))
* TYP: Add type hints support for pygmt.datasets.load_sample_data ([2859](https://github.com/GenericMappingTools/pygmt/pull/2859))
* TYP: Add type hints for the "registration" parameter in pygmt.datasets.load_* functions ([2867](https://github.com/GenericMappingTools/pygmt/pull/2867))
* TYP: Add type hints for "data_source" in load_earth_relief and load_earth_magnetic_anomaly functions ([2849](https://github.com/GenericMappingTools/pygmt/pull/2849))
* TYP: Add type hints for parameters of Figure.timestamp([2890](https://github.com/GenericMappingTools/pygmt/pull/2890))
* TYP: Add type hints for "terminator" in Figure.solar and simplify codes ([2881](https://github.com/GenericMappingTools/pygmt/pull/2881))
* TYP: Add type hints for parameters of Figure.shift_origin, improve docstrings, and add inline examples ([2879](https://github.com/GenericMappingTools/pygmt/pull/2879))
* doc: Convert the installation guides source code from ReST to Markdown ([2992](https://github.com/GenericMappingTools/pygmt/pull/2992))
* doc: Convert overview source code from ReST to Markdown ([2953](https://github.com/GenericMappingTools/pygmt/pull/2953))
* doc: Move compatibility table from README to separate file ([2862](https://github.com/GenericMappingTools/pygmt/pull/2862))
* Enable the PDF format documentation in the ReadTheDocs site ([2876](https://github.com/GenericMappingTools/pygmt/pull/2876))
* Add the full changelog link to the release drafter template ([2838](https://github.com/GenericMappingTools/pygmt/pull/2838))
* Release Drafter: Automatically replace GitHub handles with names and links ([2777](https://github.com/GenericMappingTools/pygmt/pull/2777))
* Exclude CODE_OF_CONDUCT.md, AUTHORSHIP.md and pygmt/tests directory from distributions ([2957](https://github.com/GenericMappingTools/pygmt/pull/2957))
* Add Zenodo's GMT community to the maintainer's onboarding list ([2761](https://github.com/GenericMappingTools/pygmt/pull/2761))
* Use ruff to lint and format codes, and remove flakeheaven/isort/black/blackdoc ([2741](https://github.com/GenericMappingTools/pygmt/issues/2741))
* Use codespell to check common misspellings ([2673](https://github.com/GenericMappingTools/pygmt/pull/2673))
* Use " %%" as code block separators in examples ([2662](https://github.com/GenericMappingTools/pygmt/pull/2662))

**Full Changelog**: <https://github.com/GenericMappingTools/pygmt/compare/v0.10.0...v0.11.0>

Contributors

* [Dongdong Tian](https://github.com/seisman)
* [Yvonne Fröhlich](https://github.com/yvonnefroehlich)
* [Wei Ji Leong](https://github.com/weiji14)
* [Michael Grund](https://github.com/michaelgrund)
* [Max Jones](https://github.com/maxrjones)

---

0.10.0

[![Digital Object Identifier for PyGMT v0.10.0](https://zenodo.org/badge/DOI/10.5281/zenodo.8303186.svg)](https://doi.org/10.5281/zenodo.8303186)

Highlights

* 🎉 **Tenth minor release of PyGMT** 🎉
* Support non-ASCII characters in Figure.text ([2638](https://github.com/GenericMappingTools/pygmt/pull/2638)) and other method arguments ([#2584](https://github.com/GenericMappingTools/pygmt/pull/2584))
* Three new tutorials and seven new gallery examples

Enhancements

* Figure.colorbar: Add alias for "Q" ([2608](https://github.com/GenericMappingTools/pygmt/pull/2608))
* Figure.grdimage: Allow passing RGB xarray.DataArray images ([2590](https://github.com/GenericMappingTools/pygmt/pull/2590))
* Figure.image: Add alias for "G" ([2615](https://github.com/GenericMappingTools/pygmt/pull/2615))
* Figure.meca: Add aliases for "L", "T", and "Fr" ([2546](https://github.com/GenericMappingTools/pygmt/pull/2546))
* clib.Session: Wrap the GMT_Get_Common API function ([2500](https://github.com/GenericMappingTools/pygmt/pull/2500))
* pygmt.grdfill: Add alias for "N" ([2618](https://github.com/GenericMappingTools/pygmt/pull/2618))
* pygmt.select: Add aliases for "C", "F", and "L" ([2466](https://github.com/GenericMappingTools/pygmt/pull/2466))
* pygmt.show_versions: Show versions of IPython and rioxarray ([2492](https://github.com/GenericMappingTools/pygmt/pull/2492))
* Better handling of optional virtual files (e.g., shading in Figure.grdimage) ([2493](https://github.com/GenericMappingTools/pygmt/pull/2493))

Deprecations

* Remove the unused pygmt.test() function ([2652](https://github.com/GenericMappingTools/pygmt/pull/2652))
* Figure.grdimage: Deprecate parameter "bit_color" to "bitcolor" (remove in v0.12.0) ([2635](https://github.com/GenericMappingTools/pygmt/pull/2635))
* Figure.text: Remove the deprecated "incols" parameter (deprecated since v0.8.0) ([2473](https://github.com/GenericMappingTools/pygmt/pull/2473))
* NEP29: Set minimum required version to Python 3.9+ ([2487](https://github.com/GenericMappingTools/pygmt/pull/2487))
* NEP29: Set minimum required version to NumPy 1.22+ ([2586](https://github.com/GenericMappingTools/pygmt/pull/2586))

Bug Fixes

* load_earth_mask: Keep data's encoding to correctly infer data's registration and gtype information ([2632](https://github.com/GenericMappingTools/pygmt/pull/2632))
* Geopandas integration: Mapping int/int64 to int32 for OGR_GMT format ([2592](https://github.com/GenericMappingTools/pygmt/pull/2592))
* Figure.meca: Let the "scale" parameter accept int/float/str values ([2566](https://github.com/GenericMappingTools/pygmt/pull/2566))
* Figure.meca: Fix beachball offsetting for ndarray input (requires GMT>6.4.0) ([2576](https://github.com/GenericMappingTools/pygmt/pull/2576))

Documentation

* Document the default CPT for GMT remote datasets ([2573](https://github.com/GenericMappingTools/pygmt/pull/2573))
* Add tutorial to explain naming of PyGMT figure elements ([2383](https://github.com/GenericMappingTools/pygmt/pull/2383))
* Add tutorial to show interactive data visualization via `panel` ([2498](https://github.com/GenericMappingTools/pygmt/pull/2498))
* Add tutorial for cartesian histograms ([2445](https://github.com/GenericMappingTools/pygmt/pull/2445))
* Add gallery example to show usage of dcw parameter in Figure.coast ([2428](https://github.com/GenericMappingTools/pygmt/pull/2428))
* Add gallery example to show usage of tile maps ([2585](https://github.com/GenericMappingTools/pygmt/pull/2585))
* Add gallery example showing how to build an envelope around a curve ([2587](https://github.com/GenericMappingTools/pygmt/pull/2587))
* Add gallery example for plotting an RGB image from an xarray.DataArray ([2641](https://github.com/GenericMappingTools/pygmt/pull/2641))
* Add gallery example "Quoted lines" (`style="q"`) ([2563](https://github.com/GenericMappingTools/pygmt/pull/2563))
* Add gallery example "Decorated lines" (`style="~"`) ([2564](https://github.com/GenericMappingTools/pygmt/pull/2564))
* Add gallery example "Cross-section along a transect" ([2515](https://github.com/GenericMappingTools/pygmt/pull/2515))

Maintenance

* Use substitutions to show the minimum required Python and GMT versions dynamically in installation guides ([2488](https://github.com/GenericMappingTools/pygmt/pull/2488))
* Use np.asarray to convert a 1-D array to datetime type in array_to_datetime ([2481](https://github.com/GenericMappingTools/pygmt/pull/2481))
* Use consistent docstrings for test files ([2578](https://github.com/GenericMappingTools/pygmt/pull/2578))
* Use concurrency to cancel previous runs ([2589](https://github.com/GenericMappingTools/pygmt/pull/2589))
* Set date_format to ISO8601 to silence pandas 2.0 UserWarning on read_csv ([2569](https://github.com/GenericMappingTools/pygmt/pull/2569))
* Remove dummy_context and use contextlib.nullcontext instead ([2491](https://github.com/GenericMappingTools/pygmt/pull/2491))
* NEP29: Test PyGMT on NumPy 1.25 ([2581](https://github.com/GenericMappingTools/pygmt/pull/2581))
* Fix tests for Aug 2023 updated remote datasets ([2636](https://github.com/GenericMappingTools/pygmt/pull/2636))
* Figure.meca: Refactor the two tests for offsetting beachballs ([2572](https://github.com/GenericMappingTools/pygmt/pull/2572))
* Figure.meca: Refactor tests for plotting multiple focal mechanisms ([2565](https://github.com/GenericMappingTools/pygmt/pull/2565))
* Figure.meca: Refactor tests for plotting a single focal mechanism ([2533](https://github.com/GenericMappingTools/pygmt/pull/2533))
* Figure.meca: Add a test for passing event names via pandas.DataFrame ([2582](https://github.com/GenericMappingTools/pygmt/pull/2582))
* Exclude bots from contributors in release drafter ([2484](https://github.com/GenericMappingTools/pygmt/pull/2484))
* Exclude DVC files from source/binary distributions ([2634](https://github.com/GenericMappingTools/pygmt/pull/2634))
* CI: Use mamba-org/provision-with-micromamba to setup micromamba ([2435](https://github.com/GenericMappingTools/pygmt/pull/2435))
* CI: Migrate provision-with-micromamba to setup-micromamba ([2536](https://github.com/GenericMappingTools/pygmt/pull/2536))
* CI: Run dev tests on scientific Python nightly wheels ([2612](https://github.com/GenericMappingTools/pygmt/pull/2612))
* CI: Remove the deprecated cml-publish command from the dvc-diff workflow ([2559](https://github.com/GenericMappingTools/pygmt/pull/2559))
* CI: Fix and simplify the dvc-diff workflow ([2549](https://github.com/GenericMappingTools/pygmt/pull/2549))
* CI: Add the "Doctests" workflow to run doctests weekly ([2456](https://github.com/GenericMappingTools/pygmt/pull/2456))
* CI: Add detailed descriptions in the workflow files and update maintainer guides ([2496](https://github.com/GenericMappingTools/pygmt/pull/2496))
* Add private function _validate_data_input to validate input data ([2595](https://github.com/GenericMappingTools/pygmt/pull/2595))

Contributors

* [Dongdong Tian](https://github.com/seisman)
* [Yvonne Fröhlich](https://github.com/yvonnefroehlich)
* [Wei Ji Leong](https://github.com/weiji14)
* [Michael Grund](https://github.com/michaelgrund)
* [Jing-Hui Tong](https://github.com/jhtong33)
* [Max Jones](https://github.com/maxrjones)

---

Page 1 of 4

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.