Source code for flask_limiter.errors

"""errors and exceptions."""

from flask.wrappers import Response
from werkzeug import exceptions

from .typing import Optional
from .wrappers import Limit


[docs]class RateLimitExceeded(exceptions.TooManyRequests): """Exception raised when a rate limit is hit.""" def __init__(self, limit: Limit, response: Optional[Response] = None) -> None: """ :param limit: The actual rate limit that was hit. Used to construct the default response message :param response: Optional pre constructed response. If provided it will be rendered by flask instead of the default error response of :class:`~werkzeug.exceptions.HTTPException` """ self.limit = limit self.response = response if limit.error_message: description = ( limit.error_message if not callable(limit.error_message) else limit.error_message() ) else: description = str(limit.limit) super().__init__(description=description, response=response)