@@ -39,9 +39,9 @@ class FuzzyWarning(UserWarning):
3939 pass
4040
4141
42- NO_DOMAIN_TO_COMPARE = FuzzyWarning ( "No domains to compare." )
42+ NO_DOMAIN_TO_COMPARE = "No domains to compare to."
4343CANT_COMPARE_DOMAINS = "Can't compare different domains."
44- NO_DOMAIN = FuzzyWarning ( "No domain." )
44+ NO_DOMAIN = "No domain defined."
4545
4646
4747class Domain :
@@ -296,65 +296,56 @@ def f(x: float):
296296 def __eq__ (self , other : object ) -> bool :
297297 """A set is equal with another if both return the same values over the same range."""
298298 if self .domain is None or not isinstance (other , Set ) or other .domain is None :
299- # It would require complete AST analysis to check whether both Sets
299+ # It would require complete bytecode analysis to check whether both Sets
300300 # represent the same recursive functions -
301301 # additionally, there are infinitely many mathematically equivalent
302302 # functions that don't have the same bytecode...
303303 raise FuzzyWarning ("Impossible to determine." )
304- else :
305- # however, if domains ARE assigned (whether or not it's the same domain),
306- # we simply can check if they map to the same values
307- return np .array_equal (self .array (), other .array ())
304+ 305+ # however, if domains ARE assigned (whether or not it's the same domain),
306+ # we simply can check if they map to the same values
307+ return np .array_equal (self .array (), other .array ())
308308
309309 def __le__ (self , other : Set ) -> bool :
310310 """If this <= other, it means this is a subset of the other."""
311+ assert self .domain is not None and other .domain is not None , NO_DOMAIN_TO_COMPARE
311312 assert self .domain == other .domain , CANT_COMPARE_DOMAINS
312- if self .domain is None or other .domain is None :
313- raise NO_DOMAIN_TO_COMPARE
314313 return all (np .less_equal (self .array (), other .array ()))
315314
316315 def __lt__ (self , other : Set ) -> bool :
317316 """If this < other, it means this is a proper subset of the other."""
317+ assert self .domain is not None and other .domain is not None , NO_DOMAIN_TO_COMPARE
318318 assert self .domain == other .domain , CANT_COMPARE_DOMAINS
319- if self .domain is None or other .domain is None :
320- raise NO_DOMAIN_TO_COMPARE
321319 return all (np .less (self .array (), other .array ()))
322320
323321 def __ge__ (self , other : Set ) -> bool :
324322 """If this >= other, it means this is a superset of the other."""
323+ assert self .domain is not None and other .domain is not None , NO_DOMAIN_TO_COMPARE
325324 assert self .domain == other .domain , CANT_COMPARE_DOMAINS
326- if self .domain is None or other .domain is None :
327- raise NO_DOMAIN_TO_COMPARE
328325 return all (np .greater_equal (self .array (), other .array ()))
329326
330327 def __gt__ (self , other : Set ) -> bool :
331328 """If this > other, it means this is a proper superset of the other."""
329+ assert self .domain is not None and other .domain is not None , NO_DOMAIN_TO_COMPARE
332330 assert self .domain == other .domain , CANT_COMPARE_DOMAINS
333- if self .domain is None or other .domain is None :
334- raise NO_DOMAIN_TO_COMPARE
335331 return all (np .greater (self .array (), other .array ()))
336332
337333 def __len__ (self ) -> int :
338334 """Number of membership values in the set, defined by bounds and resolution of domain."""
339- if self .domain is None :
340- raise NO_DOMAIN
335+ assert self .domain is not None , NO_DOMAIN
341336 return len (self .array ())
342337
343338 @property
344339 def cardinality (self ) -> float :
345340 """The sum of all values in the set."""
346- if self .domain is None :
347- raise NO_DOMAIN
341+ assert self .domain is not None , NO_DOMAIN
348342 return sum (self .array ())
349343
350344 @property
351345 def relative_cardinality (self ) -> float :
352346 """Relative cardinality is the sum of all membership values by float of all values."""
353- if self .domain is None :
354- raise NO_DOMAIN
355- if len (self ) == 0 :
356- # this is highly unlikely and only possible with res=inf but still..
357- raise FuzzyWarning ("The domain has no element." )
347+ assert self .domain is not None , NO_DOMAIN
348+ assert len (self ) > 0 , "The domain has no element." # only possible with step=inf, but still..
358349 return self .cardinality / len (self )
359350
360351 def concentrated (self ) -> Set :
0 commit comments