@@ -1245,9 +1245,9 @@ def connectivities(
12451245 var_name = None ,
12461246 attributes = None ,
12471247 cf_role = None ,
1248- node = None ,
1249- edge = None ,
1250- face = None ,
1248+ contains_node = None ,
1249+ contains_edge = None ,
1250+ contains_face = None ,
12511251 ):
12521252 return self ._connectivity_manager .filters (
12531253 item = item ,
@@ -1256,9 +1256,9 @@ def connectivities(
12561256 var_name = var_name ,
12571257 attributes = attributes ,
12581258 cf_role = cf_role ,
1259- node = node ,
1260- edge = edge ,
1261- face = face ,
1259+ contains_node = contains_node ,
1260+ contains_edge = contains_edge ,
1261+ contains_face = contains_face ,
12621262 )
12631263
12641264 def connectivity (
@@ -1269,9 +1269,9 @@ def connectivity(
12691269 var_name = None ,
12701270 attributes = None ,
12711271 cf_role = None ,
1272- node = None ,
1273- edge = None ,
1274- face = None ,
1272+ contains_node = None ,
1273+ contains_edge = None ,
1274+ contains_face = None ,
12751275 ):
12761276 return self ._connectivity_manager .filter (
12771277 item = item ,
@@ -1280,9 +1280,9 @@ def connectivity(
12801280 var_name = var_name ,
12811281 attributes = attributes ,
12821282 cf_role = cf_role ,
1283- node = node ,
1284- edge = edge ,
1285- face = face ,
1283+ contains_node = contains_node ,
1284+ contains_edge = contains_edge ,
1285+ contains_face = contains_face ,
12861286 )
12871287
12881288 def coord (
@@ -1293,9 +1293,9 @@ def coord(
12931293 var_name = None ,
12941294 attributes = None ,
12951295 axis = None ,
1296- node = None ,
1297- edge = None ,
1298- face = None ,
1296+ include_nodes = None ,
1297+ include_edges = None ,
1298+ include_faces = None ,
12991299 ):
13001300 return self ._coord_manager .filter (
13011301 item = item ,
@@ -1304,9 +1304,9 @@ def coord(
13041304 var_name = var_name ,
13051305 attributes = attributes ,
13061306 axis = axis ,
1307- node = node ,
1308- edge = edge ,
1309- face = face ,
1307+ include_nodes = include_nodes ,
1308+ include_edges = include_edges ,
1309+ include_faces = include_faces ,
13101310 )
13111311
13121312 def coords (
@@ -1317,9 +1317,9 @@ def coords(
13171317 var_name = None ,
13181318 attributes = None ,
13191319 axis = None ,
1320- node = None ,
1321- edge = None ,
1322- face = None ,
1320+ include_nodes = None ,
1321+ include_edges = None ,
1322+ include_faces = None ,
13231323 ):
13241324 return self ._coord_manager .filters (
13251325 item = item ,
@@ -1328,9 +1328,9 @@ def coords(
13281328 var_name = var_name ,
13291329 attributes = attributes ,
13301330 axis = axis ,
1331- node = node ,
1332- edge = edge ,
1333- face = face ,
1331+ include_nodes = include_nodes ,
1332+ include_edges = include_edges ,
1333+ include_faces = include_faces ,
13341334 )
13351335
13361336 def remove_connectivities (
@@ -1341,9 +1341,9 @@ def remove_connectivities(
13411341 var_name = None ,
13421342 attributes = None ,
13431343 cf_role = None ,
1344- node = None ,
1345- edge = None ,
1346- face = None ,
1344+ contains_node = None ,
1345+ contains_edge = None ,
1346+ contains_face = None ,
13471347 ):
13481348 return self ._connectivity_manager .remove (
13491349 item = item ,
@@ -1352,9 +1352,9 @@ def remove_connectivities(
13521352 var_name = var_name ,
13531353 attributes = attributes ,
13541354 cf_role = cf_role ,
1355- node = node ,
1356- edge = edge ,
1357- face = face ,
1355+ contains_node = contains_node ,
1356+ contains_edge = contains_edge ,
1357+ contains_face = contains_face ,
13581358 )
13591359
13601360 def remove_coords (
@@ -1365,9 +1365,9 @@ def remove_coords(
13651365 var_name = None ,
13661366 attributes = None ,
13671367 axis = None ,
1368- node = None ,
1369- edge = None ,
1370- face = None ,
1368+ include_nodes = None ,
1369+ include_edges = None ,
1370+ include_faces = None ,
13711371 ):
13721372 # Filter out absent arguments - only expecting face coords sometimes,
13731373 # same will be true of volumes in future.
@@ -1378,9 +1378,9 @@ def remove_coords(
13781378 "var_name" : var_name ,
13791379 "attributes" : attributes ,
13801380 "axis" : axis ,
1381- "node " : node ,
1382- "edge " : edge ,
1383- "face " : face ,
1381+ "include_nodes " : include_nodes ,
1382+ "include_edges " : include_edges ,
1383+ "include_faces " : include_faces ,
13841384 }
13851385 kwargs = {k : v for k , v in kwargs .items () if v }
13861386
@@ -1682,33 +1682,32 @@ def filters(
16821682 var_name = None ,
16831683 attributes = None ,
16841684 axis = None ,
1685- node = None ,
1686- edge = None ,
1687- face = None ,
1685+ include_nodes = None ,
1686+ include_edges = None ,
1687+ include_faces = None ,
16881688 ):
16891689 # TBD: support coord_systems?
16901690
1691- face_requested = face is True
1692- args = [node , edge , face ]
1693- true_count = len ([arg for arg in args if arg ])
1694- if true_count > 1 :
1695- # Standard filter behaviour is 'AND', and coord locations are
1696- # mutually exclusive, so multiple True cannot return any results.
1697- node = edge = face = False
1698- elif true_count == 0 :
1699- # Treat None as True in this case.
1700- node , edge , face = [True if arg is None else arg for arg in args ]
1691+ # Preserve original argument before modifying.
1692+ face_requested = include_faces
1693+
1694+ # Rationalise the tri-state behaviour.
1695+ args = [include_nodes , include_edges , include_faces ]
1696+ state = not any (set (filter (lambda arg : arg is not None , args )))
1697+ include_nodes , include_edges , include_faces = map (
1698+ lambda arg : arg if arg is not None else state , args
1699+ )
17011700
17021701 def populated_coords (coords_tuple ):
17031702 return list (filter (None , list (coords_tuple )))
17041703
17051704 members = []
1706- if node :
1705+ if include_nodes :
17071706 members += populated_coords (self .node_coords )
1708- if edge :
1707+ if include_edges :
17091708 members += populated_coords (self .edge_coords )
17101709 if hasattr (self , "face_coords" ):
1711- if face :
1710+ if include_faces :
17121711 members += populated_coords (self .face_coords )
17131712 elif face_requested :
17141713 dmsg = "Ignoring request to filter non-existent 'face_coords'"
@@ -1739,8 +1738,8 @@ def remove(
17391738 var_name = None ,
17401739 attributes = None ,
17411740 axis = None ,
1742- node = None ,
1743- edge = None ,
1741+ include_nodes = None ,
1742+ include_edges = None ,
17441743 ):
17451744 return self ._remove (
17461745 item = item ,
@@ -1749,8 +1748,8 @@ def remove(
17491748 var_name = var_name ,
17501749 attributes = attributes ,
17511750 axis = axis ,
1752- node = node ,
1753- edge = edge ,
1751+ include_nodes = include_nodes ,
1752+ include_edges = include_edges ,
17541753 )
17551754
17561755
@@ -1829,9 +1828,9 @@ def remove(
18291828 var_name = None ,
18301829 attributes = None ,
18311830 axis = None ,
1832- node = None ,
1833- edge = None ,
1834- face = None ,
1831+ include_nodes = None ,
1832+ include_edges = None ,
1833+ include_faces = None ,
18351834 ):
18361835 return self ._remove (
18371836 item = item ,
@@ -1840,9 +1839,9 @@ def remove(
18401839 var_name = var_name ,
18411840 attributes = attributes ,
18421841 axis = axis ,
1843- node = node ,
1844- edge = edge ,
1845- face = face ,
1842+ include_nodes = include_nodes ,
1843+ include_edges = include_edges ,
1844+ include_faces = include_faces ,
18461845 )
18471846
18481847
@@ -1987,9 +1986,9 @@ def filters(
19871986 var_name = None ,
19881987 attributes = None ,
19891988 cf_role = None ,
1990- node = None ,
1991- edge = None ,
1992- face = None ,
1989+ contains_node = None ,
1990+ contains_edge = None ,
1991+ contains_face = None ,
19931992 ):
19941993 members = [c for c in self ._members .values () if c is not None ]
19951994
@@ -2020,16 +2019,16 @@ def location_filter(instances, loc_arg, loc_name):
20202019 return filtered
20212020
20222021 for arg , loc in (
2023- (node , "node" ),
2024- (edge , "edge" ),
2025- (face , "face" ),
2022+ (contains_node , "node" ),
2023+ (contains_edge , "edge" ),
2024+ (contains_face , "face" ),
20262025 ):
20272026 members = location_filter (members , arg , loc )
20282027
20292028 # No need to actually modify filtering behaviour - already won't return
20302029 # any face cf-roles if none are present.
20312030 supports_faces = any (["face" in role for role in self .ALL ])
2032- if face and not supports_faces :
2031+ if contains_face and not supports_faces :
20332032 message = (
20342033 "Ignoring request to filter for non-existent 'face' cf-roles."
20352034 )
@@ -2059,9 +2058,9 @@ def remove(
20592058 var_name = None ,
20602059 attributes = None ,
20612060 cf_role = None ,
2062- node = None ,
2063- edge = None ,
2064- face = None ,
2061+ contains_node = None ,
2062+ contains_edge = None ,
2063+ contains_face = None ,
20652064 ):
20662065 removal_dict = self .filters (
20672066 item = item ,
@@ -2070,9 +2069,9 @@ def remove(
20702069 var_name = var_name ,
20712070 attributes = attributes ,
20722071 cf_role = cf_role ,
2073- node = node ,
2074- edge = edge ,
2075- face = face ,
2072+ contains_node = contains_node ,
2073+ contains_edge = contains_edge ,
2074+ contains_face = contains_face ,
20762075 )
20772076 for cf_role in self .REQUIRED :
20782077 excluded = removal_dict .pop (cf_role , None )
0 commit comments