Skip to content

Commit d8129b4

Browse files
corazzonjreback
authored andcommitted
CLN: replace %s syntax with .format in plotting, stats, tseries (#18010)
1 parent 9050e38 commit d8129b4

File tree

8 files changed

+52
-42
lines changed

8 files changed

+52
-42
lines changed

pandas/_version.py

+28-23
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False):
7575
if e.errno == errno.ENOENT:
7676
continue
7777
if verbose:
78-
print("unable to run %s" % dispcmd)
78+
print("unable to run {dispcmd}".format(dispcmd=dispcmd))
7979
print(e)
8080
return None
8181
else:
@@ -87,7 +87,7 @@ def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False):
8787
stdout = stdout.decode()
8888
if p.returncode != 0:
8989
if verbose:
90-
print("unable to run %s (error)" % dispcmd)
90+
print("unable to run {dispcmd} (error)".format(dispcmd=dispcmd))
9191
return None
9292
return stdout
9393

@@ -98,8 +98,10 @@ def versions_from_parentdir(parentdir_prefix, root, verbose):
9898
dirname = os.path.basename(root)
9999
if not dirname.startswith(parentdir_prefix):
100100
if verbose:
101-
print("guessing rootdir is '%s', but '%s' doesn't start with "
102-
"prefix '%s'" % (root, dirname, parentdir_prefix))
101+
print("guessing rootdir is '{root}', but '{dirname}' "
102+
"doesn't start with prefix '{parentdir_prefix}'".format(
103+
root=root, dirname=dirname,
104+
parentdir_prefix=parentdir_prefix))
103105
raise NotThisMethod("rootdir doesn't start with parentdir_prefix")
104106
return {"version": dirname[len(parentdir_prefix):],
105107
"full-revisionid": None,
@@ -154,15 +156,15 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose):
154156
# "stabilization", as well as "HEAD" and "master".
155157
tags = set([r for r in refs if re.search(r'\d', r)])
156158
if verbose:
157-
print("discarding '%s', no digits" % ",".join(refs - tags))
159+
print("discarding '{}', no digits".format(",".join(refs - tags)))
158160
if verbose:
159-
print("likely tags: %s" % ",".join(sorted(tags)))
161+
print("likely tags: {}".format(",".join(sorted(tags))))
160162
for ref in sorted(tags):
161163
# sorting will prefer e.g. "2.0" over "2.0rc1"
162164
if ref.startswith(tag_prefix):
163165
r = ref[len(tag_prefix):]
164166
if verbose:
165-
print("picking %s" % r)
167+
print("picking {r}".format(r=r))
166168
return {"version": r,
167169
"full-revisionid": keywords["full"].strip(),
168170
"dirty": False, "error": None
@@ -184,7 +186,7 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
184186

185187
if not os.path.exists(os.path.join(root, ".git")):
186188
if verbose:
187-
print("no .git in %s" % root)
189+
print("no .git in {root}".format(root=root))
188190
raise NotThisMethod("no .git directory")
189191

190192
GITS = ["git"]
@@ -226,18 +228,21 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
226228
mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe)
227229
if not mo:
228230
# unparseable. Maybe git-describe is misbehaving?
229-
pieces["error"] = ("unable to parse git-describe output: '%s'"
230-
% describe_out)
231+
pieces["error"] = ("unable to parse git-describe output: "
232+
"'{describe_out}'".format(
233+
describe_out=describe_out))
231234
return pieces
232235

233236
# tag
234237
full_tag = mo.group(1)
235238
if not full_tag.startswith(tag_prefix):
236239
if verbose:
237-
fmt = "tag '%s' doesn't start with prefix '%s'"
238-
print(fmt % (full_tag, tag_prefix))
239-
pieces["error"] = ("tag '%s' doesn't start with prefix '%s'"
240-
% (full_tag, tag_prefix))
240+
fmt = "tag '{full_tag}' doesn't start with prefix " \
241+
"'{tag_prefix}'"
242+
print(fmt.format(full_tag=full_tag, tag_prefix=tag_prefix))
243+
pieces["error"] = ("tag '{full_tag}' doesn't start with "
244+
"prefix '{tag_prefix}'".format(
245+
full_tag, tag_prefix))
241246
return pieces
242247
pieces["closest-tag"] = full_tag[len(tag_prefix):]
243248

@@ -275,13 +280,13 @@ def render_pep440(pieces):
275280
rendered = pieces["closest-tag"]
276281
if pieces["distance"] or pieces["dirty"]:
277282
rendered += plus_or_dot(pieces)
278-
rendered += "%d.g%s" % (pieces["distance"], pieces["short"])
283+
rendered += "{:d}.g{}".format(pieces["distance"], pieces["short"])
279284
if pieces["dirty"]:
280285
rendered += ".dirty"
281286
else:
282287
# exception #1
283-
rendered = "0+untagged.%d.g%s" % (pieces["distance"],
284-
pieces["short"])
288+
rendered = "0+untagged.{:d}.g{}".format(pieces["distance"],
289+
pieces["short"])
285290
if pieces["dirty"]:
286291
rendered += ".dirty"
287292
return rendered
@@ -315,17 +320,17 @@ def render_pep440_post(pieces):
315320
if pieces["closest-tag"]:
316321
rendered = pieces["closest-tag"]
317322
if pieces["distance"] or pieces["dirty"]:
318-
rendered += ".post%d" % pieces["distance"]
323+
rendered += ".post{:d}".format(pieces["distance"])
319324
if pieces["dirty"]:
320325
rendered += ".dev0"
321326
rendered += plus_or_dot(pieces)
322-
rendered += "g%s" % pieces["short"]
327+
rendered += "g{}".format(pieces["short"])
323328
else:
324329
# exception #1
325330
rendered = "0.post%d" % pieces["distance"]
326331
if pieces["dirty"]:
327332
rendered += ".dev0"
328-
rendered += "+g%s" % pieces["short"]
333+
rendered += "+g{}".format(pieces["short"])
329334
return rendered
330335

331336

@@ -359,7 +364,7 @@ def render_git_describe(pieces):
359364
if pieces["closest-tag"]:
360365
rendered = pieces["closest-tag"]
361366
if pieces["distance"]:
362-
rendered += "-%d-g%s" % (pieces["distance"], pieces["short"])
367+
rendered += "-{:d}-g{}".format(pieces["distance"], pieces["short"])
363368
else:
364369
# exception #1
365370
rendered = pieces["short"]
@@ -377,7 +382,7 @@ def render_git_describe_long(pieces):
377382

378383
if pieces["closest-tag"]:
379384
rendered = pieces["closest-tag"]
380-
rendered += "-%d-g%s" % (pieces["distance"], pieces["short"])
385+
rendered += "-{:d}-g{}".format(pieces["distance"], pieces["short"])
381386
else:
382387
# exception #1
383388
rendered = pieces["short"]
@@ -409,7 +414,7 @@ def render(pieces, style):
409414
elif style == "git-describe-long":
410415
rendered = render_git_describe_long(pieces)
411416
else:
412-
raise ValueError("unknown style '%s'" % style)
417+
raise ValueError("unknown style '{style}'".format(style=style))
413418

414419
return {"version": rendered, "full-revisionid": pieces["long"],
415420
"dirty": pieces["dirty"], "error": None}

pandas/plotting/_converter.py

+10-8
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ def time2num(d):
6464
if isinstance(d, compat.string_types):
6565
parsed = tools.to_datetime(d)
6666
if not isinstance(parsed, datetime):
67-
raise ValueError('Could not parse time %s' % d)
67+
raise ValueError('Could not parse time {d}'.format(d=d))
6868
return _to_ordinalf(parsed.time())
6969
if isinstance(d, pydt.time):
7070
return _to_ordinalf(d)
@@ -166,7 +166,7 @@ def get_datevalue(date, freq):
166166
return date
167167
elif date is None:
168168
return None
169-
raise ValueError("Unrecognizable date '%s'" % date)
169+
raise ValueError("Unrecognizable date '{date}'".format(date=date))
170170

171171

172172
def _dt_to_float_ordinal(dt):
@@ -351,10 +351,12 @@ def __call__(self):
351351
estimate = (nmax - nmin) / (self._get_unit() * self._get_interval())
352352

353353
if estimate > self.MAXTICKS * 2:
354-
raise RuntimeError(('MillisecondLocator estimated to generate %d '
355-
'ticks from %s to %s: exceeds Locator.MAXTICKS'
356-
'* 2 (%d) ') %
357-
(estimate, dmin, dmax, self.MAXTICKS * 2))
354+
raise RuntimeError(('MillisecondLocator estimated to generate '
355+
'{estimate:d} ticks from {dmin} to {dmax}: '
356+
'exceeds Locator.MAXTICKS'
357+
'* 2 ({arg:d}) ').format(
358+
estimate=estimate, dmin=dmin, dmax=dmax,
359+
arg=self.MAXTICKS * 2))
358360

359361
freq = '%dL' % self._get_interval()
360362
tz = self.tz.tzname(None)
@@ -505,7 +507,7 @@ def _daily_finder(vmin, vmax, freq):
505507
elif freq == FreqGroup.FR_HR:
506508
periodsperday = 24
507509
else: # pragma: no cover
508-
raise ValueError("unexpected frequency: %s" % freq)
510+
raise ValueError("unexpected frequency: {freq}".format(freq=freq))
509511
periodsperyear = 365 * periodsperday
510512
periodspermonth = 28 * periodsperday
511513

@@ -864,7 +866,7 @@ def get_finder(freq):
864866
elif ((freq >= FreqGroup.FR_BUS) or fgroup == FreqGroup.FR_WK):
865867
return _daily_finder
866868
else: # pragma: no cover
867-
errmsg = "Unsupported frequency: %s" % (freq)
869+
errmsg = "Unsupported frequency: {freq}".format(freq=freq)
868870
raise NotImplementedError(errmsg)
869871

870872

pandas/plotting/_core.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -749,7 +749,7 @@ def match_labels(data, e):
749749
err = np.tile([err], (self.nseries, len(self.data)))
750750

751751
else:
752-
msg = "No valid %s detected" % label
752+
msg = "No valid {label} detected".format(label=label)
753753
raise ValueError(msg)
754754

755755
return err
@@ -1414,7 +1414,7 @@ def _plot(cls, ax, y, style=None, bw_method=None, ind=None,
14141414
gkde = gaussian_kde(y)
14151415
if bw_method is not None:
14161416
msg = ('bw_method was added in Scipy 0.11.0.' +
1417-
' Scipy version in use is %s.' % spv)
1417+
' Scipy version in use is {spv}.'.format(spv=spv))
14181418
warnings.warn(msg)
14191419

14201420
y = gkde.evaluate(ind)
@@ -2452,7 +2452,7 @@ def _grouped_plot_by_column(plotf, data, columns=None, by=None,
24522452
result = axes
24532453

24542454
byline = by[0] if len(by) == 1 else by
2455-
fig.suptitle('Boxplot grouped by %s' % byline)
2455+
fig.suptitle('Boxplot grouped by {byline}'.format(byline=byline))
24562456
fig.subplots_adjust(bottom=0.15, top=0.9, left=0.1, right=0.9, wspace=0.2)
24572457

24582458
return result

pandas/plotting/_misc.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,7 @@ def lag_plot(series, lag=1, ax=None, **kwds):
525525
if ax is None:
526526
ax = plt.gca()
527527
ax.set_xlabel("y(t)")
528-
ax.set_ylabel("y(t + %s)" % lag)
528+
ax.set_ylabel("y(t + {lag})".format(lag=lag))
529529
ax.scatter(y1, y2, **kwds)
530530
return ax
531531

pandas/plotting/_style.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,8 @@ def __getitem__(self, key):
131131
self._warn_if_deprecated()
132132
key = self._get_canonical_key(key)
133133
if key not in self:
134-
raise ValueError('%s is not a valid pandas plotting option' % key)
134+
raise ValueError(
135+
'{key} is not a valid pandas plotting option'.format(key=key))
135136
return super(_Options, self).__getitem__(key)
136137

137138
def __setitem__(self, key, value):
@@ -142,7 +143,8 @@ def __setitem__(self, key, value):
142143
def __delitem__(self, key):
143144
key = self._get_canonical_key(key)
144145
if key in self._DEFAULT_KEYS:
145-
raise ValueError('Cannot remove default parameter %s' % key)
146+
raise ValueError(
147+
'Cannot remove default parameter {key}'.format(key=key))
146148
return super(_Options, self).__delitem__(key)
147149

148150
def __contains__(self, key):

pandas/plotting/_tools.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,9 @@ def _get_layout(nplots, layout=None, layout_type='box'):
8484
raise ValueError(msg)
8585

8686
if nrows * ncols < nplots:
87-
raise ValueError('Layout of %sx%s must be larger than '
88-
'required size %s' % (nrows, ncols, nplots))
87+
raise ValueError('Layout of {nrows}x{ncols} must be larger '
88+
'than required size {nplots}'.format(
89+
nrows=nrows, ncols=ncols, nplots=nplots))
8990

9091
return layout
9192

pandas/stats/moments.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,7 @@ def _rolling_func(name, desc, how=None, func_kw=None, additional_kw=''):
458458
if how is None:
459459
how_arg_str = 'None'
460460
else:
461-
how_arg_str = "'%s" % how
461+
how_arg_str = "'{how}".format(how=how)
462462

463463
@Substitution(desc, _unary_arg, _roll_kw % how_arg_str + additional_kw,
464464
_type_of_input_retval, _roll_notes)

pandas/tseries/offsets.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -280,10 +280,10 @@ def _repr_attrs(self):
280280
if not hasattr(self, key):
281281
kwds_new[key] = self.kwds[key]
282282
if len(kwds_new) > 0:
283-
attrs.append('kwds=%s' % (kwds_new))
283+
attrs.append('kwds={kwds_new}'.format(kwds_new=kwds_new))
284284
elif attr not in exclude:
285285
value = getattr(self, attr)
286-
attrs.append('%s=%s' % (attr, value))
286+
attrs.append('{attr}={value}'.format(attr=attr, value=value))
287287

288288
out = ''
289289
if attrs:

0 commit comments

Comments
 (0)