@@ -1495,6 +1495,33 @@ def square(x):
14951495 self .assertEqual (square .cache_info ().hits , 4 )
14961496 self .assertEqual (square .cache_info ().misses , 4 )
14971497
1498+ def test_lru_cache_typed_is_not_recursive (self ):
1499+ cached = self .module .lru_cache (typed = True )(repr )
1500+
1501+ self .assertEqual (cached (1 ), '1' )
1502+ self .assertEqual (cached (True ), 'True' )
1503+ self .assertEqual (cached (1.0 ), '1.0' )
1504+ self .assertEqual (cached (0 ), '0' )
1505+ self .assertEqual (cached (False ), 'False' )
1506+ self .assertEqual (cached (0.0 ), '0.0' )
1507+
1508+ self .assertEqual (cached ((1 ,)), '(1,)' )
1509+ self .assertEqual (cached ((True ,)), '(1,)' )
1510+ self .assertEqual (cached ((1.0 ,)), '(1,)' )
1511+ self .assertEqual (cached ((0 ,)), '(0,)' )
1512+ self .assertEqual (cached ((False ,)), '(0,)' )
1513+ self .assertEqual (cached ((0.0 ,)), '(0,)' )
1514+
1515+ class T (tuple ):
1516+ pass
1517+
1518+ self .assertEqual (cached (T ((1 ,))), '(1,)' )
1519+ self .assertEqual (cached (T ((True ,))), '(1,)' )
1520+ self .assertEqual (cached (T ((1.0 ,))), '(1,)' )
1521+ self .assertEqual (cached (T ((0 ,))), '(0,)' )
1522+ self .assertEqual (cached (T ((False ,))), '(0,)' )
1523+ self .assertEqual (cached (T ((0.0 ,))), '(0,)' )
1524+
14981525 def test_lru_with_keyword_args (self ):
14991526 @self .module .lru_cache ()
15001527 def fib (n ):
0 commit comments