1212
1313
1414class RateLimit (metaclass = ABCMeta ):
15+ @abstractmethod
16+ def get_counter (self ) -> int :
17+ pass
18+
1519 @abstractmethod
1620 def get_reset_after (self ) -> Union [datetime , None ]:
1721 pass
@@ -36,6 +40,9 @@ def __init__(self, time_period: TimePeriod, type: LimitType, limit: int):
3640 # No requests so far, so reset_after is None.
3741 self .__reset_after : Union [datetime , None ] = None
3842
43+ def get_counter (self ) -> int :
44+ return self .__counter
45+
3946 def get_time_period (self ) -> "TimePeriod" :
4047 return self .__time_period
4148
@@ -112,6 +119,18 @@ def __init__(self, *parsed_limits: ParsedRateLimit, type: LimitType):
112119 % (i .get_limit_type (), i .get_time_period (), i ._SingleRateLimit__limit )
113120 )
114121
122+ def get_counter (self ) -> int :
123+ # Map self.__limits to (limit).get_counter()
124+ counter_map = map (lambda limit : limit .get_counter (), self .__limits )
125+ counters = list (counter_map )
126+
127+ # Sort the counters list by value
128+ # reverse=True to get highest first
129+ counters .sort (reverse = True )
130+
131+ # Return the highest value
132+ return counters [0 ]
133+
115134 def get_reset_after (self ) -> Union [datetime , None ]:
116135 # Map self.__limits to (limit).get_reset_after()
117136 dates_map = map (lambda limit : limit .get_reset_after (), self .__limits )
0 commit comments