Source code for uprate.errors

"""Contains all Exception(s) uprate raises
"""

from __future__ import annotations

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from .rate import Rate

__all__ = (
    "RateLimitError",
)

[docs]class RateLimitError(Exception): """Raised when a Rate Limit is violated. Attributes ---------- retry_after : :class:`float` The amount of time to retry after in seconds. rate : :class:`~uprate.rate.Rate` The rate that was violated """ retry_after: float rate: Rate def __init__(self, retry_after: float, rate: Rate, *args): super().__init__(*args) self.retry_after = retry_after self.rate = rate
[docs] def __float__(self) -> float: """Return :attr:`.RateLimitError.retry_after` as a float Returns ------- float The amount in seconds to retry after. """ return float(self.retry_after)
[docs] def __int__(self) -> int: """Return :attr:`.RateLimitError.retry_after` as a ceiled int. Returns ------- int The ceiled amount of seconds to retry after """ return self.retry_after.__int__() + 1