verifiers 0.2.2.dev33__py3-none-any.whl → 0.2.2.dev35__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/__init__.py +2 -0
- verifiers/cli/commands/build.py +2 -0
- verifiers/cli/commands/eval.py +2 -0
- verifiers/cli/commands/gepa.py +2 -0
- verifiers/cli/commands/init.py +2 -0
- verifiers/cli/commands/install.py +2 -0
- verifiers/cli/plugins/prime.py +2 -0
- verifiers/clients/__init__.py +2 -0
- verifiers/clients/anthropic_messages_client.py +2 -0
- verifiers/clients/client.py +2 -0
- verifiers/clients/nemorl_chat_completions_client.py +3 -3
- verifiers/clients/openai_chat_completions_client.py +3 -1
- verifiers/clients/openai_chat_completions_token_client.py +4 -2
- verifiers/clients/openai_completions_client.py +2 -0
- verifiers/clients/openai_responses_client.py +2 -0
- verifiers/clients/renderer_client.py +2 -0
- verifiers/decorators.py +2 -0
- verifiers/envs/env_group.py +8 -6
- verifiers/envs/environment.py +5 -3
- verifiers/envs/experimental/__init__.py +2 -0
- verifiers/envs/experimental/cli_agent_env.py +2 -0
- verifiers/envs/experimental/composable/README.md +10 -8
- verifiers/envs/experimental/composable/__init__.py +2 -0
- verifiers/envs/experimental/composable/_filter.py +2 -0
- verifiers/envs/experimental/composable/composable_env.py +2 -0
- verifiers/envs/experimental/composable/harness.py +2 -0
- verifiers/envs/experimental/composable/harnesses/__init__.py +2 -0
- verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +2 -0
- verifiers/envs/experimental/composable/harnesses/rlm.py +2 -0
- verifiers/envs/experimental/composable/sandbox_debug_env.py +2 -0
- verifiers/envs/experimental/composable/swe_debug_env.py +2 -0
- verifiers/envs/experimental/composable/task.py +5 -3
- verifiers/envs/experimental/composable/tasksets/__init__.py +2 -0
- verifiers/envs/experimental/composable/tasksets/cp/__init__.py +2 -0
- verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +2 -0
- verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +3 -1
- verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +2 -0
- verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +2 -0
- verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +2 -0
- verifiers/envs/experimental/composable/tasksets/math/math_task.py +2 -0
- verifiers/envs/experimental/composable/tasksets/swe/__init__.py +2 -0
- verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +2 -0
- verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +2 -0
- verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +2 -0
- verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +2 -0
- verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +2 -0
- verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +2 -0
- verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +2 -0
- verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +2 -0
- verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +2 -0
- verifiers/envs/experimental/gym_env.py +2 -0
- verifiers/envs/experimental/harbor_env/__init__.py +2 -0
- verifiers/envs/experimental/harbor_env/env.py +2 -0
- verifiers/envs/experimental/harbor_env/mcp.py +6 -6
- verifiers/envs/experimental/mcp_env.py +2 -0
- verifiers/envs/experimental/opencode_env.py +2 -0
- verifiers/envs/experimental/opencode_rlm_env.py +2 -0
- verifiers/envs/experimental/sandbox_mixin.py +2 -0
- verifiers/envs/experimental/utils/file_locks.py +2 -0
- verifiers/envs/experimental/utils/git_checkout_cache.py +2 -0
- verifiers/envs/integrations/README.md +12 -3
- verifiers/envs/integrations/browser_env/modes/__init__.py +2 -0
- verifiers/envs/integrations/browser_env/modes/base.py +2 -0
- verifiers/envs/integrations/browser_env/modes/cua_mode.py +14 -12
- verifiers/envs/integrations/browser_env/modes/dom_mode.py +2 -0
- verifiers/envs/integrations/openenv_env.py +3 -1
- verifiers/envs/integrations/reasoninggym_env.py +2 -0
- verifiers/envs/integrations/textarena_env.py +3 -1
- verifiers/envs/multiturn_env.py +2 -0
- verifiers/envs/sandbox_env.py +2 -0
- verifiers/envs/stateful_tool_env.py +2 -0
- verifiers/envs/tool_env.py +3 -1
- verifiers/errors.py +3 -0
- verifiers/gepa/__init__.py +2 -0
- verifiers/gepa/adapter.py +4 -2
- verifiers/gepa/gepa_utils.py +2 -0
- verifiers/parsers/maybe_think_parser.py +2 -0
- verifiers/parsers/parser.py +2 -0
- verifiers/parsers/think_parser.py +2 -0
- verifiers/parsers/xml_parser.py +2 -0
- verifiers/rubrics/experimental/hybrid_math_rubric.py +3 -1
- verifiers/rubrics/judge_rubric.py +2 -0
- verifiers/rubrics/math_rubric.py +2 -0
- verifiers/rubrics/rubric.py +10 -8
- verifiers/scripts/build.py +2 -0
- verifiers/scripts/eval.py +2 -0
- verifiers/scripts/gepa.py +3 -1
- verifiers/scripts/install.py +2 -0
- verifiers/scripts/setup.py +2 -0
- verifiers/serve/__init__.py +2 -0
- verifiers/serve/client/env_client.py +2 -0
- verifiers/serve/client/zmq_env_client.py +2 -0
- verifiers/serve/server/env_router.py +2 -0
- verifiers/serve/server/env_worker.py +2 -0
- verifiers/serve/types.py +2 -0
- verifiers/types.py +4 -2
- verifiers/utils/async_utils.py +4 -2
- verifiers/utils/client_utils.py +2 -0
- verifiers/utils/data_utils.py +2 -0
- verifiers/utils/display_utils.py +2 -0
- verifiers/utils/env_config_utils.py +2 -0
- verifiers/utils/env_utils.py +2 -0
- verifiers/utils/error_utils.py +2 -0
- verifiers/utils/eval_display.py +2 -0
- verifiers/utils/eval_utils.py +6 -4
- verifiers/utils/heartbeat.py +2 -0
- verifiers/utils/install_utils.py +2 -0
- verifiers/utils/interception_utils.py +3 -1
- verifiers/utils/logging_utils.py +2 -0
- verifiers/utils/message_utils.py +7 -5
- verifiers/utils/metric_utils.py +2 -0
- verifiers/utils/process_utils.py +2 -0
- verifiers/utils/save_utils.py +4 -2
- verifiers/utils/thread_utils.py +2 -0
- verifiers/utils/threaded_sandbox_client.py +2 -0
- verifiers/utils/usage_utils.py +2 -0
- verifiers/utils/version_utils.py +2 -0
- verifiers/v1/__init__.py +45 -31
- verifiers/v1/agent.py +26 -31
- verifiers/v1/cli/dashboard/eval.py +3 -3
- verifiers/v1/cli/debug.py +3 -3
- verifiers/v1/cli/eval/main.py +4 -4
- verifiers/v1/cli/eval/resume.py +2 -1
- verifiers/v1/cli/eval/runner.py +4 -4
- verifiers/v1/cli/init.py +5 -3
- verifiers/v1/cli/replay.py +1 -1
- verifiers/v1/cli/serve.py +2 -2
- verifiers/v1/cli/validate.py +3 -3
- verifiers/v1/clients/__init__.py +4 -4
- verifiers/v1/clients/eval.py +1 -1
- verifiers/v1/clients/train.py +1 -2
- verifiers/v1/configs/cli/__init__.py +1 -1
- verifiers/v1/configs/cli/debug.py +1 -1
- verifiers/v1/configs/cli/env.py +3 -3
- verifiers/v1/configs/cli/validate.py +1 -1
- verifiers/v1/configs/retries.py +2 -2
- verifiers/v1/configs/task.py +2 -2
- verifiers/v1/decorators.py +2 -1
- verifiers/v1/dialects/__init__.py +1 -1
- verifiers/v1/dialects/chat.py +2 -1
- verifiers/v1/env.py +6 -8
- verifiers/v1/envs/agentic_judge/env.py +5 -5
- verifiers/v1/envs/single_agent/env.py +1 -1
- verifiers/v1/episode.py +1 -1
- verifiers/v1/gepa/adapter.py +3 -3
- verifiers/v1/gepa/reflection.py +2 -2
- verifiers/v1/gepa/runner.py +15 -15
- verifiers/v1/harness.py +2 -3
- verifiers/v1/harnesses/__init__.py +2 -2
- verifiers/v1/harnesses/bash/harness.py +3 -3
- verifiers/v1/harnesses/bash/program.py +9 -5
- verifiers/v1/harnesses/codex/harness.py +2 -2
- verifiers/v1/harnesses/mini_swe_agent/harness.py +1 -1
- verifiers/v1/harnesses/null/harness.py +3 -3
- verifiers/v1/harnesses/pi/harness.py +6 -4
- verifiers/v1/harnesses/pool/harness.py +7 -5
- verifiers/v1/harnesses/rlm/harness.py +5 -5
- verifiers/v1/harnesses/terminus_2/harness.py +1 -1
- verifiers/v1/harnesses/terminus_2/program.py +3 -1
- verifiers/v1/interception/__init__.py +8 -8
- verifiers/v1/interception/server.py +8 -8
- verifiers/v1/interception/tunnel/__init__.py +4 -4
- verifiers/v1/judge.py +8 -10
- verifiers/v1/judges/__init__.py +1 -1
- verifiers/v1/judges/rubric.py +9 -9
- verifiers/v1/legacy.py +2 -3
- verifiers/v1/loaders.py +8 -9
- verifiers/v1/mcp/__init__.py +3 -3
- verifiers/v1/mcp/server.py +3 -2
- verifiers/v1/push.py +1 -1
- verifiers/v1/retries.py +2 -1
- verifiers/v1/rollout.py +9 -10
- verifiers/v1/runtimes/__init__.py +13 -13
- verifiers/v1/runtimes/base.py +3 -2
- verifiers/v1/runtimes/docker/__init__.py +1 -0
- verifiers/v1/runtimes/docker/egress.py +2 -2
- verifiers/v1/runtimes/limiters.py +2 -1
- verifiers/v1/runtimes/modal.py +1 -1
- verifiers/v1/runtimes/prime.py +3 -3
- verifiers/v1/runtimes/subprocess.py +3 -3
- verifiers/v1/scoring.py +1 -1
- verifiers/v1/serve/__init__.py +5 -5
- verifiers/v1/serve/client.py +3 -3
- verifiers/v1/serve/types.py +1 -1
- verifiers/v1/task.py +4 -4
- verifiers/v1/tasksets/harbor/taskset.py +8 -7
- verifiers/v1/tasksets/lean/__init__.py +2 -2
- verifiers/v1/tasksets/lean/taskset.py +3 -3
- verifiers/v1/tasksets/openenv/taskset.py +3 -3
- verifiers/v1/trace.py +2 -3
- verifiers/v1/utils/aio.py +1 -1
- verifiers/v1/utils/compile.py +1 -1
- verifiers/v1/utils/git.py +2 -2
- verifiers/v1/utils/version.py +1 -0
- {verifiers-0.2.2.dev33.dist-info → verifiers-0.2.2.dev35.dist-info}/METADATA +1 -1
- verifiers-0.2.2.dev35.dist-info/RECORD +334 -0
- verifiers-0.2.2.dev33.dist-info/RECORD +0 -334
- {verifiers-0.2.2.dev33.dist-info → verifiers-0.2.2.dev35.dist-info}/WHEEL +0 -0
- {verifiers-0.2.2.dev33.dist-info → verifiers-0.2.2.dev35.dist-info}/entry_points.txt +0 -0
- {verifiers-0.2.2.dev33.dist-info → verifiers-0.2.2.dev35.dist-info}/licenses/LICENSE +0 -0
verifiers/__init__.py
CHANGED
verifiers/cli/commands/build.py
CHANGED
verifiers/cli/commands/eval.py
CHANGED
verifiers/cli/commands/gepa.py
CHANGED
verifiers/cli/commands/init.py
CHANGED
verifiers/cli/plugins/prime.py
CHANGED
verifiers/clients/__init__.py
CHANGED
verifiers/clients/client.py
CHANGED
|
@@ -108,8 +108,8 @@ def _attach_trajectory_tokens_to_prompt(
|
|
|
108
108
|
continue
|
|
109
109
|
msg = prompt[i]
|
|
110
110
|
if (prompt_ids := tokens.get("prompt_ids")) is not None:
|
|
111
|
-
msg.prompt_token_ids = list(prompt_ids)
|
|
111
|
+
msg.prompt_token_ids = list(prompt_ids) # ty:ignore[invalid-assignment]
|
|
112
112
|
if (completion_ids := tokens.get("completion_ids")) is not None:
|
|
113
|
-
msg.generation_token_ids = list(completion_ids)
|
|
113
|
+
msg.generation_token_ids = list(completion_ids) # ty:ignore[invalid-assignment]
|
|
114
114
|
if (completion_logprobs := tokens.get("completion_logprobs")) is not None:
|
|
115
|
-
msg.generation_log_probs = list(completion_logprobs)
|
|
115
|
+
msg.generation_log_probs = list(completion_logprobs) # ty:ignore[invalid-assignment]
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# ruff: noqa
|
|
2
|
+
|
|
1
3
|
import functools
|
|
2
4
|
from collections.abc import Iterable, Mapping
|
|
3
5
|
from typing import Any, TypeAlias, cast
|
|
@@ -231,7 +233,7 @@ class OpenAIChatCompletionsClient(
|
|
|
231
233
|
role="assistant",
|
|
232
234
|
content=cast(Any, normalize_content(message.content)),
|
|
233
235
|
tool_calls=cast(Any, oai_tool_calls),
|
|
234
|
-
reasoning_content=message.reasoning_content, # type: ignore[arg-type]
|
|
236
|
+
reasoning_content=message.reasoning_content, # type: ignore[arg-type] # ty:ignore[invalid-key]
|
|
235
237
|
)
|
|
236
238
|
elif isinstance(message, ToolMessage):
|
|
237
239
|
return ChatCompletionToolMessageParam(
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# ruff: noqa
|
|
2
|
+
|
|
1
3
|
from collections.abc import Mapping
|
|
2
4
|
from typing import Any, Optional, cast
|
|
3
5
|
|
|
@@ -288,7 +290,7 @@ class OpenAIChatCompletionsTokenClient(OpenAIChatCompletionsClient):
|
|
|
288
290
|
if tool_call_ids:
|
|
289
291
|
dummy_assistant: OpenAIChatMessage = ChatCompletionAssistantMessageParam(
|
|
290
292
|
role="assistant",
|
|
291
|
-
reasoning_content="", # type: ignore[typeddict-unknown-key]
|
|
293
|
+
reasoning_content="", # type: ignore[typeddict-unknown-key] # ty:ignore[invalid-key]
|
|
292
294
|
tool_calls=[
|
|
293
295
|
ChatCompletionMessageFunctionToolCallParam(
|
|
294
296
|
id=tc_id,
|
|
@@ -301,7 +303,7 @@ class OpenAIChatCompletionsTokenClient(OpenAIChatCompletionsClient):
|
|
|
301
303
|
else:
|
|
302
304
|
dummy_assistant: OpenAIChatMessage = ChatCompletionAssistantMessageParam(
|
|
303
305
|
role="assistant",
|
|
304
|
-
reasoning_content="", # type: ignore[typeddict-unknown-key]
|
|
306
|
+
reasoning_content="", # type: ignore[typeddict-unknown-key] # ty:ignore[invalid-key]
|
|
305
307
|
content="x",
|
|
306
308
|
)
|
|
307
309
|
|
verifiers/decorators.py
CHANGED
verifiers/envs/env_group.py
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# ruff: noqa
|
|
2
|
+
|
|
1
3
|
import json
|
|
2
4
|
from collections.abc import Mapping
|
|
3
5
|
from typing import TYPE_CHECKING, Any, cast, final
|
|
@@ -292,7 +294,7 @@ class EnvGroup(vf.Environment):
|
|
|
292
294
|
return dataset
|
|
293
295
|
|
|
294
296
|
@final
|
|
295
|
-
async def run_rollout( # type: ignore[override]
|
|
297
|
+
async def run_rollout( # type: ignore[override] # ty:ignore[override-of-final-method]
|
|
296
298
|
self,
|
|
297
299
|
input: RolloutInput,
|
|
298
300
|
client: Client | ClientConfig,
|
|
@@ -328,10 +330,10 @@ class EnvGroup(vf.Environment):
|
|
|
328
330
|
state_columns,
|
|
329
331
|
env.env_client,
|
|
330
332
|
)
|
|
331
|
-
return _set_info_route(output, route) # type: ignore[return-value]
|
|
333
|
+
return _set_info_route(output, route) # type: ignore[return-value] # ty:ignore[invalid-return-type]
|
|
332
334
|
|
|
333
335
|
@final
|
|
334
|
-
async def run_group( # type: ignore[override]
|
|
336
|
+
async def run_group( # type: ignore[override] # ty:ignore[override-of-final-method]
|
|
335
337
|
self,
|
|
336
338
|
group_inputs: list[RolloutInput],
|
|
337
339
|
client: Client | ClientConfig,
|
|
@@ -340,7 +342,7 @@ class EnvGroup(vf.Environment):
|
|
|
340
342
|
max_retries: int = 0,
|
|
341
343
|
state_columns: list[str] | None = None,
|
|
342
344
|
env_client: EnvClient | None = None,
|
|
343
|
-
) -> list[vf.RolloutOutput]:
|
|
345
|
+
) -> list[vf.RolloutOutput]: # ty:ignore[invalid-method-override]
|
|
344
346
|
target_env_client = env_client or self.env_client
|
|
345
347
|
if target_env_client is not None:
|
|
346
348
|
if not isinstance(client, ClientConfig):
|
|
@@ -381,7 +383,7 @@ class EnvGroup(vf.Environment):
|
|
|
381
383
|
state_columns,
|
|
382
384
|
env.env_client,
|
|
383
385
|
)
|
|
384
|
-
return [_set_info_route(output, route) for output in outputs] # type: ignore[return-value]
|
|
386
|
+
return [_set_info_route(output, route) for output in outputs] # type: ignore[return-value] # ty:ignore[invalid-return-type]
|
|
385
387
|
|
|
386
388
|
@final
|
|
387
389
|
async def rollout(
|
|
@@ -415,7 +417,7 @@ class EnvGroup(vf.Environment):
|
|
|
415
417
|
child_input["info"] = info
|
|
416
418
|
else:
|
|
417
419
|
child_input.pop("info", None)
|
|
418
|
-
return env_name, child_input, route # type: ignore[return-value]
|
|
420
|
+
return env_name, child_input, route # type: ignore[return-value] # ty:ignore[invalid-return-type]
|
|
419
421
|
|
|
420
422
|
def _input_env_route(self, input: RolloutInput) -> tuple[str, ...]:
|
|
421
423
|
info = _info_dict(input.get("info"))
|
verifiers/envs/environment.py
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# ruff: noqa
|
|
2
|
+
|
|
1
3
|
import asyncio
|
|
2
4
|
import atexit
|
|
3
5
|
import json
|
|
@@ -160,7 +162,7 @@ class Environment(ABC):
|
|
|
160
162
|
|
|
161
163
|
if dataset is not None:
|
|
162
164
|
if callable(dataset):
|
|
163
|
-
self.dataset_source: DatasetBuilder | None = cast(
|
|
165
|
+
self.dataset_source: DatasetBuilder | None = cast( # ty:ignore[unsupported-operator]
|
|
164
166
|
DatasetBuilder, dataset
|
|
165
167
|
)
|
|
166
168
|
else:
|
|
@@ -171,7 +173,7 @@ class Environment(ABC):
|
|
|
171
173
|
|
|
172
174
|
if eval_dataset is not None:
|
|
173
175
|
if callable(eval_dataset):
|
|
174
|
-
self.eval_dataset_source: DatasetBuilder | None = cast(
|
|
176
|
+
self.eval_dataset_source: DatasetBuilder | None = cast( # ty:ignore[unsupported-operator]
|
|
175
177
|
DatasetBuilder, eval_dataset
|
|
176
178
|
)
|
|
177
179
|
else:
|
|
@@ -292,7 +294,7 @@ class Environment(ABC):
|
|
|
292
294
|
if few_shot:
|
|
293
295
|
messages.extend(few_shot)
|
|
294
296
|
messages.append({"role": "user", "content": prompt_str})
|
|
295
|
-
return messages
|
|
297
|
+
return messages # ty:ignore[invalid-return-type]
|
|
296
298
|
|
|
297
299
|
if answer_key == "answer":
|
|
298
300
|
dataset = dataset.map(
|
|
@@ -30,13 +30,13 @@ from verifiers.envs.experimental.composable.harnesses.opencode import opencode_h
|
|
|
30
30
|
from verifiers.envs.experimental.composable import ComposableEnv
|
|
31
31
|
|
|
32
32
|
# Create a taskset
|
|
33
|
-
taskset = R2EGymTaskSet()
|
|
33
|
+
taskset = R2EGymTaskSet() # 4578 SWE instances
|
|
34
34
|
|
|
35
35
|
# Explore instances
|
|
36
|
-
task = taskset[0]
|
|
37
|
-
task.prompt
|
|
38
|
-
task.sandbox_spec
|
|
39
|
-
task.sandbox_spec.image
|
|
36
|
+
task = taskset[0] # one Task
|
|
37
|
+
task.prompt # the problem statement
|
|
38
|
+
task.sandbox_spec # SandboxSpec(image=..., cpu=4, ...)
|
|
39
|
+
task.sandbox_spec.image # per-instance docker image
|
|
40
40
|
|
|
41
41
|
# Slice and filter
|
|
42
42
|
small = taskset.take(100)
|
|
@@ -46,9 +46,9 @@ filtered = taskset.filter(lambda ex: ...)
|
|
|
46
46
|
results = await taskset.validate(
|
|
47
47
|
concurrency=50,
|
|
48
48
|
out_path="outputs/validate.jsonl",
|
|
49
|
-
max_retries=2,
|
|
49
|
+
max_retries=2, # retry on vf.InfraError
|
|
50
50
|
sandbox_client_max_workers=100, # optional sandbox client worker cap override
|
|
51
|
-
resume=True,
|
|
51
|
+
resume=True, # skip indices already in out_path
|
|
52
52
|
)
|
|
53
53
|
|
|
54
54
|
# Run with an agent
|
|
@@ -135,7 +135,9 @@ class MySWERubric(vf.Rubric):
|
|
|
135
135
|
sandbox_client = state["sandbox_client"]
|
|
136
136
|
sandbox_id = state["sandbox_id"]
|
|
137
137
|
# Run tests in the sandbox
|
|
138
|
-
test_output = await self.taskset._run_tests(
|
|
138
|
+
test_output = await self.taskset._run_tests(
|
|
139
|
+
sandbox_client, sandbox_id, state, ...
|
|
140
|
+
)
|
|
139
141
|
return float(self.taskset._calculate_reward(test_output, info))
|
|
140
142
|
|
|
141
143
|
@vf.cleanup
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# ruff: noqa
|
|
2
|
+
|
|
1
3
|
"""Task, TaskSet, SandboxTaskSet, and SandboxSpec — WHAT to solve.
|
|
2
4
|
|
|
3
5
|
A **Task** is a single, fully-bound problem instance.
|
|
@@ -367,7 +369,7 @@ class TaskSet:
|
|
|
367
369
|
try:
|
|
368
370
|
from tqdm.auto import tqdm
|
|
369
371
|
except ImportError: # pragma: no cover
|
|
370
|
-
tqdm = None # type: ignore[assignment]
|
|
372
|
+
tqdm = None # type: ignore[assignment] # ty:ignore[invalid-assignment]
|
|
371
373
|
|
|
372
374
|
import verifiers as vf
|
|
373
375
|
|
|
@@ -519,7 +521,7 @@ class TaskSet:
|
|
|
519
521
|
state: State = { # type: ignore[assignment]
|
|
520
522
|
"info": info,
|
|
521
523
|
"answer": row.get("answer", ""),
|
|
522
|
-
}
|
|
524
|
+
} # ty:ignore[invalid-assignment]
|
|
523
525
|
try:
|
|
524
526
|
valid = await self.validate_instance(state)
|
|
525
527
|
return valid, None, state
|
|
@@ -541,7 +543,7 @@ class TaskSet:
|
|
|
541
543
|
state: State = { # type: ignore[assignment]
|
|
542
544
|
"info": info,
|
|
543
545
|
"answer": row.get("answer", ""),
|
|
544
|
-
}
|
|
546
|
+
} # ty:ignore[invalid-assignment]
|
|
545
547
|
spec = self.get_sandbox_spec(info)
|
|
546
548
|
# validate() runs without a SandboxMixin, so resolve
|
|
547
549
|
# spec.timeout_minutes=None (its "auto-derive at rollout
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# ruff: noqa
|
|
2
|
+
|
|
1
3
|
# modifed from https://github.com/hendrycks/apps/blob/main/eval/testing_util.py
|
|
2
4
|
# https://github.com/NovaSky-AI/SkyThought/blob/main/skythought/skythought_evals/tasks/taco/taco_util.py
|
|
3
5
|
import asyncio
|
|
@@ -317,7 +319,7 @@ async def run_func_call(
|
|
|
317
319
|
)
|
|
318
320
|
try:
|
|
319
321
|
if isinstance(exec_outputs[0], tuple):
|
|
320
|
-
exec_outputs = [list(x) for x in exec_outputs]
|
|
322
|
+
exec_outputs = [list(x) for x in exec_outputs] # ty:ignore[invalid-argument-type]
|
|
321
323
|
tmp_result = tmp_result or (
|
|
322
324
|
exec_outputs == test_case_outputs_parsed[0]
|
|
323
325
|
)
|
|
@@ -180,7 +180,7 @@ class HarborMCPMixin:
|
|
|
180
180
|
for name in list(jobs):
|
|
181
181
|
try:
|
|
182
182
|
pid_file = shlex.quote(self._mcp_pid_file(name))
|
|
183
|
-
await self.sandbox_client.execute_command( # type: ignore[attr-defined]
|
|
183
|
+
await self.sandbox_client.execute_command( # type: ignore[attr-defined] # ty:ignore[unresolved-attribute]
|
|
184
184
|
sandbox_id,
|
|
185
185
|
f'kill -9 -"$(cat {pid_file} 2>/dev/null)" 2>/dev/null; rm -f {pid_file}',
|
|
186
186
|
working_dir=None,
|
|
@@ -203,7 +203,7 @@ class HarborMCPMixin:
|
|
|
203
203
|
f"MCP server {server.name!r} has no port in its URL {server.url!r}"
|
|
204
204
|
)
|
|
205
205
|
|
|
206
|
-
job = await self.sandbox_client.start_background_job( # type: ignore[attr-defined]
|
|
206
|
+
job = await self.sandbox_client.start_background_job( # type: ignore[attr-defined] # ty:ignore[unresolved-attribute]
|
|
207
207
|
sandbox_id=sandbox_id,
|
|
208
208
|
command=(
|
|
209
209
|
f"setsid sh -c {shlex.quote(command)} & "
|
|
@@ -239,7 +239,7 @@ class HarborMCPMixin:
|
|
|
239
239
|
consecutive_failures = 0
|
|
240
240
|
|
|
241
241
|
while True:
|
|
242
|
-
status = await self.sandbox_client.get_background_job( # type: ignore[attr-defined]
|
|
242
|
+
status = await self.sandbox_client.get_background_job( # type: ignore[attr-defined] # ty:ignore[unresolved-attribute]
|
|
243
243
|
sandbox_id, job
|
|
244
244
|
)
|
|
245
245
|
if getattr(status, "completed", False):
|
|
@@ -251,7 +251,7 @@ class HarborMCPMixin:
|
|
|
251
251
|
f"Stderr:\n{stderr}"
|
|
252
252
|
)
|
|
253
253
|
|
|
254
|
-
result = await self.sandbox_client.execute_command( # type: ignore[attr-defined]
|
|
254
|
+
result = await self.sandbox_client.execute_command( # type: ignore[attr-defined] # ty:ignore[unresolved-attribute]
|
|
255
255
|
sandbox_id, health_cmd, working_dir=None, timeout=probe_timeout
|
|
256
256
|
)
|
|
257
257
|
if getattr(result, "exit_code", 1) == 0:
|
|
@@ -280,7 +280,7 @@ class HarborMCPMixin:
|
|
|
280
280
|
if consecutive_failures >= hc.retries:
|
|
281
281
|
log_tail = ""
|
|
282
282
|
try:
|
|
283
|
-
status = await self.sandbox_client.get_background_job( # type: ignore[attr-defined]
|
|
283
|
+
status = await self.sandbox_client.get_background_job( # type: ignore[attr-defined] # ty:ignore[unresolved-attribute]
|
|
284
284
|
sandbox_id, job
|
|
285
285
|
)
|
|
286
286
|
log_tail = (getattr(status, "stderr", "") or "").strip()[-2000:]
|
|
@@ -313,7 +313,7 @@ class HarborMCPMixin:
|
|
|
313
313
|
f"echo {shlex.quote(f'127.0.0.1 {h}')} >> /etc/hosts)"
|
|
314
314
|
for h in sorted(hosts)
|
|
315
315
|
)
|
|
316
|
-
result = await self.sandbox_client.execute_command( # type: ignore[attr-defined]
|
|
316
|
+
result = await self.sandbox_client.execute_command( # type: ignore[attr-defined] # ty:ignore[unresolved-attribute]
|
|
317
317
|
sandbox_id, statements, working_dir=None
|
|
318
318
|
)
|
|
319
319
|
exit_code = getattr(result, "exit_code", 0)
|