1- from typing import Any
1+ from typing import Any , Never
22from unittest import mock
33
44import pytest
@@ -64,7 +64,7 @@ def test_drip_rate(self) -> None:
6464
6565 def test_decorator (self ) -> None :
6666 @self .limiter ("foo" )
67- def foo () -> None :
67+ def foo () -> Never :
6868 assert False , "This should not be executed when limited"
6969
7070 with freeze_time ("2077-09-13" ):
@@ -75,7 +75,7 @@ def foo() -> None:
7575 assert foo () is None
7676
7777 @self .limiter ("bar" , raise_exception = True )
78- def bar () -> None :
78+ def bar () -> Never :
7979 assert False , "This should not be executed when limited"
8080
8181 with freeze_time ("2077-09-13" ):
@@ -88,23 +88,23 @@ def bar() -> None:
8888
8989 last_info : list [LeakyBucketLimitInfo ] = []
9090
91- def callback (info : LeakyBucketLimitInfo , context : dict [str , Any ]) -> LeakyBucketLimitInfo :
91+ def callback (info : LeakyBucketLimitInfo , context : dict [str , Any ]) -> str :
9292 last_info .append (info )
93- return info
93+ return "rate limited"
9494
9595 @self .limiter ("baz" , limited_handler = callback )
96- def baz () -> bool :
97- return True
96+ def baz () -> str :
97+ return "normal value"
9898
9999 with freeze_time ("2077-09-13" ):
100100 for i in range (5 ):
101- assert baz () is True
101+ assert baz () == "normal value"
102102 assert len (last_info ) == 0
103103
104- info = baz ()
105- assert info
104+ baz_rv = baz ()
105+ assert baz_rv == "rate limited"
106106 assert len (last_info ) == 1
107- assert last_info [0 ] == info
107+ info = last_info [0 ]
108108 assert info .wait_time > 0
109109 assert info .current_level == 5
110110
@@ -114,7 +114,7 @@ def test_decorator_default_key(self) -> None:
114114 with mock .patch .object (limiter , "_redis_key" , wraps = limiter ._redis_key ) as _redis_key_spy :
115115
116116 @limiter ()
117- def foo () -> None :
117+ def foo () -> Any :
118118 pass
119119
120120 foo ()
0 commit comments