verifiers 0.2.2.dev49__py3-none-any.whl → 0.2.2.dev50__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.
- verifiers/v1/configs/judge.py +3 -10
- verifiers/v1/configs/taskset.py +5 -0
- verifiers/v1/envs/agentic_judge/env.py +11 -21
- verifiers/v1/gepa/adapter.py +4 -8
- verifiers/v1/gepa/runner.py +14 -1
- verifiers/v1/judge.py +4 -4
- verifiers/v1/task.py +11 -1
- verifiers/v1/taskset.py +8 -3
- verifiers/v1/tasksets/lean/taskset.py +1 -2
- {verifiers-0.2.2.dev49.dist-info → verifiers-0.2.2.dev50.dist-info}/METADATA +1 -1
- {verifiers-0.2.2.dev49.dist-info → verifiers-0.2.2.dev50.dist-info}/RECORD +14 -14
- {verifiers-0.2.2.dev49.dist-info → verifiers-0.2.2.dev50.dist-info}/WHEEL +0 -0
- {verifiers-0.2.2.dev49.dist-info → verifiers-0.2.2.dev50.dist-info}/entry_points.txt +0 -0
- {verifiers-0.2.2.dev49.dist-info → verifiers-0.2.2.dev50.dist-info}/licenses/LICENSE +0 -0
verifiers/v1/configs/judge.py
CHANGED
|
@@ -5,7 +5,7 @@ from collections.abc import Sequence
|
|
|
5
5
|
from pathlib import Path
|
|
6
6
|
from typing import Any
|
|
7
7
|
|
|
8
|
-
from pydantic import BaseModel, SerializeAsAny
|
|
8
|
+
from pydantic import BaseModel, SerializeAsAny
|
|
9
9
|
|
|
10
10
|
from verifiers.v1.clients import BaseClientConfig
|
|
11
11
|
from verifiers.v1.types import ID, SamplingConfig
|
|
@@ -20,15 +20,8 @@ class JudgeConfig(BaseClientConfig):
|
|
|
20
20
|
weight: float = 1.0
|
|
21
21
|
model: str = "openai/gpt-5.4-nano"
|
|
22
22
|
sampling: SamplingConfig = SamplingConfig()
|
|
23
|
-
prompt:
|
|
24
|
-
|
|
25
|
-
"""Prompt file override, mutually exclusive with `prompt`."""
|
|
26
|
-
|
|
27
|
-
@model_validator(mode="after")
|
|
28
|
-
def check_prompt_source(self) -> "JudgeConfig":
|
|
29
|
-
if self.prompt is not None and self.prompt_file is not None:
|
|
30
|
-
raise ValueError("set `prompt` or `prompt_file`, not both")
|
|
31
|
-
return self
|
|
23
|
+
prompt: Path | None = None
|
|
24
|
+
"""File whose text overrides the judge's default prompt template."""
|
|
32
25
|
|
|
33
26
|
|
|
34
27
|
Judges = list[SerializeAsAny[JudgeConfig]]
|
verifiers/v1/configs/taskset.py
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"""The taskset plugin's config: which rows load, under `--env.taskset.*`."""
|
|
2
2
|
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
3
5
|
from pydantic import SerializeAsAny
|
|
4
6
|
from pydantic_config import BaseConfig
|
|
5
7
|
|
|
@@ -14,6 +16,9 @@ class TasksetConfig(BaseConfig):
|
|
|
14
16
|
positional `eval <taskset-id>`)."""
|
|
15
17
|
task: SerializeAsAny[TaskConfig] = TaskConfig()
|
|
16
18
|
"""Config passed to each task, under `--env.taskset.task.*`."""
|
|
19
|
+
system_prompt: Path | None = None
|
|
20
|
+
"""File whose text overrides each task's `TaskData.system_prompt` in
|
|
21
|
+
`Taskset.select` (e.g. a GEPA `best_system_prompt.txt`)."""
|
|
17
22
|
|
|
18
23
|
@property
|
|
19
24
|
def name(self) -> str:
|
|
@@ -180,41 +180,31 @@ class JudgeTask(vf.Task):
|
|
|
180
180
|
class JudgeTaskConfig(vf.BaseConfig):
|
|
181
181
|
"""The judge's minted task: the grading policy and what lands in its box."""
|
|
182
182
|
|
|
183
|
-
prompt: Path |
|
|
184
|
-
"""Grading-policy
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
`.txt` file): task-family pointers into the trace or box — e.g. for math,
|
|
192
|
-
where the reference answer lives in the record; for SWE, to diff the repo
|
|
193
|
-
or read `info.patch`."""
|
|
183
|
+
prompt: Path | None = None
|
|
184
|
+
"""Grading-policy file. Replaces only the policy body — the verdict contract
|
|
185
|
+
and workspace note are always appended. May reference `{prompt}` (the solver
|
|
186
|
+
task's prompt); if it doesn't, the task statement is appended after."""
|
|
187
|
+
hint: Path | None = None
|
|
188
|
+
"""Optional hints file injected as their own section: task-family pointers
|
|
189
|
+
into the trace or box — e.g. for math, where the reference answer lives in
|
|
190
|
+
the record; for SWE, to diff the repo or read `info.patch`."""
|
|
194
191
|
rubric: Path | None = None
|
|
195
192
|
"""Criteria the judge grades against: a `.toml`/`.json` file with a
|
|
196
193
|
`criteria` list — the plugged rubric judge's format, so the same rubric
|
|
197
194
|
files work for both. None grades the single built-in `solved` criterion."""
|
|
198
195
|
|
|
199
|
-
@staticmethod
|
|
200
|
-
def _resolve(value: Path | str) -> str:
|
|
201
|
-
path = Path(value)
|
|
202
|
-
if isinstance(value, Path) or path.suffix in (".md", ".txt"):
|
|
203
|
-
return path.read_text(encoding="utf-8")
|
|
204
|
-
return str(value)
|
|
205
|
-
|
|
206
196
|
def build_prompt(self) -> str:
|
|
207
197
|
if self.prompt is None:
|
|
208
198
|
return GRADE_PROMPT + "\n\n" + TASK_SECTION
|
|
209
|
-
return self.
|
|
199
|
+
return self.prompt.read_text()
|
|
210
200
|
|
|
211
201
|
def build_hint(self) -> str | None:
|
|
212
|
-
return self.
|
|
202
|
+
return self.hint.read_text() if self.hint is not None else None
|
|
213
203
|
|
|
214
204
|
def criteria(self) -> list[Criterion]:
|
|
215
205
|
if self.rubric is None:
|
|
216
206
|
return [SOLVED]
|
|
217
|
-
text = self.rubric.read_text(
|
|
207
|
+
text = self.rubric.read_text()
|
|
218
208
|
data = (
|
|
219
209
|
tomllib.loads(text)
|
|
220
210
|
if self.rubric.suffix.lower() == ".toml"
|
verifiers/v1/gepa/adapter.py
CHANGED
|
@@ -68,14 +68,10 @@ class GEPAAdapter:
|
|
|
68
68
|
)
|
|
69
69
|
|
|
70
70
|
async def _run_batch(self, batch: list[int], system_prompt: str) -> list[Episode]:
|
|
71
|
-
# Inject the candidate
|
|
72
|
-
#
|
|
73
|
-
tasks
|
|
74
|
-
|
|
75
|
-
t.data.model_copy(update={"system_prompt": system_prompt}), t.config
|
|
76
|
-
)
|
|
77
|
-
for t in (self.tasks[idx] for idx in batch)
|
|
78
|
-
]
|
|
71
|
+
# Inject the candidate as a copy of each base task with its system_prompt overridden
|
|
72
|
+
# (`with_system_prompt` copies rather than reconstructs, so subclass state survives and
|
|
73
|
+
# the shared base task in `self.tasks` is left untouched for the next candidate).
|
|
74
|
+
tasks = [self.tasks[idx].with_system_prompt(system_prompt) for idx in batch]
|
|
79
75
|
slots = [slot for task in tasks for slot in self.env.slots(task)]
|
|
80
76
|
results = await asyncio.gather(
|
|
81
77
|
*(
|
verifiers/v1/gepa/runner.py
CHANGED
|
@@ -105,7 +105,20 @@ def run_gepa(env: Env, config: GEPAConfig) -> GEPAResult:
|
|
|
105
105
|
"skip_perfect_score": False,
|
|
106
106
|
"logger": _GEPALog(),
|
|
107
107
|
}
|
|
108
|
-
|
|
108
|
+
result = optimize(**optimize_kwargs)
|
|
109
|
+
if run_dir is not None:
|
|
110
|
+
# Persist the winning prompt as a plain file so it can be handed straight to
|
|
111
|
+
# eval/train via `--env.taskset.system-prompt` (see TasksetConfig).
|
|
112
|
+
candidate = result.best_candidate
|
|
113
|
+
best = (
|
|
114
|
+
candidate.get("system_prompt", "")
|
|
115
|
+
if isinstance(candidate, dict)
|
|
116
|
+
else str(candidate)
|
|
117
|
+
)
|
|
118
|
+
best_path = run_dir / "best_system_prompt.txt"
|
|
119
|
+
best_path.write_text(best, encoding="utf-8")
|
|
120
|
+
logger.info("best system prompt: %s", best_path)
|
|
121
|
+
return result
|
|
109
122
|
finally:
|
|
110
123
|
loop.run_until_complete(serving.__aexit__(None, None, None))
|
|
111
124
|
finally:
|
verifiers/v1/judge.py
CHANGED
|
@@ -116,13 +116,13 @@ def judge_config_cls(cls: type) -> type[JudgeConfig]:
|
|
|
116
116
|
|
|
117
117
|
class Judge(Generic[ParsedT, ConfigT]):
|
|
118
118
|
prompt: str | None = None
|
|
119
|
-
"""Default prompt template, overridden by config."""
|
|
119
|
+
"""Default prompt template, overridden by a config `prompt` file."""
|
|
120
120
|
schema: type[BaseModel] | None = None
|
|
121
121
|
|
|
122
122
|
def __init__(self, config: ConfigT | None = None) -> None:
|
|
123
123
|
self.config = cast(ConfigT, config or judge_config_cls(type(self))())
|
|
124
|
-
if self.config.
|
|
125
|
-
self.prompt = self.config.
|
|
124
|
+
if self.config.prompt is not None:
|
|
125
|
+
self.prompt = self.config.prompt.read_text()
|
|
126
126
|
|
|
127
127
|
@property
|
|
128
128
|
def reward_name(self) -> str:
|
|
@@ -132,7 +132,7 @@ class Judge(Generic[ParsedT, ConfigT]):
|
|
|
132
132
|
return judge_key(self.config) or fallback or "judge"
|
|
133
133
|
|
|
134
134
|
def build_messages(self, **fields: Any) -> str | Messages:
|
|
135
|
-
template = self.
|
|
135
|
+
template = self.prompt
|
|
136
136
|
if template is None:
|
|
137
137
|
raise ValueError(
|
|
138
138
|
f"{type(self).__name__} has no `prompt`; set it or override build_messages"
|
verifiers/v1/task.py
CHANGED
|
@@ -24,10 +24,11 @@ wraps it in the declared `Task` — one task type per taskset.
|
|
|
24
24
|
|
|
25
25
|
from __future__ import annotations
|
|
26
26
|
|
|
27
|
+
import copy
|
|
27
28
|
import inspect
|
|
28
29
|
import logging
|
|
29
30
|
from collections.abc import Mapping
|
|
30
|
-
from typing import TYPE_CHECKING, ClassVar, Generic
|
|
31
|
+
from typing import TYPE_CHECKING, ClassVar, Generic, Self
|
|
31
32
|
|
|
32
33
|
from pydantic import ConfigDict, Field
|
|
33
34
|
from pydantic_config import BaseConfig
|
|
@@ -197,6 +198,15 @@ class Task(Generic[DataT, StateT, ConfigT]):
|
|
|
197
198
|
self.data = data
|
|
198
199
|
self.config = config if config is not None else task_config_cls(type(self))()
|
|
199
200
|
|
|
201
|
+
def with_system_prompt(self, system_prompt: str) -> Self:
|
|
202
|
+
"""A shallow copy of this task with `data.system_prompt` overridden. Copies the
|
|
203
|
+
instance instead of reconstructing via `type(self)(...)`, so a subclass with a
|
|
204
|
+
non-`(data, config)` constructor or extra load-time state keeps it. Used to apply the
|
|
205
|
+
config-layer / GEPA system prompt (see `TasksetConfig` and `verifiers.v1.gepa`)."""
|
|
206
|
+
clone = copy.copy(self)
|
|
207
|
+
clone.data = self.data.model_copy(update={"system_prompt": system_prompt})
|
|
208
|
+
return clone
|
|
209
|
+
|
|
200
210
|
def plugged_judges(self) -> list[Judge]:
|
|
201
211
|
from verifiers.v1.loaders import load_judge
|
|
202
212
|
|
verifiers/v1/taskset.py
CHANGED
|
@@ -79,10 +79,15 @@ class Taskset(Generic[TaskT, TasksetConfigT]):
|
|
|
79
79
|
"taking the first %d generated tasks",
|
|
80
80
|
num_tasks,
|
|
81
81
|
)
|
|
82
|
-
|
|
82
|
+
shuffle = False # can't materialize the whole taskset to sample from
|
|
83
83
|
if shuffle:
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
tasks = sample(self.load(), shuffle=True, limit=num_tasks)
|
|
85
|
+
else:
|
|
86
|
+
tasks = list(itertools.islice(self.load(), num_tasks))
|
|
87
|
+
if self.config.system_prompt is not None:
|
|
88
|
+
override = self.config.system_prompt.read_text()
|
|
89
|
+
tasks = [t.with_system_prompt(override) for t in tasks]
|
|
90
|
+
return tasks
|
|
86
91
|
|
|
87
92
|
def server_config(self, server_cls: type) -> BaseConfig:
|
|
88
93
|
"""The config a `tools` entry is built with, resolved off `self.config` (the
|
|
@@ -61,7 +61,6 @@ class LeanTaskConfig(TaskConfig):
|
|
|
61
61
|
class LeanConfig(TasksetConfig):
|
|
62
62
|
dataset: LeanDatasetConfig
|
|
63
63
|
docker_image: str = DEFAULT_DOCKER_IMAGE
|
|
64
|
-
system_prompt: str = DEFAULT_SYSTEM_PROMPT
|
|
65
64
|
task: LeanTaskConfig = LeanTaskConfig()
|
|
66
65
|
|
|
67
66
|
|
|
@@ -187,7 +186,7 @@ class LeanTaskset(Taskset[LeanTask, LeanConfig]):
|
|
|
187
186
|
idx=index,
|
|
188
187
|
name=str(name) if name else f"task_{index:05d}",
|
|
189
188
|
prompt=self._build_prompt(formal_statement, header),
|
|
190
|
-
system_prompt=
|
|
189
|
+
system_prompt=DEFAULT_SYSTEM_PROMPT,
|
|
191
190
|
image=config.docker_image,
|
|
192
191
|
workdir=config.task.lean_project_path,
|
|
193
192
|
resources=resources,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: verifiers
|
|
3
|
-
Version: 0.2.2.
|
|
3
|
+
Version: 0.2.2.dev50
|
|
4
4
|
Summary: Verifiers: Environments for LLM Reinforcement Learning
|
|
5
5
|
Project-URL: Homepage, https://github.com/primeintellect-ai/verifiers
|
|
6
6
|
Project-URL: Documentation, https://github.com/primeintellect-ai/verifiers
|
|
@@ -175,7 +175,7 @@ verifiers/v1/episode.py,sha256=KWyM9ovTphEIo2260BYu2HvtnOOTxjLRDPrF_jTCiuA,2497
|
|
|
175
175
|
verifiers/v1/errors.py,sha256=slZnrtqMo_BgXQV46wJJhV6vvAAnVsuCbVGp2vBVWfs,6888
|
|
176
176
|
verifiers/v1/graph.py,sha256=-j8MNdIv1r5ifajv5ggnGPsfBNB74IO3WKLcrpYh9hg,29102
|
|
177
177
|
verifiers/v1/harness.py,sha256=cDiDuhp29aqL4CxiqSZz-IT0QlOcVlye_vTTHZblWo8,10948
|
|
178
|
-
verifiers/v1/judge.py,sha256=
|
|
178
|
+
verifiers/v1/judge.py,sha256=UmBcEmyY30Zod-Nnvj8UTSyvee5NAjBJE9ufPrwTiTw,9391
|
|
179
179
|
verifiers/v1/legacy.py,sha256=nkbdhFJZN1QzsjE42AB_A_c1zrk3_Y8zR07srZJS2ck,22584
|
|
180
180
|
verifiers/v1/loaders.py,sha256=TnNKY2msVo3p7m-5wjw376PYH-zTu3TLixXRst0VOiM,9985
|
|
181
181
|
verifiers/v1/push.py,sha256=MWZmvyj0iyzNIO0xRhlkCXtFF1plq6EJi8rWlvrFtvI,11363
|
|
@@ -184,8 +184,8 @@ verifiers/v1/rollout.py,sha256=GJzHgJFlw8O1vDtWM__2JhSiG2GqbfjtH2ri1MRfw3g,20495
|
|
|
184
184
|
verifiers/v1/scoring.py,sha256=-R5Cog14r_tJ6Q_oOfGr5VPAm2CCUhofYZB6B9lm4wM,5787
|
|
185
185
|
verifiers/v1/session.py,sha256=J6ZPuvsg6vMTJAs9dMUMtfdjCuvp6Hom877DVdKFKlY,6912
|
|
186
186
|
verifiers/v1/state.py,sha256=R8tyQv8nsFV2pztrquDqCOa1Mk1fAp3w2GjqUugZwE0,689
|
|
187
|
-
verifiers/v1/task.py,sha256=
|
|
188
|
-
verifiers/v1/taskset.py,sha256=
|
|
187
|
+
verifiers/v1/task.py,sha256=tmsxn1YLsgIIRrCqueBXvoupXhFks61_GNiMVTs495k,11652
|
|
188
|
+
verifiers/v1/taskset.py,sha256=gkDqK_1SEU-oyDaqcv1fykyTZc9Hlub_Npe6bajhmPY,4175
|
|
189
189
|
verifiers/v1/trace.py,sha256=9KqBeGaRUtWh6Gpdf6G1c7UZso0DB9Mjmtkzl6I_oYE,19458
|
|
190
190
|
verifiers/v1/types.py,sha256=5tZyG4r4bLJ9a14oybHy7bSCpt5X5A17eRwmIszuRo8,9118
|
|
191
191
|
verifiers/v1/acp/__init__.py,sha256=9dwH6fLopNndRmcpRSYC8ghzzMquaLfgh645QM-Dwic,2189
|
|
@@ -217,12 +217,12 @@ verifiers/v1/configs/__init__.py,sha256=X7u6X7B3ieD1HZl79Tv1kg-yPHbT0QLvAebaGqxV
|
|
|
217
217
|
verifiers/v1/configs/agent.py,sha256=N2Lm0iZXFxfsSIiXUQ7f3RDZcoin3M7pJj6HVdCE5eo,3537
|
|
218
218
|
verifiers/v1/configs/env.py,sha256=4aUap3BJX3WCA2_fZ-jGPxF3khiVpORqmz_3eBT4j9w,7824
|
|
219
219
|
verifiers/v1/configs/harness.py,sha256=CG8hGbHl3rr6yawH3YYMAFl01M7Piiwf4w5oiw2Vagg,1564
|
|
220
|
-
verifiers/v1/configs/judge.py,sha256=
|
|
220
|
+
verifiers/v1/configs/judge.py,sha256=eEVtBGjAOmm1sSRd_UHVBpJEfUxMHxHDBFnvchmxs-w,2217
|
|
221
221
|
verifiers/v1/configs/legacy.py,sha256=YOJM6L5u6-jYpZ1CLpPInufKdmz1lEsMNKIRdT2JaaY,1080
|
|
222
222
|
verifiers/v1/configs/retries.py,sha256=-nPlgmz7J_NZ4GOYG6oCc3thXo4La2SufBmvQGvvPGo,821
|
|
223
223
|
verifiers/v1/configs/serve.py,sha256=cHHnFGQtqEwvaovdeoVMpCebTHgPXKUuIivN5IhxZR0,2596
|
|
224
224
|
verifiers/v1/configs/task.py,sha256=1ozZjfpahin7I_TqzC7f3xr7CHSthAdydegFPXW4d9k,1101
|
|
225
|
-
verifiers/v1/configs/taskset.py,sha256
|
|
225
|
+
verifiers/v1/configs/taskset.py,sha256=-WfRRRDvLwV4v4QoBtHegYNAHExM1nCR7TZjJyNv_aA,858
|
|
226
226
|
verifiers/v1/configs/cli/__init__.py,sha256=3wBAONw5XkBPqbMjpHk5XBHlBVybR8JQ2JCPWijYBMU,444
|
|
227
227
|
verifiers/v1/configs/cli/debug.py,sha256=3lkKqmQFLJBcUZECChBHCrod5pbCKSmT47EhjILrxjI,2843
|
|
228
228
|
verifiers/v1/configs/cli/env.py,sha256=XgjRXYpPjga0ZYIHEESY7VuVvtE6pWfAzf6JBLeuTIc,2695
|
|
@@ -238,7 +238,7 @@ verifiers/v1/dialects/chat.py,sha256=R_otqi5N0snB1QVKIYloNeLHR9kc7OmI06HYg1ir_Lw
|
|
|
238
238
|
verifiers/v1/dialects/responses.py,sha256=ismnxUikPcPUIm80FUTPBbj-Cn1e0yGAsISMEseAWRc,13679
|
|
239
239
|
verifiers/v1/envs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
240
240
|
verifiers/v1/envs/agentic_judge/__init__.py,sha256=X7vQbbbfmJ_j-mJEfBkuB4a8QUPkUYkpG7yp0xYOEmg,279
|
|
241
|
-
verifiers/v1/envs/agentic_judge/env.py,sha256=
|
|
241
|
+
verifiers/v1/envs/agentic_judge/env.py,sha256=2g9yz3QfYUc_OZBkxzWOEKsGiT51siYMKB7PwvbCY2E,14878
|
|
242
242
|
verifiers/v1/envs/best_of_n/__init__.py,sha256=mubASiwXMNIhnQFDccNAc7yZ0OFsOVK8hH8WIx9b2A4,119
|
|
243
243
|
verifiers/v1/envs/best_of_n/env.py,sha256=KEUJBCVqblnXP_lEwm3mjGdaikBMkecz8UjOFPBhxc0,1987
|
|
244
244
|
verifiers/v1/envs/single_agent/__init__.py,sha256=r0edAc_6gtHBhPzeBGVcdHZZqSdCPZnLMje6eVgyz5U,138
|
|
@@ -246,11 +246,11 @@ verifiers/v1/envs/single_agent/env.py,sha256=lPs_a6VA7KoH1xqA3T8S32Jzb_d4zrx0_54
|
|
|
246
246
|
verifiers/v1/envs/user_sim/__init__.py,sha256=nnT695HdqjAEouYL5wtVu6MhIp2wf5yuK-EYgxOVx0s,118
|
|
247
247
|
verifiers/v1/envs/user_sim/env.py,sha256=9L_KXjzfkTnDeQpn4ftQagZyPkJ3yjcQeZqZaq7kxjE,4567
|
|
248
248
|
verifiers/v1/gepa/__init__.py,sha256=6nmdRE0-34AKioPHBjTxUg5Jo_2z7tMX-OU3zMNpAJI,197
|
|
249
|
-
verifiers/v1/gepa/adapter.py,sha256=
|
|
249
|
+
verifiers/v1/gepa/adapter.py,sha256=YNvHMR2L5Utl-vtPfjZxmDCd2tTcoAPWG6aVGnV1icM,6139
|
|
250
250
|
verifiers/v1/gepa/config.py,sha256=gFn8Re4GoeHJs2PZ-iw4jCEZ72AiM1lNgwaA0uvJlYw,4626
|
|
251
251
|
verifiers/v1/gepa/dataset.py,sha256=N2QYqUljHVuAdCbUuydEIlarvAWa6LFdGKu9qsOvjro,2186
|
|
252
252
|
verifiers/v1/gepa/reflection.py,sha256=ptHhx0lcDLcWhWhXuslh9T8gPVNpnX5XLPtXoneW1yA,1054
|
|
253
|
-
verifiers/v1/gepa/runner.py,sha256=
|
|
253
|
+
verifiers/v1/gepa/runner.py,sha256=6iJj2HFiC-NZbontq7P9lzzyeq6B0sRBz6trhxrkIW0,6075
|
|
254
254
|
verifiers/v1/harnesses/__init__.py,sha256=3fgfAMzFrNgu7RIO_evZPxipPdiskiHun5EKsdS4y6k,1301
|
|
255
255
|
verifiers/v1/harnesses/bash/__init__.py,sha256=IAV4eMMqDHSl-9ANb0Q3kxmBZ22SeHZFBM448X4gQio,140
|
|
256
256
|
verifiers/v1/harnesses/bash/harness.py,sha256=ZtjhsANuK3vXkf9mRCi8-sBMyPebJMBNHa58vTd2Fm8,5284
|
|
@@ -311,7 +311,7 @@ verifiers/v1/tasksets/harbor/__init__.py,sha256=wwVGA8N7E2Q2qA5WGHuLRrn4DgG5oaRH
|
|
|
311
311
|
verifiers/v1/tasksets/harbor/taskset.py,sha256=2Iw1ZaPRhRjdbfClRLd0iqKWABjM7M525zFN4wuaeCk,13867
|
|
312
312
|
verifiers/v1/tasksets/lean/__init__.py,sha256=oyv-GbJQBvCyGwo7Ysxm2NjZW-aX4j1uDoHU0f-E7xQ,767
|
|
313
313
|
verifiers/v1/tasksets/lean/scoring.py,sha256=sfzsT6MUK0zdMgAQ57_P_0CBaPHy3M7go71QMr5hDrs,10599
|
|
314
|
-
verifiers/v1/tasksets/lean/taskset.py,sha256=
|
|
314
|
+
verifiers/v1/tasksets/lean/taskset.py,sha256=Fcn4UgTcdjMYnJ4CThaFZ28Rz_QDx0e21vJdW_vp12g,9019
|
|
315
315
|
verifiers/v1/tasksets/openenv/__init__.py,sha256=G726meYYDplC3QE3AyjdSShq7FUcb4NkVqowuwPPuJk,303
|
|
316
316
|
verifiers/v1/tasksets/openenv/taskset.py,sha256=1Wc9-5eN2HMKAwL34yTNex3zYOvXNXibF5wCROoMbFI,6075
|
|
317
317
|
verifiers/v1/tasksets/textarena/__init__.py,sha256=Os2OlBY_pSH0B1DP32RitumgSLpq2LtcI7VDUHYPzRE,329
|
|
@@ -329,8 +329,8 @@ verifiers/v1/utils/logging.py,sha256=OcMHA6NsYux3oIzjPuI95rDWmFBHNcHDjZeNIhXTX-Y
|
|
|
329
329
|
verifiers/v1/utils/memory.py,sha256=ZkIvGk6uITAH5sKon65LifKPbvZr8mJ__PVc23FZpOQ,1835
|
|
330
330
|
verifiers/v1/utils/sampling.py,sha256=JczGzBn6s3wsIrSY2Hy3hE8m6NreNgsNzhSjDikQqX0,1037
|
|
331
331
|
verifiers/v1/utils/version.py,sha256=-obEo_-l9-D8FLef4hYxncOe-uJpxrM1g2Hig_37Sgs,1607
|
|
332
|
-
verifiers-0.2.2.
|
|
333
|
-
verifiers-0.2.2.
|
|
334
|
-
verifiers-0.2.2.
|
|
335
|
-
verifiers-0.2.2.
|
|
336
|
-
verifiers-0.2.2.
|
|
332
|
+
verifiers-0.2.2.dev50.dist-info/METADATA,sha256=CmQlOqkHtzYaf_70Po3zu37d6_rPDPvoKZUZXjLBsfs,4545
|
|
333
|
+
verifiers-0.2.2.dev50.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
|
|
334
|
+
verifiers-0.2.2.dev50.dist-info/entry_points.txt,sha256=dF82JUYEFslR1AOW8LZfuBWeZeQoyX4wCRrduklg8-I,551
|
|
335
|
+
verifiers-0.2.2.dev50.dist-info/licenses/LICENSE,sha256=v0RrUsdV3IDoZhrRce297IXS3xMHNJ-_LdLpFAUWb9k,1072
|
|
336
|
+
verifiers-0.2.2.dev50.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|