@@ -1495,6 +1495,33 @@ def square(x):
1495
1495
self .assertEqual (square .cache_info ().hits , 4 )
1496
1496
self .assertEqual (square .cache_info ().misses , 4 )
1497
1497
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
+
1498
1525
def test_lru_with_keyword_args (self ):
1499
1526
@self .module .lru_cache ()
1500
1527
def fib (n ):
0 commit comments