mirror of https://github.com/zulip/zulip.git
python: Convert more "".format to Python 3.6 f-strings.
Generated by pyupgrade --py36-plus --keep-percent-format. Now including %d, %i, %u, and multi-line strings. Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
parent
4aeb02f73d
commit
57a80856a5
|
@ -15,9 +15,9 @@ from scripts.lib.zulip_tools import get_config_file
|
|||
|
||||
|
||||
def write_realm_nginx_config_line(f: Any, host: str, port: str) -> None:
|
||||
f.write("""if ($host = '{}') {{
|
||||
set $tornado_server http://tornado{};
|
||||
}}\n""".format(host, port))
|
||||
f.write(f"""if ($host = '{host}') {{
|
||||
set $tornado_server http://tornado{port};
|
||||
}}\n""")
|
||||
|
||||
# Basic system to do Tornado sharding. Writes two output .tmp files that need
|
||||
# to be renamed to the following files to finalize the changes:
|
||||
|
|
|
@ -118,7 +118,7 @@ def set_user_data(username: str, userkey_dicts: List[Dict[str, Any]]) -> str:
|
|||
server_repo_setup = setup_repo.format(username, "zulip")
|
||||
python_api_repo_setup = setup_repo.format(username, "python-zulip-api")
|
||||
|
||||
cloudconf = """\
|
||||
cloudconf = f"""\
|
||||
#!/bin/bash
|
||||
|
||||
{setup_zulipdev_ssh_keys}
|
||||
|
@ -130,10 +130,7 @@ su -c '{server_repo_setup}' zulipdev
|
|||
su -c '{python_api_repo_setup}' zulipdev
|
||||
su -c 'git config --global core.editor nano' zulipdev
|
||||
su -c 'git config --global pull.rebase true' zulipdev
|
||||
""".format(setup_root_ssh_keys=setup_root_ssh_keys,
|
||||
setup_zulipdev_ssh_keys=setup_zulipdev_ssh_keys,
|
||||
hostname_setup=hostname_setup,
|
||||
server_repo_setup=server_repo_setup, python_api_repo_setup=python_api_repo_setup)
|
||||
"""
|
||||
print("...returning cloud-config data.")
|
||||
return cloudconf
|
||||
|
||||
|
|
|
@ -181,9 +181,9 @@ def build_id_dict(templates: List[str]) -> (Dict[str, List[str]]):
|
|||
try:
|
||||
list_tags = tokenize(text)
|
||||
except FormattedException as e:
|
||||
raise Exception('''
|
||||
fn: {}
|
||||
{}'''.format(fn, e))
|
||||
raise Exception(f'''
|
||||
fn: {fn}
|
||||
{e}''')
|
||||
|
||||
for tag in list_tags:
|
||||
info = get_tag_info(tag)
|
||||
|
|
|
@ -213,9 +213,9 @@ def validate(fn: Optional[str] = None, text: Optional[str] = None, check_indent:
|
|||
try:
|
||||
tokens = tokenize(text)
|
||||
except FormattedException as e:
|
||||
raise TemplateParserException('''
|
||||
fn: {}
|
||||
{}'''.format(fn, e))
|
||||
raise TemplateParserException(f'''
|
||||
fn: {fn}
|
||||
{e}''')
|
||||
|
||||
class State:
|
||||
def __init__(self, func: Callable[[Token], None]) -> None:
|
||||
|
|
|
@ -447,17 +447,14 @@ class Config:
|
|||
You must specify a virtual_parent if you are
|
||||
using id_source.''')
|
||||
if self.id_source[0] != self.virtual_parent.table:
|
||||
raise AssertionError('''
|
||||
Configuration error. To populate {}, you
|
||||
want data from {}, but that differs from
|
||||
the table name of your virtual parent ({}),
|
||||
raise AssertionError(f'''
|
||||
Configuration error. To populate {self.table}, you
|
||||
want data from {self.id_source[0]}, but that differs from
|
||||
the table name of your virtual parent ({self.virtual_parent.table}),
|
||||
which suggests you many not have set up
|
||||
the ordering correctly. You may simply
|
||||
need to assign a virtual_parent, or there
|
||||
may be deeper issues going on.'''.format(
|
||||
self.table,
|
||||
self.id_source[0],
|
||||
self.virtual_parent.table))
|
||||
may be deeper issues going on.''')
|
||||
|
||||
|
||||
def export_from_config(response: TableData, config: Config, seed_object: Optional[Any]=None,
|
||||
|
|
|
@ -127,11 +127,11 @@ path_maps: Dict[str, Dict[str, str]] = {
|
|||
|
||||
def update_id_map(table: TableName, old_id: int, new_id: int) -> None:
|
||||
if table not in ID_MAP:
|
||||
raise Exception('''
|
||||
Table {} is not initialized in ID_MAP, which could
|
||||
raise Exception(f'''
|
||||
Table {table} is not initialized in ID_MAP, which could
|
||||
mean that we have not thought through circular
|
||||
dependencies.
|
||||
'''.format(table))
|
||||
''')
|
||||
ID_MAP[table][old_id] = new_id
|
||||
|
||||
def fix_datetime_fields(data: TableData, table: TableName) -> None:
|
||||
|
|
|
@ -684,11 +684,11 @@ class ZulipTestCase(TestCase):
|
|||
history_public_to_subscribers=history_public_to_subscribers,
|
||||
)
|
||||
except IntegrityError: # nocoverage -- this is for bugs in the tests
|
||||
raise Exception('''
|
||||
{} already exists
|
||||
raise Exception(f'''
|
||||
{stream_name} already exists
|
||||
|
||||
Please call make_stream with a stream name
|
||||
that is not already in use.'''.format(stream_name))
|
||||
that is not already in use.''')
|
||||
|
||||
recipient = Recipient.objects.create(type_id=stream.id, type=Recipient.STREAM)
|
||||
stream.recipient = recipient
|
||||
|
|
|
@ -197,10 +197,10 @@ def get_openapi_param_example_value_as_string(endpoint: str, method: str, param:
|
|||
if param_type in ["object", "array"]:
|
||||
example_value = param.get("example", None)
|
||||
if not example_value:
|
||||
msg = """All array and object type request parameters must have
|
||||
concrete examples. The openAPI documentation for {}/{} is missing an example
|
||||
value for the {} parameter. Without this we cannot automatically generate a
|
||||
cURL example.""".format(endpoint, method, param_name)
|
||||
msg = f"""All array and object type request parameters must have
|
||||
concrete examples. The openAPI documentation for {endpoint}/{method} is missing an example
|
||||
value for the {param_name} parameter. Without this we cannot automatically generate a
|
||||
cURL example."""
|
||||
raise ValueError(msg)
|
||||
ordered_ex_val_str = json.dumps(example_value, sort_keys=True)
|
||||
if curl_argument:
|
||||
|
|
|
@ -207,7 +207,7 @@ def validate_object(content: Dict[str, Any], schema: Dict[str, Any]) -> None:
|
|||
if req_key in exclusion_list:
|
||||
continue
|
||||
if req_key not in content.keys():
|
||||
raise SchemaError('Expected to find the "{}" required key'.format(req_key))
|
||||
raise SchemaError(f'Expected to find the "{req_key}" required key')
|
||||
|
||||
def to_python_type(py_type: str) -> type:
|
||||
"""Transform an OpenAPI-like type to a Python one.
|
||||
|
|
|
@ -258,7 +258,7 @@ def get_subscription_status(client: Client) -> None:
|
|||
user_id = 7
|
||||
stream_id = 1
|
||||
result = client.call_endpoint(
|
||||
url='/users/{}/subscriptions/{}'.format(user_id, stream_id),
|
||||
url=f'/users/{user_id}/subscriptions/{stream_id}',
|
||||
method='GET',
|
||||
)
|
||||
# {code_example|end}
|
||||
|
|
|
@ -336,10 +336,10 @@ class OpenAPIArgumentsTest(ZulipTestCase):
|
|||
try:
|
||||
get_openapi_parameters(url_pattern, method)
|
||||
if not msg: # nocoverage
|
||||
msg = """
|
||||
msg = f"""
|
||||
We found some OpenAPI documentation for {method} {url_pattern},
|
||||
so maybe we shouldn't mark it as intentionally undocumented in the urls.
|
||||
""".format(method=method, url_pattern=url_pattern)
|
||||
"""
|
||||
raise AssertionError(msg) # nocoverage
|
||||
except KeyError:
|
||||
return
|
||||
|
@ -427,9 +427,9 @@ so maybe we shouldn't mark it as intentionally undocumented in the urls.
|
|||
""" Print a *VERY* clear and verbose error message for when the types
|
||||
(between the OpenAPI documentation and the function declaration) don't match. """
|
||||
|
||||
msg = """
|
||||
msg = f"""
|
||||
The types for the request parameters in zerver/openapi/zulip.yaml
|
||||
do not match the types declared in the implementation of {}.\n""".format(function.__name__)
|
||||
do not match the types declared in the implementation of {function.__name__}.\n"""
|
||||
msg += '='*65 + '\n'
|
||||
msg += "{:<10s}{:^30s}{:>10s}\n".format("Parameter", "OpenAPI Type",
|
||||
"Function Declaration Type")
|
||||
|
@ -582,10 +582,10 @@ do not match the types declared in the implementation of {}.\n""".format(functio
|
|||
if url_pattern in self.pending_endpoints:
|
||||
# HACK: After all pending_endpoints have been resolved, we should remove
|
||||
# this segment and the "msg" part of the `ensure_no_...` method.
|
||||
msg = """
|
||||
msg = f"""
|
||||
We found some OpenAPI documentation for {method} {url_pattern},
|
||||
so maybe we shouldn't include it in pending_endpoints.
|
||||
""".format(method=method, url_pattern=url_pattern)
|
||||
"""
|
||||
self.ensure_no_documentation_if_intentionally_undocumented(url_pattern,
|
||||
method, msg)
|
||||
continue
|
||||
|
|
|
@ -880,12 +880,12 @@ class InviteUserTest(InviteUserBase):
|
|||
actual_count = len(queries)
|
||||
expected_count = 312
|
||||
if abs(actual_count - expected_count) > 1:
|
||||
raise AssertionError('''
|
||||
raise AssertionError(f'''
|
||||
Unexpected number of queries:
|
||||
|
||||
expected query count: {}
|
||||
actual: {}
|
||||
'''.format(expected_count, actual_count))
|
||||
expected query count: {expected_count}
|
||||
actual: {actual_count}
|
||||
''')
|
||||
|
||||
self.assert_json_success(result)
|
||||
|
||||
|
|
|
@ -494,7 +494,7 @@ class PermissionTest(ZulipTestCase):
|
|||
req = dict(role=UserProfile.ROLE_GUEST)
|
||||
events: List[Mapping[str, Any]] = []
|
||||
with tornado_redirected_to_list(events):
|
||||
result = self.client_patch('/json/users/{}'.format(iago.id), req)
|
||||
result = self.client_patch(f'/json/users/{iago.id}', req)
|
||||
self.assert_json_success(result)
|
||||
|
||||
iago = self.example_user("iago")
|
||||
|
@ -518,7 +518,7 @@ class PermissionTest(ZulipTestCase):
|
|||
req = dict(role=UserProfile.ROLE_REALM_OWNER)
|
||||
events: List[Mapping[str, Any]] = []
|
||||
with tornado_redirected_to_list(events):
|
||||
result = self.client_patch('/json/users/{}'.format(polonius.id), req)
|
||||
result = self.client_patch(f'/json/users/{polonius.id}', req)
|
||||
self.assert_json_success(result)
|
||||
|
||||
polonius = self.example_user("polonius")
|
||||
|
@ -542,7 +542,7 @@ class PermissionTest(ZulipTestCase):
|
|||
req = dict(role=UserProfile.ROLE_REALM_OWNER)
|
||||
events: List[Mapping[str, Any]] = []
|
||||
with tornado_redirected_to_list(events):
|
||||
result = self.client_patch('/json/users/{}'.format(iago.id), req)
|
||||
result = self.client_patch(f'/json/users/{iago.id}', req)
|
||||
self.assert_json_success(result)
|
||||
|
||||
iago = self.example_user("iago")
|
||||
|
@ -565,7 +565,7 @@ class PermissionTest(ZulipTestCase):
|
|||
req = dict(role=UserProfile.ROLE_REALM_ADMINISTRATOR)
|
||||
events: List[Mapping[str, Any]] = []
|
||||
with tornado_redirected_to_list(events):
|
||||
result = self.client_patch('/json/users/{}'.format(iago.id), req)
|
||||
result = self.client_patch(f'/json/users/{iago.id}', req)
|
||||
self.assert_json_success(result)
|
||||
|
||||
iago = self.example_user("iago")
|
||||
|
@ -1103,20 +1103,20 @@ class UserProfileTest(ZulipTestCase):
|
|||
stream = get_stream('Rome', iago.realm)
|
||||
|
||||
# Invalid User ID.
|
||||
result = self.client_get("/json/users/25/subscriptions/{}".format(stream.id))
|
||||
result = self.client_get(f"/json/users/25/subscriptions/{stream.id}")
|
||||
self.assert_json_error(result, "No such user")
|
||||
|
||||
# Invalid Stream ID.
|
||||
result = self.client_get("/json/users/{}/subscriptions/25".format(iago.id))
|
||||
result = self.client_get(f"/json/users/{iago.id}/subscriptions/25")
|
||||
self.assert_json_error(result, "Invalid stream id")
|
||||
|
||||
result = ujson.loads(self.client_get("/json/users/{}/subscriptions/{}".format(iago.id, stream.id)).content)
|
||||
result = ujson.loads(self.client_get(f"/json/users/{iago.id}/subscriptions/{stream.id}").content)
|
||||
self.assertFalse(result['is_subscribed'])
|
||||
|
||||
# Subscribe to the stream.
|
||||
self.subscribe(iago, stream.name)
|
||||
with queries_captured() as queries:
|
||||
result = ujson.loads(self.client_get("/json/users/{}/subscriptions/{}".format(iago.id, stream.id)).content)
|
||||
result = ujson.loads(self.client_get(f"/json/users/{iago.id}/subscriptions/{stream.id}").content)
|
||||
|
||||
self.assert_length(queries, 7)
|
||||
self.assertTrue(result['is_subscribed'])
|
||||
|
@ -1126,7 +1126,7 @@ class UserProfileTest(ZulipTestCase):
|
|||
self.login('polonius')
|
||||
self.assertTrue(polonius.is_guest)
|
||||
|
||||
result = self.client_get("/json/users/{}/subscriptions/{}".format(iago.id, stream.id))
|
||||
result = self.client_get(f"/json/users/{iago.id}/subscriptions/{stream.id}")
|
||||
self.assert_json_error(result, "Invalid stream id")
|
||||
|
||||
class ActivateTest(ZulipTestCase):
|
||||
|
@ -1178,7 +1178,7 @@ class ActivateTest(ZulipTestCase):
|
|||
result = self.client_delete('/json/users/{}'.format(self.example_user("webhook_bot").id))
|
||||
self.assert_json_error(result, 'No such user')
|
||||
|
||||
result = self.client_delete('/json/users/{}'.format(desdemona.id))
|
||||
result = self.client_delete(f'/json/users/{desdemona.id}')
|
||||
self.assert_json_success(result)
|
||||
|
||||
result = self.client_delete(f'/json/users/{iago.id}')
|
||||
|
|
|
@ -71,9 +71,9 @@ class BeanstalkHookTests(WebhookTestCase):
|
|||
def test_git_more_than_limit(self) -> None:
|
||||
commits_info = "* add some stuff ([e50508d](http://lfranchi-svn.beanstalkapp.com/work-test/changesets/e50508df))\n"
|
||||
expected_topic = "work-test / master"
|
||||
expected_message = """Leo Franchi [pushed](http://lfranchi-svn.beanstalkapp.com/work-test) 50 commits to branch master.
|
||||
expected_message = f"""Leo Franchi [pushed](http://lfranchi-svn.beanstalkapp.com/work-test) 50 commits to branch master.
|
||||
|
||||
{}[and {} more commit(s)]""".format((commits_info * COMMITS_LIMIT), 50 - COMMITS_LIMIT)
|
||||
{(commits_info * COMMITS_LIMIT)}[and {50 - COMMITS_LIMIT} more commit(s)]"""
|
||||
self.api_stream_message(self.test_user, 'git_morethanlimitcommits', expected_topic, expected_message,
|
||||
content_type=None)
|
||||
|
||||
|
@ -81,9 +81,9 @@ class BeanstalkHookTests(WebhookTestCase):
|
|||
self.url = self.build_webhook_url(branches='master,development')
|
||||
commits_info = "* add some stuff ([e50508d](http://lfranchi-svn.beanstalkapp.com/work-test/changesets/e50508df))\n"
|
||||
expected_topic = "work-test / master"
|
||||
expected_message = """Leo Franchi [pushed](http://lfranchi-svn.beanstalkapp.com/work-test) 50 commits to branch master.
|
||||
expected_message = f"""Leo Franchi [pushed](http://lfranchi-svn.beanstalkapp.com/work-test) 50 commits to branch master.
|
||||
|
||||
{}[and {} more commit(s)]""".format((commits_info * COMMITS_LIMIT), 50 - COMMITS_LIMIT)
|
||||
{(commits_info * COMMITS_LIMIT)}[and {50 - COMMITS_LIMIT} more commit(s)]"""
|
||||
self.api_stream_message(self.test_user, 'git_morethanlimitcommits', expected_topic, expected_message,
|
||||
content_type=None)
|
||||
|
||||
|
|
Loading…
Reference in New Issue