diff --git a/docs/src/whatsnew/latest.rst b/docs/src/whatsnew/latest.rst index 3caf386ef6..538b6b1142 100644 --- a/docs/src/whatsnew/latest.rst +++ b/docs/src/whatsnew/latest.rst @@ -52,6 +52,9 @@ This document explains the changes made to Iris for this release printing these objects skips metadata elements that are set to None or an empty string or dictionary. (:pull:`4040`) +#. `@Badboy-16`_ implemented a ``CubeList.copy()`` method to return a + ``CubeList`` object instead of a ``list``. (:pull:`4094`) + 🐛 Bugs Fixed ============= @@ -170,6 +173,7 @@ This document explains the changes made to Iris for this release core dev names are automatically included by the common_links.inc: .. _@akuhnregnier: https://github.com/akuhnregnier +.. _@Badboy-16: https://github.com/Badboy-16 .. _@gcaria: https://github.com/gcaria .. _@MHBalsmeier: https://github.com/MHBalsmeier @@ -189,4 +193,4 @@ This document explains the changes made to Iris for this release .. _Python 3.8: https://www.python.org/downloads/release/python-380/ .. _README.md: https://github.com/SciTools/iris#----- .. _xxhash: http://cyan4973.github.io/xxHash/ -.. _conda-lock: https://github.com/conda-incubator/conda-lock \ No newline at end of file +.. _conda-lock: https://github.com/conda-incubator/conda-lock diff --git a/lib/iris/cube.py b/lib/iris/cube.py index a15951900b..90b233ff5a 100644 --- a/lib/iris/cube.py +++ b/lib/iris/cube.py @@ -707,6 +707,13 @@ def realise_data(self): """ _lazy.co_realise_cubes(*self) + def copy(self): + """ + Return a CubeList when CubeList.copy() is called. + """ + if type(self) == CubeList: + return deepcopy(self) + def _is_single_item(testee): """ diff --git a/lib/iris/tests/unit/cube/test_CubeList.py b/lib/iris/tests/unit/cube/test_CubeList.py index 2e7b110d60..82c4280fff 100644 --- a/lib/iris/tests/unit/cube/test_CubeList.py +++ b/lib/iris/tests/unit/cube/test_CubeList.py @@ -602,5 +602,14 @@ def test_realise_data(self): ) +class Test_CubeList_copy(tests.IrisTest): + def setUp(self): + self.cube_list = iris.cube.CubeList() + self.copied_cube_list = self.cube_list.copy() + + def test_copy(self): + self.assertIsInstance(self.copied_cube_list, iris.cube.CubeList) + + if __name__ == "__main__": tests.main()