# PyGMT v0.12.0 released **Announcing PyGMT v0.12.0, faster than ever with the use of GMT virtual files!** The PyGMT team is pushing forward with version [v0.12.0](https://www.pygmt.org/v0.12.0)! Here are some of the highlights :tada:: * :rocket: 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 Read through the [changelog](https://www.pygmt.org/v0.12.0/changes.html) for the full list of changes. Installation/upgrade :arrow_up: instructions are at https://www.pygmt.org/v0.12.0/install.html! Note that this version is cross-compatible with GMT 6.3 - 6.5, but it requires :snake: Python 3.10+, NumPy 1.23+, Pandas 1.5+ and Xarray 2022.06+ following [SPEC 0](https://scientific-python.org/specs/spec-0000/). Go try it online at [try-gmt](https://github.com/GenericMappingTools/try-gmt) :rocket:. <!-- Nice enhancements :sparkles:: * Support left/right single quotation marks in text and arguments ([#3192](https://github.com/GenericMappingTools/pygmt/pull/3192)) --> As usual, please feel free to report any bugs :beetle: with the [issue template on GitHub](https://github.com/GenericMappingTools/pygmt/issues/new?assignees=&labels=bug&template=bug_report.yaml). Your feedback is what helps us to improve! For example, this bug report at issue [#3104](https://github.com/GenericMappingTools/pygmt/issues/3104) sparked off a major refactoring by @seisman at PR [#3132](https://github.com/GenericMappingTools/pygmt/pull/3132) that removed a ton of workarounds in PyGMT's codebase related to spaces and funny characters! ### :bulb: Updates on Intros, Tutorials, and Gallery examples - Gallery example [Custom symbols](https://www.pygmt.org/v0.12.0/gallery/symbols/custom_symbols.html) :volcano::zap::star::cyclone:: Add information on creating and plotting your *own* Custom symbols by @yvonnefroehlich (PR [#3186](https://github.com/GenericMappingTools/pygmt/pull/3186)). - Tutorial [Plotting text](https://www.pygmt.org/v0.12.0/tutorials/basics/text.html) :clipboard:: Rewritten to improve the structure and to mention the support of list input for the `angle`, `justify`, and `font` parameters by @yvonnefroehlich (PR [#2760](https://github.com/GenericMappingTools/pygmt/pull/2760)). - Intro [Table inputs](https://www.pygmt.org/v0.12.0/get_started/04_table_inputs.html) :chart_with_upwards_trend:: Mention the support of a list of file names, pathlib.Path objects, URLs, or remote files by @seisman (PR [#3214](https://github.com/GenericMappingTools/pygmt/pull/3214)). - External resources [Examples from Publications and Posters](https://www.pygmt.org/v0.12.0/external_resources.html#examples-from-publications-and-posters): Add GitHub repository [gmt-pygmt-plotting](https://github.com/yvonnefroehlich/gmt-pygmt-plotting) by @yvonnefroehlich (PR [#3213](https://github.com/GenericMappingTools/pygmt/pull/3213)). | Custom symbols | Plotting text | Table inputs |:--:|:--:|:--:| | [![Custom symbols](https://www.pygmt.org/v0.12.0/_images/sphx_glr_custom_symbols_001.png)](https://www.pygmt.org/v0.12.0/gallery/symbols/custom_symbols.html) | [![Plotting text](https://www.pygmt.org/v0.12.0/_images/sphx_glr_text_004.png)](https://www.pygmt.org/v0.12.0/tutorials/basics/text.html) | [![Table inputs](https://www.pygmt.org/v0.12.0/_images/sphx_glr_04_table_inputs_002.png)](https://www.pygmt.org/v0.12.0/get_started/04_table_inputs.html) ### In memory of Paul Wessel We'd like to take a moment here to reflect on the passing of Pål (Paul) Wessel, who has been instrumental in the development and maintenance of the Generic Mapping Tools (GMT) library over the past four decades. More details are at https://forum.generic-mapping-tools.org/t/paul-wessel-31-august-1959-26-march-2024/4777 on how you can visit the memorial website Pål's family has shared to look over photos, share memories, donate to continue Pål's legacy at SOEST (University of Hawaiʻi), and find out about the Pål's Celebration of Life event planned for May 26th. > “I do hope that among the thousands of GMT users there will be a small subset who feel perhaps they should give back by involving themselves at some level in the GMT community and thus ensure GMT will not disappear overnight when I do.” > > <cite>From: Wessel, P. (2024). The Origins of the Generic Mapping Tools: From Table Tennis to Geoscience. Perspectives of Earth and Space Scientists , 5 (1), e2023CN000231. https://doi.org/10.1029/2023CN000231</cite> ### :railway_track: Roadmap to [v0.13.0](https://github.com/GenericMappingTools/pygmt/milestone/19) While the team has been busy refactoring the internals of PyGMT in recent releases, there are still lots of documentation and new features we'd like to add! Check out the [good first issue label](https://github.com/GenericMappingTools/pygmt/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) on GitHub or the list below for things you can help with! - Features/enhancements :sparkles: - Wrap [clip](https://github.com/GenericMappingTools/pygmt/pull/1779), [coupe](https://github.com/GenericMappingTools/pygmt/issues/2019), [earthtide](https://github.com/GenericMappingTools/pygmt/pull/1824), [fitcircle](https://github.com/GenericMappingTools/pygmt/pull/1550), [movie](https://github.com/GenericMappingTools/pygmt/issues/1347), [polar](https://github.com/GenericMappingTools/pygmt/issues/2358), and [sac](https://github.com/GenericMappingTools/pygmt/issues/2358) - Implement high-level methods of `Figure.plot` and `Figure.plot3d` ([#2797](https://github.com/GenericMappingTools/pygmt/issues/2797)): `Figure.scatter`, `Figure.hlines` ([#923](https://github.com/GenericMappingTools/pygmt/pull/923)) and `Figure.vlines` ([#670](https://github.com/GenericMappingTools/pygmt/issues/670)), `Figure.choropleth`, `Figure.errorbar`, `Figure.stem`, `Figure.fill_between` - Implement high-level methods of `Figure.basemap` or `Figure.coast` ([#2831](https://github.com/GenericMappingTools/pygmt/issues/2831)): `Figure.scale_bar`, `Figure.directionrose`, `Figure.magneticrose` - Documentation improvements :book: - Add a beginner :beginner: friendly PyGMT tutorial that is a good roadmap for new GMT/PyGMT users ([#770](https://github.com/GenericMappingTools/pygmt/issues/770)) - Add a tutorial explaining the generally accepted input types ([#1268](https://github.com/GenericMappingTools/pygmt/issues/1268)) Please don't be shy to [reach out on GitHub](https://github.com/GenericMappingTools/pygmt) if you're interested in contributing :smile:! ### :warning: Upcoming deprecations - **v0.13.0** - `Figure.timestamp`: Remove parameter `justification`, use `justify` instead (FutureWarning raised since PyGMT v0.11.0) - **v0.14.0** - `Figure.grdcontour`: Disallow passing `list[str]` arguments to the `annotation` parameter (e.g. `[100, "e", "f10p", "gred"]`), pass in a string like `100+e+f10p+gred` instead (FutureWarning raised since PyGMT v0.12.0) - `pygmt.helpers`: Remove the `build_arg_string` function, use `build_arg_list` instead (FutureWarning raised since PyGMT v0.12.0) - Remove the `sequence_plus` converter, only used for the `annotation` parameter of `Figure.grdcontour` (FutureWarning raised since PyGMT v0.12.0) - **v0.15.0** - `pygmt.clib`: Remove the `open_virtual_file` method, use `open_virtualfile` instead (FutureWarning raised since PyGMT v0.11.0) - `pygmt.clib`: Remove the`virtualfile_from_data` method, use `virtualfile_in` instead - **v0.16.0** - `Figure.grdcontour`: Remove parameter `interval`, use `levels` instead (FutureWarning raised since PyGMT v0.12.0) - **v1.0.0** - Short form aliases (e.g. `R`) will not work if long form aliases (e.g. `region`) are available (SyntaxWarning raised since PyGMT v0.4.0, see [#1316](https://github.com/GenericMappingTools/pygmt/pull/1316)) The compatibility matrix is listed at https://www.pygmt.org/v0.12.0/minversions.html, so make sure you keep things up to date! ### :world_map: Conference presentations/workshops/sprints We're looking at organizing an [AGU pre-conference workshop for GMT/PyGMT](https://forum.generic-mapping-tools.org/t/agu-2024-pre-conference-workshop/4817) this December at Washington D.C. 🏛️, so mark your calendars! This will be an in-person, full-day workshop, and we will post more details on the forum and at https://www.generic-mapping-tools.org/workshops once the schedule is confirmed around June/July. **P.S.** Share the word on Instagram [@genericmappingtools](https://www.instagram.com/genericmappingtools/) :camera_with_flash: and ResearchGate!