verifiers 0.2.1.dev55__tar.gz → 0.2.1.dev57__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/PKG-INFO +1 -1
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/__init__.py +12 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/cli/eval/runner.py +4 -1
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/dialects/responses.py +18 -6
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/graph.py +4 -3
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harness.py +8 -2
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/rollout.py +9 -1
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/trace.py +72 -1
- verifiers-0.2.1.dev57/verifiers/v1/utils/version.py +43 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/.gitignore +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/LICENSE +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/README.md +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/pyproject.toml +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/AGENTS.md +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/conftest.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_browser_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_build_script.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_cli_agent_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_client_auth_errors.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_client_config.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_client_multimodal_types.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_composable_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_context_token_metrics.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_decorator_ranks.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_endpoint_registry.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_env_group.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_env_server.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_environment.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_environment_extra.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_error_chain.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_eval_display.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_eval_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_gepa_cli.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_gepa_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_gym_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_harbor_env_mcp.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_imports.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_init_script.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_install_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_interception_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_logging.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_math_rubric.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_maybe_think_parser.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_message_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_message_utils_multimodal.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_multiturn_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_nemorl_client.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_openai_chat_completions_token_client.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_openai_responses_client.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_opencode_rlm_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_openenv_client.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_parser.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_path_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_per_turn_timing.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_pricing_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_prime_plugin.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_renderer_client.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_renderer_e2e.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_rlm_composable_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_rubric.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_rubric_group.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_sandbox_debug_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_sandbox_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_sandbox_mixin.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_save_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_setup_script.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_singleturn_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_stateful_tool_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_think_parser.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_tool_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_tool_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_trajectory_processing.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_tui_info_formatting.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_types.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_xml_parser.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/v1/conftest.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/v1/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/v1/fixtures/echo_multi_v0.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/v1/fixtures/echo_tool_v1.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/v1/fixtures/echo_v0.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/v1/fixtures/echo_v1.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/v1/fixtures/pyproject.toml +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/v1/test_color_codeword_tasks.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/v1/test_configs.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/v1/test_e2e.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/v1/test_envs.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/v1/test_graph.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/v1/test_judges.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/v1/test_legacy.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/v1/test_scoring.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/v1/test_taskset.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/v1/test_trace.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/cli/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/cli/commands/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/cli/commands/build.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/cli/commands/eval.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/cli/commands/gepa.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/cli/commands/init.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/cli/commands/install.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/cli/commands/setup.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/cli/plugins/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/cli/plugins/prime.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/cli/tui.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/clients/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/clients/anthropic_messages_client.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/clients/client.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/clients/openai_chat_completions_client.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/clients/openai_completions_client.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/clients/openai_responses_client.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/clients/renderer_client.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/decorators.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/AGENTS.md +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/env_group.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/environment.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/README.md +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/cli_agent_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/README.md +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/_filter.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/composable_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/harness.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/task.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/gym_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/harbor_env/env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/mcp_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/opencode_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/utils/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/utils/file_locks.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/integrations/README.md +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/integrations/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/integrations/browser_env/README.md +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/integrations/openenv_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/integrations/textarena_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/multiturn_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/python_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/sandbox_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/singleturn_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/stateful_tool_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/envs/tool_env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/errors.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/gepa/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/gepa/adapter.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/gepa/config.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/gepa/display.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/gepa/gepa_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/parsers/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/parsers/maybe_think_parser.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/parsers/parser.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/parsers/think_parser.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/parsers/xml_parser.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/rubrics/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/rubrics/judge_rubric.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/rubrics/math_rubric.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/rubrics/rubric.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/rubrics/rubric_group.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/scripts/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/scripts/build.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/scripts/eval.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/scripts/gepa.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/scripts/init.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/scripts/install.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/scripts/setup.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/scripts/tui.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/serve/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/serve/client/env_client.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/serve/client/zmq_env_client.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/serve/server/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/serve/server/env_router.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/serve/server/env_server.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/serve/server/env_worker.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/serve/server/zmq_env_server.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/serve/types.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/types.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/async_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/client_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/config_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/data_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/display_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/env_config_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/env_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/error_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/eval_display.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/eval_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/heartbeat.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/import_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/install_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/interception_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/logging_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/message_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/metric_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/path_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/pricing_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/process_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/response_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/save_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/serve_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/thread_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/threaded_sandbox_client.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/tool_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/usage_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/utils/version_utils.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/cli/dashboard/eval.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/cli/dashboard/replay.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/cli/debug.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/cli/gepa.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/cli/init.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/cli/replay.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/cli/serve.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/cli/validate.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/clients/config.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/clients/train.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/configs/debug.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/configs/eval.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/configs/init.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/configs/replay.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/configs/validate.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/decorators.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/dialects/chat.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/env.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/episode.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/errors.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/gepa/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/gepa/adapter.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/gepa/config.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/gepa/dataset.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/gepa/reflection.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/gepa/runner.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/codex/harness.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/default/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/default/harness.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/default/program.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/null/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/null/harness.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/null/program.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/pi/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/pi/harness.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/rlm/harness.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/interception/base.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/interception/server.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/interception/tunnel/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/interception/tunnel/base.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/interception/tunnel/custom.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/interception/tunnel/prime.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/judge.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/judges/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/judges/reference.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/judges/reference.txt +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/judges/rubric.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/judges/rubric.txt +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/legacy.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/loaders.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/mcp/launch.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/mcp/user.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/push.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/retries.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/runtimes/base.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/runtimes/docker.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/runtimes/limiters.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/runtimes/modal.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/runtimes/prime.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/scoring.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/serve/client.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/session.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/state.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/task.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/taskset.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/tasksets/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/tasksets/lean/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/tasksets/lean/scoring.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/tasksets/lean/taskset.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/types.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/utils/aio.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/utils/generic.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/utils/image.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/utils/install.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/utils/interrupt.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/utils/memory.py +0 -0
- {verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/v1/utils/sampling.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: verifiers
|
|
3
|
-
Version: 0.2.1.
|
|
3
|
+
Version: 0.2.1.dev57
|
|
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
|
|
@@ -100,12 +100,18 @@ from verifiers.v1.mcp import (
|
|
|
100
100
|
)
|
|
101
101
|
from verifiers.v1.graph import MessageNode
|
|
102
102
|
from verifiers.v1.trace import (
|
|
103
|
+
TRACE_VERSION,
|
|
104
|
+
AgentInfo,
|
|
103
105
|
Branch,
|
|
104
106
|
Error,
|
|
107
|
+
EvalRunInfo,
|
|
108
|
+
RunInfo,
|
|
105
109
|
TimeSpan,
|
|
106
110
|
Timing,
|
|
107
111
|
Trace,
|
|
108
112
|
TraceTask,
|
|
113
|
+
TrainRunInfo,
|
|
114
|
+
VersionInfo,
|
|
109
115
|
WireTrace,
|
|
110
116
|
)
|
|
111
117
|
from verifiers.v1.types import (
|
|
@@ -162,6 +168,12 @@ __all__ = [
|
|
|
162
168
|
"Trace",
|
|
163
169
|
"TraceTask",
|
|
164
170
|
"WireTrace",
|
|
171
|
+
"TRACE_VERSION",
|
|
172
|
+
"AgentInfo",
|
|
173
|
+
"RunInfo",
|
|
174
|
+
"EvalRunInfo",
|
|
175
|
+
"TrainRunInfo",
|
|
176
|
+
"VersionInfo",
|
|
165
177
|
"State",
|
|
166
178
|
"StateT",
|
|
167
179
|
"MessageNode",
|
|
@@ -12,7 +12,7 @@ from verifiers.v1.cli.dashboard import dashboard
|
|
|
12
12
|
from verifiers.v1.cli.output import append_trace, output_path, save_config
|
|
13
13
|
from verifiers.v1.decorators import discover_decorated
|
|
14
14
|
from verifiers.v1.env import Environment
|
|
15
|
-
from verifiers.v1.trace import Trace
|
|
15
|
+
from verifiers.v1.trace import EvalRunInfo, Trace
|
|
16
16
|
from verifiers.v1.utils.sampling import sample
|
|
17
17
|
|
|
18
18
|
logger = logging.getLogger(__name__)
|
|
@@ -67,6 +67,7 @@ async def run_eval(env: Environment, config: EvalConfig) -> list[Trace]:
|
|
|
67
67
|
write_lock = asyncio.Lock()
|
|
68
68
|
|
|
69
69
|
async def on_complete(trace: Trace) -> None:
|
|
70
|
+
trace.stamp(EvalRunInfo(id=config.uuid))
|
|
70
71
|
await append_trace(out, trace, write_lock)
|
|
71
72
|
|
|
72
73
|
# Shared tool servers (if any) come up once here and their URLs flow into every rollout
|
|
@@ -221,6 +222,7 @@ async def run_eval_server(config: EvalConfig) -> list[Trace]:
|
|
|
221
222
|
sampling=config.sampling,
|
|
222
223
|
)
|
|
223
224
|
for trace in traces:
|
|
225
|
+
trace.stamp(EvalRunInfo(id=config.uuid))
|
|
224
226
|
await append_trace(out, trace, write_lock)
|
|
225
227
|
return traces
|
|
226
228
|
|
|
@@ -232,6 +234,7 @@ async def run_eval_server(config: EvalConfig) -> list[Trace]:
|
|
|
232
234
|
model=config.model,
|
|
233
235
|
sampling=config.sampling,
|
|
234
236
|
)
|
|
237
|
+
trace.stamp(EvalRunInfo(id=config.uuid))
|
|
235
238
|
await append_trace(out, trace, write_lock)
|
|
236
239
|
return [trace]
|
|
237
240
|
|
|
@@ -21,10 +21,6 @@ from openai.types.responses import (
|
|
|
21
21
|
ResponseUsage,
|
|
22
22
|
)
|
|
23
23
|
from openai.types.responses.response_input_param import FunctionCallOutput
|
|
24
|
-
from openai.types.responses.response_usage import (
|
|
25
|
-
InputTokensDetails,
|
|
26
|
-
OutputTokensDetails,
|
|
27
|
-
)
|
|
28
24
|
from pydantic import BaseModel, ConfigDict
|
|
29
25
|
|
|
30
26
|
from verifiers.v1.dialects.base import Dialect, StreamParser, iter_sse_reverse
|
|
@@ -58,11 +54,27 @@ _TERMINAL_MARKERS = tuple(
|
|
|
58
54
|
_SAMPLING_KEYS = frozenset({"temperature", "top_p", "max_output_tokens", "max_tokens"})
|
|
59
55
|
|
|
60
56
|
|
|
57
|
+
class ProviderUsageInputTokensDetails(BaseModel):
|
|
58
|
+
"""Permissive input token details: OpenAI-compatible providers may omit fields
|
|
59
|
+
the pinned SDK declares required (e.g. ``cache_write_tokens``)."""
|
|
60
|
+
|
|
61
|
+
model_config = ConfigDict(extra="allow")
|
|
62
|
+
cache_write_tokens: int | None = None
|
|
63
|
+
cached_tokens: int | None = None
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
class ProviderUsageOutputTokensDetails(BaseModel):
|
|
67
|
+
"""Permissive output token details: providers may omit ``reasoning_tokens``."""
|
|
68
|
+
|
|
69
|
+
model_config = ConfigDict(extra="allow")
|
|
70
|
+
reasoning_tokens: int | None = None
|
|
71
|
+
|
|
72
|
+
|
|
61
73
|
class ProviderUsage(ResponseUsage):
|
|
62
74
|
"""Responses usage with optional detail objects for OpenAI-compatible providers."""
|
|
63
75
|
|
|
64
|
-
input_tokens_details:
|
|
65
|
-
output_tokens_details:
|
|
76
|
+
input_tokens_details: ProviderUsageInputTokensDetails | None = None
|
|
77
|
+
output_tokens_details: ProviderUsageOutputTokensDetails | None = None
|
|
66
78
|
|
|
67
79
|
|
|
68
80
|
class OpenAIResponse(BaseModel):
|
|
@@ -26,6 +26,7 @@ from typing import TYPE_CHECKING, Any
|
|
|
26
26
|
|
|
27
27
|
import numpy as np
|
|
28
28
|
from pydantic import ConfigDict, Field, field_serializer, field_validator
|
|
29
|
+
from pydantic.json_schema import SkipJsonSchema
|
|
29
30
|
from renderers.base import MultiModalData, PlaceholderRange, RenderedTokens
|
|
30
31
|
|
|
31
32
|
from verifiers.v1.types import (
|
|
@@ -105,7 +106,7 @@ class MessageNode(StrictBaseModel):
|
|
|
105
106
|
`mask`; empty for input messages."""
|
|
106
107
|
finish_reason: FinishReason = None
|
|
107
108
|
"""The response's finish reason (assistant nodes only) — kept for truncation detection."""
|
|
108
|
-
multi_modal_data: MultiModalData | None = None
|
|
109
|
+
multi_modal_data: SkipJsonSchema[MultiModalData | None] = None
|
|
109
110
|
"""The renderer items for the images this message's content introduces (pixel tensors,
|
|
110
111
|
grids, hashes, placeholders) — the only carrier of the pixels from the env server to the
|
|
111
112
|
trainer. `Branch.multi_modal_data` concatenates them along the path into the training
|
|
@@ -114,13 +115,13 @@ class MessageNode(StrictBaseModel):
|
|
|
114
115
|
usage: Usage | None = None
|
|
115
116
|
"""Provider-reported token usage for this message's response (assistant nodes). Preserved
|
|
116
117
|
on the wire and on disk, including cache-read tokens when the provider reports them."""
|
|
117
|
-
routed_experts: np.ndarray | None = None
|
|
118
|
+
routed_experts: SkipJsonSchema[np.ndarray | None] = None
|
|
118
119
|
"""This node's slice of the MoE expert-routing array — uint8 `[len(token_ids), layers,
|
|
119
120
|
top_k]`, the expert ids inference selected for exactly this node's tokens. Attributed from
|
|
120
121
|
the turn's `generate` payload by `_attribute_routed_experts`; `Branch.routed_experts`
|
|
121
122
|
concatenates these along the path into the trainer's router-replay input. Rides the wire as
|
|
122
123
|
a raw-bytes `__nd__` dict; kept off disk by the dump-site `exclude` in prime-rl."""
|
|
123
|
-
kept_tokens: KeptTokens | None = None
|
|
124
|
+
kept_tokens: SkipJsonSchema[KeptTokens | None] = None
|
|
124
125
|
"""Kept-set sampling masks for this node's sampled tokens, decoded: `ids` flat int32
|
|
125
126
|
in position order, `counts` the per-token kept-set sizes (aligned with `logprobs`;
|
|
126
127
|
0 = no mask). Assistant nodes only; consumed via `Branch.kept_tokens` for
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
1
3
|
import logging
|
|
2
4
|
import os
|
|
3
5
|
from abc import ABC, abstractmethod
|
|
4
6
|
from collections.abc import Mapping
|
|
5
|
-
from typing import ClassVar, Generic, TypeVar
|
|
7
|
+
from typing import TYPE_CHECKING, ClassVar, Generic, TypeVar
|
|
6
8
|
|
|
7
9
|
from pydantic import Field
|
|
8
10
|
from pydantic_config import BaseConfig
|
|
@@ -18,9 +20,13 @@ from verifiers.v1.runtimes import (
|
|
|
18
20
|
SubprocessConfig,
|
|
19
21
|
)
|
|
20
22
|
from verifiers.v1.task import TaskData
|
|
21
|
-
from verifiers.v1.trace import Trace
|
|
22
23
|
from verifiers.v1.types import ID, Messages
|
|
23
24
|
|
|
25
|
+
if TYPE_CHECKING:
|
|
26
|
+
# Annotation-only: trace.py embeds HarnessConfig (AgentInfo), so the runtime
|
|
27
|
+
# import goes trace -> harness, not the other way around.
|
|
28
|
+
from verifiers.v1.trace import Trace
|
|
29
|
+
|
|
24
30
|
logger = logging.getLogger(__name__)
|
|
25
31
|
|
|
26
32
|
|
|
@@ -5,6 +5,7 @@ from collections.abc import AsyncIterator
|
|
|
5
5
|
from contextlib import asynccontextmanager
|
|
6
6
|
from enum import StrEnum
|
|
7
7
|
|
|
8
|
+
from verifiers import __version__
|
|
8
9
|
from verifiers.v1.harness import Harness
|
|
9
10
|
from verifiers.v1.clients import ModelContext
|
|
10
11
|
from verifiers.v1.decorators import discover_decorated, invoke
|
|
@@ -30,7 +31,8 @@ from verifiers.v1.runtimes import (
|
|
|
30
31
|
from verifiers.v1.mcp import SharedToolServer, serve_tools, serve_user
|
|
31
32
|
from verifiers.v1.state import state_cls
|
|
32
33
|
from verifiers.v1.task import Task
|
|
33
|
-
from verifiers.v1.trace import TraceTask,
|
|
34
|
+
from verifiers.v1.trace import AgentInfo, Trace, TraceTask, VersionInfo
|
|
35
|
+
from verifiers.v1.utils.version import verifiers_commit
|
|
34
36
|
|
|
35
37
|
logger = logging.getLogger(__name__)
|
|
36
38
|
|
|
@@ -109,6 +111,12 @@ class Rollout:
|
|
|
109
111
|
trace: Trace = Trace(
|
|
110
112
|
task=TraceTask(type=type(self.task).__name__, data=self.task.data),
|
|
111
113
|
state=state_cls(type(self.task))(),
|
|
114
|
+
verifiers=VersionInfo(version=__version__, commit=verifiers_commit()),
|
|
115
|
+
agent=AgentInfo(
|
|
116
|
+
model=self.ctx.model,
|
|
117
|
+
sampling=self.ctx.sampling,
|
|
118
|
+
harness=self.harness.config,
|
|
119
|
+
),
|
|
112
120
|
)
|
|
113
121
|
self.trace = trace # expose for the --rich dashboard
|
|
114
122
|
self.phase = Phase.BOOT # leaving the queue: the runtime boots now
|
|
@@ -5,7 +5,7 @@ import time
|
|
|
5
5
|
import traceback
|
|
6
6
|
import uuid
|
|
7
7
|
from collections.abc import Mapping
|
|
8
|
-
from typing import TYPE_CHECKING, Any, Generic, TypeVar
|
|
8
|
+
from typing import TYPE_CHECKING, Annotated, Any, Generic, Literal, TypeVar
|
|
9
9
|
|
|
10
10
|
import numpy as np
|
|
11
11
|
from pydantic import Field, PrivateAttr
|
|
@@ -17,6 +17,7 @@ if TYPE_CHECKING:
|
|
|
17
17
|
from verifiers.v1 import graph
|
|
18
18
|
from verifiers.v1.errors import ProviderError
|
|
19
19
|
from verifiers.v1.graph import MessageNode
|
|
20
|
+
from verifiers.v1.harness import HarnessConfig
|
|
20
21
|
from verifiers.v1.runtimes import RuntimeInfo
|
|
21
22
|
from verifiers.v1.state import State, StateT
|
|
22
23
|
from verifiers.v1.task import DataT, WireTaskData
|
|
@@ -24,6 +25,7 @@ from verifiers.v1.types import (
|
|
|
24
25
|
AssistantMessage,
|
|
25
26
|
KeptTokens,
|
|
26
27
|
Messages,
|
|
28
|
+
SamplingConfig,
|
|
27
29
|
StrictBaseModel,
|
|
28
30
|
Tool,
|
|
29
31
|
ToolMessage,
|
|
@@ -212,6 +214,59 @@ _NODE_DUMP_EXCLUDE: dict = {
|
|
|
212
214
|
"""Raw tensor fields kept on the msgpack wire but excluded from JSON records."""
|
|
213
215
|
|
|
214
216
|
|
|
217
|
+
TRACE_VERSION = 1
|
|
218
|
+
"""Version of the trace record schema (see `Trace.model_json_schema()`). Bumped on
|
|
219
|
+
breaking shape changes; optional-with-default fields are additive and don't bump it."""
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
class EvalRunInfo(StrictBaseModel):
|
|
223
|
+
"""An eval run, stamped by the consumer (the eval CLI / a trainer's inline eval)."""
|
|
224
|
+
|
|
225
|
+
type: Literal["eval"] = "eval"
|
|
226
|
+
id: str | None = None
|
|
227
|
+
"""The producing run: the eval CLI stamps its run uuid (a resumed eval counts as
|
|
228
|
+
a new run; kept traces keep their original id), trainers stamp their own."""
|
|
229
|
+
step: int | None = None
|
|
230
|
+
"""The training step an inline eval was triggered at, stamped by the trainer;
|
|
231
|
+
None for a standalone eval (the eval CLI doesn't set it)."""
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
class TrainRunInfo(StrictBaseModel):
|
|
235
|
+
"""A training run, stamped by the trainer."""
|
|
236
|
+
|
|
237
|
+
type: Literal["train"] = "train"
|
|
238
|
+
id: str | None = None
|
|
239
|
+
"""The trainer's run identifier."""
|
|
240
|
+
step: int | None = None
|
|
241
|
+
"""The training step this rollout belongs to."""
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
RunInfo = Annotated[EvalRunInfo | TrainRunInfo, Field(discriminator="type")]
|
|
245
|
+
"""The run a trace belongs to, discriminated on `type`."""
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
class VersionInfo(StrictBaseModel):
|
|
249
|
+
"""The verifiers build that produced this trace."""
|
|
250
|
+
|
|
251
|
+
version: str
|
|
252
|
+
"""The installed verifiers package version."""
|
|
253
|
+
commit: str | None = None
|
|
254
|
+
"""The verifiers git commit, when resolvable (a git-pinned install or a source
|
|
255
|
+
checkout); None otherwise (e.g. a PyPI wheel)."""
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
class AgentInfo(StrictBaseModel):
|
|
259
|
+
"""The agent that produced this trace's sampled turns."""
|
|
260
|
+
|
|
261
|
+
model: str
|
|
262
|
+
"""The model identifier requested from the client."""
|
|
263
|
+
sampling: SamplingConfig | None = None
|
|
264
|
+
"""The resolved sampling settings the rollout ran with."""
|
|
265
|
+
harness: HarnessConfig | None = None
|
|
266
|
+
"""The driving harness's config. Typed as the base config, so a custom harness's
|
|
267
|
+
extra fields don't serialize — records round-trip without importing the harness."""
|
|
268
|
+
|
|
269
|
+
|
|
215
270
|
class TraceTask(StrictBaseModel, Generic[DataT]):
|
|
216
271
|
"""The task as recorded on the trace: the row (`data`, the wire half — fully typed,
|
|
217
272
|
flows into scoring) plus the Task class name that produced the rollout (`type`) —
|
|
@@ -234,6 +289,15 @@ class Trace(StrictBaseModel, Generic[DataT, StateT]):
|
|
|
234
289
|
"""The task being solved: its class name (`task.type`) + its row (`task.data`)."""
|
|
235
290
|
runtime: RuntimeInfo | None = None
|
|
236
291
|
"""The runtime's full config plus its provisioned resource ID."""
|
|
292
|
+
version: int = TRACE_VERSION
|
|
293
|
+
"""The trace record schema this trace serializes as."""
|
|
294
|
+
verifiers: VersionInfo | None = None
|
|
295
|
+
"""The verifiers build that produced this trace, stamped at rollout start —
|
|
296
|
+
replayed/re-read traces keep the build that originally produced them."""
|
|
297
|
+
run: RunInfo | None = None
|
|
298
|
+
"""The run this trace belongs to (eval or train), consumer-stamped."""
|
|
299
|
+
agent: AgentInfo | None = None
|
|
300
|
+
"""The agent (model, sampling, harness) that produced the sampled turns."""
|
|
237
301
|
nodes: list[MessageNode] = Field(default_factory=list)
|
|
238
302
|
"""The message graph; branches are derived views and storage stays linear in turns."""
|
|
239
303
|
tools: list[Tool] | None = None
|
|
@@ -414,6 +478,13 @@ class Trace(StrictBaseModel, Generic[DataT, StateT]):
|
|
|
414
478
|
)
|
|
415
479
|
self.rewards[name] = contribution
|
|
416
480
|
|
|
481
|
+
def stamp(self, run: RunInfo | None = None, **info: Any) -> None:
|
|
482
|
+
"""Stamp identity only the consumer knows (the eval CLI / a trainer) onto the
|
|
483
|
+
trace; anything beyond `run` lands in `info`."""
|
|
484
|
+
if run is not None:
|
|
485
|
+
self.run = run
|
|
486
|
+
self.info.update(info)
|
|
487
|
+
|
|
417
488
|
def stop(self, condition: str = "done") -> None:
|
|
418
489
|
self.is_completed = True
|
|
419
490
|
if self.stop_condition is None:
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"""Build provenance: the installed verifiers package's git commit, when resolvable."""
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
import subprocess
|
|
5
|
+
from functools import cache
|
|
6
|
+
from importlib.metadata import PackageNotFoundError, distribution
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@cache
|
|
11
|
+
def verifiers_commit() -> str | None:
|
|
12
|
+
"""The git commit of the installed verifiers, when resolvable: a git-pinned
|
|
13
|
+
install records it in `direct_url.json` (`vcs_info.commit_id`); an editable or
|
|
14
|
+
source checkout answers `git rev-parse`. None otherwise (e.g. a PyPI wheel)."""
|
|
15
|
+
try:
|
|
16
|
+
direct_url = distribution("verifiers").read_text("direct_url.json")
|
|
17
|
+
if direct_url:
|
|
18
|
+
commit = json.loads(direct_url).get("vcs_info", {}).get("commit_id")
|
|
19
|
+
if commit:
|
|
20
|
+
return commit
|
|
21
|
+
except (PackageNotFoundError, ValueError):
|
|
22
|
+
pass
|
|
23
|
+
package_dir = Path(__file__).resolve().parents[2]
|
|
24
|
+
try:
|
|
25
|
+
result = subprocess.run(
|
|
26
|
+
["git", "-C", str(package_dir), "rev-parse", "--show-toplevel", "HEAD"],
|
|
27
|
+
capture_output=True,
|
|
28
|
+
text=True,
|
|
29
|
+
timeout=5,
|
|
30
|
+
)
|
|
31
|
+
except (OSError, subprocess.TimeoutExpired):
|
|
32
|
+
return None
|
|
33
|
+
if result.returncode != 0:
|
|
34
|
+
return None
|
|
35
|
+
lines = result.stdout.splitlines()
|
|
36
|
+
if len(lines) != 2:
|
|
37
|
+
return None
|
|
38
|
+
toplevel, commit = lines
|
|
39
|
+
# git discovers `.git` upward, so an installed package in a venv inside an
|
|
40
|
+
# unrelated git project would answer with that project's repo.
|
|
41
|
+
if Path(toplevel).resolve() != package_dir.parent:
|
|
42
|
+
return None
|
|
43
|
+
return commit or None
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/tests/test_openai_chat_completions_token_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.2.1.dev55 → verifiers-0.2.1.dev57}/verifiers/clients/anthropic_messages_client.py
RENAMED
|
File without changes
|
|
File without changes
|