Skip to content

Commit d1132f4

Browse files
committed
add f-strings to indexes.base.py
1 parent d36bc70 commit d1132f4

File tree

1 file changed

+29
-37
lines changed

1 file changed

+29
-37
lines changed

pandas/core/indexes/base.py

+29-37
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ def cmp_method(self, other):
120120
return result
121121
return ops.invalid_comparison(self, other, op)
122122

123-
name = "__{name}__".format(name=op.__name__)
123+
name = f"__{op.__name__}__"
124124
return set_function_name(cmp_method, name, cls)
125125

126126

@@ -136,7 +136,7 @@ def index_arithmetic_method(self, other):
136136
return (Index(result[0]), Index(result[1]))
137137
return Index(result)
138138

139-
name = "__{name}__".format(name=op.__name__)
139+
name = f"__{op.__name__}__"
140140
# TODO: docstring?
141141
return set_function_name(index_arithmetic_method, name, cls)
142142

@@ -768,8 +768,7 @@ def astype(self, dtype, copy=True):
768768
self.values.astype(dtype, copy=copy), name=self.name, dtype=dtype
769769
)
770770
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}")
773772

774773
_index_shared_docs[
775774
"take"
@@ -814,8 +813,10 @@ def take(self, indices, axis=0, allow_fill=True, fill_value=None, **kwargs):
814813
)
815814
else:
816815
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+
)
819820
taken = self.values.take(indices)
820821
return self._shallow_copy(taken)
821822

@@ -1287,7 +1288,7 @@ def _set_names(self, values, level=None):
12871288
for name in values:
12881289
if not is_hashable(name):
12891290
raise TypeError(
1290-
"{}.name must be a hashable type".format(self.__class__.__name__)
1291+
f"{self.__class__.__name__}.name must be a hashable type"
12911292
)
12921293
self.name = values[0]
12931294

@@ -1456,13 +1457,11 @@ def _validate_index_level(self, level):
14561457
)
14571458
elif level > 0:
14581459
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}"
14601461
)
14611462
elif level != self.name:
14621463
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})"
14661465
)
14671466

14681467
def _get_level_number(self, level):
@@ -1558,9 +1557,8 @@ def droplevel(self, level=0):
15581557
return self
15591558
if len(level) >= self.nlevels:
15601559
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."
15641562
)
15651563
# The two checks above guarantee that here self is a MultiIndex
15661564

@@ -2014,7 +2012,7 @@ def fillna(self, value=None, downcast=None):
20142012
@Appender(_index_shared_docs["dropna"])
20152013
def dropna(self, how="any"):
20162014
if how not in ("any", "all"):
2017-
raise ValueError("invalid how option: {0}".format(how))
2015+
raise ValueError(f"invalid how option: {how}")
20182016

20192017
if self.hasnans:
20202018
return self._shallow_copy(self.values[~self._isnan])
@@ -2288,10 +2286,8 @@ def __xor__(self, other):
22882286

22892287
def __nonzero__(self):
22902288
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()."
22952291
)
22962292

22972293
__bool__ = __nonzero__
@@ -2354,7 +2350,7 @@ def _validate_sort_keyword(self, sort):
23542350
if sort not in [None, False]:
23552351
raise ValueError(
23562352
"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."
23582354
)
23592355

23602356
def union(self, other, sort=None):
@@ -2481,10 +2477,9 @@ def _union(self, other, sort):
24812477
if sort is None:
24822478
try:
24832479
result = algos.safe_sort(result)
2484-
except TypeError as e:
2480+
except TypeError as err:
24852481
warnings.warn(
2486-
"{}, sort order is undefined for "
2487-
"incomparable objects".format(e),
2482+
f"{err}, sort order is undefined for incomparable objects",
24882483
RuntimeWarning,
24892484
stacklevel=3,
24902485
)
@@ -2939,8 +2934,8 @@ def _get_fill_indexer_searchsorted(self, target, method, limit=None):
29392934
"""
29402935
if limit is not None:
29412936
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"
29442939
)
29452940

29462941
side = "left" if method == "pad" else "right"
@@ -3227,10 +3222,8 @@ def _invalid_indexer(self, form, key):
32273222
Consistent invalid indexer message.
32283223
"""
32293224
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)}"
32343227
)
32353228

32363229
# --------------------------------------------------------------------
@@ -3992,8 +3985,8 @@ def _scalar_data_error(cls, data):
39923985
# We return the TypeError so that we can raise it from the constructor
39933986
# in order to keep mypy happy
39943987
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"
39973990
)
39983991

39993992
@classmethod
@@ -4037,8 +4030,7 @@ def _assert_can_do_op(self, value):
40374030
Check value is valid for scalar op.
40384031
"""
40394032
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__}")
40424034

40434035
def _is_memory_usage_qualified(self) -> bool:
40444036
"""
@@ -4113,7 +4105,7 @@ def contains(self, key) -> bool:
41134105
return key in self
41144106

41154107
def __hash__(self):
4116-
raise TypeError("unhashable type: %r" % type(self).__name__)
4108+
raise TypeError(f"unhashable type: {type(self).__name__!r}")
41174109

41184110
def __setitem__(self, key, value):
41194111
raise TypeError("Index does not support mutable operations")
@@ -5052,8 +5044,8 @@ def get_slice_bound(self, label, side, kind):
50525044
slc = lib.maybe_indices_to_slice(slc.astype("i8"), len(self))
50535045
if isinstance(slc, np.ndarray):
50545046
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}"
50575049
)
50585050

50595051
if isinstance(slc, slice):
@@ -5211,7 +5203,7 @@ def drop(self, labels, errors="raise"):
52115203
mask = indexer == -1
52125204
if mask.any():
52135205
if errors != "ignore":
5214-
raise KeyError("{} not found in axis".format(labels[mask]))
5206+
raise KeyError(f"{labels[mask]} not found in axis")
52155207
indexer = indexer[~mask]
52165208
return self.delete(indexer)
52175209

0 commit comments

Comments
 (0)