]> git.openstreetmap.org Git - nominatim.git/blobdiff - nominatim/api/search/query.py
Merge remote-tracking branch 'upstream/master'
[nominatim.git] / nominatim / api / search / query.py
index f2b18f873a8121fbdac79ea3c67b682826316e6b..5d75eb0fbe98c492638bbb174b5db930490f6788 100644 (file)
@@ -7,7 +7,7 @@
 """
 Datastructures for a tokenized query.
 """
 """
 Datastructures for a tokenized query.
 """
-from typing import List, Tuple, Optional, NamedTuple, Iterator
+from typing import List, Tuple, Optional, Iterator
 from abc import ABC, abstractmethod
 import dataclasses
 import enum
 from abc import ABC, abstractmethod
 import dataclasses
 import enum
@@ -107,13 +107,29 @@ class Token(ABC):
             category objects.
         """
 
             category objects.
         """
 
-
-class TokenRange(NamedTuple):
+@dataclasses.dataclass
+class TokenRange:
     """ Indexes of query nodes over which a token spans.
     """
     start: int
     end: int
 
     """ Indexes of query nodes over which a token spans.
     """
     start: int
     end: int
 
+    def __lt__(self, other: 'TokenRange') -> bool:
+        return self.end <= other.start
+
+
+    def __le__(self, other: 'TokenRange') -> bool:
+        return NotImplemented
+
+
+    def __gt__(self, other: 'TokenRange') -> bool:
+        return self.start >= other.end
+
+
+    def __ge__(self, other: 'TokenRange') -> bool:
+        return NotImplemented
+
+
     def replace_start(self, new_start: int) -> 'TokenRange':
         """ Return a new token range with the new start.
         """
     def replace_start(self, new_start: int) -> 'TokenRange':
         """ Return a new token range with the new start.
         """