latch-eval-tools 0.1.3__py3-none-any.whl → 0.1.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -38,9 +38,9 @@ def run_claudecode_task(
38
38
  agent_log_file.unlink()
39
39
 
40
40
  enhanced_prompt = _enhance_prompt_with_local_files(task_prompt, work_dir)
41
- enhanced_prompt += """
41
+ enhanced_prompt += f"""
42
42
 
43
- CRITICAL: You must write eval_answer.json BEFORE signaling completion.
43
+ CRITICAL: You must write eval_answer.json BEFORE signaling completion in the {work_dir}.
44
44
  Correct order: 1) Perform analysis 2) Write eval_answer.json with your answer 3) Exit"""
45
45
 
46
46
  cmd = ["claude", "--print", "--dangerously-skip-permissions", "--verbose", "--output-format", "stream-json"]
@@ -49,6 +49,30 @@ Correct order: 1) Perform analysis 2) Write eval_answer.json with your answer 3)
49
49
  claude_model = MODEL_MAP.get(model_name, model_name)
50
50
  cmd.extend(["--model", claude_model])
51
51
 
52
+ run_as_claude_user = os.geteuid() == 0
53
+ if run_as_claude_user:
54
+ import pwd
55
+ import shutil
56
+ import stat
57
+ try:
58
+ pwd.getpwnam("claude")
59
+ home_dir = Path.home()
60
+ current_mode = home_dir.stat().st_mode
61
+ home_dir.chmod(current_mode | stat.S_IXOTH)
62
+
63
+ eval_cache_dir = home_dir / ".eval_cache"
64
+ if eval_cache_dir.exists():
65
+ shutil.chown(eval_cache_dir, user="claude", group="claude")
66
+ for item in eval_cache_dir.rglob("*"):
67
+ try:
68
+ shutil.chown(item, user="claude", group="claude")
69
+ except PermissionError:
70
+ pass
71
+
72
+ work_dir.chmod(0o777)
73
+ except KeyError:
74
+ run_as_claude_user = False
75
+
52
76
  env = os.environ.copy()
53
77
 
54
78
  start_time = time.time()
@@ -57,6 +81,9 @@ Correct order: 1) Perform analysis 2) Write eval_answer.json with your answer 3)
57
81
  trajectory = []
58
82
 
59
83
  try:
84
+ if run_as_claude_user:
85
+ env_vars = [f"{k}={v}" for k, v in env.items() if k.endswith("_API_KEY")]
86
+ cmd = ["runuser", "-u", "claude", "--", "env"] + env_vars + cmd
60
87
 
61
88
  process = subprocess.Popen(
62
89
  cmd,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: latch-eval-tools
3
- Version: 0.1.3
3
+ Version: 0.1.5
4
4
  Summary: Shared eval tools for single-cell bench, spatial bench, and future biology benchmarks.
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.10
@@ -16,7 +16,7 @@ latch_eval_tools/graders/multiple_choice.py,sha256=HTyYWQGFv7ATmTNJMhUnisiuNb1F7
16
16
  latch_eval_tools/graders/numeric.py,sha256=Q19GtyYtatKRdPX9DlWJ8CKSQHUhJ6P6k7hnhZnKE04,6826
17
17
  latch_eval_tools/graders/spatial.py,sha256=8dNRsCVazCI98mHwhLHz0T-kyvLL4dTrsayu2DqjMdU,4258
18
18
  latch_eval_tools/harness/__init__.py,sha256=FyDDHRdEOUo845NIGqzF1CbOzaZfilsId8LxhtgEWHQ,764
19
- latch_eval_tools/harness/claudecode.py,sha256=D9UCIXl8ux2-zCBK-xBFX5ud0Pt4h6k-M_WqVrf9KYI,6047
19
+ latch_eval_tools/harness/claudecode.py,sha256=GtYHqF-To3zaHh2bpSJqWDmt_a7oikS0omf7DGtfdVs,7078
20
20
  latch_eval_tools/harness/minisweagent.py,sha256=SZwbnigvGOWU4tIgijJSyOr4urTe8n1Dgj6ViuL2uM4,9197
21
21
  latch_eval_tools/harness/plotsagent.py,sha256=Qw_q-6WzAsGo1RzKBzD0lzsXZeyGRGwfZ0AU5s_e00g,5017
22
22
  latch_eval_tools/harness/runner.py,sha256=f042LLhEAN4rvltPIhjSn588Z2AkP5tTk0pKDH69i2M,7264
@@ -26,8 +26,8 @@ latch_eval_tools/linter/explanations.py,sha256=Uzg-IH9YjZl__X7nF7lDc-4FSv619CE8L
26
26
  latch_eval_tools/linter/runner.py,sha256=zii4EbfsdWqdynzCxn1GLX0oC7rUgnrq0Vwsc-13YNk,4619
27
27
  latch_eval_tools/linter/schema.py,sha256=Acqs4VSwhOP4G85nUCghPquGMGQ413In7kAWaQ1BtNE,3688
28
28
  latch_eval_tools/linter/validators.py,sha256=iWcWBrcOmjv8abJEy0ch6Di2LbT5L8TVTe2cl88mQoU,21488
29
- latch_eval_tools-0.1.3.dist-info/METADATA,sha256=s6ncTLpaza6-gPlN2HjknifgedO-eJ2YyInpy2fvBqE,2852
30
- latch_eval_tools-0.1.3.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
31
- latch_eval_tools-0.1.3.dist-info/entry_points.txt,sha256=pxTKTp2rBe7xq_j1KSVZE6ULxDZv_BsbFjAGHEw7Tlo,66
32
- latch_eval_tools-0.1.3.dist-info/licenses/LICENSE,sha256=zepfPTPE3p7B8XbkQVZ-MeZwB9vmSoXQhMUvHNnlvQo,39
33
- latch_eval_tools-0.1.3.dist-info/RECORD,,
29
+ latch_eval_tools-0.1.5.dist-info/METADATA,sha256=9NRkCxj7Ifw9LINhVFjisjYXOu6ws-v-H00gM4Dpc68,2852
30
+ latch_eval_tools-0.1.5.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
31
+ latch_eval_tools-0.1.5.dist-info/entry_points.txt,sha256=pxTKTp2rBe7xq_j1KSVZE6ULxDZv_BsbFjAGHEw7Tlo,66
32
+ latch_eval_tools-0.1.5.dist-info/licenses/LICENSE,sha256=zepfPTPE3p7B8XbkQVZ-MeZwB9vmSoXQhMUvHNnlvQo,39
33
+ latch_eval_tools-0.1.5.dist-info/RECORD,,