diff --git a/gateway/platforms/matrix.py b/gateway/platforms/matrix.py index f7837a1f7d69e..bb562da5ca605 100644 --- a/gateway/platforms/matrix.py +++ b/gateway/platforms/matrix.py @@ -2795,10 +2795,7 @@ def _protect_html(html_fragment: str) -> str: result = re.sub( r"\[([^\]]+)\]\(([^)]+)\)", lambda m: _protect_html( - '{}'.format( - MatrixAdapter._sanitize_link_url(m.group(2)), - _html_escape(m.group(1)), - ) + f'{_html_escape(m.group(1))}' ), result, ) diff --git a/gateway/run.py b/gateway/run.py index 367adbe61db19..60742dee90312 100644 --- a/gateway/run.py +++ b/gateway/run.py @@ -14016,7 +14016,7 @@ async def _flush_buffer() -> None: else: await adapter.send( chat_id, - "❌ Hermes update failed (exit code {}).".format(exit_code), + f"❌ Hermes update failed (exit code {exit_code}).", metadata=metadata, ) logger.info("Update finished (exit=%s), notified %s", exit_code, session_key) diff --git a/hermes_cli/main.py b/hermes_cli/main.py index 2a6fb9e4435e3..1fde7d8942169 100644 --- a/hermes_cli/main.py +++ b/hermes_cli/main.py @@ -10076,9 +10076,7 @@ def cmd_profile(args): print(f"{copied} bundled skills synced.") else: print( - "⚠ Skills could not be seeded. Run `{} update` to retry.".format( - name - ) + f"⚠ Skills could not be seeded. Run `{name} update` to retry." ) # Create wrapper alias diff --git a/hermes_cli/pairing.py b/hermes_cli/pairing.py index 101a1d10bc776..e89fc99f5141f 100644 --- a/hermes_cli/pairing.py +++ b/hermes_cli/pairing.py @@ -88,8 +88,8 @@ def _cmd_approve(store, platform: str, code: str): ) print(f" Lockout clears in ~{mins} minute(s).") print( - " To reset sooner, delete the '_lockout:{0}' entry from " - "~/.hermes/platforms/pairing/_rate_limits.json\n".format(platform) + f" To reset sooner, delete the '_lockout:{platform}' entry from " + "~/.hermes/platforms/pairing/_rate_limits.json\n" ) else: print(f"\n Code '{code}' not found or expired for platform '{platform}'.") diff --git a/hermes_cli/plugins.py b/hermes_cli/plugins.py index 2218172aa5882..07cac579bcce9 100644 --- a/hermes_cli/plugins.py +++ b/hermes_cli/plugins.py @@ -1092,8 +1092,8 @@ def discover_and_load(self, force: bool = False) -> None: if not is_enabled: loaded = LoadedPlugin(manifest=manifest, enabled=False) loaded.error = ( - "not enabled in config (run `hermes plugins enable {}` to activate)" - .format(lookup_key) + f"not enabled in config (run `hermes plugins enable {lookup_key}` to activate)" + ) self._plugins[lookup_key] = loaded logger.debug( diff --git a/pyproject.toml b/pyproject.toml index ae2472b7a1051..ee5430ce5dffd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -257,7 +257,7 @@ preview = true # required for PLW1514 (unspecified-encoding) — preview rule # which silently corrupts any non-ASCII file content. We had three # separate Windows sandbox regressions in one debug session before # adding the explicit encoding. This rule keeps new code honest. -select = ["PLW1514"] +select = ["UP032", "PLW1514"] [tool.ruff.lint.per-file-ignores] # Tests can intentionally exercise locale-encoding edge cases. diff --git a/tools/skill_manager_tool.py b/tools/skill_manager_tool.py index 4ce5f06e4c936..2b773e612d030 100644 --- a/tools/skill_manager_tool.py +++ b/tools/skill_manager_tool.py @@ -525,7 +525,7 @@ def _create_skill(name: str, content: str, category: str = None) -> Dict[str, An result["category"] = category result["hint"] = ( "To add reference files, templates, or scripts, use " - "skill_manage(action='write_file', name='{}', file_path='references/example.md', file_content='...')".format(name) + f"skill_manage(action='write_file', name='{name}', file_path='references/example.md', file_content='...')" ) return result