verifiers 0.1.15.dev402__tar.gz → 0.1.15.dev404__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.dev402 → verifiers-0.1.15.dev404}/PKG-INFO +1 -1
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_renderer_client.py +35 -64
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/clients/renderer_client.py +25 -74
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/clients/train.py +23 -4
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/runtimes/base.py +2 -2
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/.gitignore +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/LICENSE +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/README.md +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/pyproject.toml +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/AGENTS.md +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/README.md +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/conftest.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_browser_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_build_script.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_cli_agent_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_client_auth_errors.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_client_config.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_client_multimodal_types.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_composable_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_context_token_metrics.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_decorator_ranks.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_endpoint_registry.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_env_group.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_env_server.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_environment.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_environment_extra.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_envs.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_error_chain.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_eval_display.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_eval_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_gepa_cli.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_gepa_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_gym_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_harbor_env_mcp.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_imports.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_init_script.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_install_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_interception_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_logging.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_math_rubric.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_maybe_think_parser.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_message_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_message_utils_multimodal.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_multiturn_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_nemorl_client.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_openai_chat_completions_token_client.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_openai_responses_client.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_opencode_rlm_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_openenv_client.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_parser.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_path_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_per_turn_timing.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_pricing_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_prime_plugin.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_renderer_e2e.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_rlm_composable_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_rubric.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_rubric_group.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_sandbox_debug_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_sandbox_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_sandbox_mixin.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_save_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_setup_script.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_singleturn_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_stateful_tool_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_think_parser.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_tool_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_tool_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_trajectory_processing.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_tui_info_formatting.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_types.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_wordle_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_xml_parser.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/conftest.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/fixtures/echo_multi_v0.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/fixtures/echo_tool_v1.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/fixtures/echo_v0.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/fixtures/echo_v1.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/fixtures/pyproject.toml +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/test_color_codeword_tasks.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/test_configs.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/test_e2e.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/test_envs.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/test_graph.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/test_legacy.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/test_trace.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/AGENTS.md +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/commands/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/commands/build.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/commands/eval.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/commands/gepa.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/commands/init.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/commands/install.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/commands/setup.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/plugins/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/plugins/prime.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/tui.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/clients/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/clients/anthropic_messages_client.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/clients/client.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/clients/openai_chat_completions_client.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/clients/openai_completions_client.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/clients/openai_responses_client.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/decorators.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/AGENTS.md +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/env_group.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/environment.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/README.md +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/cli_agent_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/README.md +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/_filter.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/composable_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/harness.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/task.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/README.md +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/openseeker/README.md +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/openseeker/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/openseeker/taskset.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/README.md +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/api_tools/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/api_tools/tool_pdf.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/eval_toolkit.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/evaluator.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/llm_client/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/llm_client/base_client.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/prompts/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/prompts/cache_prompts.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/cache_filesys.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/load_eval_script.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/misc.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/tool_visit.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/url_tools.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/verification_tree.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/open_ended.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/taskset.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/README.md +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/taskset.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/search_tasksets.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/gym_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/harbor_env/env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/mcp_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/opencode_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/utils/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/utils/file_locks.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/README.md +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/browser_env/README.md +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/openenv_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/textarena_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/multiturn_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/python_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/sandbox_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/singleturn_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/stateful_tool_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/tool_env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/errors.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/gepa/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/gepa/adapter.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/gepa/config.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/gepa/display.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/gepa/gepa_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/parsers/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/parsers/maybe_think_parser.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/parsers/parser.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/parsers/think_parser.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/parsers/xml_parser.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rl/README.md +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rl/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rl/inference/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rl/inference/client.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rl/inference/server.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rl/trainer/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rl/trainer/config.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rl/trainer/orchestrator.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rl/trainer/trainer.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rl/trainer/utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rubrics/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rubrics/judge_rubric.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rubrics/math_rubric.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rubrics/rubric.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rubrics/rubric_group.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/build.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/eval.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/gepa.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/init.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/install.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/rl.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/setup.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/train.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/tui.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/vllm.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/serve/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/serve/client/env_client.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/serve/client/zmq_env_client.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/serve/server/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/serve/server/env_router.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/serve/server/env_server.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/serve/server/env_worker.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/serve/server/zmq_env_server.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/serve/types.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/types.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/async_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/client_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/config_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/data_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/display_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/env_config_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/env_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/error_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/eval_display.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/eval_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/heartbeat.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/import_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/install_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/interception_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/logging_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/message_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/metric_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/path_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/pricing_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/process_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/response_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/save_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/serve_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/thread_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/threaded_sandbox_client.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/tool_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/usage_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/version_utils.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/ARCHITECTURE.md +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/GUIDE.md +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/README.md +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/dashboard/eval.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/eval/runner.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/init.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/serve.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/validate.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/clients/config.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/configs/eval.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/configs/init.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/configs/validate.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/decorators.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/dialects/chat.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/env.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/episode.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/errors.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/graph.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harness.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/bash/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/bash/harness.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/bash/program.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/bash_edit/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/bash_edit/harness.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/bash_edit/program.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/codex/harness.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/default/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/default/harness.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/default/program.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/rlm/harness.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/interception/server.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/judge.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/legacy.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/loaders.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/mcp/launch.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/mcp/multiplex.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/mcp/user.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/retries.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/rollout.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/runtimes/docker.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/runtimes/limiters.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/runtimes/modal.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/runtimes/prime.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/serve/client.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/state.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/task.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/taskset.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/tasksets/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/tasksets/lean/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/tasksets/lean/scoring.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/tasksets/lean/taskset.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/trace.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/types.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/utils/install.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/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.dev404
|
|
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",
|
|
@@ -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
|
|
@@ -192,8 +192,8 @@ class Runtime(ABC):
|
|
|
192
192
|
{},
|
|
193
193
|
)
|
|
194
194
|
command = (
|
|
195
|
-
f"{_ENSURE_UV}; uv sync --script {shlex.quote(path)} -q "
|
|
196
|
-
f"&& uv python find --script {shlex.quote(path)}"
|
|
195
|
+
f"{_ENSURE_UV}; uv sync --script {shlex.quote(path)} -q --no-config "
|
|
196
|
+
f"&& uv python find --script {shlex.quote(path)} --no-config"
|
|
197
197
|
)
|
|
198
198
|
result = await self.run(["sh", "-c", command], env or {})
|
|
199
199
|
if result.exit_code != 0:
|
|
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
|
|
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.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/fixtures/tool_response_image_v1.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
|