from szurubooru.search.criteria import BaseCriterion class AnonymousToken: def __init__(self, criterion: BaseCriterion, negated: bool) -> None: self.criterion = criterion self.negated = negated def __hash__(self) -> int: return hash((self.criterion, self.negated)) class NamedToken(AnonymousToken): def __init__( self, name: str, criterion: BaseCriterion, negated: bool ) -> None: super().__init__(criterion, negated) self.name = name def __hash__(self) -> int: return hash((self.name, self.criterion, self.negated)) class SortToken: SORT_DESC = "desc" SORT_ASC = "asc" SORT_NONE = "" SORT_DEFAULT = "default" SORT_NEGATED_DEFAULT = "negated default" def __init__(self, name: str, order: str) -> None: self.name = name self.order = order def __hash__(self) -> int: return hash((self.name, self.order)) class SpecialToken: def __init__(self, value: str, negated: bool) -> None: self.value = value self.negated = negated def __hash__(self) -> int: return hash((self.value, self.negated))