Skip to content

Commit 4a77c84

Browse files
flynt everything
1 parent 50813f0 commit 4a77c84

28 files changed

+85
-133
lines changed

pythonanywhere/api/base.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def get_api_endpoint():
2323
"pythonanywhere.com"
2424
)
2525
)
26-
return "https://{hostname}/api/v0/user/{{username}}/{{flavor}}/".format(hostname=hostname)
26+
return f"https://{hostname}/api/v0/user/{{username}}/{{flavor}}/"
2727

2828

2929
def call_api(url, method, **kwargs):
@@ -39,16 +39,14 @@ def call_api(url, method, **kwargs):
3939
response = requests.request(
4040
method=method,
4141
url=url,
42-
headers={"Authorization": "Token {token}".format(token=token)},
42+
headers={"Authorization": f"Token {token}"},
4343
verify=not insecure,
4444
**kwargs
4545
)
4646
if response.status_code == 401:
4747
print(response, response.text)
4848
raise AuthenticationError(
49-
"Authentication error {status_code} calling API: {response_text}".format(
50-
status_code=response.status_code, response_text=response.text
51-
)
49+
f"Authentication error {response.status_code} calling API: {response.text}"
5250
)
5351
return response
5452

pythonanywhere/api/schedule.py

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,7 @@ def create(self, params):
4646

4747
if not result.ok:
4848
raise Exception(
49-
"POST to set new task via API failed, got {result}: "
50-
"{result_text}".format(result=result, result_text=result.text)
49+
f"POST to set new task via API failed, got {result}: {result.text}"
5150
)
5251

5352
def get_specs(self, task_id):
@@ -57,7 +56,7 @@ def get_specs(self, task_id):
5756
:returns: dictionary of existing task specs"""
5857

5958
result = call_api(
60-
"{base_url}{task_id}/".format(base_url=self.base_url, task_id=task_id), "GET"
59+
f"{self.base_url}{task_id}/", "GET"
6160
)
6261
if result.status_code == 200:
6362
return result.json()
@@ -75,16 +74,15 @@ def delete(self, task_id):
7574
:returns: True when API response is 204"""
7675

7776
result = call_api(
78-
"{base_url}{task_id}/".format(base_url=self.base_url, task_id=task_id), "DELETE"
77+
f"{self.base_url}{task_id}/", "DELETE"
7978
)
8079

8180
if result.status_code == 204:
8281
return True
8382

8483
if not result.ok:
8584
raise Exception(
86-
"DELETE via API on task {task_id} failed, got {result}: "
87-
"{result_text}".format(task_id=task_id, result=result, result_text=result.text)
85+
f"DELETE via API on task {task_id} failed, got {result}: {result.text}"
8886
)
8987

9088
def update(self, task_id, params):
@@ -99,15 +97,13 @@ def update(self, task_id, params):
9997
:param params: dictionary of specs to update"""
10098

10199
result = call_api(
102-
"{base_url}{task_id}/".format(base_url=self.base_url, task_id=task_id),
100+
f"{self.base_url}{task_id}/",
103101
"PATCH",
104102
json=params,
105103
)
106104
if result.status_code == 200:
107105
return result.json()
108106
else:
109107
raise Exception(
110-
"Could not update task {task_id}. Got {result}: {content}".format(
111-
task_id=task_id, result=result, content=result.text
112-
)
108+
f"Could not update task {task_id}. Got {result}: {result.text}"
113109
)

pythonanywhere/api/webapp.py

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,7 @@ def create(self, python_version, virtualenv_path, project_path, nuke):
5555
)
5656
if not response.ok or response.json().get("status") == "ERROR":
5757
raise Exception(
58-
"POST to create webapp via API failed, got {response}:{response_text}".format(
59-
response=response, response_text=response.text
60-
)
58+
f"POST to create webapp via API failed, got {response}:{response.text}"
6159
)
6260
response = call_api(
6361
patch_url, "patch", data={"virtualenv_path": virtualenv_path, "source_directory": project_path}
@@ -78,7 +76,7 @@ def add_default_static_files_mappings(self, project_path):
7876
call_api(url, "post", json=dict(url="/media/", path=str(Path(project_path) / "media")))
7977

8078
def reload(self):
81-
print(snakesay("Reloading {domain} via API".format(domain=self.domain)))
79+
print(snakesay(f"Reloading {self.domain} via API"))
8280
url = get_api_endpoint().format(username=getpass.getuser(), flavor="webapps") + self.domain + "/reload/"
8381
response = call_api(url, "post")
8482
if not response.ok:
@@ -95,13 +93,11 @@ def reload(self):
9593
)
9694
return
9795
raise Exception(
98-
"POST to reload webapp via API failed, got {response}:{response_text}".format(
99-
response=response, response_text=response.text
100-
)
96+
f"POST to reload webapp via API failed, got {response}:{response.text}"
10197
)
10298

10399
def set_ssl(self, certificate, private_key):
104-
print(snakesay("Setting up SSL for {domain} via API".format(domain=self.domain)))
100+
print(snakesay(f"Setting up SSL for {self.domain} via API"))
105101
url = get_api_endpoint().format(username=getpass.getuser(), flavor="webapps") + self.domain + "/ssl/"
106102
response = call_api(url, "post", json={"cert": certificate, "private_key": private_key})
107103
if not response.ok:
@@ -120,9 +116,7 @@ def get_ssl_info(self):
120116
response = call_api(url, "get")
121117
if not response.ok:
122118
raise Exception(
123-
"GET SSL details via API failed, got {response}:{response_text}".format(
124-
response=response, response_text=response.text
125-
)
119+
f"GET SSL details via API failed, got {response}:{response.text}"
126120
)
127121

128122
result = response.json()
@@ -141,43 +135,39 @@ def delete_log(self, log_type, index=0):
141135
else:
142136
print(
143137
snakesay(
144-
"Deleting current {type} log file for {domain} via API".format(type=log_type, domain=self.domain)
138+
f"Deleting current {log_type} log file for {self.domain} via API"
145139
)
146140
)
147141

148142
if index == 1:
149143
url = get_api_endpoint().format(
150144
username=getpass.getuser(), flavor="files"
151-
) + "path/var/log/{domain}.{type}.log.1/".format(domain=self.domain, type=log_type)
145+
) + f"path/var/log/{self.domain}.{log_type}.log.1/"
152146
elif index > 1:
153147
url = get_api_endpoint().format(
154148
username=getpass.getuser(), flavor="files"
155-
) + "path/var/log/{domain}.{type}.log.{index}.gz/".format(domain=self.domain, type=log_type, index=index)
149+
) + f"path/var/log/{self.domain}.{log_type}.log.{index}.gz/"
156150
else:
157151
url = get_api_endpoint().format(
158152
username=getpass.getuser(), flavor="files"
159-
) + "path/var/log/{domain}.{type}.log/".format(domain=self.domain, type=log_type)
153+
) + f"path/var/log/{self.domain}.{log_type}.log/"
160154
response = call_api(url, "delete")
161155
if not response.ok:
162156
raise Exception(
163-
"DELETE log file via API failed, got {response}:{response_text}".format(
164-
response=response, response_text=response.text
165-
)
157+
f"DELETE log file via API failed, got {response}:{response.text}"
166158
)
167159

168160
def get_log_info(self):
169161
url = get_api_endpoint().format(username=getpass.getuser(), flavor="files") + "tree/?path=/var/log/"
170162
response = call_api(url, "get")
171163
if not response.ok:
172164
raise Exception(
173-
"GET log files info via API failed, got {response}:{response_text}".format(
174-
response=response, response_text=response.text
175-
)
165+
f"GET log files info via API failed, got {response}:{response.text}"
176166
)
177167
file_list = response.json()
178168
log_types = ["access", "error", "server"]
179169
logs = {"access": [], "error": [], "server": []}
180-
log_prefix = "/var/log/{domain}.".format(domain=self.domain)
170+
log_prefix = f"/var/log/{self.domain}."
181171
for file_name in file_list:
182172
if type(file_name) == str and file_name.startswith(log_prefix):
183173
log = file_name[len(log_prefix):].split(".")

pythonanywhere/django_project.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ def create_virtualenv(self, django_version=None, nuke=False):
2323
elif django_version == 'latest':
2424
packages = 'django'
2525
else:
26-
packages = 'django=={django_version}'.format(django_version=django_version)
26+
packages = f'django=={django_version}'
2727
self.virtualenv.pip_install(packages)
2828

2929

3030
def detect_requirements(self):
3131
requirements_txt = self.project_path / 'requirements.txt'
3232
if requirements_txt.exists():
33-
return '-r {resolved_requirements}'.format(resolved_requirements=requirements_txt.resolve())
33+
return f'-r {requirements_txt.resolve()}'
3434
return 'django'
3535

3636

@@ -65,7 +65,7 @@ def update_settings_file(self):
6565
settings = f.read()
6666
new_settings = settings.replace(
6767
'ALLOWED_HOSTS = []',
68-
'ALLOWED_HOSTS = [{domain!r}]'.format(domain=self.domain)
68+
f'ALLOWED_HOSTS = [{self.domain!r}]'
6969
)
7070
new_settings += dedent(
7171
"""
@@ -98,7 +98,7 @@ def run_migrate(self):
9898

9999

100100
def update_wsgi_file(self):
101-
print(snakesay('Updating wsgi file at {wsgi_file_path}'.format(wsgi_file_path=self.wsgi_file_path)))
101+
print(snakesay(f'Updating wsgi file at {self.wsgi_file_path}'))
102102
template = (Path(__file__).parent / 'wsgi_file_template.py').open().read()
103103
with self.wsgi_file_path.open('w') as f:
104104
f.write(template.format(project=self))

pythonanywhere/launch_bash_in_virtualenv.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,24 @@ def write_temporary_bashrc(virtualenv_path, unique_id, source_directory):
2121
else:
2222
bashrc = ''
2323
if os.path.dirname(virtualenv_path) == os.path.join(HOME, '.virtualenvs'):
24-
activate_script = u'workon {}'.format(os.path.basename(virtualenv_path))
24+
activate_script = f'workon {os.path.basename(virtualenv_path)}'
2525
else:
2626
activate_script_path = os.path.join(virtualenv_path, 'bin', 'activate')
2727
if not os.path.exists(activate_script_path):
28-
print('Could not find virtualenv activation script at {}'.format(activate_script_path))
28+
print(f'Could not find virtualenv activation script at {activate_script_path}')
2929
sys.exit(-1)
3030
with open(activate_script_path) as f:
3131
activate_script = f.read()
3232

33-
tmprc = os.path.join(TMP, 'tmprc.{}'.format(unique_id))
33+
tmprc = os.path.join(TMP, f'tmprc.{unique_id}')
3434
with open(tmprc, 'w') as f:
3535
f.write(bashrc)
3636
f.write('\n')
3737
f.write(activate_script)
3838
f.write('\n')
39-
f.write('cd {}\n'.format(source_directory))
39+
f.write(f'cd {source_directory}\n')
4040
f.write('\n')
41-
f.write('rm {}'.format(tmprc))
41+
f.write(f'rm {tmprc}')
4242
return tmprc
4343

4444

pythonanywhere/project.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ class Project:
1212
def __init__(self, domain, python_version):
1313
self.domain = domain
1414
self.python_version = python_version
15-
self.project_path = Path('~/{domain}'.format(domain=domain)).expanduser()
15+
self.project_path = Path(f'~/{domain}').expanduser()
1616
self.virtualenv = Virtualenv(self.domain, self.python_version)
1717
self.wsgi_file_path = Path(
18-
'/var/www/{mangled_domain}_wsgi.py'.format(mangled_domain=domain.replace(".", "_"))
18+
f"/var/www/{domain.replace('.', '_')}_wsgi.py"
1919
)
2020
self.webapp = Webapp(domain)
2121

pythonanywhere/scripts_commons.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class ScriptSchema(Schema):
4545
tabulate_format = Or(
4646
None,
4747
And(str, lambda f: f in tabulate_formats),
48-
error="--format should match one of: {}".format(", ".join(tabulate_formats)),
48+
error=f"--format should match one of: {', '.join(tabulate_formats)}",
4949
)
5050

5151
replacements = {"--": "", "<": "", ">": ""}

pythonanywhere/snakesay.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ def speech_bubble_lines(speech):
2020
lines, width = rewrap(speech)
2121
if len(lines) <= 1:
2222
text = ''.join(lines)
23-
yield '< {text} >'.format(text=text)
23+
yield f'< {text} >'
2424

2525
else:
2626
yield ' ' + '_' * width
2727
yield '/ ' + (' ' * width) + ' \\'
2828
for line in lines:
29-
yield '| {} |'.format(line)
29+
yield f'| {line} |'
3030
yield '\\ ' + (' ' * width) + ' /'
3131
yield ' ' + '-' * width
3232

pythonanywhere/task.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,13 @@ def __init__(self):
5555
def __repr__(self):
5656
enabled = "enabled" if self.enabled else "disabled"
5757
status = (
58-
"{} at {}".format(enabled, self.printable_time)
58+
f"{enabled} at {self.printable_time}"
5959
if self.printable_time
6060
else "ready to be created"
6161
)
62-
num = " <{}>:".format(self.task_id) if self.task_id else ""
62+
num = f" <{self.task_id}>:" if self.task_id else ""
6363

64-
return "{interval} task{num} '{command}' {status}".format(
65-
interval=self.interval.title(), num=num, command=self.command, status=status
66-
)
64+
return f"{self.interval.title()} task{num} '{self.command}' {status}"
6765

6866
@classmethod
6967
def from_id(cls, task_id):
@@ -164,7 +162,7 @@ def delete_schedule(self):
164162
*Note*: use this method on `Task.from_id` instance."""
165163

166164
if self.schedule.delete(self.task_id):
167-
logger.info(snakesay("Task {} deleted!".format(self.task_id)))
165+
logger.info(snakesay(f"Task {self.task_id} deleted!"))
168166

169167
def update_schedule(self, params, *, porcelain=False):
170168
"""Updates existing task using `params`.
@@ -208,14 +206,14 @@ def update_schedule(self, params, *, porcelain=False):
208206
}
209207

210208
def make_spec_str(key, old_spec, new_spec):
211-
return "<{}> from '{}' to '{}'".format(key, old_spec, new_spec)
209+
return f"<{key}> from '{old_spec}' to '{new_spec}'"
212210

213211
updated = [make_spec_str(key, val[0], val[1]) for key, val in diff.items()]
214212

215213
def make_msg(join_with):
216214
fill = " " if join_with == ", " else join_with
217-
intro = "Task {} updated:{}".format(self.task_id, fill)
218-
return "{}{}".format(intro, join_with.join(updated))
215+
intro = f"Task {self.task_id} updated:{fill}"
216+
return f"{intro}{join_with.join(updated)}"
219217

220218
if updated:
221219
if porcelain:

pythonanywhere/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ def ensure_domain(domain):
66
if domain == "your-username.pythonanywhere.com":
77
username = getpass.getuser().lower()
88
pa_domain = os.environ.get("PYTHONANYWHERE_DOMAIN", "pythonanywhere.com")
9-
return "{username}.{pa_domain}".format(username=username, pa_domain=pa_domain)
9+
return f"{username}.{pa_domain}"
1010
else:
1111
return domain

0 commit comments

Comments
 (0)