"""Debug the optional returns regex - try multiple approaches.""" import subprocess import os from pathlib import Path REPO = Path(r"C:\projects\manual_slop_tier2") env = os.environ.copy() env["GIT_PAGER"] = "cat" # Approach A: use -e flag to separate pattern cmd = ["git", "grep", "-nE", "-e", r"-> Optional\[", "--", "src/*.py"] r = subprocess.run(cmd, cwd=str(REPO), capture_output=True, text=True, encoding="utf-8", env=env) print(f"Approach A (-e flag): rc={r.returncode}") print(f" stdout: {r.stdout[:300]!r}") print(f" stderr: {r.stderr[:300]!r}") # Approach B: write pattern to file import tempfile with tempfile.NamedTemporaryFile(mode="w", suffix=".txt", delete=False, encoding="utf-8") as f: f.write(r"-> Optional\[") pattern_file = f.name cmd = ["git", "grep", "-nE", "-f", pattern_file, "--", "src/*.py"] r = subprocess.run(cmd, cwd=str(REPO), capture_output=True, text=True, encoding="utf-8", env=env) print(f"\nApproach B (-f file): rc={r.returncode}") print(f" stdout: {r.stdout[:300]!r}") # Approach C: use plain grep via PowerShell import subprocess as sp ps_cmd = 'git grep -nE "-> Optional\\[" -- src/*.py 2>&1' r = sp.run(["powershell", "-Command", ps_cmd], cwd=str(REPO), capture_output=True, text=True, encoding="utf-8") print(f"\nApproach C (powershell): rc={r.returncode}") print(f" stdout: {r.stdout[:300]!r}") # Approach D: use shell=True with the proper escaping r = subprocess.run('git grep -nE "-> Optional\\[" -- src/*.py', cwd=str(REPO), shell=True, capture_output=True, text=True, encoding="utf-8", env=env) print(f"\nApproach D (shell=True): rc={r.returncode}") print(f" stdout: {r.stdout[:300]!r}")