Skip to content

Commit e04a8c3

Browse files
authored
Merge pull request #1387 from consideRatio/pr/f-strings
Use f-strings where pyupgrade doesn't handle it automatically
2 parents 7039041 + d5d26aa commit e04a8c3

File tree

8 files changed

+28
-33
lines changed

8 files changed

+28
-33
lines changed

binderhub/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ def get_provider(self, provider_prefix, spec):
160160
"""Construct a provider object"""
161161
providers = self.settings['repo_providers']
162162
if provider_prefix not in providers:
163-
raise web.HTTPError(404, "No provider found for prefix %s" % provider_prefix)
163+
raise web.HTTPError(404, f"No provider found for prefix {provider_prefix}")
164164

165165
return providers[provider_prefix](
166166
config=self.settings['traitlets_config'], spec=spec)

binderhub/binderspawner_mixin.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@ def get_args(self):
6969
else:
7070
args = [
7171
'--ip=0.0.0.0',
72-
'--port=%i' % self.port,
73-
'--NotebookApp.base_url=%s' % self.server.base_url,
74-
'--NotebookApp.token=%s' % self.user_options['token'],
72+
f'--port={self.port}',
73+
f'--NotebookApp.base_url={self.server.base_url}',
74+
f"--NotebookApp.token={self.user_options['token']}",
7575
'--NotebookApp.trust_xheaders=True',
7676
]
7777
if self.default_url:

binderhub/builder.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ async def get(self, provider_prefix, _unescaped_spec):
248248
# EventSource cannot handle HTTP errors, so we must validate and send
249249
# error messages on the eventsource.
250250
if provider_prefix not in self.settings['repo_providers']:
251-
await self.fail("No provider found for prefix %s" % provider_prefix)
251+
await self.fail(f"No provider found for prefix {provider_prefix}")
252252
return
253253

254254
# create a heartbeat
@@ -287,7 +287,7 @@ async def get(self, provider_prefix, _unescaped_spec):
287287
return
288288

289289
if ref is None:
290-
error_message = ["Could not resolve ref for %s. Double check your URL." % key]
290+
error_message = [f"Could not resolve ref for {key}. Double check your URL."]
291291

292292
if provider.name == "GitHub":
293293
error_message.append('GitHub recently changed default branches from "master" to "main".')
@@ -548,9 +548,8 @@ async def launch(self, provider):
548548
matching_pods += 1
549549
break
550550
if matching_pods >= quota:
551-
app_log.error("%s has exceeded quota: %s/%s (%s total)",
552-
self.repo_url, matching_pods, quota, total_pods)
553-
await self.fail("Too many users running %s! Try again soon." % self.repo_url)
551+
app_log.error(f"{self.repo_url} has exceeded quota: {matching_pods}/{quota} ({total_pods} total)")
552+
await self.fail(f"Too many users running {self.repo_url}! Try again soon.")
554553
return
555554

556555
if matching_pods >= 0.5 * quota:
@@ -626,9 +625,7 @@ async def launch(self, provider):
626625
await self.emit(
627626
{
628627
"phase": "launching",
629-
"message": "Launch attempt {} failed, retrying...\n".format(
630-
i + 1
631-
),
628+
"message": f"Launch attempt {i + 1} failed, retrying...\n",
632629
}
633630
)
634631
await gen.sleep(retry_delay)
@@ -646,7 +643,7 @@ async def launch(self, provider):
646643
break
647644
event = {
648645
'phase': 'ready',
649-
'message': 'server running at %s\n' % server_info['url'],
646+
'message': f"server running at {server_info['url']}\n",
650647
}
651648
event.update(server_info)
652649
await self.emit(event)

binderhub/launcher.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def _default_hub_url_local(self):
8484
async def api_request(self, url, *args, **kwargs):
8585
"""Make an API request to JupyterHub"""
8686
headers = kwargs.setdefault('headers', {})
87-
headers.update({'Authorization': 'token %s' % self.hub_api_token})
87+
headers.update({'Authorization': f'token {self.hub_api_token}'})
8888
hub_api_url = os.getenv('JUPYTERHUB_API_URL', '') or self.hub_url_local + 'hub/api/'
8989
if not hub_api_url.endswith('/'):
9090
hub_api_url += '/'
@@ -116,7 +116,7 @@ async def api_request(self, url, *args, **kwargs):
116116

117117
async def get_user_data(self, username):
118118
resp = await self.api_request(
119-
'users/%s' % username,
119+
f'users/{username}',
120120
method='GET',
121121
)
122122
body = json.loads(resp.body.decode('utf-8'))
@@ -169,7 +169,7 @@ async def launch(self, image, username, server_name='', repo_url='', extra_args=
169169
# create a new user
170170
app_log.info("Creating user %s for image %s", username, image)
171171
try:
172-
await self.api_request('users/%s' % escaped_username, body=b'', method='POST')
172+
await self.api_request(f'users/{escaped_username}', body=b'', method='POST')
173173
except HTTPError as e:
174174
if e.response:
175175
body = e.response.body
@@ -178,13 +178,13 @@ async def launch(self, image, username, server_name='', repo_url='', extra_args=
178178
app_log.error("Error creating user %s: %s\n%s",
179179
username, e, body,
180180
)
181-
raise web.HTTPError(500, "Failed to create temporary user for %s" % image)
181+
raise web.HTTPError(500, f"Failed to create temporary user for {image}")
182182
elif server_name == '':
183183
# authentication is enabled but not named servers
184184
# check if user has a running server ('')
185185
user_data = await self.get_user_data(escaped_username)
186186
if server_name in user_data['servers']:
187-
raise web.HTTPError(409, "User %s already has a running server." % username)
187+
raise web.HTTPError(409, f"User {username} already has a running server.")
188188
elif self.named_server_limit_per_user > 0:
189189
# authentication is enabled with named servers
190190
# check if user has already reached to the limit of named servers
@@ -214,7 +214,7 @@ async def launch(self, image, username, server_name='', repo_url='', extra_args=
214214
_server_name = " {}".format(server_name) if server_name else ''
215215

216216
# start server
217-
app_log.info("Starting server%s for user %s with image %s", _server_name, username, image)
217+
app_log.info(f"Starting server{_server_name} for user {username} with image {image}")
218218
try:
219219
resp = await self.api_request(
220220
'users/{}/servers/{}'.format(escaped_username, server_name),
@@ -236,7 +236,7 @@ async def launch(self, image, username, server_name='', repo_url='', extra_args=
236236
# and tune this appropriately
237237
await gen.sleep(min(1.4 ** i, 10))
238238
else:
239-
raise web.HTTPError(500, "Image %s for user %s took too long to launch" % (image, username))
239+
raise web.HTTPError(500, f"Image {image} for user {username} took too long to launch")
240240

241241
except HTTPError as e:
242242
if e.response:
@@ -246,7 +246,7 @@ async def launch(self, image, username, server_name='', repo_url='', extra_args=
246246

247247
app_log.error("Error starting server{} for user {}: {}\n{}".
248248
format(_server_name, username, e, body))
249-
raise web.HTTPError(500, "Failed to launch image %s" % image)
249+
raise web.HTTPError(500, f"Failed to launch image {image}")
250250

251251
data['url'] = self.hub_url + 'user/%s/%s' % (escaped_username, server_name)
252252
return data

binderhub/repoproviders.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -150,12 +150,12 @@ def repo_config(self, settings):
150150
raise ValueError(
151151
"Spec-pattern configuration expected "
152152
"a regex pattern string, not "
153-
"type %s" % type(pattern))
153+
f"type {type(pattern)}")
154154
if not isinstance(config, dict):
155155
raise ValueError(
156156
"Spec-pattern configuration expected "
157157
"a specification configuration dict, not "
158-
"type %s" % type(config))
158+
f"type {type(config)}")
159159
# Ignore case, because most git providers do not
160160
# count DS-100/textbook as different from ds-100/textbook
161161
if re.match(pattern, self.spec, re.IGNORECASE):
@@ -814,9 +814,7 @@ async def github_api_request(self, api_url, etag=None):
814814
# round expiry up to nearest 5 minutes
815815
minutes_until_reset = 5 * (1 + (reset_seconds // 60 // 5))
816816

817-
raise ValueError("GitHub rate limit exceeded. Try again in %i minutes."
818-
% minutes_until_reset
819-
)
817+
raise ValueError(f"GitHub rate limit exceeded. Try again in {minutes_until_reset} minutes.")
820818
# Status 422 is returned by the API when we try and resolve a non
821819
# existent reference
822820
elif e.code in (404, 422):

binderhub/tests/test_utils.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ def test_rendezvous_independence():
2020
# check that the relative ranking of 80 buckets doesn't depend on the
2121
# presence of 20 extra buckets
2222
key = "k1"
23-
eighty_buckets = utils.rendezvous_rank(["b%i" % i for i in range(80)], key)
24-
hundred_buckets = utils.rendezvous_rank(["b%i" % i for i in range(100)], key)
23+
eighty_buckets = utils.rendezvous_rank([f"b{i}" for i in range(80)], key)
24+
hundred_buckets = utils.rendezvous_rank([f"b{i}" for i in range(100)], key)
2525

2626
for i in range(80, 100):
27-
hundred_buckets.remove("b%i" % i)
27+
hundred_buckets.remove(f"b{i}")
2828

2929
assert eighty_buckets == hundred_buckets
3030

examples/binder-api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def build_binder(repo,
6868
url = "{url}{urlpath}?token={token}".format(**evt, urlpath=opts.urlpath)
6969
else:
7070
url = "{url}?token={token}".format(**evt)
71-
print("Opening %s" % url)
71+
print(f"Opening {url}")
7272
webbrowser.open(url)
7373
break
7474
else:

helm-chart/binderhub/values.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,9 @@ jupyterhub:
135135
else:
136136
args = [
137137
'--ip=0.0.0.0',
138-
'--port=%i' % self.port,
139-
'--NotebookApp.base_url=%s' % self.server.base_url,
140-
'--NotebookApp.token=%s' % self.user_options['token'],
138+
f'--port={self.port}',
139+
f'--NotebookApp.base_url={self.server.base_url}',
140+
f"--NotebookApp.token={self.user_options['token']}",
141141
'--NotebookApp.trust_xheaders=True',
142142
]
143143
if self.default_url:

0 commit comments

Comments
 (0)