v3.1a0 (03 May 2021) [unreleased]

This document explains the changes made to Iris for this release (View all changes.)

📢 Announcements

  1. Congratulations to @jamesp who recently became an Iris core developer after joining the Iris development team at the Met Office. 🎉

  2. A special thanks goes to @akuhnregnier, @gcaria, @jamesp and @MHBalsmeier all of whom made their first contributions to Iris, which were gratefully received and included in this release. Keep up the awesome work! 🍻

✨ Features

  1. @pelson and @trexfeathers enhanced iris.plot.plot() and iris.quickplot.plot() to automatically place the cube on the x axis if the primary coordinate being plotted against is a vertical coordinate. E.g. iris.plot.plot(z_cube) will produce a z-vs-phenomenon plot, where before it would have produced a phenomenon-vs-z plot. (PR #3906)

  2. @bjlittle introduced iris.common.metadata.hexdigest() to the public API. Previously it was a private function introduced in v3.0.0. Given any object, hexdigest() returns a string representation of the 64-bit non-cryptographic hash of the object using the extremely fast xxhash hashing algorithm. (PR #4020)

  3. @rcomer implemented a __str__ method for metadata classes, so printing these objects skips metadata elements that are set to None or an empty string or dictionary. (PR #4040)

🐛 Bugs Fixed

  1. @gcaria fixed cell_measure_dims() to also accept the string name of a CellMeasure. (PR #3931)

  2. @gcaria fixed ancillary_variable_dims() to also accept the string name of a AncillaryVariable. (PR #3931)

💣 Incompatible Changes

  1. N/A

🔥 Deprecations

  1. N/A

🔗 Dependencies

  1. N/A

📚 Documentation

  1. @rcomer updated the “Seasonal ensemble model plots” and “Global average annual temperature maps” Gallery examples. (PR #3933 and PR #3934)

  2. @MHBalsmeier described non-conda installation on Debian-based distros. (PR #3958)

  3. @bjlittle clarified in the doc-string that Coord is now an abstract base class since Iris 3.0.0, and it is not possible to create an instance of it. (PR #3971)

  4. @bjlittle added automated Iris version discovery for the latest.rst in the whatsnew documentation. (PR #3981)

  5. @tkknight stated the Python version used to build the documentation on Installing Iris and to the footer of all pages. Also added the copyright years to the footer. (PR #3989)

  6. @bjlittle updated the intersphinx_mapping and fixed documentation to use stable URLs for matplotlib. (PR #4003)

  7. @bjlittle added the PyPI badge to the README.md. (PR #4004)

  8. @tkknight added a banner at the top of every page of the unreleased development documentation if being viewed on Read the Docs. (PR #3999)

  9. @bjlittle added post-release instructions on how to Update PyPI with scitools-iris. (PR #4038)

  10. @bjlittle added the pre-commit.ci badge to the README.md. See pre-commit CI for further details. (PR #4061)

💼 Internal

  1. @rcomer removed an old unused test file. (PR #3913)

  2. @tkknight moved the docs/iris directory to be in the parent directory docs. (PR #3975)

  3. @jamesp updated a test for numpy 1.20.0. (PR #3977)

  4. @bjlittle and @jamesp extended the cirrus-ci testing and nox testing automation to support Python 3.8. (PR #3976)

  5. @bjlittle rationalised the noxfile.py, and added the ability for each nox session to list its conda environment packages and environment info. (PR #3990)

  6. @bjlittle enabled cirrus-ci compute credits for non-draft pull-requests from collaborators targeting the Iris master branch. (PR #4007)

  7. @akuhnregnier replaced deprecated numpy 1.20 aliases for builtin types. (PR #3997)

  8. @bjlittle added conditional task execution to .cirrus.yml to allow developers to easily disable cirrus-ci tasks. See Skipping Cirrus-CI Tasks. (PR #4019)

  9. @bjlittle and @jamesp addressed a regression in behaviour when using conda 4.10.0 within cirrus-ci. (PR #4084)

  10. @bjlittle updated the perceptual imagehash graphical test support for matplotlib 3.4.1. (PR #4087)