verifiers 0.2.1.dev59__tar.gz → 0.2.1.dev61__tar.gz
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-0.2.1.dev59 → verifiers-0.2.1.dev61}/PKG-INFO +1 -1
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/pyproject.toml +1 -1
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/v1/conftest.py +4 -4
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/__init__.py +4 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/cli/dashboard/eval.py +15 -5
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/cli/debug.py +1 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/cli/init.py +1 -1
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/dialects/chat.py +1 -1
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/env.py +2 -2
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/harness.py +1 -1
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/harnesses/__init__.py +3 -3
- verifiers-0.2.1.dev61/verifiers/v1/harnesses/bash/__init__.py +6 -0
- {verifiers-0.2.1.dev59/verifiers/v1/harnesses/default → verifiers-0.2.1.dev61/verifiers/v1/harnesses/bash}/harness.py +3 -3
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/legacy.py +18 -3
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/loaders.py +2 -2
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/rollout.py +1 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/trace.py +32 -1
- verifiers-0.2.1.dev59/verifiers/v1/harnesses/default/__init__.py +0 -6
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/.gitignore +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/LICENSE +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/README.md +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/AGENTS.md +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/conftest.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_browser_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_build_script.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_cli_agent_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_client_auth_errors.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_client_config.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_client_multimodal_types.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_composable_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_context_token_metrics.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_decorator_ranks.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_endpoint_registry.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_env_group.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_env_server.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_environment.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_environment_extra.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_error_chain.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_eval_display.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_eval_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_gepa_cli.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_gepa_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_gym_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_harbor_env_mcp.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_imports.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_init_script.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_install_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_interception_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_logging.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_math_rubric.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_maybe_think_parser.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_message_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_message_utils_multimodal.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_multiturn_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_nemorl_client.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_openai_chat_completions_token_client.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_openai_responses_client.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_opencode_rlm_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_openenv_client.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_parser.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_path_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_per_turn_timing.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_pricing_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_prime_plugin.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_renderer_client.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_renderer_e2e.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_rlm_composable_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_rubric.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_rubric_group.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_sandbox_debug_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_sandbox_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_sandbox_mixin.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_save_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_setup_script.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_singleturn_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_stateful_tool_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_think_parser.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_tool_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_tool_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_trajectory_processing.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_tui_info_formatting.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_types.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_xml_parser.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/v1/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/v1/fixtures/echo_multi_v0.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/v1/fixtures/echo_tool_v1.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/v1/fixtures/echo_v0.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/v1/fixtures/echo_v1.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/v1/fixtures/pyproject.toml +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/v1/test_color_codeword_tasks.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/v1/test_configs.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/v1/test_e2e.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/v1/test_envs.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/v1/test_graph.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/v1/test_judges.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/v1/test_legacy.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/v1/test_scoring.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/v1/test_taskset.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/v1/test_trace.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/cli/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/cli/commands/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/cli/commands/build.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/cli/commands/eval.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/cli/commands/gepa.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/cli/commands/init.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/cli/commands/install.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/cli/commands/setup.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/cli/plugins/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/cli/plugins/prime.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/cli/tui.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/clients/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/clients/anthropic_messages_client.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/clients/client.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/clients/openai_chat_completions_client.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/clients/openai_completions_client.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/clients/openai_responses_client.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/clients/renderer_client.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/decorators.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/AGENTS.md +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/env_group.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/environment.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/README.md +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/cli_agent_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/README.md +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/_filter.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/composable_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/harness.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/task.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/gym_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/harbor_env/env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/mcp_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/opencode_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/utils/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/utils/file_locks.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/integrations/README.md +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/integrations/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/integrations/browser_env/README.md +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/integrations/openenv_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/integrations/textarena_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/multiturn_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/python_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/sandbox_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/singleturn_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/stateful_tool_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/envs/tool_env.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/errors.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/gepa/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/gepa/adapter.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/gepa/config.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/gepa/display.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/gepa/gepa_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/parsers/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/parsers/maybe_think_parser.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/parsers/parser.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/parsers/think_parser.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/parsers/xml_parser.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/rubrics/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/rubrics/judge_rubric.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/rubrics/math_rubric.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/rubrics/rubric.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/rubrics/rubric_group.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/scripts/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/scripts/build.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/scripts/eval.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/scripts/gepa.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/scripts/init.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/scripts/install.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/scripts/setup.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/scripts/tui.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/serve/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/serve/client/env_client.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/serve/client/zmq_env_client.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/serve/server/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/serve/server/env_router.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/serve/server/env_server.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/serve/server/env_worker.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/serve/server/zmq_env_server.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/serve/types.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/types.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/async_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/client_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/config_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/data_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/display_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/env_config_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/env_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/error_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/eval_display.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/eval_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/heartbeat.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/import_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/install_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/interception_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/logging_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/message_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/metric_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/path_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/pricing_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/process_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/response_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/save_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/serve_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/thread_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/threaded_sandbox_client.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/tool_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/usage_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/utils/version_utils.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/cli/dashboard/replay.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/cli/eval/runner.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/cli/gepa.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/cli/replay.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/cli/serve.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/cli/validate.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/clients/config.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/clients/train.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/configs/debug.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/configs/eval.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/configs/init.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/configs/replay.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/configs/validate.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/decorators.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/episode.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/errors.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/gepa/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/gepa/adapter.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/gepa/config.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/gepa/dataset.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/gepa/reflection.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/gepa/runner.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/graph.py +0 -0
- {verifiers-0.2.1.dev59/verifiers/v1/harnesses/default → verifiers-0.2.1.dev61/verifiers/v1/harnesses/bash}/program.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/harnesses/codex/harness.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/harnesses/null/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/harnesses/null/harness.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/harnesses/null/program.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/harnesses/pi/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/harnesses/pi/harness.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/harnesses/rlm/harness.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/interception/base.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/interception/server.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/interception/tunnel/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/interception/tunnel/base.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/interception/tunnel/custom.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/interception/tunnel/prime.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/judge.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/judges/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/judges/reference.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/judges/reference.txt +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/judges/rubric.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/judges/rubric.txt +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/mcp/launch.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/mcp/user.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/push.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/retries.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/runtimes/base.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/runtimes/docker.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/runtimes/limiters.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/runtimes/modal.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/runtimes/prime.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/scoring.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/serve/client.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/session.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/state.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/task.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/taskset.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/tasksets/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/tasksets/lean/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/tasksets/lean/scoring.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/tasksets/lean/taskset.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/types.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/utils/aio.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/utils/generic.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/utils/image.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/utils/install.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/utils/interrupt.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/utils/memory.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/utils/sampling.py +0 -0
- {verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/v1/utils/version.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: verifiers
|
|
3
|
-
Version: 0.2.1.
|
|
3
|
+
Version: 0.2.1.dev61
|
|
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
|
|
@@ -252,7 +252,7 @@ markers = [
|
|
|
252
252
|
"modal: v1 e2e cases touching the modal runtime (local-only setup; excluded in CI)",
|
|
253
253
|
"colocated: v1 e2e cases with a user/tool server colocated in the harness runtime",
|
|
254
254
|
"null: v1 e2e cases on the null harness",
|
|
255
|
-
"
|
|
255
|
+
"bash: v1 e2e cases on the bash harness",
|
|
256
256
|
"rlm: v1 e2e cases on the rlm harness",
|
|
257
257
|
"kimi_code: v1 e2e cases on the kimi-code harness",
|
|
258
258
|
"codex: v1 e2e cases on the codex harness",
|
|
@@ -15,12 +15,12 @@ Every matrix value carries a pytest mark, so subsets select with `-m`:
|
|
|
15
15
|
uv run pytest tests/v1 -n auto # the whole matrix (needs modal setup)
|
|
16
16
|
uv run pytest tests/v1 -n auto -m "not prime and not modal" # the CI matrix (host + docker only)
|
|
17
17
|
uv run pytest tests/v1 -n auto -m docker # any case touching the docker runtime
|
|
18
|
-
uv run pytest tests/v1 -n auto -m
|
|
18
|
+
uv run pytest tests/v1 -n auto -m bash # only the bash harness
|
|
19
19
|
uv run pytest tests/v1 -n auto -m prime # only prime (real sandboxes; local)
|
|
20
20
|
uv run pytest tests/v1 -n auto -m modal # only modal (needs local setup)
|
|
21
21
|
|
|
22
22
|
Marks: runtimes `subprocess` / `docker` / `prime` / `modal`, placement `colocated`,
|
|
23
|
-
harnesses `null` / `
|
|
23
|
+
harnesses `null` / `bash` / `rlm` / `kimi_code` / `codex` / `claude_code`. A mark is applied per
|
|
24
24
|
axis, so it selects every case touching that value on ANY axis; for one exact combination use `-k`
|
|
25
25
|
on the test id (e.g. `-k "harness-in-docker-with-tool-in-subprocess"`). prime/modal provision real
|
|
26
26
|
remote sandboxes (slow, infra-flaky, need setup), so they're local-only — CI runs
|
|
@@ -104,7 +104,7 @@ def tool_runtime(request) -> dict:
|
|
|
104
104
|
return {"runtime": {"type": request.param}}
|
|
105
105
|
|
|
106
106
|
|
|
107
|
-
# Harnesses, composed with the runtime fixtures, each carrying its harness mark (`-m
|
|
107
|
+
# Harnesses, composed with the runtime fixtures, each carrying its harness mark (`-m bash`, ...).
|
|
108
108
|
# Built-ins are bundled in the `harnesses` package; the agent CLIs (`rlm` / `kimi-code` / `codex` /
|
|
109
109
|
# `claude-code`) install their dependencies at rollout. `compact` (an example harness) and
|
|
110
110
|
# `terminus-2` (drives the host tmux) are excluded. `test_agentic` skips `null` (a chat loop with no
|
|
@@ -112,7 +112,7 @@ def tool_runtime(request) -> dict:
|
|
|
112
112
|
@pytest.fixture(
|
|
113
113
|
params=[
|
|
114
114
|
pytest.param("null", marks=pytest.mark.null, id="null"),
|
|
115
|
-
pytest.param("
|
|
115
|
+
pytest.param("bash", marks=pytest.mark.bash, id="bash"),
|
|
116
116
|
pytest.param("rlm", marks=pytest.mark.rlm, id="rlm"),
|
|
117
117
|
pytest.param("kimi-code", marks=pytest.mark.kimi_code, id="kimi-code"),
|
|
118
118
|
pytest.param("codex", marks=pytest.mark.codex, id="codex"),
|
|
@@ -105,9 +105,11 @@ from verifiers.v1.trace import (
|
|
|
105
105
|
Branch,
|
|
106
106
|
Error,
|
|
107
107
|
EvalRunInfo,
|
|
108
|
+
GenerationSpan,
|
|
108
109
|
ModelCall,
|
|
109
110
|
RunInfo,
|
|
110
111
|
TimeSpan,
|
|
112
|
+
TimeSplit,
|
|
111
113
|
Timing,
|
|
112
114
|
Trace,
|
|
113
115
|
TraceTask,
|
|
@@ -184,6 +186,8 @@ __all__ = [
|
|
|
184
186
|
"KeptTokens",
|
|
185
187
|
"Timing",
|
|
186
188
|
"TimeSpan",
|
|
189
|
+
"TimeSplit",
|
|
190
|
+
"GenerationSpan",
|
|
187
191
|
"Error",
|
|
188
192
|
# decorators
|
|
189
193
|
"stop",
|
|
@@ -300,6 +300,7 @@ def _breakdown(done: list[Trace]) -> Table | None:
|
|
|
300
300
|
have_cost = have_cached = have_reasoning = have_judge = False
|
|
301
301
|
phase_secs: dict[str, float] = {}
|
|
302
302
|
phase_count: dict[str, int] = {}
|
|
303
|
+
model_secs = harness_secs = 0.0
|
|
303
304
|
for trace in done:
|
|
304
305
|
prompt, completion, cached, reasoning, _ = _tokens(trace)
|
|
305
306
|
total_in += prompt
|
|
@@ -326,6 +327,8 @@ def _breakdown(done: list[Trace]) -> Table | None:
|
|
|
326
327
|
if span.end: # phase was timed for this rollout
|
|
327
328
|
phase_secs[phase] = phase_secs.get(phase, 0.0) + span.duration
|
|
328
329
|
phase_count[phase] = phase_count.get(phase, 0) + 1
|
|
330
|
+
model_secs += trace.timing.generation.model.duration
|
|
331
|
+
harness_secs += trace.timing.generation.harness.duration
|
|
329
332
|
if (
|
|
330
333
|
total_in
|
|
331
334
|
or total_out
|
|
@@ -353,11 +356,18 @@ def _breakdown(done: list[Trace]) -> Table | None:
|
|
|
353
356
|
cost += f" + {format_cost_usd(total_judge_cost)} judge"
|
|
354
357
|
usage.append(cost)
|
|
355
358
|
grid.add_row("usage", " · ".join(usage))
|
|
356
|
-
time_segments = [
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
if
|
|
360
|
-
|
|
359
|
+
time_segments = []
|
|
360
|
+
for phase in ("boot", "setup", "generation", "finalize", "scoring"):
|
|
361
|
+
count = phase_count.get(phase)
|
|
362
|
+
if not count:
|
|
363
|
+
continue
|
|
364
|
+
segment = f"{phase} {format_time(phase_secs[phase] / count)}"
|
|
365
|
+
if phase == "generation":
|
|
366
|
+
segment += (
|
|
367
|
+
f" (model {format_time(model_secs / count)}"
|
|
368
|
+
f" + harness {format_time(harness_secs / count)})"
|
|
369
|
+
)
|
|
370
|
+
time_segments.append(segment)
|
|
361
371
|
if time_segments:
|
|
362
372
|
grid.add_row("time", " · ".join(time_segments))
|
|
363
373
|
return grid if grid.row_count else None
|
|
@@ -243,6 +243,7 @@ async def debug_task(task: Task, config: DebugConfig) -> tuple[Trace, bool]:
|
|
|
243
243
|
except Exception as e:
|
|
244
244
|
record_debug_error(trace, debug, e, setup_timeout, config.timeout.total)
|
|
245
245
|
finally:
|
|
246
|
+
trace.split_generation()
|
|
246
247
|
trace.info["debug"] = debug
|
|
247
248
|
try:
|
|
248
249
|
await runtime.stop()
|
|
@@ -235,7 +235,7 @@ A v1 verifiers environment, scaffolded with `init`.
|
|
|
235
235
|
|
|
236
236
|
```bash
|
|
237
237
|
uv pip install -e . # install this package (or register it in your project)
|
|
238
|
-
uv run eval {dash} -n 3 # evaluate a few tasks with the
|
|
238
|
+
uv run eval {dash} -n 3 # evaluate a few tasks with the bash harness
|
|
239
239
|
```
|
|
240
240
|
|
|
241
241
|
## Layout
|
|
@@ -125,7 +125,7 @@ def parse_tools(raw: list[dict] | None) -> list[Tool] | None:
|
|
|
125
125
|
|
|
126
126
|
|
|
127
127
|
# --- vf -> chat wire ----------------------------------------------------------
|
|
128
|
-
# `message_to_wire` (chat-only): used by `extend` (user-sim turn injection), the
|
|
128
|
+
# `message_to_wire` (chat-only): used by `extend` (user-sim turn injection), the bash harness
|
|
129
129
|
# (a Messages prompt), and the train client (its generate request). The proxy preserves its parsed
|
|
130
130
|
# native JSON independently and does not use this serializer.
|
|
131
131
|
|
|
@@ -87,11 +87,11 @@ def pool_serve_kwargs(pool: StaticPoolConfig | ElasticPoolConfig) -> dict:
|
|
|
87
87
|
class EnvConfig(BaseConfig):
|
|
88
88
|
"""The taskset that loads tasks and the harness that runs them."""
|
|
89
89
|
|
|
90
|
-
# SerializeAsAny: these hold resolved subclasses (e.g. MathConfig,
|
|
90
|
+
# SerializeAsAny: these hold resolved subclasses (e.g. MathConfig, BashHarnessConfig);
|
|
91
91
|
# without it model_dump() narrows to the base type and drops the subclass fields, so the
|
|
92
92
|
# env-server subconfig the orchestrator writes would lose taskset/harness-specific knobs.
|
|
93
93
|
taskset: SerializeAsAny[TasksetConfig] = TasksetConfig()
|
|
94
|
-
harness: SerializeAsAny[HarnessConfig] = HarnessConfig(id="
|
|
94
|
+
harness: SerializeAsAny[HarnessConfig] = HarnessConfig(id="bash")
|
|
95
95
|
timeout: TimeoutConfig = TimeoutConfig()
|
|
96
96
|
retries: RetryConfig = RetryConfig()
|
|
97
97
|
max_turns: int | None = None
|
|
@@ -31,7 +31,7 @@ logger = logging.getLogger(__name__)
|
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
class HarnessConfig(BaseConfig):
|
|
34
|
-
id: ID = "
|
|
34
|
+
id: ID = "bash"
|
|
35
35
|
"""Local package or Hub `org/name[@version]`, set through `--harness.id`."""
|
|
36
36
|
runtime: RuntimeConfig = SubprocessConfig()
|
|
37
37
|
"""Runtime for the harness program; tool servers choose their placement separately."""
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
from verifiers.v1.harnesses.bash import BashHarness, BashHarnessConfig
|
|
1
2
|
from verifiers.v1.harnesses.claude_code import (
|
|
2
3
|
ClaudeCodeHarness,
|
|
3
4
|
ClaudeCodeHarnessConfig,
|
|
4
5
|
)
|
|
5
6
|
from verifiers.v1.harnesses.codex import CodexHarness, CodexHarnessConfig
|
|
6
|
-
from verifiers.v1.harnesses.default import DefaultHarness, DefaultHarnessConfig
|
|
7
7
|
from verifiers.v1.harnesses.kimi_code import KimiCodeHarness, KimiCodeHarnessConfig
|
|
8
8
|
from verifiers.v1.harnesses.mini_swe_agent import (
|
|
9
9
|
MiniSWEAgentHarness,
|
|
@@ -15,12 +15,12 @@ from verifiers.v1.harnesses.rlm import RLMHarness, RLMHarnessConfig
|
|
|
15
15
|
from verifiers.v1.harnesses.terminus_2 import Terminus2Harness, Terminus2HarnessConfig
|
|
16
16
|
|
|
17
17
|
__all__ = [
|
|
18
|
+
"BashHarness",
|
|
19
|
+
"BashHarnessConfig",
|
|
18
20
|
"ClaudeCodeHarness",
|
|
19
21
|
"ClaudeCodeHarnessConfig",
|
|
20
22
|
"CodexHarness",
|
|
21
23
|
"CodexHarnessConfig",
|
|
22
|
-
"DefaultHarness",
|
|
23
|
-
"DefaultHarnessConfig",
|
|
24
24
|
"KimiCodeHarness",
|
|
25
25
|
"KimiCodeHarnessConfig",
|
|
26
26
|
"NullHarness",
|
|
@@ -25,7 +25,7 @@ SEARCH_PROMPT = (
|
|
|
25
25
|
)
|
|
26
26
|
|
|
27
27
|
|
|
28
|
-
class
|
|
28
|
+
class BashHarnessConfig(HarnessConfig):
|
|
29
29
|
edit: bool = True
|
|
30
30
|
"""Offer the local `edit` tool (single-occurrence string replacement in a file) alongside
|
|
31
31
|
`bash`. On by default; set `--harness.edit false` for a bash-only agent."""
|
|
@@ -36,7 +36,7 @@ class DefaultHarnessConfig(HarnessConfig):
|
|
|
36
36
|
the agent's `bash` subprocesses don't inherit it."""
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
class
|
|
39
|
+
class BashHarness(Harness[BashHarnessConfig]):
|
|
40
40
|
APPENDS_SYSTEM_PROMPT = True
|
|
41
41
|
SUPPORTS_MCP = True
|
|
42
42
|
SUPPORTS_USER_SIM = True
|
|
@@ -86,7 +86,7 @@ class DefaultHarness(Harness[DefaultHarnessConfig]):
|
|
|
86
86
|
serper_key = os.environ.get("SERPER_API_KEY")
|
|
87
87
|
if not serper_key:
|
|
88
88
|
raise ValueError(
|
|
89
|
-
"
|
|
89
|
+
"bash search=true requires SERPER_API_KEY in the eval environment "
|
|
90
90
|
"(the host env or --harness.env)"
|
|
91
91
|
)
|
|
92
92
|
args += ["--search", f"--serper-key={serper_key}"]
|
|
@@ -32,7 +32,16 @@ from verifiers.v1.serve.types import (
|
|
|
32
32
|
)
|
|
33
33
|
from verifiers.v1.task import WireTaskData
|
|
34
34
|
from verifiers.v1 import graph
|
|
35
|
-
from verifiers.v1.trace import
|
|
35
|
+
from verifiers.v1.trace import (
|
|
36
|
+
Error,
|
|
37
|
+
GenerationSpan,
|
|
38
|
+
ModelCall,
|
|
39
|
+
TimeSpan,
|
|
40
|
+
TimeSplit,
|
|
41
|
+
Timing,
|
|
42
|
+
Trace,
|
|
43
|
+
TraceTask,
|
|
44
|
+
)
|
|
36
45
|
from verifiers.v1.types import (
|
|
37
46
|
AssistantMessage,
|
|
38
47
|
Response,
|
|
@@ -185,7 +194,8 @@ def _to_v1_tokens(raw: Any) -> TurnTokens | None:
|
|
|
185
194
|
|
|
186
195
|
def _timing(raw: Any) -> Timing:
|
|
187
196
|
"""Map the v0 timing record's generation/scoring durations onto a v1 ``Timing``
|
|
188
|
-
(we only have durations, so each span is encoded as start=0, end=duration).
|
|
197
|
+
(we only have durations, so each span is encoded as start=0, end=duration).
|
|
198
|
+
v0's per-turn ``model``/``env`` span collections carry the generation split."""
|
|
189
199
|
|
|
190
200
|
def _dur(node: Any) -> float:
|
|
191
201
|
if isinstance(node, dict):
|
|
@@ -198,7 +208,12 @@ def _timing(raw: Any) -> Timing:
|
|
|
198
208
|
|
|
199
209
|
raw = raw or {}
|
|
200
210
|
return Timing(
|
|
201
|
-
generation=
|
|
211
|
+
generation=GenerationSpan(
|
|
212
|
+
start=0.0,
|
|
213
|
+
end=_dur(raw.get("generation")),
|
|
214
|
+
model=TimeSplit(duration=_dur(raw.get("model"))),
|
|
215
|
+
harness=TimeSplit(duration=_dur(raw.get("env"))),
|
|
216
|
+
),
|
|
202
217
|
scoring=TimeSpan(start=0.0, end=_dur(raw.get("scoring"))),
|
|
203
218
|
)
|
|
204
219
|
|
|
@@ -98,12 +98,12 @@ def judge_class(judge_id: str) -> type[Judge]:
|
|
|
98
98
|
|
|
99
99
|
def default_harness_id(taskset_id: str) -> str:
|
|
100
100
|
if not taskset_id:
|
|
101
|
-
return "
|
|
101
|
+
return "bash"
|
|
102
102
|
try:
|
|
103
103
|
module = import_taskset(taskset_id)
|
|
104
104
|
_plugin_class(module, Harness, "harness")
|
|
105
105
|
except (ModuleNotFoundError, TypeError, AttributeError):
|
|
106
|
-
return "
|
|
106
|
+
return "bash"
|
|
107
107
|
return taskset_id
|
|
108
108
|
|
|
109
109
|
|
|
@@ -49,11 +49,30 @@ class TimeSpan(StrictBaseModel):
|
|
|
49
49
|
return max(0.0, self.end - self.start) if self.end else 0.0
|
|
50
50
|
|
|
51
51
|
|
|
52
|
+
class TimeSplit(StrictBaseModel):
|
|
53
|
+
"""A span's share attributed to one side of a split: disjoint sub-intervals summed
|
|
54
|
+
into a duration, so there is no single start/end. Serialized, unlike a span's
|
|
55
|
+
derived `duration`, since it cannot be recomputed from two timestamps."""
|
|
56
|
+
|
|
57
|
+
duration: float = 0.0
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class GenerationSpan(TimeSpan):
|
|
61
|
+
"""The generation span plus its split into time inside model calls (`model`) vs.
|
|
62
|
+
outside them (`harness`: harness logic, tools, user simulation). Stamped from the
|
|
63
|
+
recorded model calls' spans by `Trace.split_generation` when the span closes, with
|
|
64
|
+
`model.duration + harness.duration == duration` — concurrent calls (subagent forks)
|
|
65
|
+
are clamped to the span, saturating the model share."""
|
|
66
|
+
|
|
67
|
+
model: TimeSplit = Field(default_factory=TimeSplit)
|
|
68
|
+
harness: TimeSplit = Field(default_factory=TimeSplit)
|
|
69
|
+
|
|
70
|
+
|
|
52
71
|
class Timing(StrictBaseModel):
|
|
53
72
|
start: float = Field(default_factory=time.time)
|
|
54
73
|
boot: TimeSpan = Field(default_factory=TimeSpan)
|
|
55
74
|
setup: TimeSpan = Field(default_factory=TimeSpan)
|
|
56
|
-
generation:
|
|
75
|
+
generation: GenerationSpan = Field(default_factory=GenerationSpan)
|
|
57
76
|
finalize: TimeSpan = Field(default_factory=TimeSpan)
|
|
58
77
|
scoring: TimeSpan = Field(default_factory=TimeSpan)
|
|
59
78
|
|
|
@@ -537,6 +556,18 @@ class Trace(StrictBaseModel, Generic[DataT, StateT]):
|
|
|
537
556
|
if self.stop_condition is None:
|
|
538
557
|
self.stop_condition = condition
|
|
539
558
|
|
|
559
|
+
def split_generation(self) -> None:
|
|
560
|
+
"""Stamp the closed generation span's model/harness split: model time is the
|
|
561
|
+
sum of the recorded calls' spans (clamped to the span), harness the complement.
|
|
562
|
+
Every path that closes the span calls this — a span without model calls (e.g.
|
|
563
|
+
a debug action) is all harness time."""
|
|
564
|
+
gen = self.timing.generation
|
|
565
|
+
if not gen.end:
|
|
566
|
+
return
|
|
567
|
+
model = sum(call.time.duration for call in self.calls)
|
|
568
|
+
gen.model.duration = min(model, gen.duration)
|
|
569
|
+
gen.harness.duration = gen.duration - gen.model.duration
|
|
570
|
+
|
|
540
571
|
def capture_error(self, error: Exception) -> None:
|
|
541
572
|
self.errors.append(
|
|
542
573
|
Error(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/tests/test_openai_chat_completions_token_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.2.1.dev59 → verifiers-0.2.1.dev61}/verifiers/clients/anthropic_messages_client.py
RENAMED
|
File without changes
|