import enum
from .domain import (
RmValue,
RmDomain,
)
from .record import (
RmRecord,
)
__all__ = (
'RmComparator',
'RmPredicate',
)
[문서]
class RmComparator(enum.Enum):
"""
predicate의 comparator를 나타내는 클래스입니다.
"""
EQ = enum.auto()
"""
record value와 predicate value가 같은지 비교.
"""
NE = enum.auto()
"""
record value와 predicate value가 다른지 비교.
"""
LT = enum.auto()
"""
record value가 predicate value보다 작은지 비교.
"""
LE = enum.auto()
"""
record value가 predicate value보다 작거나 같은지 비교.
"""
GT = enum.auto()
"""
record value가 predicate value보다 큰지 비교.
"""
GE = enum.auto()
"""
record value가 predicate value보다 크거나 같은지 비교.
"""
[문서]
class RmPredicate:
"""
predicate을 나타내는 클래스입니다.
TODO: 추가 설명
Attributes:
offset (int):
record data에서 value가 위치한 오프셋.
domain (RmDomain):
value의 domain.
comparator (RmComparator):
predicate의 comparator.
value (RmValue):
predicate의 value.
"""
[문서]
def __init__(self,
offset: int,
domain: RmDomain,
comparator: RmComparator,
value: RmValue,
) -> None:
"""
predicate을 초기화합니다.
Args:
offset (int):
record data에서 value가 위치한 오프셋.
domain (RmDomain):
value의 domain.
comparator (RmComparator):
predicate의 comparator.
value (RmValue):
predicate의 value.
Raises:
RmInvalidDomainValueError:
`value` 가 유효하지 않은 경우.
"""
domain.validate(value)
self.offset = offset
self.domain = domain
self.comparator = comparator
self.value = value
[문서]
def evaluate(self, record: RmRecord) -> bool:
"""
predicate을 대상 record에 대해 평가합니다.
TODO: 추가 설명
Args:
record (RmRecord):
대상 record.
Returns:
bool:
predicate 평가 결과.
"""
raise NotImplementedError