@@ -115,19 +115,23 @@ def __geq__(self, other) -> "DerivedFieldCombination":
115
115
def __gt__ (self , other ) -> "DerivedFieldCombination" :
116
116
return DerivedFieldCombination ([self , other ], op = operator .gt )
117
117
118
- # def __eq__(self, other) -> "DerivedFieldCombination":
119
- # return DerivedFieldCombination([self, other], op=operator.eq)
118
+ def __eq__ (self , other ) -> "DerivedFieldCombination" :
119
+ return DerivedFieldCombination ([self , other ], op = operator .eq )
120
120
121
121
def __ne__ (self , other ) -> "DerivedFieldCombination" : # type: ignore[override]
122
122
return DerivedFieldCombination ([self , other ], op = operator .ne )
123
123
124
+ @abc .abstractmethod
125
+ def __hash__ (self ) -> int :
126
+ pass
127
+
124
128
125
129
class DerivedFieldCombination (DerivedFieldBase ):
126
130
sampling_type : str | None
127
131
terms : list
128
- op : Callable | None
132
+ op : Callable
129
133
130
- def __init__ (self , terms : list , op = None ):
134
+ def __init__ (self , terms : list , op : Callable ):
131
135
if not terms :
132
136
raise ValueError ("DerivedFieldCombination requires at least one term." )
133
137
@@ -146,6 +150,9 @@ def __init__(self, terms: list, op=None):
146
150
self .terms = terms
147
151
self .op = op
148
152
153
+ def __hash__ (self ):
154
+ return hash ((self .sampling_type , tuple (self .terms ), self .op ))
155
+
149
156
def __call__ (self , field , data ):
150
157
"""
151
158
Return the value of the field in a given data object.
@@ -307,6 +314,26 @@ def __init__(
307
314
self ._shared_aliases_list = alias ._shared_aliases_list
308
315
self ._shared_aliases_list .append (self )
309
316
317
+ def __hash__ (self ):
318
+ return hash (
319
+ (
320
+ self .name ,
321
+ self .sampling_type ,
322
+ self ._function ,
323
+ self .units ,
324
+ self .take_log ,
325
+ tuple (self .validators ),
326
+ self .vector_field ,
327
+ self .display_field ,
328
+ self .not_in_all ,
329
+ self .display_name ,
330
+ self .output_units ,
331
+ self .dimensions ,
332
+ self .ds ,
333
+ tuple (self .nodal_flag ),
334
+ )
335
+ )
336
+
310
337
def _copy_def (self ):
311
338
dd = {}
312
339
dd ["name" ] = self .name
0 commit comments