verifiers 0.3.2.dev52__tar.gz → 0.3.2.dev54__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.3.2.dev52 → verifiers-0.3.2.dev54}/PKG-INFO +1 -1
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/test_e2e.py +34 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/test_judges.py +8 -27
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/test_taskset.py +2 -6
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/serve/client.py +6 -2
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/.gitignore +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/LICENSE +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/README.md +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/pyproject.toml +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/conftest.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/fixtures/duet_v1.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/fixtures/echo_tool_v1.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/fixtures/echo_v1.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/fixtures/pyproject.toml +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/test_color_codeword_tasks.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/test_configs.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/test_envs.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/test_graph.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/test_scoring.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/test_trace.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/cli/commands/init.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/acp/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/acp/runner.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/agent.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/dashboard/eval.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/dashboard/replay.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/debug.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/eval/runner.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/gepa.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/init.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/replay.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/resume.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/validate.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/clients/base.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/clients/train.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/agent.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/cli/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/cli/debug.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/cli/env.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/cli/eval.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/cli/init.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/cli/replay.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/cli/validate.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/client.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/env.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/harness.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/judge.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/retries.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/runtime.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/task.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/taskset.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/dialects/chat.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/env.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/agentic_judge/env.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/best_of_n/env.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/isolated_verifier/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/isolated_verifier/env.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/single_agent/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/single_agent/env.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/user_sim/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/user_sim/env.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/episode.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/errors.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/gepa/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/gepa/adapter.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/gepa/config.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/gepa/dataset.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/gepa/reflection.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/gepa/runner.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/graph.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harness.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/bash/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/bash/harness.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/browser_use/program.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/codex/harness.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/node.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/null/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/null/harness.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/pi/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/pi/harness.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/pool/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/pool/harness.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/prime_agent/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/prime_agent/harness.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/rlm/harness.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/utils/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/utils/compaction.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/utils/core.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/utils/install.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/utils/launch.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/utils/mcp.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/interception/base.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/interception/server.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/interception/tool.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/interception/tunnel/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/interception/tunnel/base.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/interception/tunnel/custom.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/interception/tunnel/prime.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/judge.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/judges/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/judges/reference.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/judges/reference.txt +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/judges/rubric.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/judges/rubric.txt +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/mcp/launch.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/rollout.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/runtimes/base.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/runtimes/docker/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/runtimes/docker/egress.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/runtimes/limiters.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/runtimes/modal.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/runtimes/prime.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/semantic.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/serve/encoding.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/session.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/state.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/task.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/taskset.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/harbor/env.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/lean/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/lean/scoring.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/lean/taskset.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/nemo_gym/taskset.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/trace.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/types.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/aio.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/artifacts.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/compile.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/decorators.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/generic.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/git.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/image.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/interrupt.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/loaders.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/memory.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/paths.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/platform.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/prime.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/retries.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/score.py +0 -0
- {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/version.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: verifiers
|
|
3
|
-
Version: 0.3.2.
|
|
3
|
+
Version: 0.3.2.dev54
|
|
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
|
|
@@ -5,6 +5,9 @@ combinations a test runs — every axis value at least once plus the cross-bound
|
|
|
5
5
|
with distinct networking — instead of fanning the full cross product. prime/modal rows
|
|
6
6
|
are local-only (their marks are excluded in CI)."""
|
|
7
7
|
|
|
8
|
+
import subprocess
|
|
9
|
+
import sys
|
|
10
|
+
|
|
8
11
|
import pytest
|
|
9
12
|
|
|
10
13
|
mark = pytest.mark
|
|
@@ -675,6 +678,37 @@ async def test_multi_agent_env_server(run_v1_server, tmp_path):
|
|
|
675
678
|
assert trace.metrics["duet"] == 1.0
|
|
676
679
|
|
|
677
680
|
|
|
681
|
+
# `_request` parks a cancelled run's fire-and-forget cancel in `_cancel_tasks` with a
|
|
682
|
+
# `discard` done-callback. One loop turn later the sends have finished but the callbacks
|
|
683
|
+
# are still queued behind us, so `close()` meets a set of finished tasks.
|
|
684
|
+
CLOSE_WITH_FINISHED_CANCELS = """
|
|
685
|
+
import asyncio, uuid
|
|
686
|
+
from verifiers.v1.serve.client import EnvClient
|
|
687
|
+
|
|
688
|
+
async def main():
|
|
689
|
+
client = EnvClient("tcp://127.0.0.1:1")
|
|
690
|
+
for _ in range(3):
|
|
691
|
+
task = asyncio.get_running_loop().create_task(client._send_cancel(uuid.uuid4().hex))
|
|
692
|
+
client._cancel_tasks.add(task)
|
|
693
|
+
task.add_done_callback(client._cancel_tasks.discard)
|
|
694
|
+
await asyncio.sleep(0)
|
|
695
|
+
assert all(task.done() for task in client._cancel_tasks) and client._cancel_tasks
|
|
696
|
+
await client.close()
|
|
697
|
+
|
|
698
|
+
asyncio.run(main())
|
|
699
|
+
"""
|
|
700
|
+
|
|
701
|
+
|
|
702
|
+
def test_env_client_close_drains_finished_cancels():
|
|
703
|
+
"""`close()` returns once every fire-and-forget cancel has run, also when all of them
|
|
704
|
+
finished before it looked: the state Ctrl-C leaves behind in served mode. A child
|
|
705
|
+
process bounds the check, since a `close()` that never yields to the loop never lets
|
|
706
|
+
an in-loop timeout fire either."""
|
|
707
|
+
subprocess.run(
|
|
708
|
+
[sys.executable, "-c", CLOSE_WITH_FINISHED_CANCELS], check=True, timeout=30
|
|
709
|
+
)
|
|
710
|
+
|
|
711
|
+
|
|
678
712
|
@pytest.mark.e2e
|
|
679
713
|
async def test_replay_round_trip(run_v1, tmp_path):
|
|
680
714
|
"""eval -> replay -> replay-the-replay. Offline re-scoring must preserve the saved
|
|
@@ -406,12 +406,6 @@ async def test_view_modes(fake_judge_model):
|
|
|
406
406
|
assert "SECRET REASONING" not in fake_judge_model[1]
|
|
407
407
|
|
|
408
408
|
|
|
409
|
-
def test_view_defaults():
|
|
410
|
-
# reference grades the final answer; rubric grades the process by default.
|
|
411
|
-
assert vf.ReferenceJudgeConfig().view == "last_reply"
|
|
412
|
-
assert vf.RubricJudgeConfig(path="x.toml").view == "full_trace"
|
|
413
|
-
|
|
414
|
-
|
|
415
409
|
async def test_rubric_view_full_trace(tmp_path, fake_judge_model):
|
|
416
410
|
# The rubric judge's default view: criteria are judged against the whole transcript.
|
|
417
411
|
judge = rubric_judge(tmp_path)
|
|
@@ -440,14 +434,6 @@ async def test_config_prompt_overrides_class_template(tmp_path, fake_judge_model
|
|
|
440
434
|
# --- reference input/verdict knobs ------------------------------------------------------------
|
|
441
435
|
|
|
442
436
|
|
|
443
|
-
async def test_reference_empty_response_short_circuits(fake_judge_model):
|
|
444
|
-
# An empty reply scores 0 without paying for the (foregone) judge call.
|
|
445
|
-
trace = make_trace(reply="")
|
|
446
|
-
assert await vf.ReferenceJudge().score(trace.task.data, trace) == 0.0
|
|
447
|
-
assert fake_judge_model == []
|
|
448
|
-
assert "judge" not in trace.info
|
|
449
|
-
|
|
450
|
-
|
|
451
437
|
async def test_reference_list_answer(fake_judge_model):
|
|
452
438
|
# A list-valued answer field is judged as multiple acceptable answers, one per line.
|
|
453
439
|
class MultiTask(vf.TaskData):
|
|
@@ -512,6 +498,7 @@ async def test_error_attribution(monkeypatch, tmp_path):
|
|
|
512
498
|
trace = make_trace(reply="")
|
|
513
499
|
await JudgedTask(trace.task.data, taskset.config.task).score(trace, runtime=None)
|
|
514
500
|
assert trace.rewards["reference"].score == 0.0
|
|
501
|
+
assert "judge_calls" not in trace.info # the (foregone) judge call was never made
|
|
515
502
|
# judge failure: unparseable verdict -> the rollout errors, no reward recorded
|
|
516
503
|
trace = make_trace()
|
|
517
504
|
with pytest.raises(vf.TaskError, match="no yes/no verdict"):
|
|
@@ -582,13 +569,13 @@ def test_rubric_rejects_bad_files(tmp_path):
|
|
|
582
569
|
).criteria
|
|
583
570
|
|
|
584
571
|
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
with pytest.raises(ValueError, match="finite number"):
|
|
588
|
-
vf.JudgeConfig(weight=weight)
|
|
589
|
-
for field in ("task_weight", "judge_weight"):
|
|
572
|
+
def test_judge_composition_weights_are_finite():
|
|
573
|
+
for weight in (float("nan"), float("inf"), float("-inf")):
|
|
590
574
|
with pytest.raises(ValueError, match="finite number"):
|
|
591
|
-
|
|
575
|
+
vf.JudgeConfig(weight=weight)
|
|
576
|
+
for field in ("task_weight", "judge_weight"):
|
|
577
|
+
with pytest.raises(ValueError, match="finite number"):
|
|
578
|
+
ScoreConfig.model_validate({field: weight})
|
|
592
579
|
|
|
593
580
|
|
|
594
581
|
async def test_rubric_score(tmp_path, fake_judge_model):
|
|
@@ -700,7 +687,7 @@ async def test_task_score_runs_plugged_judges(tmp_path, fake_judge_model):
|
|
|
700
687
|
taskset = JudgedTaskset(cfg)
|
|
701
688
|
trace = make_trace()
|
|
702
689
|
await JudgedTask(trace.task.data, taskset.config.task).score(trace, runtime=None)
|
|
703
|
-
assert trace.rewards["own"]
|
|
690
|
+
assert trace.rewards["own"] == vf.Reward(score=0.25) # decorated rewards still run
|
|
704
691
|
assert trace.rewards["reference"] == vf.Reward(
|
|
705
692
|
score=1.0, weight=0.5
|
|
706
693
|
) # raw score + weight, under the id-derived name
|
|
@@ -710,9 +697,3 @@ async def test_task_score_runs_plugged_judges(tmp_path, fake_judge_model):
|
|
|
710
697
|
assert (
|
|
711
698
|
len(trace.info["judge_calls"]) == 2
|
|
712
699
|
) # every judge call recorded (rubric = one call)
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
async def test_task_without_judges_scores_as_before():
|
|
716
|
-
trace = make_trace()
|
|
717
|
-
await JudgedTask(trace.task.data).score(trace, runtime=None)
|
|
718
|
-
assert trace.rewards == {"own": vf.Reward(score=0.25)}
|
|
@@ -30,11 +30,6 @@ def idxs(tasks) -> list[int]:
|
|
|
30
30
|
return [task.data.idx for task in tasks]
|
|
31
31
|
|
|
32
32
|
|
|
33
|
-
def test_head_bounds_an_infinite_taskset() -> None:
|
|
34
|
-
tasks = list(InfiniteTaskset(vf.TasksetConfig()).head(5))
|
|
35
|
-
assert idxs(tasks) == [0, 1, 2, 3, 4]
|
|
36
|
-
|
|
37
|
-
|
|
38
33
|
def test_iteration_materializes_a_finite_taskset() -> None:
|
|
39
34
|
taskset = FiniteTaskset(vf.TasksetConfig())
|
|
40
35
|
tasks = list(taskset)
|
|
@@ -84,7 +79,8 @@ def test_head_only_builds_what_the_run_takes() -> None:
|
|
|
84
79
|
built.append(i)
|
|
85
80
|
yield CountTask(vf.TaskData(idx=i, prompt=f"task {i}"))
|
|
86
81
|
|
|
87
|
-
list(RecordingTaskset(vf.TasksetConfig()).head(3))
|
|
82
|
+
tasks = list(RecordingTaskset(vf.TasksetConfig()).head(3))
|
|
83
|
+
assert idxs(tasks) == [0, 1, 2]
|
|
88
84
|
assert built == [0, 1, 2]
|
|
89
85
|
|
|
90
86
|
|
|
@@ -187,8 +187,12 @@ class EnvClient:
|
|
|
187
187
|
self._receiver = None
|
|
188
188
|
# Let scheduled fire-and-forget cancels reach the socket first, or a
|
|
189
189
|
# run cancelled right before close() leaves its server-side rollout
|
|
190
|
-
# running.
|
|
190
|
+
# running. Pop before awaiting: awaiting finished tasks never yields
|
|
191
|
+
# (since CPython 3.12 a gather of them completes eagerly), so their
|
|
192
|
+
# queued `discard` callbacks cannot be what empties the set
|
|
191
193
|
while self._cancel_tasks:
|
|
192
|
-
|
|
194
|
+
task = self._cancel_tasks.pop()
|
|
195
|
+
with contextlib.suppress(asyncio.CancelledError):
|
|
196
|
+
await task
|
|
193
197
|
self.socket.close()
|
|
194
198
|
self.ctx.term()
|
|
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.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/isolated_verifier/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/shared_agentic_judge/__init__.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
|
{verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/browser_use/__init__.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/browser_use/harness.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/browser_use/program.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/claude_code/__init__.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/claude_code/harness.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/hermes_agent/__init__.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/hermes_agent/harness.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/hermes_agent/program.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/kimi_code/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/mini_swe_agent/__init__.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/mini_swe_agent/harness.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/mini_swe_agent/program.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
|
{verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/prime_agent/__init__.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/prime_agent/harness.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/terminus_2/__init__.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/terminus_2/harness.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/terminus_2/program.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
|
{verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/interception/tunnel/__init__.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
|
|
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
|