From e932e2ce52a440d38020ed7c7b13a7b01c96199e Mon Sep 17 00:00:00 2001 From: Anders Kaseorg Date: Wed, 2 Aug 2023 15:28:59 -0700 Subject: [PATCH] ruff: Fix UP032 Use f-string instead of `format` call. Signed-off-by: Anders Kaseorg --- scripts/lib/unpack-zulip | 2 +- tools/droplets/add_mentor.py | 2 +- tools/droplets/create.py | 16 +++++----- tools/generate-integration-docs-screenshot | 10 +++---- zerver/lib/bot_config.py | 6 ++-- zerver/lib/zcommand.py | 8 +---- .../commands/send_webhook_fixture_message.py | 4 +-- zerver/tests/test_auth_backends.py | 4 +-- zerver/tests/test_markdown.py | 29 +++++++++---------- zerver/tests/test_message_send.py | 3 +- zerver/tests/test_retention.py | 24 +++++++-------- zerver/tests/test_signup.py | 2 +- zerver/tests/test_upload.py | 4 +-- zerver/webhooks/front/view.py | 12 +++----- 14 files changed, 51 insertions(+), 75 deletions(-) diff --git a/scripts/lib/unpack-zulip b/scripts/lib/unpack-zulip index b9d458817a..1102e3fd1b 100755 --- a/scripts/lib/unpack-zulip +++ b/scripts/lib/unpack-zulip @@ -36,7 +36,7 @@ current_version = version.ZULIP_VERSION if is_invalid_upgrade(current_version, new_version): print( FAIL + "Your current version is very old. Please first upgrade to version " - "1.4.3 and then upgrade to {}.".format(new_version) + ENDC + f"1.4.3 and then upgrade to {new_version}." + ENDC ) shutil.rmtree(extract_path) sys.exit(1) diff --git a/tools/droplets/add_mentor.py b/tools/droplets/add_mentor.py index e11986e01e..6f113ec79a 100644 --- a/tools/droplets/add_mentor.py +++ b/tools/droplets/add_mentor.py @@ -52,7 +52,7 @@ if __name__ == "__main__": if args.remove: remove_re = re.compile( - "#<{0}>{{{{.+}}}}<{0}>(\n)?".format(args.username), re.DOTALL | re.MULTILINE + rf"#<{args.username}>{{{{.+}}}}<{args.username}>(\n)?", re.DOTALL | re.MULTILINE ) with open(authorized_keys, "r+") as f: diff --git a/tools/droplets/create.py b/tools/droplets/create.py index c9e0427ca4..64aa03d347 100644 --- a/tools/droplets/create.py +++ b/tools/droplets/create.py @@ -97,8 +97,8 @@ def assert_droplet_does_not_exist(my_token: str, droplet_name: str, recreate: bo if droplet.name.lower() == droplet_name: if not recreate: print( - "Droplet {} already exists. Pass --recreate if you " - "need to recreate the droplet.".format(droplet_name) + f"Droplet {droplet_name} already exists. Pass --recreate if you " + "need to recreate the droplet." ) sys.exit(1) else: @@ -251,8 +251,8 @@ def create_dns_record(my_token: str, record_name: str, ipv4: str, ipv6: str) -> def print_dev_droplet_instructions(username: str, droplet_domain_name: str) -> None: print( - """ -COMPLETE! Droplet for GitHub user {0} is available at {1}. + f""" +COMPLETE! Droplet for GitHub user {username} is available at {droplet_domain_name}. Instructions for use are below. (copy and paste to the user) @@ -260,16 +260,14 @@ Instructions for use are below. (copy and paste to the user) Your remote Zulip dev server has been created! - Connect to your server by running - `ssh zulipdev@{1}` on the command line + `ssh zulipdev@{droplet_domain_name}` on the command line (Terminal for macOS and Linux, Bash for Git on Windows). - There is no password; your account is configured to use your SSH keys. - Once you log in, you should see `(zulip-py3-venv) ~$`. - To start the dev server, `cd zulip` and then run `./tools/run-dev`. - While the dev server is running, you can see the Zulip server in your browser at - http://{1}:9991. -""".format( - username, droplet_domain_name - ) + http://{droplet_domain_name}:9991. +""" ) print( diff --git a/tools/generate-integration-docs-screenshot b/tools/generate-integration-docs-screenshot index 9acc395fd3..52e761fd7e 100755 --- a/tools/generate-integration-docs-screenshot +++ b/tools/generate-integration-docs-screenshot @@ -130,8 +130,8 @@ def custom_headers(headers_json: str) -> Dict[str, str]: return orjson.loads(headers_json) except orjson.JSONDecodeError as ve: raise argparse.ArgumentTypeError( - "Encountered an error while attempting to parse custom headers: {}\n" - "Note: all strings must be enclosed within \"\" instead of ''".format(ve) + f"Encountered an error while attempting to parse custom headers: {ve}\n" + "Note: all strings must be enclosed within \"\" instead of ''" ) @@ -156,10 +156,8 @@ def send_bot_mock_message( client.send_message(request) except KeyError: print( - "{} contains invalid configuration. " - 'Fields "subject" and "body" are required for non-webhook integrations.'.format( - fixture_path - ) + f"{fixture_path} contains invalid configuration. " + 'Fields "subject" and "body" are required for non-webhook integrations.' ) sys.exit(1) diff --git a/zerver/lib/bot_config.py b/zerver/lib/bot_config.py index d1097e05e6..aa3a0e9708 100644 --- a/zerver/lib/bot_config.py +++ b/zerver/lib/bot_config.py @@ -55,10 +55,8 @@ def set_bot_config(bot_profile: UserProfile, key: str, value: str) -> None: new_config_size = old_config_size + (new_entry_size - old_entry_size) if new_config_size > config_size_limit: raise ConfigError( - "Cannot store configuration. Request would require {} characters. " - "The current configuration size limit is {} characters.".format( - new_config_size, config_size_limit - ) + f"Cannot store configuration. Request would require {new_config_size} characters. " + f"The current configuration size limit is {config_size_limit} characters." ) obj, created = BotConfigData.objects.get_or_create( bot_profile=bot_profile, key=key, defaults={"value": value} diff --git a/zerver/lib/zcommand.py b/zerver/lib/zcommand.py index e29335499b..a92b40a301 100644 --- a/zerver/lib/zcommand.py +++ b/zerver/lib/zcommand.py @@ -11,13 +11,7 @@ def process_zcommands(content: str, user_profile: UserProfile) -> Dict[str, Any] def change_mode_setting( setting_name: str, switch_command: str, setting: str, setting_value: int ) -> str: - msg = ( - "Changed to {setting_name}! To revert " - "{setting_name}, type `/{switch_command}`.".format( - setting_name=setting_name, - switch_command=switch_command, - ) - ) + msg = f"Changed to {setting_name}! To revert {setting_name}, type `/{switch_command}`." do_change_user_setting( user_profile=user_profile, setting_name=setting, diff --git a/zerver/management/commands/send_webhook_fixture_message.py b/zerver/management/commands/send_webhook_fixture_message.py index 609b648373..5f8524dce7 100644 --- a/zerver/management/commands/send_webhook_fixture_message.py +++ b/zerver/management/commands/send_webhook_fixture_message.py @@ -56,8 +56,8 @@ approach shown above. custom_headers_dict = orjson.loads(custom_headers) except orjson.JSONDecodeError as ve: raise CommandError( - "Encountered an error while attempting to parse custom headers: {}\n" - "Note: all strings must be enclosed within \"\" instead of ''".format(ve) + f"Encountered an error while attempting to parse custom headers: {ve}\n" + "Note: all strings must be enclosed within \"\" instead of ''" ) return standardize_headers(custom_headers_dict) diff --git a/zerver/tests/test_auth_backends.py b/zerver/tests/test_auth_backends.py index c6c37a2d5f..73a4298f11 100644 --- a/zerver/tests/test_auth_backends.py +++ b/zerver/tests/test_auth_backends.py @@ -1719,9 +1719,9 @@ class SocialAuthBase(DesktopFlowTestingLib, ZulipTestCase, ABC): self.assertEqual(result.status_code, 200) self.assert_in_response('action="/register/"', result) self.assert_in_response( - "Your email address, {}, is not " + f"Your email address, {email}, is not " "in one of the domains that are allowed to register " - "for accounts in this organization.".format(email), + "for accounts in this organization.", result, ) diff --git a/zerver/tests/test_markdown.py b/zerver/tests/test_markdown.py index 1459e37876..1d06850df3 100644 --- a/zerver/tests/test_markdown.py +++ b/zerver/tests/test_markdown.py @@ -2543,12 +2543,12 @@ class MarkdownTest(ZulipTestCase): render_markdown(msg, content).rendered_content, "

Look to " '#{denmark.name} and ' + f'data-stream-id="{denmark.id}" ' + f'href="/#narrow/stream/{denmark.id}-Denmark">#{denmark.name} and ' '#{scotland.name}, ' - "there something

".format(denmark=denmark, scotland=scotland), + f'data-stream-id="{scotland.id}" ' + f'href="/#narrow/stream/{scotland.id}-Scotland">#{scotland.name}, ' + "there something

", ) def test_stream_case_sensitivity(self) -> None: @@ -2622,14 +2622,14 @@ class MarkdownTest(ZulipTestCase): self.assertEqual( render_markdown(msg, content).rendered_content, "

This has two links: " - '' - "#{denmark.name} > some topic" + f'' + f"#{denmark.name} > some topic" " and " - '' - "#{scotland.name} > other topic" - ".

".format(denmark=denmark, scotland=scotland), + f'' + f"#{scotland.name} > other topic" + ".

", ) def test_possible_stream_names(self) -> None: @@ -2652,10 +2652,7 @@ class MarkdownTest(ZulipTestCase): href = f"/#narrow/stream/{uni.id}-{quoted_name}" self.assertEqual( render_markdown(msg, content).rendered_content, - '

#{s.name}

'.format( - s=uni, - href=href, - ), + f'

#{uni.name}

', ) def test_stream_atomic_string(self) -> None: diff --git a/zerver/tests/test_message_send.py b/zerver/tests/test_message_send.py index d4ffd76c78..ac2d92c3e5 100644 --- a/zerver/tests/test_message_send.py +++ b/zerver/tests/test_message_send.py @@ -1501,8 +1501,7 @@ class StreamMessagesTest(ZulipTestCase): message = most_recent_message(receiving_user_profile) self.assertEqual( repr(message), - ">".format(sender.email, sender.realm), + f">", ) def test_message_mentions(self) -> None: diff --git a/zerver/tests/test_retention.py b/zerver/tests/test_retention.py index c2ebea6ddd..51fbd04894 100644 --- a/zerver/tests/test_retention.py +++ b/zerver/tests/test_retention.py @@ -673,20 +673,16 @@ class MoveMessageToArchiveGeneral(MoveMessageToArchiveBase): self._create_attachments() realm_id = get_realm("zulip").id host = get_realm("zulip").host - body1 = """Some files here ...[zulip.txt]( - http://{host}/user_uploads/{id}/31/4CBjtTLYZhk66pZrF8hnYGwc/zulip.txt) - http://{host}/user_uploads/{id}/31/4CBjtTLYZhk66pZrF8hnYGwc/temp_file.py .... - Some more.... http://{host}/user_uploads/{id}/31/4CBjtTLYZhk66pZrF8hnYGwc/abc.py - """.format( - id=realm_id, host=host - ) - body2 = """Some files here - http://{host}/user_uploads/{id}/31/4CBjtTLYZhk66pZrF8hnYGwc/zulip.txt ... - http://{host}/user_uploads/{id}/31/4CBjtTLYZhk66pZrF8hnYGwc/hello.txt .... - http://{host}/user_uploads/{id}/31/4CBjtTLYZhk66pZrF8hnYGwc/new.py .... - """.format( - id=realm_id, host=host - ) + body1 = f"""Some files here ...[zulip.txt]( + http://{host}/user_uploads/{realm_id}/31/4CBjtTLYZhk66pZrF8hnYGwc/zulip.txt) + http://{host}/user_uploads/{realm_id}/31/4CBjtTLYZhk66pZrF8hnYGwc/temp_file.py .... + Some more.... http://{host}/user_uploads/{realm_id}/31/4CBjtTLYZhk66pZrF8hnYGwc/abc.py + """ + body2 = f"""Some files here + http://{host}/user_uploads/{realm_id}/31/4CBjtTLYZhk66pZrF8hnYGwc/zulip.txt ... + http://{host}/user_uploads/{realm_id}/31/4CBjtTLYZhk66pZrF8hnYGwc/hello.txt .... + http://{host}/user_uploads/{realm_id}/31/4CBjtTLYZhk66pZrF8hnYGwc/new.py .... + """ msg_ids = [ self.send_personal_message(self.sender, self.recipient, body1), diff --git a/zerver/tests/test_signup.py b/zerver/tests/test_signup.py index 48ab3e0bd5..8b74f22888 100644 --- a/zerver/tests/test_signup.py +++ b/zerver/tests/test_signup.py @@ -342,7 +342,7 @@ class AddNewUserHistoryTest(ZulipTestCase): self.assertEqual( repr(message), ">".format(user_profile.email, user_profile.realm), + f">", ) user_message = most_recent_usermessage(user_profile) diff --git a/zerver/tests/test_upload.py b/zerver/tests/test_upload.py index 29c51b8a7e..8083240d81 100644 --- a/zerver/tests/test_upload.py +++ b/zerver/tests/test_upload.py @@ -598,7 +598,7 @@ class FileUploadTest(UploadSerializeMixin, ZulipTestCase): self.subscribe(hamlet, "test") body = ( f"[f1.txt](http://{host}/user_uploads/" + f1_path_id + ") " - "[f2.txt](http://{}/user_uploads/".format(host) + f2_path_id + ")" + f"[f2.txt](http://{host}/user_uploads/" + f2_path_id + ")" ) msg_id = self.send_stream_message(hamlet, "test", body, "test") @@ -608,7 +608,7 @@ class FileUploadTest(UploadSerializeMixin, ZulipTestCase): new_body = ( f"[f3.txt](http://{host}/user_uploads/" + f3_path_id + ") " - "[f2.txt](http://{}/user_uploads/".format(host) + f2_path_id + ")" + f"[f2.txt](http://{host}/user_uploads/" + f2_path_id + ")" ) result = self.client_patch( "/json/messages/" + str(msg_id), diff --git a/zerver/webhooks/front/view.py b/zerver/webhooks/front/view.py index 9384afc7de..ba74429fa5 100644 --- a/zerver/webhooks/front/view.py +++ b/zerver/webhooks/front/view.py @@ -41,20 +41,16 @@ def get_target_name(payload: WildValue) -> str: def get_inbound_message_body(payload: WildValue) -> str: link, outbox, inbox, subject = get_message_data(payload) return ( - "[Inbound message]({link}) from **{outbox}** to **{inbox}**:\n" - "```quote\n*Subject*: {subject}\n```".format( - link=link, outbox=outbox, inbox=inbox, subject=subject - ) + f"[Inbound message]({link}) from **{outbox}** to **{inbox}**:\n" + f"```quote\n*Subject*: {subject}\n```" ) def get_outbound_message_body(payload: WildValue) -> str: link, outbox, inbox, subject = get_message_data(payload) return ( - "[Outbound message]({link}) from **{inbox}** to **{outbox}**:\n" - "```quote\n*Subject*: {subject}\n```".format( - link=link, inbox=inbox, outbox=outbox, subject=subject - ) + f"[Outbound message]({link}) from **{inbox}** to **{outbox}**:\n" + f"```quote\n*Subject*: {subject}\n```" )