chore: ruff auto-fix PLR6201 resweep — tuple → set in membership tests (#27355)

Six days after #23937 (608 fixes) the codebase had accumulated 241 new
PLR6201 violations. Same mechanical `x in (...)` → `x in {...}` fix,
same zero-risk profile: set lookup is O(1) vs O(n) for tuple and the
two are semantically equivalent for hashable scalar membership tests.

All 241 instances fixed via `ruff check --select PLR6201 --fix
--unsafe-fixes`, zero remaining. Every changed value is a hashable
scalar (str/int/None/enum/signal); no risk of unhashable runtime
errors. No behavior change.

Test plan:
- 119 files changed, +244/-244 (net zero) — exactly one-line edits
- `ruff check` clean afterward
- Compile checks pass on the largest touched files (cli.py, run_agent.py,
  gateway/run.py, gateway/platforms/discord.py, model_tools.py)
- Subset broad test run on tests/gateway/ tests/hermes_cli/ tests/agent/
  tests/tools/: 18187 passed, 59 pre-existing failures (verified against
  origin/main with the same shape — identical failure count, identical
  category — all xdist test-order flakes unrelated to this change)

Follows the same template as PR #23937 ([tracker: #23972](https://github.com/NousResearch/hermes-agent/issues/23972)).
This commit is contained in:
kshitij
2026-05-17 02:29:41 -07:00
committed by GitHub
parent ad00777f04
commit 5fba236644
119 changed files with 244 additions and 244 deletions

View File

@@ -358,7 +358,7 @@ def generate_meme(template_id: str, texts: list[str], output_path: str) -> str:
img = _overlay_on_image(img, texts, fields)
output = Path(output_path)
if output.suffix.lower() in (".jpg", ".jpeg"):
if output.suffix.lower() in {".jpg", ".jpeg"}:
img = img.convert("RGB")
img.save(str(output), quality=95)
return str(output)
@@ -378,7 +378,7 @@ def generate_from_image(
result = _overlay_on_image(img, texts, fields)
output = Path(output_path)
if output.suffix.lower() in (".jpg", ".jpeg"):
if output.suffix.lower() in {".jpg", ".jpeg"}:
result = result.convert("RGB")
result.save(str(output), quality=95)
return str(output)

View File

@@ -43,7 +43,7 @@ def _parse_feed(xml_bytes: bytes):
entries = []
for item in root.iter():
tag = _strip_ns(item.tag)
if tag not in ("item", "entry"):
if tag not in {"item", "entry"}:
continue
# ElementTree Elements without children are *falsy* — use `is not None`.
children = {_strip_ns(c.tag): c for c in item}

View File

@@ -125,7 +125,7 @@ def fetch_url(url: str, headers: dict | None = None, retries: int = MAX_RETRIES)
return json.loads(raw.decode("utf-8", errors="replace"))
except urllib.error.HTTPError as e:
last_err = e
if e.code in (404, 400):
if e.code in {404, 400}:
break # no point retrying
wait = BACKOFF_BASE ** attempt
time.sleep(wait)

View File

@@ -95,11 +95,11 @@ def one_rep_max(weight, reps):
def macros(tdee_kcal, goal):
goal = goal.lower()
if goal in ("cut", "lose", "deficit"):
if goal in {"cut", "lose", "deficit"}:
cals = tdee_kcal - 500
p, f, c = 0.40, 0.30, 0.30
label = "Fat Loss (-500 kcal)"
elif goal in ("bulk", "gain", "surplus"):
elif goal in {"bulk", "gain", "surplus"}:
cals = tdee_kcal + 400
p, f, c = 0.30, 0.25, 0.45
label = "Lean Bulk (+400 kcal)"
@@ -184,7 +184,7 @@ def main():
int(sys.argv[4]), sys.argv[5], int(sys.argv[6]),
)
elif cmd in ("1rm", "orm"):
elif cmd in {"1rm", "orm"}:
one_rep_max(float(sys.argv[2]), int(sys.argv[3]))
elif cmd == "macros":

View File

@@ -610,7 +610,7 @@ def _is_secret_key(key: str) -> bool:
normalized = _normalize_secret_key(key)
if normalized == "token" or normalized.endswith("token"):
return True
if normalized in ("auth", "authorization"):
if normalized in {"auth", "authorization"}:
return True
return any(marker in normalized for marker in _SECRET_KEY_MARKERS)
@@ -831,7 +831,7 @@ class Migrator:
# Flip the config-block flag when a conflict/error occurs on a
# config.yaml write. Later config-mutating options will skip rather
# than attempting a partial write.
if status in (STATUS_CONFLICT, STATUS_ERROR) and destination is not None:
if status in {STATUS_CONFLICT, STATUS_ERROR} and destination is not None:
dest_str = str(destination)
if dest_str.endswith("config.yaml") or dest_str.endswith("config.yml"):
self._config_apply_blocked = True
@@ -1526,7 +1526,7 @@ class Migrator:
api_key = resolve_secret_input(raw_key, openclaw_env)
if not api_key:
# Warn if a SecretRef with file/exec source was silently unresolvable
if isinstance(raw_key, dict) and raw_key.get("source") in ("file", "exec"):
if isinstance(raw_key, dict) and raw_key.get("source") in {"file", "exec"}:
self.record(
"provider-keys",
self.source_root / "openclaw.json",
@@ -1736,7 +1736,7 @@ class Migrator:
tts_data: Dict[str, Any] = {}
provider = tts.get("provider")
if isinstance(provider, str) and provider in ("elevenlabs", "openai", "edge", "microsoft"):
if isinstance(provider, str) and provider in {"elevenlabs", "openai", "edge", "microsoft"}:
# OpenClaw renamed "edge" to "microsoft"; Hermes still uses "edge"
tts_data["provider"] = "edge" if provider == "microsoft" else provider
@@ -2304,11 +2304,11 @@ class Migrator:
if defaults.get("thinkingDefault"):
# Map OpenClaw thinking -> Hermes reasoning_effort
thinking = defaults["thinkingDefault"]
if thinking in ("always", "high", "xhigh"):
if thinking in {"always", "high", "xhigh"}:
agent_cfg["reasoning_effort"] = "high"
elif thinking in ("auto", "medium", "adaptive"):
elif thinking in {"auto", "medium", "adaptive"}:
agent_cfg["reasoning_effort"] = "medium"
elif thinking in ("off", "low", "none", "minimal"):
elif thinking in {"off", "low", "none", "minimal"}:
agent_cfg["reasoning_effort"] = "low"
changes = True
@@ -2626,8 +2626,8 @@ class Migrator:
if not isinstance(ch_cfg, dict):
continue
complex_keys = {k: v for k, v in ch_cfg.items()
if k not in ("botToken", "appToken", "allowFrom", "enabled")
and v and k not in ("requireMention", "autoThread")}
if k not in {"botToken", "appToken", "allowFrom", "enabled"}
and v and k not in {"requireMention", "autoThread"}}
if complex_keys:
complex_archive[ch_name] = complex_keys
@@ -2671,7 +2671,7 @@ class Migrator:
# Archive remaining browser settings
advanced = {k: v for k, v in browser.items()
if k not in ("cdpUrl", "headless") and v}
if k not in {"cdpUrl", "headless"} and v}
if advanced and self.archive_dir:
if self.execute:
self.archive_dir.mkdir(parents=True, exist_ok=True)

View File

@@ -109,7 +109,7 @@ def _config_lookup(*paths: tuple[str, ...], default: str = "") -> str:
node = None
break
node = node.get(key)
if node not in (None, "") and not isinstance(node, dict):
if node not in {None, ""} and not isinstance(node, dict):
return str(node)
return default

View File

@@ -51,7 +51,7 @@ def main() -> int:
field = args.field
if field is None:
for k, v in vars(org).items():
if isinstance(v, str) and not k.startswith("_") and k not in ("id",):
if isinstance(v, str) and not k.startswith("_") and k not in {"id",}:
field = k
break
val = getattr(org, field, None) if field else None

View File

@@ -185,7 +185,7 @@ def whois_lookup(domain):
for key, pat in patterns.items():
matches = re.findall(pat, raw, re.IGNORECASE)
if matches:
if key in ("name_servers", "status"):
if key in {"name_servers", "status"}:
result[key] = list(dict.fromkeys(m.strip().lower() for m in matches))
else:
result[key] = matches[0].strip()

View File

@@ -60,7 +60,7 @@ def get(
f"HTTP 429 rate-limited by {urllib.parse.urlsplit(url).netloc}. "
f"Slow down or supply a real API key. Body: {body[:300]}"
) from e
if e.code in (500, 502, 503, 504) and attempt < max_retries:
if e.code in {500, 502, 503, 504} and attempt < max_retries:
retry_after = e.headers.get("Retry-After") if e.headers else None
wait = float(retry_after) if (retry_after and retry_after.isdigit()) else backoff ** (attempt + 1)
time.sleep(wait)

View File

@@ -122,7 +122,7 @@ def fetch(
with zipfile.ZipFile(zip_path) as zf:
for node_type, csv_substring in targets:
relevant_needles = [n for (k, n) in needles if k in (node_type, "Entity", "Officer")] or []
relevant_needles = [n for (k, n) in needles if k in {node_type, "Entity", "Officer"}] or []
# Only scan a CSV if we have a needle that could plausibly match it,
# or if we have ONLY a jurisdiction filter.
applicable_needles = [n for (k, n) in needles if k == node_type]