|
@@ -12,7 +12,8 @@
|
|
|
# See the License for the specific language governing permissions and
|
|
|
# limitations under the License.
|
|
|
|
|
|
-import collections
|
|
|
+from collections import OrderedDict
|
|
|
+from typing import Any, Optional, Tuple
|
|
|
|
|
|
from synapse.api.errors import LimitExceededError
|
|
|
|
|
@@ -23,7 +24,9 @@ class Ratelimiter(object):
|
|
|
"""
|
|
|
|
|
|
def __init__(self):
|
|
|
- self.message_counts = collections.OrderedDict()
|
|
|
+ self.message_counts = (
|
|
|
+ OrderedDict()
|
|
|
+ ) # type: OrderedDict[Any, Tuple[float, int, Optional[float]]]
|
|
|
|
|
|
def can_do_action(self, key, time_now_s, rate_hz, burst_count, update=True):
|
|
|
"""Can the entity (e.g. user or IP address) perform the action?
|