Skip to content

Commit 161f483

Browse files
committed
fix(bench): bm25 eval_fn closure → functools.partial, fixes pickle in ProcessPool
1 parent ed31b9f commit 161f483

1 file changed

Lines changed: 11 additions & 13 deletions

File tree

benchmarks/baselines/bm25_baseline.py

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
from __future__ import annotations
1313

14+
import functools
1415
import os
1516
import time
1617
from pathlib import Path
@@ -167,23 +168,20 @@ def _bm25_eval(
167168
pass
168169

169170

171+
def _pool_eval_bm25(repos_dir_str: str, instance: BenchmarkInstance, params: RunParams) -> EvalResult:
172+
repos_dir = Path(repos_dir_str)
173+
worktree_dir = repos_dir / "worktrees" / f"w{os.getpid()}"
174+
worktree_dir.mkdir(parents=True, exist_ok=True)
175+
evaluator = UniversalEvaluator()
176+
encoder = tiktoken.get_encoding("o200k_base")
177+
return _bm25_eval(instance, params, evaluator, worktree_dir, encoder)
178+
179+
170180
def make_bm25_eval_fn(repos_dir: Path):
171181
try:
172182
import rank_bm25 as _ # noqa: F401
173183
except ImportError as e:
174184
raise RuntimeError(
175185
"rank-bm25 not installed; expected to be in requirements-bench.lock. Run: pip install rank-bm25"
176186
) from e
177-
178-
evaluator = UniversalEvaluator()
179-
worktrees_root = repos_dir / "worktrees"
180-
encoder = tiktoken.get_encoding("o200k_base")
181-
182-
def eval_fn(instance: BenchmarkInstance, params: RunParams) -> EvalResult:
183-
import os
184-
185-
worktree_dir = worktrees_root / f"w{os.getpid()}"
186-
worktree_dir.mkdir(parents=True, exist_ok=True)
187-
return _bm25_eval(instance, params, evaluator, worktree_dir, encoder)
188-
189-
return eval_fn
187+
return functools.partial(_pool_eval_bm25, str(repos_dir))

0 commit comments

Comments
 (0)