@@ -1266,6 +1266,20 @@ def __repr__(self):
1266
1266
self .assertRaises (ValueError , ("{" + big + "}" ).format )
1267
1267
self .assertRaises (ValueError , ("{[" + big + "]}" ).format , [0 ])
1268
1268
1269
+ # test number formatter errors:
1270
+ self .assertRaises (ValueError , '{0:x}' .format , 1j )
1271
+ self .assertRaises (ValueError , '{0:x}' .format , 1.0 )
1272
+ self .assertRaises (ValueError , '{0:X}' .format , 1j )
1273
+ self .assertRaises (ValueError , '{0:X}' .format , 1.0 )
1274
+ self .assertRaises (ValueError , '{0:o}' .format , 1j )
1275
+ self .assertRaises (ValueError , '{0:o}' .format , 1.0 )
1276
+ self .assertRaises (ValueError , '{0:u}' .format , 1j )
1277
+ self .assertRaises (ValueError , '{0:u}' .format , 1.0 )
1278
+ self .assertRaises (ValueError , '{0:i}' .format , 1j )
1279
+ self .assertRaises (ValueError , '{0:i}' .format , 1.0 )
1280
+ self .assertRaises (ValueError , '{0:d}' .format , 1j )
1281
+ self .assertRaises (ValueError , '{0:d}' .format , 1.0 )
1282
+
1269
1283
# issue 6089
1270
1284
self .assertRaises (ValueError , "{0[0]x}" .format , [None ])
1271
1285
self .assertRaises (ValueError , "{0[0](10)}" .format , [None ])
@@ -1501,11 +1515,31 @@ def __int__(self):
1501
1515
self .assertEqual ('%X' % letter_m , '6D' )
1502
1516
self .assertEqual ('%o' % letter_m , '155' )
1503
1517
self .assertEqual ('%c' % letter_m , 'm' )
1504
- self .assertRaisesRegex (TypeError , '%x format: an integer is required, not float' , operator .mod , '%x' , 3.14 ),
1505
- self .assertRaisesRegex (TypeError , '%X format: an integer is required, not float' , operator .mod , '%X' , 2.11 ),
1506
- self .assertRaisesRegex (TypeError , '%o format: an integer is required, not float' , operator .mod , '%o' , 1.79 ),
1507
- self .assertRaisesRegex (TypeError , '%x format: an integer is required, not PseudoFloat' , operator .mod , '%x' , pi ),
1508
- self .assertRaises (TypeError , operator .mod , '%c' , pi ),
1518
+ self .assertRaisesRegex (TypeError , '%x format: an integer is required, not float' , operator .mod , '%x' , 3.14 )
1519
+ self .assertRaisesRegex (TypeError , '%X format: an integer is required, not float' , operator .mod , '%X' , 2.11 )
1520
+ self .assertRaisesRegex (TypeError , '%o format: an integer is required, not float' , operator .mod , '%o' , 1.79 )
1521
+ self .assertRaisesRegex (TypeError , '%x format: an integer is required, not PseudoFloat' , operator .mod , '%x' , pi )
1522
+ self .assertRaisesRegex (TypeError , '%x format: an integer is required, not complex' , operator .mod , '%x' , 3j )
1523
+ self .assertRaisesRegex (TypeError , '%X format: an integer is required, not complex' , operator .mod , '%X' , 2j )
1524
+ self .assertRaisesRegex (TypeError , '%o format: an integer is required, not complex' , operator .mod , '%o' , 1j )
1525
+ self .assertRaisesRegex (TypeError , '%u format: a real number is required, not complex' , operator .mod , '%u' , 3j )
1526
+ self .assertRaisesRegex (TypeError , '%i format: a real number is required, not complex' , operator .mod , '%i' , 2j )
1527
+ self .assertRaisesRegex (TypeError , '%d format: a real number is required, not complex' , operator .mod , '%d' , 1j )
1528
+ self .assertRaisesRegex (TypeError , '%c requires int or char' , operator .mod , '%c' , pi )
1529
+
1530
+ class RaisingNumber :
1531
+ def __int__ (self ):
1532
+ raise RuntimeError ('int' ) # should not be `TypeError`
1533
+ def __index__ (self ):
1534
+ raise RuntimeError ('index' ) # should not be `TypeError`
1535
+
1536
+ rn = RaisingNumber ()
1537
+ self .assertRaisesRegex (RuntimeError , 'int' , operator .mod , '%d' , rn )
1538
+ self .assertRaisesRegex (RuntimeError , 'int' , operator .mod , '%i' , rn )
1539
+ self .assertRaisesRegex (RuntimeError , 'int' , operator .mod , '%u' , rn )
1540
+ self .assertRaisesRegex (RuntimeError , 'index' , operator .mod , '%x' , rn )
1541
+ self .assertRaisesRegex (RuntimeError , 'index' , operator .mod , '%X' , rn )
1542
+ self .assertRaisesRegex (RuntimeError , 'index' , operator .mod , '%o' , rn )
1509
1543
1510
1544
def test_formatting_with_enum (self ):
1511
1545
# issue18780
0 commit comments