Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/pyrate_limiter/request_rate.py: 67%
27 statements
« prev ^ index » next coverage.py v7.3.2, created at 2023-12-08 06:51 +0000
« prev ^ index » next coverage.py v7.3.2, created at 2023-12-08 06:51 +0000
1"""Initialize this class to define request-rates for limiter
2"""
3from enum import Enum
4from typing import Any
5from typing import Dict
7from .exceptions import ImmutableClassProperty
10class ResetTypes(Enum):
11 SCHEDULED = 1
12 INTERVAL = 2
15class RequestRate:
16 """Request rate definition.
18 Args:
19 limit: Number of requests allowed within ``interval``
20 interval: Time interval, in seconds
21 """
23 def __init__(
24 self,
25 limit: int,
26 interval: int,
27 reset: ResetTypes = ResetTypes.INTERVAL,
28 ):
29 self._limit = limit
30 self._interval = interval
31 self._reset = reset
32 self._log: Dict[Any, Any] = {}
34 @property
35 def limit(self) -> int:
36 return self._limit
38 @limit.setter
39 def limit(self, _):
40 raise ImmutableClassProperty(self, "limit")
42 @property
43 def interval(self) -> int:
44 return self._interval
46 @interval.setter
47 def interval(self, _):
48 raise ImmutableClassProperty(self, "interval")
50 def __str__(self):
51 return f"{self.limit}/{self.interval}"