@@ -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,10 @@ 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
820
taken = self .values .take (indices )
820
821
return self ._shallow_copy (taken )
821
822
@@ -1287,7 +1288,7 @@ def _set_names(self, values, level=None):
1287
1288
for name in values :
1288
1289
if not is_hashable (name ):
1289
1290
raise TypeError (
1290
- "{ }.name must be a hashable type". format ( self . __class__ . __name__ )
1291
+ f" { self . __class__ . __name__ } .name must be a hashable type"
1291
1292
)
1292
1293
self .name = values [0 ]
1293
1294
@@ -1456,13 +1457,11 @@ def _validate_index_level(self, level):
1456
1457
)
1457
1458
elif level > 0 :
1458
1459
raise IndexError (
1459
- "Too many levels: Index has only 1 level, not %d" % ( level + 1 )
1460
+ f "Too many levels: Index has only 1 level, not { level + 1 } "
1460
1461
)
1461
1462
elif level != self .name :
1462
1463
raise KeyError (
1463
- "Requested level ({}) does not match index name ({})" .format (
1464
- level , self .name
1465
- )
1464
+ f"Requested level ({ level } ) does not match index name ({ self .name } )"
1466
1465
)
1467
1466
1468
1467
def _get_level_number (self , level ):
@@ -1558,9 +1557,8 @@ def droplevel(self, level=0):
1558
1557
return self
1559
1558
if len (level ) >= self .nlevels :
1560
1559
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 )
1560
+ f"Cannot remove { len (level )} levels from an index with { self .nlevels } "
1561
+ "levels: at least one level must be left."
1564
1562
)
1565
1563
# The two checks above guarantee that here self is a MultiIndex
1566
1564
@@ -2014,7 +2012,7 @@ def fillna(self, value=None, downcast=None):
2014
2012
@Appender (_index_shared_docs ["dropna" ])
2015
2013
def dropna (self , how = "any" ):
2016
2014
if how not in ("any" , "all" ):
2017
- raise ValueError ("invalid how option: {0}" . format ( how ) )
2015
+ raise ValueError (f "invalid how option: { how } " )
2018
2016
2019
2017
if self .hasnans :
2020
2018
return self ._shallow_copy (self .values [~ self ._isnan ])
@@ -2288,10 +2286,8 @@ def __xor__(self, other):
2288
2286
2289
2287
def __nonzero__ (self ):
2290
2288
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
- )
2289
+ f"The truth value of a { self .__class__ .__name__ } is ambiguous. "
2290
+ "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
2295
2291
)
2296
2292
2297
2293
__bool__ = __nonzero__
@@ -2354,7 +2350,7 @@ def _validate_sort_keyword(self, sort):
2354
2350
if sort not in [None , False ]:
2355
2351
raise ValueError (
2356
2352
"The 'sort' keyword only takes the values of "
2357
- "None or False; {0 } was passed." . format ( sort )
2353
+ f "None or False; { sort } was passed."
2358
2354
)
2359
2355
2360
2356
def union (self , other , sort = None ):
@@ -2481,10 +2477,9 @@ def _union(self, other, sort):
2481
2477
if sort is None :
2482
2478
try :
2483
2479
result = algos .safe_sort (result )
2484
- except TypeError as e :
2480
+ except TypeError as err :
2485
2481
warnings .warn (
2486
- "{}, sort order is undefined for "
2487
- "incomparable objects" .format (e ),
2482
+ f"{ err } , sort order is undefined for incomparable objects" ,
2488
2483
RuntimeWarning ,
2489
2484
stacklevel = 3 ,
2490
2485
)
@@ -2939,8 +2934,8 @@ def _get_fill_indexer_searchsorted(self, target, method, limit=None):
2939
2934
"""
2940
2935
if limit is not None :
2941
2936
raise ValueError (
2942
- "limit argument for %r method only well-defined "
2943
- "if index and target are monotonic" % method
2937
+ f "limit argument for { method !r } method only well-defined "
2938
+ "if index and target are monotonic"
2944
2939
)
2945
2940
2946
2941
side = "left" if method == "pad" else "right"
@@ -3227,10 +3222,8 @@ def _invalid_indexer(self, form, key):
3227
3222
Consistent invalid indexer message.
3228
3223
"""
3229
3224
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
- )
3225
+ f"cannot do { form } indexing on { type (self )} with these "
3226
+ f"indexers [{ key } ] of { type (key )} "
3234
3227
)
3235
3228
3236
3229
# --------------------------------------------------------------------
@@ -3992,8 +3985,8 @@ def _scalar_data_error(cls, data):
3992
3985
# We return the TypeError so that we can raise it from the constructor
3993
3986
# in order to keep mypy happy
3994
3987
return TypeError (
3995
- "{0 }(...) must be called with a collection of some "
3996
- "kind, {1 } was passed" . format ( cls . __name__ , repr ( data ))
3988
+ f" { cls . __name__ } (...) must be called with a collection of some "
3989
+ f "kind, { data !r } was passed"
3997
3990
)
3998
3991
3999
3992
@classmethod
@@ -4037,8 +4030,7 @@ def _assert_can_do_op(self, value):
4037
4030
Check value is valid for scalar op.
4038
4031
"""
4039
4032
if not is_scalar (value ):
4040
- msg = "'value' must be a scalar, passed: {0}"
4041
- raise TypeError (msg .format (type (value ).__name__ ))
4033
+ raise TypeError (f"'value' must be a scalar, passed: { type (value ).__name__ } " )
4042
4034
4043
4035
def _is_memory_usage_qualified (self ) -> bool :
4044
4036
"""
@@ -4113,7 +4105,7 @@ def contains(self, key) -> bool:
4113
4105
return key in self
4114
4106
4115
4107
def __hash__ (self ):
4116
- raise TypeError ("unhashable type: %r" % type (self ).__name__ )
4108
+ raise TypeError (f "unhashable type: { type (self ).__name__ !r } " )
4117
4109
4118
4110
def __setitem__ (self , key , value ):
4119
4111
raise TypeError ("Index does not support mutable operations" )
@@ -5052,8 +5044,8 @@ def get_slice_bound(self, label, side, kind):
5052
5044
slc = lib .maybe_indices_to_slice (slc .astype ("i8" ), len (self ))
5053
5045
if isinstance (slc , np .ndarray ):
5054
5046
raise KeyError (
5055
- "Cannot get %s slice bound for non-unique "
5056
- "label: %r" % ( side , original_label )
5047
+ f "Cannot get { side } slice bound for non-unique "
5048
+ f "label: { original_label !r } "
5057
5049
)
5058
5050
5059
5051
if isinstance (slc , slice ):
@@ -5211,7 +5203,7 @@ def drop(self, labels, errors="raise"):
5211
5203
mask = indexer == - 1
5212
5204
if mask .any ():
5213
5205
if errors != "ignore" :
5214
- raise KeyError ("{ } not found in axis". format ( labels [ mask ]) )
5206
+ raise KeyError (f" { labels [ mask ] } not found in axis" )
5215
5207
indexer = indexer [~ mask ]
5216
5208
return self .delete (indexer )
5217
5209
0 commit comments