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))