From 5be6d4842f239dc8631ebf2490a450399c9e224b Mon Sep 17 00:00:00 2001 From: pak lam tsang Date: Wed, 1 Jul 2026 16:39:52 +0100 Subject: [PATCH] reformat _Mesh1DCoordinateManager filters to use a switch --- lib/iris/mesh/components.py | 44 ++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/lib/iris/mesh/components.py b/lib/iris/mesh/components.py index 3e61d7c0d4..0e0e9ac7de 100644 --- a/lib/iris/mesh/components.py +++ b/lib/iris/mesh/components.py @@ -2281,32 +2281,30 @@ def filters( ): # TBD: support coord_systems? - # Determine locations to include. - if location is not None: - if location not in ["node", "edge", "face"]: + def populated_coords[T](coords_tuple: tuple[T, T]) -> list[T]: + return list(filter(None, list(coords_tuple))) + + members: list[AuxCoord] = [] + match location: + case "node": + members += populated_coords(self.node_coords) + case "edge": + members += populated_coords(self.edge_coords) + case "face": + if hasattr(self, "face_coords"): + members += populated_coords(self.face_coords) + else: + dmsg = "Ignoring request to filter non-existent 'face_coords'" + logger.debug(dmsg, extra=dict(cls=self.__class__.__name__)) + case None: # No specified locations means include them all + members += populated_coords(self.node_coords) + members += populated_coords(self.edge_coords) + if hasattr(self, "face_coords"): + members += populated_coords(self.face_coords) + case _: raise ValueError( f"Expected location to be one of `node`, `edge` or `face`, got `{location}`" ) - include_nodes = location == "node" - include_edges = location == "edge" - include_faces = location == "face" - else: - include_nodes = include_edges = include_faces = True - - def populated_coords(coords_tuple): - return list(filter(None, list(coords_tuple))) - - members = [] - if include_nodes: - members += populated_coords(self.node_coords) - if include_edges: - members += populated_coords(self.edge_coords) - if hasattr(self, "face_coords"): - if include_faces: - members += populated_coords(self.face_coords) - elif location == "face": - dmsg = "Ignoring request to filter non-existent 'face_coords'" - logger.debug(dmsg, extra=dict(cls=self.__class__.__name__)) result = metadata_filter( members,