fix(types): mypy clean again over src; stub-less libraries and the benchmark imports handled in pyproject

66 errors had accumulated in src since the last green run (the hunt modules of groups 4-6, stats, candidates,
runner). Codex typed them without behaviour change; the 17 inline import-untyped ignores it added are replaced by
one override for dspy, pandas, statsmodels and scikit-learn, and the hunt package's lazy imports of benchmarks/
(never type-checked, not in files) are followed silently so src stays strict against their signatures.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
Marius Ciepluch
2026-10-14 03:03:12 +02:00
co-authored by Claude Fable 5.1
parent 0d7d3f0dc9
commit c8f7610313
17 changed files with 78 additions and 36 deletions
+12 -3
View File
@@ -4,6 +4,7 @@ import os
import re
from collections.abc import Iterator
from pathlib import Path
from typing import NotRequired, TypedDict
from .preprocess import enumerate_source_files
from .source import callers_of, product_files
@@ -67,11 +68,19 @@ def _mtime(path: Path) -> int:
return -1
def grep_repo(root: Path, pattern: str, *, max_matches: int) -> list[dict[str, object]]:
class ToolMatch(TypedDict):
path: str
line: int
text: str
name: NotRequired[str]
source: NotRequired[str]
def grep_repo(root: Path, pattern: str, *, max_matches: int) -> list[ToolMatch]:
if max_matches <= 0:
return []
compiled = re.compile(pattern)
matches: list[dict[str, object]] = []
matches: list[ToolMatch] = []
for relative, lines in _source_lines(root):
for line_no, line in enumerate(lines, start=1):
if compiled.search(line):
@@ -81,7 +90,7 @@ def grep_repo(root: Path, pattern: str, *, max_matches: int) -> list[dict[str, o
return matches
def find_refs(root: Path, symbol: str) -> list[dict[str, object]]:
def find_refs(root: Path, symbol: str) -> list[ToolMatch]:
if not symbol:
return []
lines = dict(_source_lines(root))