@@ -120,7 +120,7 @@ def cmp_method(self, other):
120
120
return result
121
121
return ops .invalid_comparison (self , other , op )
122
122
123
- name = "__{name}__" . format ( name = op .__name__ )
123
+ name = f "__{ op .__name__ } __"
124
124
return set_function_name (cmp_method , name , cls )
125
125
126
126
@@ -136,7 +136,7 @@ def index_arithmetic_method(self, other):
136
136
return (Index (result [0 ]), Index (result [1 ]))
137
137
return Index (result )
138
138
139
- name = "__{name}__" . format ( name = op .__name__ )
139
+ name = f "__{ op .__name__ } __"
140
140
# TODO: docstring?
141
141
return set_function_name (index_arithmetic_method , name , cls )
142
142
@@ -768,8 +768,7 @@ def astype(self, dtype, copy=True):
768
768
self .values .astype (dtype , copy = copy ), name = self .name , dtype = dtype
769
769
)
770
770
except (TypeError , ValueError ):
771
- msg = "Cannot cast {name} to dtype {dtype}"
772
- raise TypeError (msg .format (name = type (self ).__name__ , dtype = dtype ))
771
+ raise TypeError (f"Cannot cast { type (self ).__name__ } to dtype { dtype } " )
773
772
774
773
_index_shared_docs [
775
774
"take"
@@ -814,8 +813,9 @@ def take(self, indices, axis=0, allow_fill=True, fill_value=None, **kwargs):
814
813
)
815
814
else :
816
815
if allow_fill and fill_value is not None :
817
- msg = "Unable to fill values because {0} cannot contain NA"
818
- raise ValueError (msg .format (self .__class__ .__name__ ))
816
+ cls_name = self .__class__ .__name__
817
+ raise ValueError (
818
+ f"Unable to fill values because { cls_name } cannot contain NA" )
819
819
taken = self .values .take (indices )
820
820
return self ._shallow_copy (taken )
821
821
@@ -1287,8 +1287,7 @@ def _set_names(self, values, level=None):
1287
1287
for name in values :
1288
1288
if not is_hashable (name ):
1289
1289
raise TypeError (
1290
- "{}.name must be a hashable type" .format (self .__class__ .__name__ )
1291
- )
1290
+ f"{ self .__class__ .__name__ } .name must be a hashable type" )
1292
1291
self .name = values [0 ]
1293
1292
1294
1293
names = property (fset = _set_names , fget = _get_names )
@@ -1456,14 +1455,12 @@ def _validate_index_level(self, level):
1456
1455
)
1457
1456
elif level > 0 :
1458
1457
raise IndexError (
1459
- "Too many levels: Index has only 1 level, not %d" % ( level + 1 )
1458
+ f "Too many levels: Index has only 1 level, not { level + 1 } "
1460
1459
)
1461
1460
elif level != self .name :
1462
1461
raise KeyError (
1463
- "Requested level ({}) does not match index name ({})" .format (
1464
- level , self .name
1462
+ f"Requested level ({ level } ) does not match index name ({ self .name } )"
1465
1463
)
1466
- )
1467
1464
1468
1465
def _get_level_number (self , level ):
1469
1466
self ._validate_index_level (level )
@@ -1558,9 +1555,8 @@ def droplevel(self, level=0):
1558
1555
return self
1559
1556
if len (level ) >= self .nlevels :
1560
1557
raise ValueError (
1561
- "Cannot remove {} levels from an index with {} "
1562
- "levels: at least one level must be "
1563
- "left." .format (len (level ), self .nlevels )
1558
+ f"Cannot remove { len (level )} levels from an index with { self .nlevels } "
1559
+ "levels: at least one level must be left."
1564
1560
)
1565
1561
# The two checks above guarantee that here self is a MultiIndex
1566
1562
@@ -2014,7 +2010,7 @@ def fillna(self, value=None, downcast=None):
2014
2010
@Appender (_index_shared_docs ["dropna" ])
2015
2011
def dropna (self , how = "any" ):
2016
2012
if how not in ("any" , "all" ):
2017
- raise ValueError ("invalid how option: {0}" . format ( how ) )
2013
+ raise ValueError (f "invalid how option: { how } " )
2018
2014
2019
2015
if self .hasnans :
2020
2016
return self ._shallow_copy (self .values [~ self ._isnan ])
@@ -2288,10 +2284,8 @@ def __xor__(self, other):
2288
2284
2289
2285
def __nonzero__ (self ):
2290
2286
raise ValueError (
2291
- "The truth value of a {0} is ambiguous. "
2292
- "Use a.empty, a.bool(), a.item(), a.any() or a.all()." .format (
2293
- self .__class__ .__name__
2294
- )
2287
+ f"The truth value of a { self .__class__ .__name__ } is ambiguous. "
2288
+ "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
2295
2289
)
2296
2290
2297
2291
__bool__ = __nonzero__
@@ -2354,7 +2348,7 @@ def _validate_sort_keyword(self, sort):
2354
2348
if sort not in [None , False ]:
2355
2349
raise ValueError (
2356
2350
"The 'sort' keyword only takes the values of "
2357
- "None or False; {0 } was passed." . format ( sort )
2351
+ f "None or False; { sort } was passed."
2358
2352
)
2359
2353
2360
2354
def union (self , other , sort = None ):
@@ -2481,10 +2475,9 @@ def _union(self, other, sort):
2481
2475
if sort is None :
2482
2476
try :
2483
2477
result = algos .safe_sort (result )
2484
- except TypeError as e :
2478
+ except TypeError as err :
2485
2479
warnings .warn (
2486
- "{}, sort order is undefined for "
2487
- "incomparable objects" .format (e ),
2480
+ f"{ err } , sort order is undefined for incomparable objects" ,
2488
2481
RuntimeWarning ,
2489
2482
stacklevel = 3 ,
2490
2483
)
@@ -2939,8 +2932,8 @@ def _get_fill_indexer_searchsorted(self, target, method, limit=None):
2939
2932
"""
2940
2933
if limit is not None :
2941
2934
raise ValueError (
2942
- "limit argument for %r method only well-defined "
2943
- "if index and target are monotonic" % method
2935
+ f "limit argument for { method !r } method only well-defined "
2936
+ "if index and target are monotonic"
2944
2937
)
2945
2938
2946
2939
side = "left" if method == "pad" else "right"
@@ -3227,10 +3220,8 @@ def _invalid_indexer(self, form, key):
3227
3220
Consistent invalid indexer message.
3228
3221
"""
3229
3222
raise TypeError (
3230
- "cannot do {form} indexing on {klass} with these "
3231
- "indexers [{key}] of {kind}" .format (
3232
- form = form , klass = type (self ), key = key , kind = type (key )
3233
- )
3223
+ f"cannot do { form } indexing on { type (self )} with these "
3224
+ f"indexers [{ key } ] of { type (key )} "
3234
3225
)
3235
3226
3236
3227
# --------------------------------------------------------------------
@@ -3992,8 +3983,8 @@ def _scalar_data_error(cls, data):
3992
3983
# We return the TypeError so that we can raise it from the constructor
3993
3984
# in order to keep mypy happy
3994
3985
return TypeError (
3995
- "{0 }(...) must be called with a collection of some "
3996
- "kind, {1 } was passed" . format ( cls . __name__ , repr ( data ))
3986
+ f" { cls . __name__ } (...) must be called with a collection of some "
3987
+ f "kind, { data !r } was passed"
3997
3988
)
3998
3989
3999
3990
@classmethod
@@ -4037,8 +4028,7 @@ def _assert_can_do_op(self, value):
4037
4028
Check value is valid for scalar op.
4038
4029
"""
4039
4030
if not is_scalar (value ):
4040
- msg = "'value' must be a scalar, passed: {0}"
4041
- raise TypeError (msg .format (type (value ).__name__ ))
4031
+ raise TypeError (f"'value' must be a scalar, passed: { type (value ).__name__ } " )
4042
4032
4043
4033
def _is_memory_usage_qualified (self ) -> bool :
4044
4034
"""
@@ -4113,7 +4103,7 @@ def contains(self, key) -> bool:
4113
4103
return key in self
4114
4104
4115
4105
def __hash__ (self ):
4116
- raise TypeError ("unhashable type: %r" % type (self ).__name__ )
4106
+ raise TypeError (f "unhashable type: { type (self ).__name__ !r } " )
4117
4107
4118
4108
def __setitem__ (self , key , value ):
4119
4109
raise TypeError ("Index does not support mutable operations" )
@@ -5052,8 +5042,8 @@ def get_slice_bound(self, label, side, kind):
5052
5042
slc = lib .maybe_indices_to_slice (slc .astype ("i8" ), len (self ))
5053
5043
if isinstance (slc , np .ndarray ):
5054
5044
raise KeyError (
5055
- "Cannot get %s slice bound for non-unique "
5056
- "label: %r" % ( side , original_label )
5045
+ f "Cannot get { side } slice bound for non-unique "
5046
+ f "label: { original_label !r } "
5057
5047
)
5058
5048
5059
5049
if isinstance (slc , slice ):
@@ -5211,7 +5201,7 @@ def drop(self, labels, errors="raise"):
5211
5201
mask = indexer == - 1
5212
5202
if mask .any ():
5213
5203
if errors != "ignore" :
5214
- raise KeyError ("{ } not found in axis". format ( labels [ mask ]) )
5204
+ raise KeyError (f" { labels [ mask ] } not found in axis" )
5215
5205
indexer = indexer [~ mask ]
5216
5206
return self .delete (indexer )
5217
5207
0 commit comments