limit.py 734 B

1234567891011121314151617181920
  1. import dataclasses
  2. from typing import Callable, Optional, Tuple, Union
  3. from flask import Response
  4. from flask_limiter.wrappers import RequestLimit
  5. @dataclasses.dataclass
  6. class Limit:
  7. limit_value: Union[Callable[[], str], str]
  8. key_func: Callable[[], str]
  9. scope: Optional[Union[str, Callable[[str], str]]] = None
  10. methods: Optional[Tuple[str, ...]] = None
  11. error_message: Optional[str] = None
  12. exempt_when: Optional[Callable[[], bool]] = None
  13. override_defaults: Optional[bool] = False
  14. deduct_when: Optional[Callable[[Response], bool]] = None
  15. on_breach: Optional[Callable[[RequestLimit], Optional[Response]]] = None
  16. per_method: bool = False
  17. cost: Optional[Union[Callable[[], int], int]] = None