From a4075c49b292a255ef70491589ce9c87327544db Mon Sep 17 00:00:00 2001 From: stumpylog <797416+stumpylog@users.noreply.github.com> Date: Thu, 27 Aug 2026 10:23:38 -0700 Subject: [PATCH] Chore: enable flake8-gettext (INT001/002/003) ruff rules All 4 hits in documents/validators.py were f-strings inside gettext _() calls, which resolves the string before translation and breaks extraction (confirmed: locale .po files literally contain the raw "{value}" placeholder as msgid text). Fixed by using %(name)s-style placeholders with Django ValidationError's existing params= kwarg, which was already being passed but silently unused. --- pyproject.toml | 3 +++ src/documents/validators.py | 14 +++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index e2dabafd5..4d387ecff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -232,6 +232,9 @@ extend-select = [ "I", # https://docs.astral.sh/ruff/rules/#isort-i "ICN", # https://docs.astral.sh/ruff/rules/#flake8-import-conventions-icn "INP", # https://docs.astral.sh/ruff/rules/#flake8-no-pep420-inp + "INT001", # https://docs.astral.sh/ruff/rules/#flake8-gettext-int + "INT002", # https://docs.astral.sh/ruff/rules/#flake8-gettext-int + "INT003", # https://docs.astral.sh/ruff/rules/#flake8-gettext-int "ISC", # https://docs.astral.sh/ruff/rules/#flake8-implicit-str-concat-isc "LOG001", # https://docs.astral.sh/ruff/rules/#flake8-logging-log "LOG002", # https://docs.astral.sh/ruff/rules/#flake8-logging-log diff --git a/src/documents/validators.py b/src/documents/validators.py index bec7252bf..3aee80d8c 100644 --- a/src/documents/validators.py +++ b/src/documents/validators.py @@ -21,28 +21,32 @@ def uri_validator(value: str, allowed_schemes: set[str] | None = None) -> None: parts = urlparse(value) if not parts.scheme: raise ValidationError( - _(f"Unable to parse URI {value}, missing scheme"), + _("Unable to parse URI %(value)s, missing scheme"), params={"value": value}, ) elif not parts.netloc and not parts.path: raise ValidationError( - _(f"Unable to parse URI {value}, missing net location or path"), + _("Unable to parse URI %(value)s, missing net location or path"), params={"value": value}, ) if allowed_schemes and parts.scheme not in allowed_schemes: raise ValidationError( _( - f"URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}", + "URI scheme '%(scheme)s' is not allowed. Allowed schemes: %(allowed_schemes)s", ), - params={"value": value, "scheme": parts.scheme}, + params={ + "value": value, + "scheme": parts.scheme, + "allowed_schemes": ", ".join(allowed_schemes), + }, ) except ValidationError: raise except Exception as e: raise ValidationError( - _(f"Unable to parse URI {value}"), + _("Unable to parse URI %(value)s"), params={"value": value}, ) from e