# Path: hgvs/exceptions.py
# class HGVSUnsupportedOperationError(HGVSError):
#     pass
# 
# class HGVSInvalidIntervalError(HGVSError):
#     pass
# 
# Path: hgvs/enums.py



import attr
import hgvs
from functools import total_ordering
from bioutils.sequences import aa1_to_aa3
from hgvs.exceptions import HGVSUnsupportedOperationError, HGVSInvalidIntervalError
from hgvs.enums import Datum, ValidationLevel
        return lhs.base < rhs.base

    def __gt__(lhs, rhs):
        assert type(lhs) == type(rhs), "Cannot compare coordinates of different representations"
        if lhs.uncertain or rhs.uncertain:
            raise HGVSUnsupportedOperationError("Cannot compare coordinates of uncertain positions")
        return lhs.base > rhs.base

    def __le__(lhs, rhs):
        assert type(lhs) == type(rhs), "Cannot compare coordinates of different representations"
        if lhs.uncertain or rhs.uncertain:
            raise HGVSUnsupportedOperationError("Cannot compare coordinates of uncertain positions")
        return lhs.base <= rhs.base

    def __ge__(lhs, rhs):
        assert type(lhs) == type(rhs), "Cannot compare coordinates of different representations"
        if lhs.uncertain or rhs.uncertain:
            raise HGVSUnsupportedOperationError("Cannot compare coordinates of uncertain positions")
        return lhs.base >= rhs.base


@attr.s(slots=True, repr=False)
class Interval(object):
    start = attr.ib(default=None)
    end = attr.ib(default=None)
    uncertain = attr.ib(default=False)

    def validate(self):
        if self.start:
            (res, msg) = self.start.validate()

# Path: hgvs/exceptions.py
# class HGVSUnsupportedOperationError(HGVSError):
#     pass
# 
# class HGVSInvalidIntervalError(HGVSError):
#     pass
# 
# Path: hgvs/enums.py



# Path: hgvs/location.py
import attr
import hgvs
from functools import total_ordering
from bioutils.sequences import aa1_to_aa3
from hgvs.exceptions import HGVSUnsupportedOperationError, HGVSInvalidIntervalError
from hgvs.enums import Datum, ValidationLevel

        return lhs.base < rhs.base

    def __gt__(lhs, rhs):
        assert type(lhs) == type(rhs), "Cannot compare coordinates of different representations"
        if lhs.uncertain or rhs.uncertain:
            raise HGVSUnsupportedOperationError("Cannot compare coordinates of uncertain positions")
        return lhs.base > rhs.base

    def __le__(lhs, rhs):
        assert type(lhs) == type(rhs), "Cannot compare coordinates of different representations"
        if lhs.uncertain or rhs.uncertain:
            raise HGVSUnsupportedOperationError("Cannot compare coordinates of uncertain positions")
        return lhs.base <= rhs.base

    def __ge__(lhs, rhs):
        assert type(lhs) == type(rhs), "Cannot compare coordinates of different representations"
        if lhs.uncertain or rhs.uncertain:
            raise HGVSUnsupportedOperationError("Cannot compare coordinates of uncertain positions")
        return lhs.base >= rhs.base


@attr.s(slots=True, repr=False)
class Interval(object):
    start = attr.ib(default=None)
    end = attr.ib(default=None)
    uncertain = attr.ib(default=False)

    def validate(self):
        if self.start:
            (res, msg) = self.start.validate()

            if res != ValidationLevel.VALID: