fix: repair sweep fallout — duplicate encoding kwargs, non-subprocess call sites, kwarg-snapshot tests

- Strip the salvaged commit's inline encoding kwargs where main had since
  gained its own (process_registry, local env, cua doctor, gateway,
  commands, gateway_windows — the latter keeps its locale-aware
  _schtasks_encoding() from #38186)
- Revert encoding kwargs mistakenly applied to non-subprocess APIs
  (exa get_contents, tempfile.mkstemp in webhook.py)
- Guard the ddgs worker Popen (new on main since #55339)
- Update two kwarg-snapshot test assertions for the new kwargs
This commit is contained in:
teknium1 2026-07-24 10:19:03 -07:00 committed by Teknium
parent ce2a4ac6c2
commit a5147331ea
10 changed files with 16 additions and 11 deletions

View file

@ -1669,7 +1669,7 @@ class SlashCommandCompleter(Completer):
continue
try:
proc = subprocess.run(
cmd, capture_output=True, text=True, encoding='utf-8', errors='replace', timeout=2,
cmd, capture_output=True, text=True, timeout=2,
cwd=cwd, encoding="utf-8", errors="replace",
)
if proc.returncode == 0 and proc.stdout and proc.stdout.strip():

View file

@ -421,7 +421,7 @@ def _scan_gateway_pids(
"/FORMAT:LIST",
],
capture_output=True,
text=True, encoding='utf-8', errors='replace',
text=True,
encoding="utf-8",
errors="ignore",
timeout=10,
@ -447,7 +447,7 @@ def _scan_gateway_pids(
result = subprocess.run(
[powershell, "-NoProfile", "-Command", ps_cmd],
capture_output=True,
text=True, encoding='utf-8', errors='replace',
text=True,
encoding="utf-8",
errors="ignore",
timeout=15,

View file

@ -160,7 +160,7 @@ def _exec_schtasks(args: list[str]) -> tuple[int, str, str]:
proc = subprocess.run(
[schtasks, *args],
capture_output=True,
text=True, encoding='utf-8', errors='replace',
text=True,
# Localized Windows emits schtasks output in the console code page,
# not UTF-8. Decode with the locale encoding and replace undecodable
# bytes so a non-UTF-8 status line never surfaces a UnicodeDecodeError

View file

@ -59,7 +59,7 @@ def _save_subscriptions(subs: Dict[str, dict]) -> None:
prefix=f".{path.name}.",
suffix=".tmp",
dir=path.parent,
text=True, encoding='utf-8', errors='replace',
text=True,
)
tmp_path = Path(tmp_name)
try:

View file

@ -193,6 +193,8 @@ def _run_ddgs_search_bounded(query: str, safe_limit: int) -> list[dict[str, Any]
stderr=subprocess.DEVNULL,
env=env,
text=True,
encoding="utf-8",
errors="replace",
**extra_kwargs,
)
_last_worker_proc = proc

View file

@ -170,7 +170,7 @@ class ExaWebSearchProvider(WebSearchProvider):
]
logger.info("Exa extract: %d URL(s)", len(urls))
response = _get_exa_client().get_contents(urls, text=True, encoding='utf-8', errors='replace')
response = _get_exa_client().get_contents(urls, text=True)
results: List[Dict[str, Any]] = []
for result in response.results or []:

View file

@ -206,9 +206,10 @@ def test_restore_stashed_changes_keeps_going_when_stash_entry_cannot_be_resolved
restored = hermes_main._restore_stashed_changes(["git"], tmp_path, "abc123", prompt_user=False)
assert restored is True
assert calls[0] == (["git", "stash", "apply", "abc123"], {"cwd": tmp_path, "capture_output": True, "text": True})
assert calls[1] == (["git", "diff", "--name-only", "--diff-filter=U"], {"cwd": tmp_path, "capture_output": True, "text": True})
assert calls[2] == (["git", "stash", "list", "--format=%gd %H"], {"cwd": tmp_path, "capture_output": True, "text": True, "check": True})
_utf8 = {"encoding": "utf-8", "errors": "replace"}
assert calls[0] == (["git", "stash", "apply", "abc123"], {"cwd": tmp_path, "capture_output": True, "text": True, **_utf8})
assert calls[1] == (["git", "diff", "--name-only", "--diff-filter=U"], {"cwd": tmp_path, "capture_output": True, "text": True, **_utf8})
assert calls[2] == (["git", "stash", "list", "--format=%gd %H"], {"cwd": tmp_path, "capture_output": True, "text": True, **_utf8, "check": True})
out = capsys.readouterr().out
assert "couldn't find the stash entry to drop" in out
assert "stash was left in place" in out

View file

@ -116,6 +116,8 @@ def test_ensure_docker_available_uses_resolved_executable(monkeypatch):
(["/opt/homebrew/bin/docker", "version"], {
"capture_output": True,
"text": True,
"encoding": "utf-8",
"errors": "replace",
"timeout": 5,
"stdin": subprocess.DEVNULL,
})

View file

@ -99,7 +99,7 @@ def _drive_health_report(
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True, encoding='utf-8', errors='replace',
text=True,
encoding="utf-8",
errors="replace",
bufsize=1,

View file

@ -1403,7 +1403,7 @@ class LocalEnvironment(BaseEnvironment):
proc = subprocess.Popen(
args,
text=True, encoding='utf-8', errors='replace',
text=True,
env=run_env,
encoding="utf-8",
errors="replace",