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

1"""Initialize this class to define request-rates for limiter 

2""" 

3from enum import Enum 

4from typing import Any 

5from typing import Dict 

6 

7from .exceptions import ImmutableClassProperty 

8 

9 

10class ResetTypes(Enum): 

11 SCHEDULED = 1 

12 INTERVAL = 2 

13 

14 

15class RequestRate: 

16 """Request rate definition. 

17 

18 Args: 

19 limit: Number of requests allowed within ``interval`` 

20 interval: Time interval, in seconds 

21 """ 

22 

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] = {} 

33 

34 @property 

35 def limit(self) -> int: 

36 return self._limit 

37 

38 @limit.setter 

39 def limit(self, _): 

40 raise ImmutableClassProperty(self, "limit") 

41 

42 @property 

43 def interval(self) -> int: 

44 return self._interval 

45 

46 @interval.setter 

47 def interval(self, _): 

48 raise ImmutableClassProperty(self, "interval") 

49 

50 def __str__(self): 

51 return f"{self.limit}/{self.interval}"