verifiers 0.2.2.dev31__py3-none-any.whl → 0.2.2.dev33__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/__init__.py CHANGED
@@ -37,7 +37,7 @@ from verifiers.v1.errors import (
37
37
  )
38
38
  from verifiers.v1.configs.harness import HarnessConfig
39
39
  from verifiers.v1.harness import Harness
40
- from verifiers.v1.configs.judge import JudgeConfig, JudgeSamplingConfig, Judges
40
+ from verifiers.v1.configs.judge import JudgeConfig, Judges
41
41
  from verifiers.v1.judge import Judge, JudgeResponse, JudgeView
42
42
  from verifiers.v1.judges import (
43
43
  ReferenceJudge,
@@ -267,7 +267,6 @@ __all__ = [
267
267
  "Judge",
268
268
  "JudgeConfig",
269
269
  "Judges",
270
- "JudgeSamplingConfig",
271
270
  "JudgeResponse",
272
271
  "JudgeView",
273
272
  "ReferenceJudge",
@@ -12,10 +12,6 @@ from verifiers.v1.types import ID, SamplingConfig
12
12
  from verifiers.v1.utils.install import env_name
13
13
 
14
14
 
15
- class JudgeSamplingConfig(SamplingConfig):
16
- pass
17
-
18
-
19
15
  class JudgeConfig(BaseClientConfig):
20
16
  id: ID = ""
21
17
  """Plugin id; empty for a judge called directly by task code."""
@@ -23,7 +19,7 @@ class JudgeConfig(BaseClientConfig):
23
19
  """Reward key override for a plugged judge."""
24
20
  weight: float = 1.0
25
21
  model: str = "openai/gpt-5.4-nano"
26
- sampling: JudgeSamplingConfig = JudgeSamplingConfig()
22
+ sampling: SamplingConfig = SamplingConfig()
27
23
  prompt: str | None = None
28
24
  prompt_file: Path | None = None
29
25
  """Prompt file override, mutually exclusive with `prompt`."""
@@ -1,9 +1,9 @@
1
1
  """The OpenAI Responses dialect (codex and friends).
2
2
 
3
3
  Request parsing walks the `input` items, folding each run of assistant-side items (reasoning /
4
- assistant message / function_call) into one typed assistant message; response parsing reads the
5
- `output` items. Relay-only: the eval client forwards the program's bytes to a `/responses`
6
- endpoint and this dialect parses a copy for the trace. Server-side statefulness
4
+ assistant message / function or custom tool call) into one typed assistant message; response
5
+ parsing reads the `output` items. Relay-only: the eval client forwards the program's bytes to a
6
+ `/responses` endpoint and this dialect parses a copy for the trace. Server-side statefulness
7
7
  (`previous_response_id`) is not emulated — the endpoint owns it.
8
8
  """
9
9
 
@@ -97,8 +97,7 @@ def parse_content(content) -> str | list[ContentPart]:
97
97
 
98
98
 
99
99
  def fold_assistant(items: list[dict]) -> AssistantMessage:
100
- """One run of assistant-side items (reasoning / message / function_call) -> one typed
101
- assistant message."""
100
+ """One run of assistant-side items -> one typed assistant message."""
102
101
  content = ""
103
102
  reasoning: list[str] = []
104
103
  calls: list[ToolCall] = []
@@ -106,12 +105,12 @@ def fold_assistant(items: list[dict]) -> AssistantMessage:
106
105
  if item.get("type") == "reasoning":
107
106
  reasoning += [s.get("text", "") for s in item.get("summary") or []]
108
107
  reasoning += [c.get("text", "") for c in item.get("content") or []]
109
- elif item.get("type") == "function_call":
108
+ elif item.get("type") in ("function_call", "custom_tool_call"):
110
109
  calls.append(
111
110
  ToolCall(
112
111
  id=item.get("call_id", ""),
113
112
  name=item.get("name", ""),
114
- arguments=item.get("arguments", ""),
113
+ arguments=item.get("arguments", item.get("input", "")),
115
114
  )
116
115
  )
117
116
  else: # an assistant message item
@@ -151,12 +150,12 @@ def response_from_wire(response: OpenAIResponse) -> Response:
151
150
  elif kind == "reasoning":
152
151
  reasoning += [s.get("text", "") for s in item.get("summary") or []]
153
152
  reasoning += [c.get("text", "") for c in item.get("content") or []]
154
- elif kind == "function_call":
153
+ elif kind in ("function_call", "custom_tool_call"):
155
154
  calls.append(
156
155
  ToolCall(
157
156
  id=item.get("call_id", ""),
158
157
  name=item.get("name", ""),
159
- arguments=item.get("arguments", ""),
158
+ arguments=item.get("arguments", item.get("input", "")),
160
159
  )
161
160
  )
162
161
  tool_calls = calls or None
@@ -279,7 +278,10 @@ class ResponsesDialect(Dialect[dict, OpenAIResponse]):
279
278
  run = []
280
279
  if assistant:
281
280
  run.append(item)
282
- elif item.get("type") == "function_call_output":
281
+ elif item.get("type") in (
282
+ "function_call_output",
283
+ "custom_tool_call_output",
284
+ ):
283
285
  output = item.get("output")
284
286
  content = (
285
287
  parse_content(output)
@@ -87,7 +87,7 @@ class GEPAAdapter:
87
87
 
88
88
  def make_reflective_dataset(
89
89
  self,
90
- candidate: Candidate, # noqa: ARG002 - required by GEPA's adapter protocol
90
+ candidate: Candidate, # Required by GEPA's adapter protocol.
91
91
  eval_batch: EvaluationBatch[Episode, Episode],
92
92
  components_to_update: list[str],
93
93
  ) -> Mapping[str, Sequence[Mapping[str, Any]]]:
verifiers/v1/utils/git.py CHANGED
@@ -97,7 +97,7 @@ async def capture_patch(
97
97
  )
98
98
  return
99
99
  raw = await runtime.read(capped)
100
- except Exception as exc: # noqa: BLE001 - capture must never fail the rollout.
100
+ except Exception as exc: # Capture must never fail the rollout.
101
101
  trace.info["patch_error"] = f"{type(exc).__name__}: {exc}"
102
102
  return
103
103
  finally:
@@ -105,7 +105,7 @@ async def capture_patch(
105
105
  # on shared-filesystem runtimes; removal is best-effort by design.
106
106
  try:
107
107
  await runtime.run(["rm", "-f", full, capped], env or {})
108
- except Exception: # noqa: BLE001,S110 - cleanup must never fail the rollout.
108
+ except Exception: # Cleanup must never fail the rollout.
109
109
  pass
110
110
  if len(raw) > PATCH_CAP_BYTES:
111
111
  raw = raw[:PATCH_CAP_BYTES]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: verifiers
3
- Version: 0.2.2.dev31
3
+ Version: 0.2.2.dev33
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
@@ -167,7 +167,7 @@ verifiers/utils/threaded_sandbox_client.py,sha256=Pbr8MA4FDPEitL6z88S8T1qLJOmtXN
167
167
  verifiers/utils/tool_utils.py,sha256=gInWZODWQUZN4TyEMuuITyOUm9qlHJxtcvr1zZl_zJs,1020
168
168
  verifiers/utils/usage_utils.py,sha256=GPLC0xGY_Obrr8X7huWY-2iODZ7tgX-MtO8WSDN4rXI,3904
169
169
  verifiers/utils/version_utils.py,sha256=am3hZLnlaUWTFdllGZR1VMN91hEhiiE8FDmPf1cOG1k,2642
170
- verifiers/v1/__init__.py,sha256=z0yUgI1iVf8znsAtBG2fpRKuwipaQ5yS4PvGhWJbKtE,6859
170
+ verifiers/v1/__init__.py,sha256=GiNNUcxzYkjZMnTXl5mKAlOSrxiaUkD1A-3U9rfiDso,6811
171
171
  verifiers/v1/agent.py,sha256=FP38GsZXuEJe3tJ-U2THpwBf9NWQeo847hWRZoeggNw,31956
172
172
  verifiers/v1/decorators.py,sha256=XRMkUQSyvXCYP5fOwzBYV5qEOlxLg6rzYhnhrHHHTIQ,3838
173
173
  verifiers/v1/env.py,sha256=w6sHWdWijLRZzhwVyJjadnGtziNqJAPCeMUoNdzHoLg,17712
@@ -217,7 +217,7 @@ 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=2mEU1n2xG-v5PNdB2EJioAYP6Witnlny9kYi0jwKFQk,7286
219
219
  verifiers/v1/configs/harness.py,sha256=CG8hGbHl3rr6yawH3YYMAFl01M7Piiwf4w5oiw2Vagg,1564
220
- verifiers/v1/configs/judge.py,sha256=Y70YcLXX_m1NMYeO4Wl63t57NkHpK0XRjGYay2NonQ8,2575
220
+ verifiers/v1/configs/judge.py,sha256=ZJlmWogHY8oDjvWvtNuVKvkzuheWalIjl1njJ4dE0Mk,2511
221
221
  verifiers/v1/configs/retries.py,sha256=1PY0hhPV2Q-KgBKKSUNBFccJzc_t1yG3P_44p8Q_1a4,771
222
222
  verifiers/v1/configs/task.py,sha256=L-j_CYIDP2JAF7CDA2FOZz8aQK2h7c0f1qnmJshWzu4,1069
223
223
  verifiers/v1/configs/taskset.py,sha256=IdZwsarn0_WvYdR_Kr4QYYdqbaoGYkbYyO5VA-RPYPc,657
@@ -233,7 +233,7 @@ verifiers/v1/dialects/__init__.py,sha256=PR3CJFI5siVJBXcF7H2Wi_UCygotHhL0Oj6DIOF
233
233
  verifiers/v1/dialects/anthropic.py,sha256=nj9J7OOhexmPHa-sWiNP2xlI9_bGhvwM5VWzdh19pBc,13526
234
234
  verifiers/v1/dialects/base.py,sha256=YZQDnasQseDXK-GHLfJLZgyHIIygS80YhD_sTjmUbfA,8126
235
235
  verifiers/v1/dialects/chat.py,sha256=DFvjmIW86jZUMWuz-hOqzxC6tiiFibiAzNEJ3JkpvjU,13998
236
- verifiers/v1/dialects/responses.py,sha256=vVgeT7-aWjtfED2IKlDwTATKn_AQZruHNL6mkFTTZTU,13548
236
+ verifiers/v1/dialects/responses.py,sha256=ismnxUikPcPUIm80FUTPBbj-Cn1e0yGAsISMEseAWRc,13679
237
237
  verifiers/v1/envs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
238
238
  verifiers/v1/envs/agentic_judge/__init__.py,sha256=X7vQbbbfmJ_j-mJEfBkuB4a8QUPkUYkpG7yp0xYOEmg,279
239
239
  verifiers/v1/envs/agentic_judge/env.py,sha256=_zEKG9i3LsOVIQWULXYAHpbmrQNPWBRayJx2yjvtPbQ,15307
@@ -244,7 +244,7 @@ verifiers/v1/envs/single_agent/env.py,sha256=RuWYgdT2vVu0PBt1esmnlbCcYwUD6ZbmqT-
244
244
  verifiers/v1/envs/user_sim/__init__.py,sha256=nnT695HdqjAEouYL5wtVu6MhIp2wf5yuK-EYgxOVx0s,118
245
245
  verifiers/v1/envs/user_sim/env.py,sha256=u376-UJEVdzgcit7FXjz5KEwlPxSU3qqoIrxs6foi2w,4567
246
246
  verifiers/v1/gepa/__init__.py,sha256=6nmdRE0-34AKioPHBjTxUg5Jo_2z7tMX-OU3zMNpAJI,197
247
- verifiers/v1/gepa/adapter.py,sha256=yZBF_PBctEiBd0hgSt_jeL0biFY9kLl986mdtlet2s4,6199
247
+ verifiers/v1/gepa/adapter.py,sha256=FivQBeUMvoCGaVqZUoLpj8S7GKPGyTuxKXZclnWHOKk,6185
248
248
  verifiers/v1/gepa/config.py,sha256=MVaJfPMehoPq5kF1vsm3lEJrxTiryesxHrQDcxE6TAE,4656
249
249
  verifiers/v1/gepa/dataset.py,sha256=N2QYqUljHVuAdCbUuydEIlarvAWa6LFdGKu9qsOvjro,2186
250
250
  verifiers/v1/gepa/reflection.py,sha256=T86Ar1BcSk012wfB1TioIP72wzBEEy8ZrwBy3rn2Hps,1045
@@ -319,7 +319,7 @@ verifiers/v1/utils/aio.py,sha256=ZKTHeURNbWhTpHMyYuqMLsdPWVHyn5anfG1IJs5y-Zg,148
319
319
  verifiers/v1/utils/compile.py,sha256=hSCCi06qIi4LH1wsAOgYVm0vma1tYZkCG-wLKq7PZxI,5724
320
320
  verifiers/v1/utils/format.py,sha256=NfQo9M5KMzWCZpQaet5YtsJx56vCKAZPfbjZZJLJhhM,2187
321
321
  verifiers/v1/utils/generic.py,sha256=xwu8xNGdVOhM2K87C5cqhmnRf6apSPDASA15M0S2MaY,2054
322
- verifiers/v1/utils/git.py,sha256=5VX5B3011yhclPex8Mc79ZmZ5ZT4hGfKaXoqL12QMdc,4872
322
+ verifiers/v1/utils/git.py,sha256=NaVQ3_MG0x3nTb0MH2B-9O5xmnkPsaF5UGHRb4RIKvA,4837
323
323
  verifiers/v1/utils/image.py,sha256=OFw_wdwVtbdwa8uJ3X3vYfhpUAi0CTH5HMBupjVsRRQ,282
324
324
  verifiers/v1/utils/install.py,sha256=fWNsyKrw_PyhC0Qhqv5Ri0adFm5Ddx4AVy_hbsra1GU,1390
325
325
  verifiers/v1/utils/interrupt.py,sha256=F-KKhc5ndPJJfhd3SuMqyqhXhA32FhCRy5KWFJpEoM4,1179
@@ -327,8 +327,8 @@ verifiers/v1/utils/logging.py,sha256=OcMHA6NsYux3oIzjPuI95rDWmFBHNcHDjZeNIhXTX-Y
327
327
  verifiers/v1/utils/memory.py,sha256=ZkIvGk6uITAH5sKon65LifKPbvZr8mJ__PVc23FZpOQ,1835
328
328
  verifiers/v1/utils/sampling.py,sha256=JczGzBn6s3wsIrSY2Hy3hE8m6NreNgsNzhSjDikQqX0,1037
329
329
  verifiers/v1/utils/version.py,sha256=75ZtI2NHBmlb52KpcKLUpiSXp8q4bASr7uKeXoCKlT8,1582
330
- verifiers-0.2.2.dev31.dist-info/METADATA,sha256=Iny-bPcxK5EziGzvEeSvrnCFrIuDwh8rTDoaawejye0,4540
331
- verifiers-0.2.2.dev31.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
332
- verifiers-0.2.2.dev31.dist-info/entry_points.txt,sha256=dF82JUYEFslR1AOW8LZfuBWeZeQoyX4wCRrduklg8-I,551
333
- verifiers-0.2.2.dev31.dist-info/licenses/LICENSE,sha256=v0RrUsdV3IDoZhrRce297IXS3xMHNJ-_LdLpFAUWb9k,1072
334
- verifiers-0.2.2.dev31.dist-info/RECORD,,
330
+ verifiers-0.2.2.dev33.dist-info/METADATA,sha256=IWBt9E4wd0eetYz62qsRhe4QkmKiJz0uyFZmSvQRMjI,4540
331
+ verifiers-0.2.2.dev33.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
332
+ verifiers-0.2.2.dev33.dist-info/entry_points.txt,sha256=dF82JUYEFslR1AOW8LZfuBWeZeQoyX4wCRrduklg8-I,551
333
+ verifiers-0.2.2.dev33.dist-info/licenses/LICENSE,sha256=v0RrUsdV3IDoZhrRce297IXS3xMHNJ-_LdLpFAUWb9k,1072
334
+ verifiers-0.2.2.dev33.dist-info/RECORD,,