Files
Buffteks-Dev-Server/buffteks/lib/python3.11/site-packages/flask_limiter/errors.py
2025-12-02 14:32:10 +00:00

30 lines
1.0 KiB
Python

"""errors and exceptions."""
from __future__ import annotations
from flask.wrappers import Response
from werkzeug import exceptions
from ._limits import RuntimeLimit
class RateLimitExceeded(exceptions.TooManyRequests):
"""Exception raised when a rate limit is hit."""
def __init__(self, limit: RuntimeLimit, response: Response | None = None) -> None:
"""
:param limit: The actual rate limit that was hit. This is 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)