Releases: GenericMappingTools/pygmt
Releases · GenericMappingTools/pygmt
v0.14.0
Release v0.14.0 (2024/12/31)
Highlights
- 🎉 Fourteenth minor release of PyGMT 🎉
- Bump minimum supported version to GMT>=6.4.0 (#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)
New Features
- Add Figure.hlines for plotting horizontal lines (#923)
- Add Figure.vlines for plotting vertical lines (#3726)
- Add load_black_marble to load "Black Marble" dataset (#3469)
- Add load_blue_marble to load "Blue Marble" dataset (#2235)
- Add load_earth_deflection to load "IGPP Earth east-west and north-south deflection" datasets (#3728)
- Add load_earth_dist to load "GSHHG Earth distance to shoreline" dataset (#3706)
- Add load_earth_mean_dynamic_topography to load "CNES Earth Mean Dynamic Topography" dataset (#3718)
- Add load_earth_mean_sea_surface to load "CNES Earth Mean Sea Surface" dataset (#3717)
- load_earth_free_air_anomaly: Add "uncertainty" parameter to load the "IGPP Earth free-air anomaly uncertainty" dataset (#3727)
Enhancements
- Figure.plot: Add the "symbol" parameter to support plotting data points with varying symbols (#1117)
- Figure.plot3d: Add the "symbol" parameter to support plotting data points with varying symbols (#3559)
- Figure.legend: Support passing a StringIO object as the legend specification (#3438)
- load_tile_map: Add parameter "crs" to set the CRS of the returned dataarray (#3554)
- PyArrow: Support pyarrow arrays with string/large_string/string_view types (#3619)
- Support 1-D/2-D numpy arrays with longlong and ulonglong dtype (#3566)
- GMT_IMAGE: Implement the to_dataarray method for 3-band images (#3128)
- Ensure non-ASCII characters are typeset correctly even if PS_CHAR_ENCODING is not "ISOLatin1+" (#3611)
- Add enums GridRegistration and GridType for grid registration and type (#3693)
Deprecations
- SPEC 0: Bump minimum supported versions to Python 3.11, NumPy 1.25, pandas>=2.0 and xarray>=2023.04 (#3460, #3606, #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)
- Remove the deprecated build_arg_string function (deprecated since v0.12.0) (#3427)
- Figure.grdcontour: Remove the deprecated syntax for the 'annotation' parameter (deprecated since v0.12.0) (#3428)
Bug Fixes
- launch_external_viewer: Use full path when opening the file in a web browser (#3647)
- PyArrow: Map date32[day]/date64[ms] dtypes in pandas objects to np.datetime64 with correct date/time units (#3617)
- clib.session: Add the GMT_SESSION_NOGDALCLOSE flag to keep GDAL open (#3672)
- Set the "Conventions" attribute to "CF-1.7" for netCDF grids only (#3463)
- Fix the conversion error for pandas.Series with missing values in pandas<=2.1 (#3505, #3596)
- GeoPandas: Explicitly convert columns with overflow integers to avoid OverflowError with fiona 1.10 (#3455)
- Figure.plot/Figure.plot3d: Improve the check of the "style" parameter for "v" or "V" (#3603)
- Correctly reserve the grid data dtype by converting ctypes array to numpy array with np.ctypeslib.as_array (#3446)
- Breaking: Figure.text: Fix typesetting of integers when mixed with floating-point values (#3493)
Documentation
- Add basic tutorial "Plotting polygons" (#3593)
- Update the gallery example for plotting lines with LineString/MultiLineString geometry (#3711)
- Add the PyGMT ecosystem page (#3475)
- Document the support policy for optional packages (#3616)
- Document the environment variables that can affect the behavior of PyGMT (#3432)
- Document the built-in patterns in the Technical Reference section (#3466)
- Document Continuous Benchmarking in Maintainers Guides (#3631)
- Add instructions for installing optional dependencies (#3506)
- Update "PyData Ecosystem" to "Scientific Python Ecosystem" (#3447)
- Figure.savefig: Clarify that the "transparent" parameter also works for the PNG file associated with the KML format (#3579)
- Add the PyGMT talk at AGU24 to the "Overview" section (#3685)
- Add the GMT/PyGMT pre-conference workshop at AGU24 to the "External resources" section (#3689)
- Add TODO comments in the maintainers guides and update the release checklist (#3724)
Maintenance
- Breaking: data_kind: data is None and required now returns the "empty" kind (#3482)
- Breaking: data_kind: Now "matrix" represents a 2-D numpy array and unrecognized data types fall back to "vectors" (#3351)
- Add Support for Python 3.13 (#3490)
- Add the Session.virtualfile_from_stringio method to allow StringIO input for certain functions/methods (#3326)
- Add "geodatasets" as a dependency for docs and update the choropleth example (#3719)
- PyArrow: Check compatibility of pyarrow.array with string type (#2933)
- Rename sphinx-gallery's README.txt to GALLERY_HEADER.rst and require Sphinx-Gallery>=0.17.0 (#3348)
- clib.conversion: Remove the as_c_contiguous function and use np.ascontiguousarray instead (#3492)
- Use TODO comments to track deprecations and workarounds (#3722)
- Move Figure.psconvert into a separate file (#3553)
- Improve the data type checking for 2-D arrays passed to the GMT C API (#3563)
- Enable ruff's TD (flake8-todos), COM (flake8-commas), TRY (tryceratops), and EM (flake8-errmsg) rules (#3723, #3531, #3665, #3661)
- CI: Install pyarrow-core instead of pyarrow from conda-forge (#3698)
- CI: Ensure no hyphens in Python file and directory names in the "Style Checks" workflow (#3703)
- Bump to ruff>=0.8.0 and rename rule TCH to TC (#3662)
- Bump to Ghostscript 10.04.0 (#3443)
- Add enums GridFormat for GMT grid format ID (#3449)
Full Changelog: <https://github.com/GenericMappingTools/...
v0.13.0
Release v0.13.0 (2024/09/05)
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)
- Tutorial for "Typesetting non-ASCII characters" (#3389)
New Features
- Wrap the GMT API function GMT_Read_Data to read data into GMT data containers (#3324)
- Wrap GMT's standard data type GMT_IMAGE for images (#3338)
Enhancements
- Breaking: pygmt.x2sys_cross: Refactor to use virtualfiles for output tables (#3182)
- pygmt.show_versions: Warn about incompatible Ghostscript versions (#3244)
- pygmt.show_versions: Show GDAL version (#3364, #3376)
- pygmt.datasets.load_*: Add autocompletion support for the 'resolution' parameter (#3260)
- clib.Session: Refactor the
__getitem__
special method to avoid calling API function GMT_Get_Enum repeatedly (#3261) - clib: Refactor to avoid checking GMT version repeatedly and only check once when loading the GMT library (#3254)
- Support non-ASCII characters in ISO-8859-x charsets (#3310)
- Refactor to improve the user experience with non-ASCII characters (#3206)
Deprecations
- SPEC 0: Bump minimum supported version to xarray 2022.09 (#3372)
- SPEC 0: Bump minimum supported version to NumPy 1.24 (#3286)
- clib: Deprecate API function 'Session.virtualfile_from_data', use 'Session.virtualfile_in' instead (will be removed in v0.15.0) (#3225)
- Remove the unused pygmt.print_clib_info function (#3257)
- Figure.timestamp: Remove deprecated parameter 'justification', use 'justify' instead (deprecated since v0.11.0) (#3222)
Bug Fixes
- pygmt.set_display: Fix the bug that
method=None
doesn't reset to the default display method (#3396) - load_tile_map: Register the rio accessor by importing rioxarray, so the returned raster has CRS (#3323)
- load_tile_map: Fix the raster band indexing, should start from 1 (#3322)
- load_tile_map: Replace deprecated rio.set_crs with rio.write_crs (#3321)
- PYGMT_USE_EXTERNAL_DISPLAY should NOT disable image display in Jupyter notebook environment (#3418)
Documentation
- External Resources: Add tutorial in Portuguese and using PyGMT in Google Colab (#3360)
- Remove the non-official GMT wrappers from README (#3413)
- Give recommendations about GMT-Ghostscript incompatibility and the testing example (#3249)
- Document the supported 35 standard Postscript fonts in the Technical Reference section (#3378)
- Add an offboarding access checklist for maintainers (#3411)
- Update the onboarding access checklist in Maintainers Guides (#3404)
- Add sphinx extension myst-nb to enable writing executable Markdown notebooks (#3379)
Maintenance
- pygmt.grd2cpt & pygmt.makecpt: Simplify the logic for dealing with CPT output (#3334)
- geopandas: Use io.StringIO to read geojson data and handle compatibility with geopandas v0.x and v1.x (#3247)
- Simplify the "Minimum Supported Versions" page using MyST customized URL schemes (#3383)
- build_arg_list: Raise an exception if an invalid output file name is given (#3336)
- sphinx-gallery: Temporarily pin to < 0.17.0 (#3350)
- Run pytest with
--color=yes
to force GitHub Actions logs to have color (#3330) - Patch the callback print function to suppress the UnicodeDecodeError (#3367)
- Move Will from Active Maintainers to Distinguished Contributors (#3388)
- Enable ruff's unspecified-encoding (PLW1514) rule and fix violations (#3319)
- Enable ruff's literal-membership (PLR6201) rule and fix violations (#3317)
- Determine the minimum required versions of dependencies from package metadata for docs (#3380)
- CI: Use OIDC token for codecov uploading (#3163)
- CI: Test NumPy 2.1 in the GMT Tests workflow (#3401)
- CI: Set GMT_ENABLE_OPENMP to TRUE to enable OpenMP support on macOS (#3266)
- CI: Fix the name of the 'build' package to 'python-build' on conda-forge (#3408)
- CI: Bump to ubuntu-24.04 and mambaforge-23.11 in ReadTheDocs (#3296)
- CI: Build GMT dev source code with OpenMP enabled on Linux and GThreads enabled on Linux/macOS (#3011)
- CI: Add pytest plugins pytest-xdist and pytest-rerunfailures (#3193, #3267)
- Add pre-commit config with pre-commit-hooks and enable pre-commit.ci to update hooks quarterly (#3283, #3414)
- Add a test to make sure PyGMT works with paths that contain non-ASCII characters (#3280)
Full Changelog: v0.12.0...v0.13.0
Contributors
v0.12.0
Release v0.12.0 (2024/05/01)
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)
- Almost all module wrappers (with a few exceptions) now have consistent behavior for table-like output (#1318)
- Adopt SPEC 0 policy for minimum supported versions of GMT, Python, and other core dependencies
Enhancements
- pygmt.project: Add 'output_type' parameter for output in pandas/numpy/file formats (#3110)
- pygmt.grdtrack: Add 'output_type' parameter for output in pandas/numpy/file formats (#3106)
- pygmt.blockm*: Add 'output_type' parameter for output in pandas/numpy/file formats (#3103)
- Figure.grdcontour: Adjust processing arguments passed to "annotation" and "interval" parameters (#3116)
- Figure.contour: Adjust processing arguments passed to "annotation" and "levels" parameters (#2706)
- clib: Wrap the GMT API function GMT_Read_VirtualFile (#2993)
- clib: Add virtualfile_to_dataset method for converting virtualfile to a dataset (#3083, #3140, #3157, #3117)
- clib: Add the virtualfile_out method for creating output virtualfile (#3057)
- Wrap GMT_Inquire_VirtualFile to get the family of virtualfiles (#3152)
- Wrap GMT's standard data type GMT_GRID for grids (#2398)
- Wrap GMT's standard data type GMT_DATASET for table inputs (#2729, #3131, #3174)
- Wrap GMT's data structure GMT_GRID_HEADER for grid/image/cube headers (#3127, #3134)
- Session.call_module: Support passing a list of argument strings (#3139)
- Refactor the _load_remote_dataset function to load tiled and non-tiled grids in a consistent way (#3120)
- Refactor all wrappers to pass an argument list to Session.call_module (#3132)
- Add function build_arg_list for building arguments list from keyword dictionaries (#3149)
- Support left/right single quotation marks in text and arguments (#3192)
- non_ascii_to_octal: Return the input string if it only contains printable ASCII characters (#3199)
Deprecations
- Figure.plot/plot3d/rose: Remove deprecated parameter "color", use "fill" instead (deprecated since v0.8.0) (#3032)
- Figure.velo: Remove deprecated parameters "color"/"uncertaintycolor", use "fill"/"uncertaintyfill" instead (deprecated since v0.8.0) (#3034)
- Figure.wiggle: Remove deprecated parameter "color", use "fillpositive"/"fillnegative" instead (deprecated since v0.8.0) (#3035)
- Figure.grdimage: Remove deprecated parameter "bit_color", use "bitcolor" instead (deprecated since v0.8.0) (#3036)
- Figure: Remove deprecated "xshift" ("X") and "yshift" ("Y") parameters, use "Figure.shift_origin" instead (deprecated since v0.8.0) (#3044)
- Figure: Remove deprecated "timestamp" ("U") parameter, use "Figure.timestamp" instead (deprecated since v0.9.0) (#3045)
- clib: Rename the "virtualfile_from_data" method to "virtualfile_in" (#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)
- 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)
- Figure.grdcontour: Deprecate parameter "interval" to "levels" (FutureWarning since v0.12.0, will be removed in v0.16.0) (#3209)
Documentation
- External Resources: Add repository "gmt-pygmt-plotting" (#3213)
- Gallery example "Custom symbols": Mention own custom symbols (#3186)
- Intro "04 Table inputs": Document that a list of file names, pathlib.Path objects, URLs, or remote files is supported (3214)
- Tutorial "Plotting text": Rewrite to improve structure, explain more parameters, show list input (#2760)
Maintenance
- pygmt.filter1d: Improve performance by storing output in virtual files (#3085)
- pygmt.grdvolume: Refactor to store output in virtual files instead of temporary files (#3102)
- pygmt.grdhisteq.compute_bins: Refactor to store output in virtual files instead of temporary files (#3109)
- pygmt.grd2xyz: Improve performance by storing output in virtual files (#3097)
- pygmt.select: Improve performance by storing output in virtual files (#3108)
- pygmt.triangulate.delaunay_triples: Improve performance by storing output in virtual files (#3107)
- pygmt.which: Refactor to get rid of temporary files (#3148)
- Use consistent names (vintbl and vingrd) for input virtual files (#3082)
- Add sequence_to_ctypes_array to convert a sequence to a ctypes array (#3136)
- Add strings_to_ctypes_array to convert a sequence of strings into a ctypes array (#3137)
- Figure.psconvert: Ignore the unrecognized "metadata" parameter added by pytest-mpl v0.17.0 (#3054)
- Remote Datasets: Adjust attributes - remove "title", use default of "name" and "long_name", introduce "description" (#3048)
- Adopt SPEC 0 policy and drop NEP 29 policy (#3037)
- SPEC 0: Set minimum supported versions to Python>=3.10, pandas>=1.5 and xarray>=2022.06 (#3043, #3039, #3151)
- Document the support policy for minimum required GMT versions (#3070)
- Bump to ghostscript 10.03.0 (#3112)
- Bump to ruff 0.3.0 (#3081)
- Enable ruff's PTH (flake8-use-pathlib) rules and fix violations (#3129)
- Change the dev dependency "matplotlib" to "matplotlib-base" to reduce environment size (#3158)
- Migrate from os.path to pathlib (#3119)
- CI: Use "gh release" to upload assets to release (#3187)
- CI: Consistently use github.token instead of secrets.GITHUB_TOKEN (#3189)
- CI: Configure workflows to run on "workflow_dispatch" event (#3133)
- Switch to official GitHub action for managing app tokens (#3165)
Full Changelog: v0.11.0...v0.12.0
Contributors
- Dongdong Tian
- Yvonne Fröhlich
- [Michael Grund](https://github....
v0.11.0
Release v0.11.0 (2024/02/01)
Highlights
- 🎉 Eleventh minor release of PyGMT 🎉
- Tutorial for table inputs (#2722) and gallery example for choropleth map (#2796)
- Easy access to planetary relief datasets (Mercury, Venus, Moon, Mars, Pluto) (#3028, #2906, #2674, #2847, #3027)
- Faster PyGMT by ~0.1 seconds for each module call (#2930)
New Features
- Support timedelta64 dtype as input (#2884)
- Figure.text: Support passing in a list of angle/font/justify values (#2720)
- Figure.savefig: Support saving figures in PPM (.ppm) format (#2771)
- Figure.savefig: Support generating GeoTIFF file (with extension '.tiff') (#2698)
- Figure.savefig: Add the 'worldfile' parameter to write a companion world file for raster images (#2766)
Enhancements
- geopandas: Correctly handle columns with integer values bigger than the largest 32-bit integer (#2841)
- pyarrow: Support date32[day] and date64[ms] dtypes in pandas objects (#2845)
- datasets.load_tile_map and Figure.tilemap: Add "zoom_adjust" parameter (#2934)
- grdlandmask: Add common alias "cores" for "x" (#2944)
- Figure.coast: Add alias "box" for "-F" (#2823)
- Improve the error messages for unsupported numpy dtypes (#2856)
- Set GMT_SESSION_NAME to a unique name on Windows for multiprocessing support (#2938)
- Figure.savefig: Support .jpeg as JPEG image extension (#2691)
- Figure.savefig: Support uppercase file extensions (e.g., PNG, PDF) (#2697)
Deprecations
- Rename API function Session.open_virtual_file to Session.open_virtualfile (remove in v0.15.0) (#2996)
- NEP29: Set minimum required version to NumPy 1.23+ (#2991)
- Figure.timestamp: Deprecate parameter 'justification' to 'justify' (remove in v0.13.0) (#3002)
- Figure.grdimage: Remove the unsupported 'img_out'/'A' parameter (#2907)
Bug Fixes
- pygmt.which: Fix the bug when passing multiple files (#2726)
- pygmt.filter1d: Fix the bug that the first line is read as headers (#2780)
- clib: Fix the bug when passing multiple columns of strings with variable lengths to the GMT C API (#2719)
- Let kwargs_to_strings work with default values and positional arguments (#2826)
- Figure.meca: Fix typo pricipal_axis -> principal_axis (#2940)
Documentation
- Add gallery example "Scale bar" (#2822)
- Add gallery example for plotting connection lines ("connection" parameter of Figure.plot) (#2999)
- Add gallery example showing how to adjust line segment ends (caps and joints) (#3015)
- Gallery example "Legend": Update regarding input data and multi-column legends (#2762)
- Add the Japanese "PyGMT-HOWTO" tutorial to "External Resources" (#2743)
- Figure.plot: Update docstring for "connection" parameter to GMT 6.5 (#2994)
- Use consistent description for the "outgrid" parameter (#2874)
- Improve the onboarding access checklist for contributors, maintainers and administrators (#2656)
- Recommend Miniforge instead of Mambaforge (#2833)
Maintenance
- pyarrow: Check compatibility of pyarrow-backed pandas objects with numeric dtypes (#2774)
- Switch away from Stamen basemaps (#2717)
- Add the "validate_output_table_type" function to check the "output_type" parameter (#2772)
- Create "skip_if_no" helper function to skip tests when missing a package (#2883)
- Fix "fixture_xr_image" to open "earth_day_01d_p" directly with rioxarray (#2963)
- Improve the way to import optional modules (#2809)
- Move variable
__gmt_version__
to pygmt.clib to avoid cyclic-import errors (#2713) - Refactor the internal "_load_remote_dataset function" to simplify datasets' definitions (#2917)
- Benchmark grdsample, grdfilter and sph2grd with fixed cores (#2945)
- Setup Continuous Benchmarking workflow with pytest-codspeed (#2908)
- Update output shape and mean values from some x2sys_cross tests (#2986)
- Bump the GMT version in CI to 6.5.0 (#2962)
- Bump ghostscript to 10.02.1 (#2694)
- Add support for Python 3.12 (#2711)
- NEP29: Test PyGMT on NumPy 1.26 (#2692)
- CI: Trigger the cache_data workflow in PRs if cache files are added/deleted/updated (#2939)
- CI: Test GMT dev version on Windows by building from source (#2773)
- CI: Set cache-downloads to false to speedup the "Setup Micromamba" step (#2946)
- CI: Run certain GitHub Actions workflows on official repo only (#2951)
- CI: Run benchmarks if PR is labeled with "run/benchmark" (#2958)
- CI: Run "GMT Dev Tests" if PR is labeled with "run/test-gmt-dev" (#2960)
- CI: Require at least one code block separator for example files in the Style Checks workflow (#2810)
- Add Mypy for static type checking (#2808)
- TYP: Improve the doc style for type hints (#2813)
- TYP: Add type hints support for pygmt.datasets.load_sample_data (#2859)
- TYP: Add type hints for the "registration" parameter in pygmt.datasets.load_* functions (#2867)
- TYP: Add type hints for "data_source" in load_earth_relief and load_earth_magnetic_anomaly functions (#2849)
- TYP: Add type hints for parameters of Figure.timestamp(#2890)
- TYP: Add type hints for "terminator" in Figure.solar and simplify codes (#2881)
- TYP: Add type hints for parameters of Figure.shift_origin, improve docstrings, and add inline examples (#2879)
- doc: Convert the installation guides source code from ReST to Markdown (#2992)
- doc: Convert overview source code from ReST to Markdown (#2953)
- doc: Move compatibility table from README to separate file (#2862)
- Enable the PDF format documentation in the ReadTheDocs site (#2876)
- Add the full changelog link to the rele...
v0.10.0
Release v0.10.0 (2023/09/02)
Highlights
- 🎉 Tenth minor release of PyGMT 🎉
- Support non-ASCII characters in Figure.text (#2638) and other method arguments (#2584)
- Three new tutorials and seven new gallery examples
Enhancements
- Figure.colorbar: Add alias for "Q" (#2608)
- Figure.grdimage: Allow passing RGB xarray.DataArray images (#2590)
- Figure.image: Add alias for "G" (#2615)
- Figure.meca: Add aliases for "L", "T", and "Fr" (#2546)
- clib.Session: Wrap the GMT_Get_Common API function (#2500)
- pygmt.grdfill: Add alias for "N" (#2618)
- pygmt.select: Add aliases for "C", "F", and "L" (#2466)
- pygmt.show_versions: Show versions of IPython and rioxarray (#2492)
- Better handling of optional virtual files (e.g., shading in Figure.grdimage) (#2493)
Deprecations
- Remove the unused pygmt.test() function (#2652)
- Figure.image: Deprecate parameter "bit_color" to "bitcolor" (remove in v0.12.0) (#2635)
- Figure.text: Remove the deprecated "incols" parameter (deprecated since v0.8.0) (#2473)
- NEP29: Set minimum required version to Python 3.9+ (#2487)
- NEP29: Set minimum required version to NumPy 1.22+ (#2586)
Bug Fixes
- load_earth_mask: Keep data's encoding to correctly infer data's registration and gtype information (#2632)
- Geopandas integration: Mapping int/int64 to int32 for OGR_GMT format (#2592)
- Figure.meca: Let the "scale" parameter accept int/float/str values (#2566)
- Figure.meca: Fix beachball offsetting for ndarray input (requires GMT>6.4.0) (#2576)
Documentation
- Document the default CPT for GMT remote datasets (#2573)
- Add tutorial to explain naming of PyGMT figure elements (#2383)
- Add tutorial to show interactive data visualization via
panel
(#2498) - Add tutorial for cartesian histograms (#2445)
- Add gallery example to show usage of dcw parameter in Figure.coast (#2428)
- Add gallery example to show usage of tile maps (#2585)
- Add gallery example showing how to build an envelope around a curve (#2587)
- Add gallery example for plotting an RGB image from an xarray.DataArray (#2641)
- Add gallery example "Quoted lines" (
style="q"
) (#2563) - Add gallery example "Decorated lines" (
style="~"
) (#2564) - Add gallery example "Cross-section along a transect" (#2515)
Maintenance
- Use substitutions to show the minimum required Python and GMT versions dynamically in installation guides (#2488)
- Use np.asarray to convert a 1-D array to datetime type in array_to_datetime (#2481)
- Use consistent docstrings for test files (#2578)
- Use concurrency to cancel previous runs (#2589)
- Set date_format to ISO8601 to silence pandas 2.0 UserWarning on read_csv (#2569)
- Remove dummy_context and use contextlib.nullcontext instead (#2491)
- NEP29: Test PyGMT on NumPy 1.25 (#2581)
- Fix tests for Aug 2023 updated remote datasets (#2636)
- Figure.meca: Refactor the two tests for offsetting beachballs (#2572)
- Figure.meca: Refactor tests for plotting multiple focal mechanisms (#2565)
- Figure.meca: Refactor tests for plotting a single focal mechanism (#2533)
- Figure.meca: Add a test for passing event names via pandas.DataFrame (#2582)
- Exclude bots from contributors in release drafter (#2484)
- Exclude DVC files from source/binary distributions (#2634)
- CI: Use mamba-org/provision-with-micromamba to setup micromamba (#2435)
- CI: Migrate provision-with-micromamba to setup-micromamba (#2536)
- CI: Run dev tests on Scientific Python nightly wheels (#2612)
- CI: Remove the deprecated cml-publish command from the dvc-diff workflow (#2559)
- CI: Fix and simplify the dvc-diff workflow (#2549)
- CI: Add the "Doctests" workflow to run doctests weekly (#2456)
- CI: Add detailed descriptions in the workflow files and update maintainer guides (#2496)
- Add private function _validate_data_input to validate input data (#2595)
Contributors
v0.9.0
Release v0.9.0 (2023/03/31)
Highlights
- 🎉 Ninth minor release of PyGMT 🎉
- Add Figure.tilemap to plot XYZ tile maps (#2394)
- Add function to load raster tile maps using contextily (#2125)
- Eleven new/updated gallery and inline examples
New Features
- Add load_earth_mask function for GSHHG Global Earth Mask dataset (#2310)
- Add Figure.timestamp to plot the GMT timestamp logo (#2208, #2425)
Enhancements
- pygmt.surface: Add aliases for "C", "L", "M", and "T" (#2321)
- Figure.meca: Add aliases for "C", "E", "G", and "W" (#2345)
- Figure.colorbar: Add aliases for "L" and "Z" (#2357)
Deprecations
- NEP29: Set minimum required version to NumPy 1.21+ (#2389)
- Recommend Figure.timestamp and remove timestamp (U) alias from all plotting methods (#2135)
- Remove the deprecated load_fractures_compilation function (deprecated since v0.6.0) (#2303)
- Remove the deprecated load_hotspots function (deprecated since v0.6.0) (#2309)
- Remove the deprecated load_japan_quakes function (deprecated since v0.6.0) (#2301)
- Remove the deprecated load_mars_shape function (deprecated since v0.6.0) (#2304)
- Remove the deprecated load_ocean_ridge_points function (deprecated since v0.6.0) (#2308)
- Remove the deprecated load_sample_bathymetry function (deprecated since v0.6.0) (#2305)
- Remove the deprecated load_usgs_quakes function (deprecated since v0.6.0) (#2306)
- pygmt.grdtrack: Remove the warning about the incorrect parameter order of 'points, grid' (warned since v0.7.0) (#2312)
Bug Fixes
- GMTDataArrayAccessor: Fallback to default grid registration and gtype if the grid source file doesn't exist (#2009)
- Figure.subplot: Fix setting "sharex", "sharey", and "frame" in combination with Figure.basemap (#2417)
- Figure.subplot: Fix strange positioning issues after exiting subplot (#2427)
- pygmt.config: Correctly reset to default values that contain whitespaces (#2331)
- pygmt.set_display: Do nothing when the display method is set to 'none' (#2450)
Documentation
- GMTDataArrayAccessor: Add inline examples for setting GMT specific properties (#2370)
- Document limitations of GMT xarray accessors (#2375)
- Revise the notes about registration and gtype of remote datasets (#2384)
- Add project keywords to the pyproject.toml file (#2315)
- Add inline example for colorbar (#2373)
- Add inline example for grdview (#2381)
- Add inline example for load_earth_mask (#2355)
- Add inline example for load_earth_vertical_gravity_gradient (#2356)
- Add inline examples and improve documentation for pygmt.set_display (#2458)
- Add gallery example showing how to use patterns via the "fill" parameter (or similar parameters) (#2329)
- Add gallery example for scatter plot with histograms on sides (#2410)
- Add gallery example showing how to use advanced grdgradient via the "azimuth" & "normalize" parameters (#2354)
- Add gallery example for the Figure.timestamp method (#2391)
- Expand gallery example "Colorbar" for categorical data (#2395)
- Expand gallery example "Focal mechanisms" to use "*fill" and "pen" (#2433)
- Add working example to quickstart section of README (#2369)
- Recommend Mambaforge and mamba in the installation and contributing guides (#2385)
Maintenance
- Add the GMTSampleData class to simplify the load_sample_data and list_sample_data functions (#2342)
- Add a new target 'doctest' to run doctests only and simplify Makefile (#2443)
- Add a package-level variable
__gmt_version__
for development use (#2366) - Allow printing show_versions() to in-memory buffer to enable testing (#2399)
- Accept a dict containing configurable GMT parameters in build_arg_string (#2324)
- Publish to TestPyPI and PyPI via OpenID Connect token (#2453)
- Remove --sdist --wheel flags from the build command (#2420)
- Replace ModuleNotFoundError with the more general ImportError (#2441)
Contributors
v0.8.0
Release v0.8.0 (2022/12/30)
Highlights
- 🎉 Eighth minor release of PyGMT 🎉
- Added support for tab auto-completion for all GMT default parameters (#2213)
- Created functions to download GMT remote datasets (#1786)
- Wrapped the ternary module (#1431)
- Added an intro tutorial for creating contour maps (#2126)
New Features
- Add load_earth_free_air_anomaly function for Earth free-air anomaly dataset (#2238)
- Add load_earth_geoid function for Earth Geoid dataset (#2236)
- Add load_earth_magnetic_anomaly function for Earth magnetic anomaly dataset (#2196, #2239, #2241)
- Add load_earth_vertical_gravity_gradient function for Earth vertical gravity gradient dataset (#2240)
- load_earth_relief: Add the support of data sources "gebco" , "gebcosi", and "synbath" (#1818, #2162, #2192, #2281)
- Wrap ternary (#1431)
Enhancements
- Set gridline (if available) as the default grid registration for remote datasets (#2266)
- Add ternary sample dataset (#2211)
- Figure.ternary: Add parameters "alabel", "blabel", and "clabel" (#2139)
- Figure.psconvert: Add a new alias "gs_path" (-G) (#2076)
- Figure.psconvert: Check if the given prefix is valid (#2170)
- Figure.savefig: Raise a FileNotFoundError if the parent directory doesn't exist (#2160)
- Figure.show: Allow keyword arguments passed to Figure.psconvert (#2078)
- pygmt.config: Support tab auto-completion for all GMT defaults (#2213)
- Rewrite the meca function to support offsetting and labeling beachballs (#1784)
Deprecations
- Deprecate xshift (X) and yshift (Y) aliases from all plotting modules (remove in v0.12.0) (#2071)
- Figure.plot: Deprecate parameter "color" to "fill" (remove in v0.12.0) (#2177)
- Figure.plot3d: Deprecate parameter "color" to "fill" (remove in v0.12.0) (#2178)
- Figure.rose: Deprecate parameter color to fill (remove in v0.12.0) (#2181)
- Figure.velo: Deprecate parameters "color" to "fill" and "uncertaintycolor" to "uncertaintyfill" (remove in v0.12.0) (#2206)
- Figure.wiggle: Deprecate parameter "color" (remove in v0.12.0) and add "fillpositive"/"fillnegative" (#2205)
- Figure.psconvert: Remove the deprecated parameter "icc_gray" (deprecated since v0.6.0) (#2267)
- Figure.text: Deprecate parameter "incols" to "use_word" (remove in v0.10.0) (#1964)
Bug Fixes
- Figure.meca: Fix line and circle of offset parameter for dict/pandas input (#2226)
- Figure.meca: Fix beachball offsetting with dict/pandas inputs (#2202)
- Figure.meca: Fix the bug when passing a dict of scalar values to the spec parameter (#2174)
- Figure.ternary: Fix the crash for pd.DataFrame input with GMT 6.3.0-6.4.0 (#2274)
Documentation
- Add intro tutorial section for creating contour map (#2126)
- Add gallery example for Figure.ternary method (#2138)
- Add gallery example showing the usage of vertical and horizontal bars (#1521)
- Add inline example for coast (#2142)
- Add inline example for grdcontour (#2148)
- Add inline example for grdimage (#2146)
- Add inline example for grd2cpt (#2145)
- Add inline example for solar (#2147)
- Add SciPy 2022 talk to presentations (#2053)
- Add instructions to install pygmt kernel for Jupyter users (#2153)
- Improve instructions about setting GMT_LIBRARY_PATH env variable (#2136)
- Add badges for conda package version, license, and twitter (#2081)
- Add PyOpenSci peer reviewed badge to main README.rst (#2112)
Maintenance
- Add an internal function to load GMT remote datasets (#2200)
- Add support for Python 3.11 (#2172)
- NEP29: Test PyGMT on NumPy 1.24 (#2256)
- NEP29: Test PyGMT on NumPy 1.23 and 1.21 (#2057)
- Bump the GMT version in CI to 6.4.0 (#1990)
- Update baseline images for GMT 6.4.0 (#1883)
- Migrate Continuous Documentation from Vercel to Readthedocs (#1859)
- Set nested_sections to False for Sphinx-Gallery 0.11.0 regarding a correct navgation bar (#2046)
- Convert bug report, feature, and module request issue templates into yaml configured forms (#2091, #2214, #2216)
- doc: Set different html_baseurl for stable and dev versions (#2158)
- Update the instructions for checking README syntax (#2265)
- Use longname placeholders in the docstrings for common options (#1932)
- Add optional dependencies to pyproject.toml (#2069)
- Migrate project metadata from setup.py to pyproject.toml following PEP621 (#1848)
- Move blackdoc options to pyproject.toml (#2093)
- Move docformatter options from Makefile to pyproject.toml (#2072)
- Replace flake8 with flakeheaven (#1847)
- Add a workflow and Makefile target to test old GMT versions every Tuesday (#2079)
- Check if a module outputs to a temporary file using "Path().stat().st_size > 0" (#2224)
- pygmt.show_versions: Show GMT binary version and hide the Python interpreter path (#1838)
- Refactor grdview and grdimage to use virtualfile_from_data (#1988)
- Use the org-wide code of conduct (#2020)
Contributors
v0.7.0
Release v0.7.0 (2022/07/01)
Highlights
- 🎉 Seventh minor release of PyGMT 🎉
- Wrapped 3 GMT modules
- Added two new PyGMT tutorials and EGU 2022 short course to external resources page (#1971 and #1935)
New Features
Enhancements
- Support passing data in NumPy int8, int16, uint8 and uint16 dtypes to GMT (#1963)
- inset: Add region and projection aliases and fix two examples (#1931)
- basemap: Plotting frames if required parameters are not given (#1909)
- basemap: Added box alias for F (#1894)
- Add a sample dataset maunaLoa_co2 (#1961)
- Add a sample dataset notre_dame_topography (#1920)
- Add a sample dataset earth_relief_holes (#1921)
Deprecations
- NEP29: Set minimum required version to NumPy 1.20+ (#1985)
- Figure.wiggle: Remove parameter 'columns', use 'incols' instead. (#1977)
- Figure.histogram and pygmt.info: Remove parameter 'table', use 'data' instead (#1975)
- pygmt.surface: Remove parameter 'outfile', use 'outgrid' instead (#1976)
- blockm/contour/plot/plot3d/rose/surface/wiggle: Change the parameter order of data array and input arrays (#1978)
Bug Fixes
- grdtrack: Fix the bug when profile is given (#1867)
- Fix the grid accessor (grid registration and type) for 3D grids (#1913)
Documentation
- Add instructions to install PyGMT using mamba (#1967)
- Improve two gallery examples regarding categorical colormaps (#1934)
- Add inline example to dimfilter (#1956)
- Add inline example to surface (#1953)
- Add inline example to grdfill (#1954)
- Add inline code examples to contributing guidelines (#1924)
- Add thumbnail images to the external resources page (#1941)
- Redesign the team gallery using sphinx-design's card directive (#1937)
Maintenance
- Fix broken 'Improve this page' links using sphinx variable page_source_suffix (#1969)
- Split up functions for loading datasets (#1955)
- Set setuptools_scm fallback_version to follow PEP440 (#1945)
- Refactor text to use virtualfile_from_data (#1121)
- Run full tests only on Wednesday scheduled jobs (#1833)
- Run GMT Dev Tests on Monday, Wednesday and Friday only (#1922)
- Update GMT Dev Tests workflow to test on macOS-12 and ubuntu-22.04 (#1918)
Contributors
v0.6.1
Release v0.6.1 (2022/04/11)
Highlights
- Patch release which allows passing None explicitly to pygmt functions (#1872, #1862, #1857, #1815)
- A new tutorial for grdhisteq (#1821)
Bug Fixes
- Fix pathlib support for plot and plot3d (#1831)
Documentation
- Add inline example for grdvolume (#1726)
- Format author affiliations in CITATION.cff and AUTHORS.md (#1844)
Maintenance
- NEP29: Run PyGMT tests and docs build on Python 3.10 (#1868)
- Let pygmt.show_versions() report geopandas version (#1846)
- Refactor build_arg_string to also deal with infile and outfile (#1837)
- Migrate build system settings to pyproject.toml following pep517 and pep518 (#1845)
- Use the build package to build sdist and wheel distributions (#1823)
- Let slash command /test-gmt-dev report job URL (#1866)
Contributors
v0.6.0
Release v0.6.0 (2022/03/14)
Highlights
- 🎉 Sixth minor release of PyGMT 🎉
- New inline examples for 14 functions!
- Single
pygmt.datasets.load_sample_data
function for loading any sample dataset (#1685) - Minimum required GMT version is now 6.3.0 (#1649)
New Features
Enhancements
- Add alias for blockmean's -S parameter (#1601)
- Allow users to set the waiting time when displaying a preview image using an external viewer (#1618)
- Raise an exception if the given parameter is not recognized and is longer than 2 characters (#1792)
Deprecations
- Figure.plot/plot3d: Remove parameter "sizes", use "size" instead (#1809)
- Figure.contour/plot/plot3d/rose: Remove parameter "columns", use "incols" instead (#1806)
- Figure.psconvert: Add new aliases and deprecate parameter "icc_gray" (remove in v0.8.0) (#1673)
- NEP29: Set minimum required version to Python 3.8+ (#1676)
- NEP29: Set minimum required version to NumPy 1.19+ (#1675)
Bug Fixes
- Allow passing arguments containing spaces into pygmt functions (#1487)
- Fix the spacing parameter processing for many modules (#1805)
- Fix missing gcmt convention keys in pygmt.meca (#1611)
- Fix the spacing parameter and check required parameters in xyz2grd (#1804)
- Fix UnicodeDecodeError with shapefiles for plot and plot3d (#1695)
Documentation
- Add a shorter video introduction to the home page (#1769)
- Add Liam's 2021 ROSES video to learning resources (#1760)
- Add quick conda install instructions in main README (#1717)
- Add instructions for reporting upstream bugs to contributing.md (#1610)
- List key development dependencies to install for new contributors (#1783)
- Update Code of Conduct to v2.1 (#1754)
- Update the contributing guide about pushing changes to dvc and git (#1776)
- Update dataset links to the new remote-datasets site (#1785)
- Add more sections to the API docs (#1643)
- Add an "add a title" to starter tutorial (#1688)
- Reorganize tutorial section in the documentation sidebar (#1603)
- Update the starter tutorial introduction (#1607)
- Add gallery example to showcase blockmean (#1598)
- Add gallery example to showcase project (#1696)
- Update text symbol gallery example (#1648)
- Add inline example for blockmean (#1729)
- Add inline example for blockmedian (#1730)
- Add inline example for blockmode (#1731)
- Add inline example for grd2xyz (#1713)
- Add inline example for grdclip (#1711)
- Add inline example for grdcut (#1689)
- Add inline example for grdgradient (#1720)
- Add inline example for grdlandmask (#1721)
- Add inline example for grdproject (#1722)
- Add inline example for grdsample (#1724)
- Add inline example for grdtrack (#1725)
- Add inline example for select (#1756)
- Add inline example for sph2grd (#1718)
- Add inline example for xyz2grd (#1719)
Maintenance
- Add a test to make sure the incols parameter works for pandas.DataFrame (#1771)
- Add load_static_earth_relief function for internal testing (#1727)
- Migrate pylint settings from .pylintrc to pyproject.toml (#1755)
- NEP29: Test PyGMT on NumPy 1.22 (#1701)
- Replace pkg_resources with importlib.metadata (#1674)
- Update deprecated -g common option syntax (#1670)
- Update deprecated -JG syntax (#1659)
- Use pytest-doctestplus to skip some inline doctests (#1790)
- Use Python 3.10 in Continuous Integration tests (#1577)