From c22395dbc618e295b7fbd84ca25e32a6256e361f Mon Sep 17 00:00:00 2001 From: Max Mynter <32773644+maxmynter@users.noreply.github.com> Date: Fri, 22 Aug 2025 16:29:42 +0200 Subject: [PATCH] [`ruff`] Fix false positive for t-strings in `default-factory-kwarg` (`RUF026`) (#20032) Closes #19993 ## Summary Recognize t strings as never being callable to avoid false positives on RUF026. --- crates/ruff_linter/resources/test/fixtures/ruff/RUF026.py | 7 +++++++ .../src/rules/ruff/rules/default_factory_kwarg.rs | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/crates/ruff_linter/resources/test/fixtures/ruff/RUF026.py b/crates/ruff_linter/resources/test/fixtures/ruff/RUF026.py index c607b8b1b3..384d005e9f 100644 --- a/crates/ruff_linter/resources/test/fixtures/ruff/RUF026.py +++ b/crates/ruff_linter/resources/test/fixtures/ruff/RUF026.py @@ -118,3 +118,10 @@ def func(): return lambda: value defaultdict(constant_factory("")) + +def func(): + defaultdict(default_factory=t"") # OK + + +def func(): + defaultdict(default_factory=t"hello") # OK diff --git a/crates/ruff_linter/src/rules/ruff/rules/default_factory_kwarg.rs b/crates/ruff_linter/src/rules/ruff/rules/default_factory_kwarg.rs index 355aa47519..61f4b3119f 100644 --- a/crates/ruff_linter/src/rules/ruff/rules/default_factory_kwarg.rs +++ b/crates/ruff_linter/src/rules/ruff/rules/default_factory_kwarg.rs @@ -123,7 +123,8 @@ fn is_non_callable_value(value: &Expr) -> bool { | Expr::SetComp(_) | Expr::DictComp(_) | Expr::Generator(_) - | Expr::FString(_)) + | Expr::FString(_) + | Expr::TString(_)) } /// Generate an [`Expr`] to replace `defaultdict(default_factory=callable)` with