class Range:
    invert: bool
    start: float | int
    end: float | int

    def __init__(self, spec: str | int | Range = ...) -> None: ...
    def __new__(cls, spec: str | int | Range = ...) -> Range: ...
    def match(self, value: float | int) -> bool: ...
    def __contains__(self, value: float | int) -> bool: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...
    @property
    def violation(self) -> str: ...
