verifiers 0.1.15.dev401__tar.gz → 0.1.15.dev403__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.1.15.dev401 → verifiers-0.1.15.dev403}/PKG-INFO +1 -1
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_renderer_client.py +35 -64
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/clients/renderer_client.py +25 -74
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -6
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/clients/train.py +23 -4
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/tasksets/__init__.py +14 -1
- verifiers-0.1.15.dev403/verifiers/v1/tasksets/lean/__init__.py +31 -0
- verifiers-0.1.15.dev403/verifiers/v1/tasksets/lean/scoring.py +262 -0
- verifiers-0.1.15.dev403/verifiers/v1/tasksets/lean/taskset.py +265 -0
- verifiers-0.1.15.dev401/tests/test_lean_task.py +0 -344
- verifiers-0.1.15.dev401/verifiers/envs/experimental/composable/tasksets/lean/__init__.py +0 -13
- verifiers-0.1.15.dev401/verifiers/envs/experimental/composable/tasksets/lean/lean_task.py +0 -458
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/.gitignore +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/LICENSE +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/README.md +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/pyproject.toml +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/AGENTS.md +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/README.md +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/conftest.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_browser_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_build_script.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_cli_agent_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_client_auth_errors.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_client_config.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_client_multimodal_types.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_composable_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_context_token_metrics.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_decorator_ranks.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_endpoint_registry.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_env_group.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_env_server.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_environment.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_environment_extra.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_envs.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_error_chain.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_eval_display.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_eval_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_gepa_cli.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_gepa_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_gym_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_harbor_env_mcp.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_imports.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_init_script.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_install_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_interception_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_logging.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_math_rubric.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_maybe_think_parser.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_message_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_message_utils_multimodal.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_multiturn_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_nemorl_client.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_openai_chat_completions_token_client.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_openai_responses_client.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_opencode_rlm_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_openenv_client.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_parser.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_path_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_per_turn_timing.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_pricing_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_prime_plugin.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_renderer_e2e.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_rlm_composable_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_rubric.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_rubric_group.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_sandbox_debug_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_sandbox_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_sandbox_mixin.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_save_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_setup_script.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_singleturn_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_stateful_tool_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_think_parser.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_tool_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_tool_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_trajectory_processing.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_tui_info_formatting.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_types.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_wordle_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/test_xml_parser.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/v1/conftest.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/v1/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/v1/fixtures/echo_multi_v0.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/v1/fixtures/echo_tool_v1.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/v1/fixtures/echo_v0.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/v1/fixtures/echo_v1.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/v1/fixtures/pyproject.toml +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/v1/test_color_codeword_tasks.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/v1/test_configs.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/v1/test_e2e.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/v1/test_envs.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/v1/test_graph.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/v1/test_legacy.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/tests/v1/test_trace.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/AGENTS.md +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/cli/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/cli/commands/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/cli/commands/build.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/cli/commands/eval.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/cli/commands/gepa.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/cli/commands/init.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/cli/commands/install.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/cli/commands/setup.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/cli/plugins/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/cli/plugins/prime.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/cli/tui.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/clients/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/clients/anthropic_messages_client.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/clients/client.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/clients/openai_chat_completions_client.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/clients/openai_completions_client.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/clients/openai_responses_client.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/decorators.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/AGENTS.md +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/env_group.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/environment.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/README.md +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/cli_agent_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/README.md +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/_filter.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/composable_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/harness.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/task.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/README.md +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/openseeker/README.md +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/openseeker/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/openseeker/taskset.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/quest/README.md +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/quest/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/api_tools/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/api_tools/tool_pdf.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/eval_toolkit.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/evaluator.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/llm_client/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/llm_client/base_client.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/prompts/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/prompts/cache_prompts.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/cache_filesys.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/load_eval_script.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/misc.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/tool_visit.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/url_tools.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/verification_tree.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/quest/open_ended.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/quest/taskset.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/README.md +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/taskset.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/search/search_tasksets.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/gym_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/harbor_env/env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/mcp_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/opencode_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/utils/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/utils/file_locks.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/integrations/README.md +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/integrations/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/integrations/browser_env/README.md +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/integrations/openenv_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/integrations/textarena_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/multiturn_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/python_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/sandbox_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/singleturn_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/stateful_tool_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/envs/tool_env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/errors.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/gepa/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/gepa/adapter.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/gepa/config.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/gepa/display.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/gepa/gepa_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/parsers/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/parsers/maybe_think_parser.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/parsers/parser.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/parsers/think_parser.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/parsers/xml_parser.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/rl/README.md +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/rl/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/rl/inference/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/rl/inference/client.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/rl/inference/server.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/rl/trainer/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/rl/trainer/config.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/rl/trainer/orchestrator.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/rl/trainer/trainer.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/rl/trainer/utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/rubrics/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/rubrics/judge_rubric.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/rubrics/math_rubric.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/rubrics/rubric.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/rubrics/rubric_group.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/scripts/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/scripts/build.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/scripts/eval.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/scripts/gepa.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/scripts/init.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/scripts/install.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/scripts/rl.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/scripts/setup.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/scripts/train.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/scripts/tui.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/scripts/vllm.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/serve/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/serve/client/env_client.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/serve/client/zmq_env_client.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/serve/server/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/serve/server/env_router.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/serve/server/env_server.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/serve/server/env_worker.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/serve/server/zmq_env_server.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/serve/types.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/types.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/async_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/client_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/config_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/data_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/display_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/env_config_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/env_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/error_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/eval_display.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/eval_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/heartbeat.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/import_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/install_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/interception_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/logging_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/message_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/metric_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/path_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/pricing_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/process_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/response_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/save_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/serve_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/thread_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/threaded_sandbox_client.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/tool_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/usage_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/utils/version_utils.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/ARCHITECTURE.md +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/GUIDE.md +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/README.md +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/cli/dashboard/eval.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/cli/eval/runner.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/cli/init.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/cli/serve.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/cli/validate.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/clients/config.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/configs/eval.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/configs/init.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/configs/validate.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/decorators.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/dialects/chat.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/env.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/episode.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/errors.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/graph.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harness.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/bash/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/bash/harness.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/bash/program.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/bash_edit/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/bash_edit/harness.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/bash_edit/program.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/codex/harness.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/default/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/default/harness.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/default/program.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/rlm/harness.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/interception/server.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/judge.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/legacy.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/loaders.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/mcp/launch.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/mcp/multiplex.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/mcp/user.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/retries.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/rollout.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/runtimes/base.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/runtimes/docker.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/runtimes/limiters.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/runtimes/modal.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/runtimes/prime.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/serve/client.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/state.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/task.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/taskset.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/trace.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/types.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/utils/install.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.1.15.dev401 → verifiers-0.1.15.dev403}/verifiers/v1/utils/memory.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: verifiers
|
|
3
|
-
Version: 0.1.15.
|
|
3
|
+
Version: 0.1.15.dev403
|
|
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
|
|
@@ -83,15 +83,13 @@ def test_renderer_client_uses_renderer_model_name_override():
|
|
|
83
83
|
|
|
84
84
|
|
|
85
85
|
def test_renderer_client_threads_chat_template_kwargs_into_pool():
|
|
86
|
-
"""``sampling_args.extra_body.chat_template_kwargs``
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
from renderers import AutoRendererConfig, Qwen3RendererConfig
|
|
86
|
+
"""``sampling_args.extra_body.chat_template_kwargs`` are routed to
|
|
87
|
+
renderer pool construction and stripped from /generate sampling params.
|
|
88
|
+
Renderers owns concrete config resolution/validation."""
|
|
89
|
+
from renderers import Qwen3RendererConfig
|
|
91
90
|
|
|
92
91
|
bases = [
|
|
93
92
|
Qwen3RendererConfig(enable_thinking=True),
|
|
94
|
-
AutoRendererConfig(preserve_all_thinking=True),
|
|
95
93
|
None,
|
|
96
94
|
]
|
|
97
95
|
for base in bases:
|
|
@@ -134,29 +132,16 @@ def test_renderer_client_threads_chat_template_kwargs_into_pool():
|
|
|
134
132
|
)
|
|
135
133
|
)
|
|
136
134
|
|
|
137
|
-
expected_preserve_all = (
|
|
138
|
-
base.preserve_all_thinking
|
|
139
|
-
if isinstance(base, AutoRendererConfig)
|
|
140
|
-
else False
|
|
141
|
-
)
|
|
142
135
|
create_pool_mock.assert_called_once_with(
|
|
143
136
|
"Qwen/Qwen3-8B",
|
|
144
|
-
|
|
145
|
-
enable_thinking=False,
|
|
146
|
-
preserve_all_thinking=expected_preserve_all,
|
|
147
|
-
),
|
|
137
|
+
base,
|
|
148
138
|
size=1,
|
|
139
|
+
chat_template_kwargs={"enable_thinking": False},
|
|
149
140
|
)
|
|
150
141
|
assert captured["sampling_params"] == {"top_k": 20}
|
|
151
142
|
|
|
152
143
|
|
|
153
|
-
def
|
|
154
|
-
"""When ``ClientConfig.renderer_model_name`` overrides the API request
|
|
155
|
-
model, auto-resolution looks up the OVERRIDE in ``MODEL_RENDERER_MAP``
|
|
156
|
-
(it's what loads the tokenizer the renderer holds) — not the request
|
|
157
|
-
model, which may not be in the map at all."""
|
|
158
|
-
from renderers import Qwen3RendererConfig
|
|
159
|
-
|
|
144
|
+
def test_renderer_client_forwards_renderer_model_name_with_chat_template_kwargs():
|
|
160
145
|
RendererClient._shared_pools.clear()
|
|
161
146
|
|
|
162
147
|
client = object.__new__(RendererClient)
|
|
@@ -183,7 +168,7 @@ def test_renderer_client_auto_resolves_against_renderer_model_name_override():
|
|
|
183
168
|
asyncio.run(
|
|
184
169
|
client.get_native_response(
|
|
185
170
|
prompt=[{"role": "user", "content": "hi"}],
|
|
186
|
-
model="r8-smoke",
|
|
171
|
+
model="r8-smoke",
|
|
187
172
|
sampling_args={
|
|
188
173
|
"extra_body": {"chat_template_kwargs": {"enable_thinking": False}}
|
|
189
174
|
},
|
|
@@ -191,46 +176,14 @@ def test_renderer_client_auto_resolves_against_renderer_model_name_override():
|
|
|
191
176
|
)
|
|
192
177
|
)
|
|
193
178
|
|
|
194
|
-
# Resolves against renderer_model_name (Qwen/Qwen3-8B → "qwen3") rather
|
|
195
|
-
# than the request "r8-smoke" (which would fall through to default).
|
|
196
179
|
create_pool_mock.assert_called_once_with(
|
|
197
180
|
"Qwen/Qwen3-8B",
|
|
198
|
-
|
|
181
|
+
None,
|
|
199
182
|
size=1,
|
|
183
|
+
chat_template_kwargs={"enable_thinking": False},
|
|
200
184
|
)
|
|
201
185
|
|
|
202
186
|
|
|
203
|
-
def test_renderer_client_rejects_invalid_chat_template_kwargs():
|
|
204
|
-
"""Unknown / mistyped chat_template_kwargs surface as a pydantic
|
|
205
|
-
``ValidationError`` (``extra="forbid"`` on the typed RendererConfig)."""
|
|
206
|
-
from pydantic import ValidationError
|
|
207
|
-
from renderers import Qwen3RendererConfig
|
|
208
|
-
|
|
209
|
-
RendererClient._shared_pools.clear()
|
|
210
|
-
|
|
211
|
-
client = object.__new__(RendererClient)
|
|
212
|
-
client._renderer = None
|
|
213
|
-
client._pool_size = 1
|
|
214
|
-
client._config = vf.ClientConfig(
|
|
215
|
-
client_type="renderer", renderer_config=Qwen3RendererConfig()
|
|
216
|
-
)
|
|
217
|
-
client._client = object() # type: ignore[attr-defined]
|
|
218
|
-
|
|
219
|
-
with pytest.raises(ValidationError, match="enable_thinkng"):
|
|
220
|
-
asyncio.run(
|
|
221
|
-
client.get_native_response(
|
|
222
|
-
prompt=[{"role": "user", "content": "hi"}],
|
|
223
|
-
model="Qwen/Qwen3-8B",
|
|
224
|
-
sampling_args={
|
|
225
|
-
"extra_body": {
|
|
226
|
-
"chat_template_kwargs": {"enable_thinkng": False}, # typo
|
|
227
|
-
}
|
|
228
|
-
},
|
|
229
|
-
tools=None,
|
|
230
|
-
)
|
|
231
|
-
)
|
|
232
|
-
|
|
233
|
-
|
|
234
187
|
# Provenance: Eli's review on PR #1068, comment 3150580768.
|
|
235
188
|
# "RendererClient parses the GPT-OSS assistant tool call into ToolCall(name=...),
|
|
236
189
|
# but ToolEnv returns ToolMessage with only content/tool_call_id, and
|
|
@@ -675,11 +628,26 @@ _TRUNCATED_ANCHOR_MODELS = [
|
|
|
675
628
|
|
|
676
629
|
|
|
677
630
|
@lru_cache(maxsize=None)
|
|
678
|
-
def _load_tokenizer_and_renderer(
|
|
631
|
+
def _load_tokenizer_and_renderer(
|
|
632
|
+
model_name: str, renderer_name: str, thinking_retention: str | None = None
|
|
633
|
+
):
|
|
634
|
+
from renderers import AutoRendererConfig
|
|
679
635
|
from transformers import AutoTokenizer
|
|
680
636
|
|
|
681
637
|
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
|
|
682
|
-
|
|
638
|
+
config = config_from_name(renderer_name)
|
|
639
|
+
if thinking_retention is not None:
|
|
640
|
+
if config is None and "thinking_retention" in AutoRendererConfig.model_fields:
|
|
641
|
+
config = AutoRendererConfig(thinking_retention=thinking_retention)
|
|
642
|
+
elif config is not None and "thinking_retention" in type(config).model_fields:
|
|
643
|
+
updates = {"thinking_retention": thinking_retention}
|
|
644
|
+
if (
|
|
645
|
+
thinking_retention == "all"
|
|
646
|
+
and "auto_drop_analysis" in type(config).model_fields
|
|
647
|
+
):
|
|
648
|
+
updates["auto_drop_analysis"] = False
|
|
649
|
+
config = type(config).model_validate({**config.model_dump(), **updates})
|
|
650
|
+
renderer = create_renderer(tokenizer, config)
|
|
683
651
|
return tokenizer, renderer
|
|
684
652
|
|
|
685
653
|
|
|
@@ -729,11 +697,14 @@ def _build_truncated_state(tokenizer, renderer):
|
|
|
729
697
|
async def test_get_incremental_prompt_ids_bridges_over_truncated_step(
|
|
730
698
|
model_id, renderer_id
|
|
731
699
|
):
|
|
732
|
-
"""
|
|
733
|
-
that start with prev_prompt +
|
|
734
|
-
extension invariant).
|
|
735
|
-
|
|
736
|
-
|
|
700
|
+
"""With full thinking retention, the bridge anchors on the truncated
|
|
701
|
+
step and returns new prompt_ids that start with prev_prompt +
|
|
702
|
+
prev_completion byte-identically (the extension invariant)."""
|
|
703
|
+
tokenizer, renderer = _load_tokenizer_and_renderer(
|
|
704
|
+
model_id,
|
|
705
|
+
renderer_id,
|
|
706
|
+
"all",
|
|
707
|
+
)
|
|
737
708
|
prev_prompt_ids, prev_completion_ids, state, next_turn_prompt = (
|
|
738
709
|
_build_truncated_state(tokenizer, renderer)
|
|
739
710
|
)
|
|
@@ -18,7 +18,6 @@ from openai import AsyncOpenAI
|
|
|
18
18
|
from renderers import Message as RendererMessage
|
|
19
19
|
from renderers import OverlongPromptError as RendererOverlongPromptError
|
|
20
20
|
from renderers import (
|
|
21
|
-
AutoRendererConfig,
|
|
22
21
|
MultimodalRenderer,
|
|
23
22
|
ParsedToolCall,
|
|
24
23
|
RenderedTokens,
|
|
@@ -26,13 +25,11 @@ from renderers import (
|
|
|
26
25
|
RendererConfig,
|
|
27
26
|
RendererPool,
|
|
28
27
|
ToolSpec,
|
|
29
|
-
config_from_name,
|
|
30
28
|
create_renderer_pool,
|
|
31
29
|
is_multimodal,
|
|
32
30
|
)
|
|
33
31
|
from renderers import ToolCall as RendererToolCall
|
|
34
32
|
from renderers import ToolCallFunction
|
|
35
|
-
from renderers.base import MODEL_RENDERER_MAP
|
|
36
33
|
from renderers.client import _maybe_offload, generate
|
|
37
34
|
|
|
38
35
|
from verifiers.clients.client import Client
|
|
@@ -100,6 +97,14 @@ def _get_value(obj: Any, key: str, default: Any = None) -> Any:
|
|
|
100
97
|
return getattr(obj, key, default)
|
|
101
98
|
|
|
102
99
|
|
|
100
|
+
def _chat_template_kwargs_key(
|
|
101
|
+
chat_template_kwargs: Mapping[str, Any] | None,
|
|
102
|
+
) -> str | None:
|
|
103
|
+
if not chat_template_kwargs:
|
|
104
|
+
return None
|
|
105
|
+
return json.dumps(chat_template_kwargs, sort_keys=True, separators=(",", ":"))
|
|
106
|
+
|
|
107
|
+
|
|
103
108
|
def _normalize_for_comparison(value: Any, _key: str | None = None) -> Any:
|
|
104
109
|
# tool_call.arguments is serialized as a string on one side (our trajectory
|
|
105
110
|
# uses json.dumps with default separators) and often comes back from
|
|
@@ -380,53 +385,6 @@ async def _get_incremental_prompt_ids(
|
|
|
380
385
|
return None
|
|
381
386
|
|
|
382
387
|
|
|
383
|
-
def _resolve_renderer_config(
|
|
384
|
-
base: RendererConfig | None,
|
|
385
|
-
chat_template_kwargs: Mapping[str, Any] | None,
|
|
386
|
-
*,
|
|
387
|
-
renderer_model: str,
|
|
388
|
-
) -> RendererConfig | None:
|
|
389
|
-
"""Merge ``chat_template_kwargs`` into a typed ``RendererConfig``.
|
|
390
|
-
|
|
391
|
-
When ``base`` is ``None`` or ``AutoRendererConfig`` (would auto-resolve
|
|
392
|
-
inside ``renderers.create_renderer``), we pull resolution forward via
|
|
393
|
-
``MODEL_RENDERER_MAP`` so kwargs land on the concrete config variant
|
|
394
|
-
and pydantic validates them against the actual renderer's schema —
|
|
395
|
-
``AutoRendererConfig`` intentionally carries only ``preserve_*`` and
|
|
396
|
-
would reject template kwargs like ``enable_thinking``. ``renderer_model``
|
|
397
|
-
must match what the pool will tokenize with (i.e.
|
|
398
|
-
``ClientConfig.renderer_model_name`` when set, else the request model),
|
|
399
|
-
so resolution agrees with the tokenizer the renderer will hold.
|
|
400
|
-
|
|
401
|
-
Kwargs override fields with the same name on the (resolved) base.
|
|
402
|
-
Typed configs (``extra="forbid"``) reject unknown keys with a
|
|
403
|
-
field-path error; ``DefaultRendererConfig`` (``extra="allow"``) keeps
|
|
404
|
-
the escape hatch for arbitrary jinja kwargs.
|
|
405
|
-
"""
|
|
406
|
-
if not chat_template_kwargs:
|
|
407
|
-
return base
|
|
408
|
-
|
|
409
|
-
# Resolve auto → concrete (mirrors ``renderers._resolve_auto``) so
|
|
410
|
-
# ``enable_thinking`` etc. validate against the right schema instead of
|
|
411
|
-
# ``AutoRendererConfig``'s minimal one. Carries ``preserve_*`` across.
|
|
412
|
-
if base is None or isinstance(base, AutoRendererConfig):
|
|
413
|
-
renderer_name = MODEL_RENDERER_MAP.get(renderer_model, "default")
|
|
414
|
-
# ``config_from_name`` returns ``None`` only for ``"auto"``, which
|
|
415
|
-
# ``MODEL_RENDERER_MAP.get(..., "default")`` excludes — assert for ty.
|
|
416
|
-
concrete = config_from_name(renderer_name)
|
|
417
|
-
assert concrete is not None
|
|
418
|
-
if isinstance(base, AutoRendererConfig):
|
|
419
|
-
concrete = concrete.model_copy(
|
|
420
|
-
update={
|
|
421
|
-
"preserve_all_thinking": base.preserve_all_thinking,
|
|
422
|
-
"preserve_thinking_between_tool_calls": base.preserve_thinking_between_tool_calls,
|
|
423
|
-
}
|
|
424
|
-
)
|
|
425
|
-
base = cast(RendererConfig, concrete)
|
|
426
|
-
|
|
427
|
-
return type(base).model_validate({**base.model_dump(), **chat_template_kwargs})
|
|
428
|
-
|
|
429
|
-
|
|
430
388
|
class RendererClient(
|
|
431
389
|
Client[AsyncOpenAI, list[RendererMessage], dict[str, Any], ToolSpec]
|
|
432
390
|
):
|
|
@@ -439,13 +397,12 @@ class RendererClient(
|
|
|
439
397
|
so that concurrent rollouts tokenize in parallel threads.
|
|
440
398
|
"""
|
|
441
399
|
|
|
442
|
-
# Cache key is ``(renderer_model_name, pool_size, renderer_config_json
|
|
443
|
-
#
|
|
444
|
-
#
|
|
445
|
-
# key shape that's safe across pydantic version bumps.
|
|
400
|
+
# Cache key is ``(renderer_model_name, pool_size, renderer_config_json,
|
|
401
|
+
# chat_template_kwargs_json)``. Renderers owns the concrete config
|
|
402
|
+
# resolution; verifiers only separates pools whose construction inputs differ.
|
|
446
403
|
_shared_pools: ClassVar[
|
|
447
404
|
dict[
|
|
448
|
-
tuple[str, int, str | None],
|
|
405
|
+
tuple[str, int, str | None, str | None],
|
|
449
406
|
RendererPool,
|
|
450
407
|
]
|
|
451
408
|
] = {}
|
|
@@ -477,6 +434,7 @@ class RendererClient(
|
|
|
477
434
|
model: str,
|
|
478
435
|
*,
|
|
479
436
|
renderer_config: RendererConfig | None = None,
|
|
437
|
+
chat_template_kwargs: Mapping[str, Any] | None = None,
|
|
480
438
|
) -> Renderer | RendererPool:
|
|
481
439
|
if self._renderer is not None:
|
|
482
440
|
return self._renderer
|
|
@@ -493,14 +451,18 @@ class RendererClient(
|
|
|
493
451
|
cfg_key = (
|
|
494
452
|
renderer_config.model_dump_json() if renderer_config is not None else None
|
|
495
453
|
)
|
|
496
|
-
|
|
454
|
+
kwargs_key = _chat_template_kwargs_key(chat_template_kwargs)
|
|
455
|
+
cache_key = (renderer_model, self._pool_size, cfg_key, kwargs_key)
|
|
497
456
|
|
|
498
457
|
with self._shared_pools_lock:
|
|
499
458
|
if cache_key not in self._shared_pools:
|
|
459
|
+
pool_kwargs: dict[str, Any] = {"size": self._pool_size}
|
|
460
|
+
if chat_template_kwargs:
|
|
461
|
+
pool_kwargs["chat_template_kwargs"] = chat_template_kwargs
|
|
500
462
|
self._shared_pools[cache_key] = create_renderer_pool(
|
|
501
463
|
renderer_model,
|
|
502
464
|
renderer_config,
|
|
503
|
-
|
|
465
|
+
**pool_kwargs,
|
|
504
466
|
)
|
|
505
467
|
|
|
506
468
|
return self._shared_pools[cache_key]
|
|
@@ -543,25 +505,14 @@ class RendererClient(
|
|
|
543
505
|
}
|
|
544
506
|
sampling_params: dict[str, Any] = dict(args.pop("extra_body", None) or {})
|
|
545
507
|
|
|
546
|
-
# ``chat_template_kwargs`` belong to the renderer, not the engine
|
|
547
|
-
#
|
|
548
|
-
#
|
|
549
|
-
# effective config so identical kwargs reuse the same renderer.
|
|
508
|
+
# ``chat_template_kwargs`` belong to the renderer, not the engine.
|
|
509
|
+
# Renderers owns resolving them against the concrete chat template;
|
|
510
|
+
# verifiers only routes them into pool construction.
|
|
550
511
|
chat_template_kwargs = sampling_params.pop("chat_template_kwargs", None)
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
renderer_model = (
|
|
555
|
-
self._config.renderer_model_name
|
|
556
|
-
if self._config is not None and self._config.renderer_model_name is not None
|
|
557
|
-
else model
|
|
558
|
-
)
|
|
559
|
-
effective_cfg = _resolve_renderer_config(
|
|
560
|
-
self._config.renderer_config if self._config is not None else None,
|
|
561
|
-
chat_template_kwargs,
|
|
562
|
-
renderer_model=renderer_model,
|
|
512
|
+
renderer = self._get_renderer_or_pool(
|
|
513
|
+
model,
|
|
514
|
+
chat_template_kwargs=chat_template_kwargs,
|
|
563
515
|
)
|
|
564
|
-
renderer = self._get_renderer_or_pool(model, renderer_config=effective_cfg)
|
|
565
516
|
|
|
566
517
|
for key in (
|
|
567
518
|
"temperature",
|
|
@@ -17,10 +17,6 @@ from verifiers.envs.experimental.composable.tasksets.swe.swe_tasksets import (
|
|
|
17
17
|
make_swesmith_taskset,
|
|
18
18
|
make_swesmith_ts_taskset,
|
|
19
19
|
)
|
|
20
|
-
from verifiers.envs.experimental.composable.tasksets.lean.lean_task import (
|
|
21
|
-
LEAN_SYSTEM_PROMPT,
|
|
22
|
-
LeanTaskSet,
|
|
23
|
-
)
|
|
24
20
|
from verifiers.envs.experimental.composable.tasksets.math.math_task import MathTaskSet
|
|
25
21
|
from verifiers.envs.experimental.composable.tasksets.cp.cp_task import (
|
|
26
22
|
CPRubric,
|
|
@@ -59,8 +55,6 @@ __all__ = [
|
|
|
59
55
|
"make_swesmith_rs_taskset",
|
|
60
56
|
"make_swesmith_cpp_taskset",
|
|
61
57
|
"make_swesmith_php_taskset",
|
|
62
|
-
"LeanTaskSet",
|
|
63
|
-
"LEAN_SYSTEM_PROMPT",
|
|
64
58
|
"MathTaskSet",
|
|
65
59
|
"CPTaskSet",
|
|
66
60
|
"CPRubric",
|
|
@@ -193,12 +193,23 @@ class TrainClient(Client):
|
|
|
193
193
|
self.renderer_model_name = renderer_model_name
|
|
194
194
|
self._pool = None
|
|
195
195
|
|
|
196
|
-
def _renderer_pool(
|
|
196
|
+
def _renderer_pool(
|
|
197
|
+
self,
|
|
198
|
+
model: str,
|
|
199
|
+
*,
|
|
200
|
+
chat_template_kwargs: Mapping[str, Any] | None = None,
|
|
201
|
+
):
|
|
202
|
+
renderer_model = self.renderer_model_name or model
|
|
197
203
|
if self._pool is None:
|
|
198
204
|
from renderers import create_renderer_pool
|
|
199
205
|
|
|
206
|
+
pool_kwargs: dict[str, Any] = {"size": self.pool_size}
|
|
207
|
+
if chat_template_kwargs:
|
|
208
|
+
pool_kwargs["chat_template_kwargs"] = chat_template_kwargs
|
|
200
209
|
self._pool = create_renderer_pool(
|
|
201
|
-
|
|
210
|
+
renderer_model,
|
|
211
|
+
self.config,
|
|
212
|
+
**pool_kwargs,
|
|
202
213
|
)
|
|
203
214
|
return self._pool
|
|
204
215
|
|
|
@@ -231,7 +242,6 @@ class TrainClient(Client):
|
|
|
231
242
|
tools = parse_tools(body.get("tools"))
|
|
232
243
|
else:
|
|
233
244
|
prompt, tools = dialect.parse_request(body)
|
|
234
|
-
renderer = self._renderer_pool(model)
|
|
235
245
|
from renderers.client import _maybe_offload, generate
|
|
236
246
|
|
|
237
247
|
wire_tools = [tool_to_wire(t) for t in tools] if tools else None
|
|
@@ -241,7 +251,16 @@ class TrainClient(Client):
|
|
|
241
251
|
prompt_ids: list[int] | None = None
|
|
242
252
|
multi_modal_data = None
|
|
243
253
|
prompt_attribution: RenderedTokens | None = None
|
|
244
|
-
|
|
254
|
+
raw_sampling = sampling_args.model_dump(exclude_none=True)
|
|
255
|
+
sampling_params: dict[str, Any] = dict(
|
|
256
|
+
raw_sampling.pop("extra_body", None) or {}
|
|
257
|
+
)
|
|
258
|
+
chat_template_kwargs = sampling_params.pop("chat_template_kwargs", None)
|
|
259
|
+
sampling_params.update(raw_sampling)
|
|
260
|
+
renderer = self._renderer_pool(
|
|
261
|
+
model,
|
|
262
|
+
chat_template_kwargs=chat_template_kwargs,
|
|
263
|
+
)
|
|
245
264
|
bridged_turn: PendingTurn | None = None
|
|
246
265
|
|
|
247
266
|
# Only build the (O(context)) previous-turn token ids once the cheap guards pass — a
|
|
@@ -5,5 +5,18 @@ here — it imports the optional `textarena` dependency at module load — but s
|
|
|
5
5
|
`verifiers.v1.tasksets.textarena`."""
|
|
6
6
|
|
|
7
7
|
from verifiers.v1.tasksets.harbor import HarborConfig, HarborTaskset
|
|
8
|
+
from verifiers.v1.tasksets.lean import (
|
|
9
|
+
LeanConfig,
|
|
10
|
+
LeanDatasetConfig,
|
|
11
|
+
LeanTask,
|
|
12
|
+
LeanTaskset,
|
|
13
|
+
)
|
|
8
14
|
|
|
9
|
-
__all__ = [
|
|
15
|
+
__all__ = [
|
|
16
|
+
"HarborConfig",
|
|
17
|
+
"HarborTaskset",
|
|
18
|
+
"LeanConfig",
|
|
19
|
+
"LeanDatasetConfig",
|
|
20
|
+
"LeanTask",
|
|
21
|
+
"LeanTaskset",
|
|
22
|
+
]
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
from verifiers.v1.tasksets.lean.scoring import (
|
|
2
|
+
build_starter_file,
|
|
3
|
+
expected_protected_signature,
|
|
4
|
+
parse_compile_output,
|
|
5
|
+
protected_signature_substring_present,
|
|
6
|
+
strip_lean_comments,
|
|
7
|
+
)
|
|
8
|
+
from verifiers.v1.tasksets.lean.taskset import (
|
|
9
|
+
DEFAULT_DOCKER_IMAGE,
|
|
10
|
+
LEAN_PROJECT_PATH,
|
|
11
|
+
PROOF_FILE_PATH,
|
|
12
|
+
LeanConfig,
|
|
13
|
+
LeanDatasetConfig,
|
|
14
|
+
LeanTask,
|
|
15
|
+
LeanTaskset,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
__all__ = [
|
|
19
|
+
"DEFAULT_DOCKER_IMAGE",
|
|
20
|
+
"LEAN_PROJECT_PATH",
|
|
21
|
+
"PROOF_FILE_PATH",
|
|
22
|
+
"LeanConfig",
|
|
23
|
+
"LeanDatasetConfig",
|
|
24
|
+
"LeanTask",
|
|
25
|
+
"LeanTaskset",
|
|
26
|
+
"build_starter_file",
|
|
27
|
+
"expected_protected_signature",
|
|
28
|
+
"parse_compile_output",
|
|
29
|
+
"protected_signature_substring_present",
|
|
30
|
+
"strip_lean_comments",
|
|
31
|
+
]
|