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.
Files changed (215) hide show
  1. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/PKG-INFO +1 -1
  2. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/test_e2e.py +34 -0
  3. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/test_judges.py +8 -27
  4. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/test_taskset.py +2 -6
  5. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/serve/client.py +6 -2
  6. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/.gitignore +0 -0
  7. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/LICENSE +0 -0
  8. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/README.md +0 -0
  9. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/pyproject.toml +0 -0
  10. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/conftest.py +0 -0
  11. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/fixtures/counter_tool_v1.py +0 -0
  12. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/fixtures/duet_v1.py +0 -0
  13. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
  14. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
  15. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/fixtures/echo_tool_v1.py +0 -0
  16. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
  17. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/fixtures/echo_v1.py +0 -0
  18. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/fixtures/pyproject.toml +0 -0
  19. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
  20. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/test_color_codeword_tasks.py +0 -0
  21. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/test_configs.py +0 -0
  22. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/test_envs.py +0 -0
  23. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/test_graph.py +0 -0
  24. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/test_scoring.py +0 -0
  25. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/tests/v1/test_trace.py +0 -0
  26. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/__init__.py +0 -0
  27. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/cli/commands/init.py +0 -0
  28. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/__init__.py +0 -0
  29. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/acp/__init__.py +0 -0
  30. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/acp/runner.py +0 -0
  31. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/agent.py +0 -0
  32. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/__init__.py +0 -0
  33. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/dashboard/__init__.py +0 -0
  34. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/dashboard/base.py +0 -0
  35. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/dashboard/eval.py +0 -0
  36. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/dashboard/replay.py +0 -0
  37. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/dashboard/validate.py +0 -0
  38. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/debug.py +0 -0
  39. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/eval/__init__.py +0 -0
  40. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/eval/main.py +0 -0
  41. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/eval/resume.py +0 -0
  42. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/eval/runner.py +0 -0
  43. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/gepa.py +0 -0
  44. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/init.py +0 -0
  45. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/output.py +0 -0
  46. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/replay.py +0 -0
  47. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/resolve.py +0 -0
  48. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/resume.py +0 -0
  49. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/cli/validate.py +0 -0
  50. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/clients/__init__.py +0 -0
  51. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/clients/base.py +0 -0
  52. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/clients/client.py +0 -0
  53. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/clients/eval.py +0 -0
  54. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/clients/train.py +0 -0
  55. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/__init__.py +0 -0
  56. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/agent.py +0 -0
  57. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/cli/__init__.py +0 -0
  58. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/cli/debug.py +0 -0
  59. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/cli/env.py +0 -0
  60. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/cli/eval.py +0 -0
  61. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/cli/init.py +0 -0
  62. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/cli/replay.py +0 -0
  63. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/cli/validate.py +0 -0
  64. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/client.py +0 -0
  65. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/env.py +0 -0
  66. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/harness.py +0 -0
  67. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/judge.py +0 -0
  68. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/retries.py +0 -0
  69. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/runtime.py +0 -0
  70. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/serve.py +0 -0
  71. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/task.py +0 -0
  72. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/configs/taskset.py +0 -0
  73. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/dialects/__init__.py +0 -0
  74. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/dialects/anthropic.py +0 -0
  75. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/dialects/base.py +0 -0
  76. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/dialects/chat.py +0 -0
  77. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/dialects/responses.py +0 -0
  78. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/env.py +0 -0
  79. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/__init__.py +0 -0
  80. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
  81. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/agentic_judge/env.py +0 -0
  82. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
  83. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/best_of_n/env.py +0 -0
  84. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/isolated_verifier/__init__.py +0 -0
  85. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/isolated_verifier/env.py +0 -0
  86. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
  87. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/single_agent/__init__.py +0 -0
  88. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/single_agent/env.py +0 -0
  89. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/user_sim/__init__.py +0 -0
  90. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/envs/user_sim/env.py +0 -0
  91. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/episode.py +0 -0
  92. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/errors.py +0 -0
  93. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/gepa/__init__.py +0 -0
  94. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/gepa/adapter.py +0 -0
  95. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/gepa/config.py +0 -0
  96. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/gepa/dataset.py +0 -0
  97. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/gepa/reflection.py +0 -0
  98. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/gepa/runner.py +0 -0
  99. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/graph.py +0 -0
  100. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harness.py +0 -0
  101. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/__init__.py +0 -0
  102. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/bash/__init__.py +0 -0
  103. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/bash/harness.py +0 -0
  104. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
  105. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
  106. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/browser_use/program.py +0 -0
  107. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
  108. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
  109. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/codex/__init__.py +0 -0
  110. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/codex/harness.py +0 -0
  111. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
  112. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
  113. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
  114. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
  115. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
  116. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
  117. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
  118. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
  119. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/node.py +0 -0
  120. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/null/__init__.py +0 -0
  121. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/null/harness.py +0 -0
  122. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
  123. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
  124. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/pi/__init__.py +0 -0
  125. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/pi/harness.py +0 -0
  126. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/pool/__init__.py +0 -0
  127. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/pool/harness.py +0 -0
  128. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/prime_agent/__init__.py +0 -0
  129. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/prime_agent/harness.py +0 -0
  130. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
  131. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/rlm/harness.py +0 -0
  132. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
  133. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
  134. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
  135. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/utils/__init__.py +0 -0
  136. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/utils/compaction.py +0 -0
  137. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/utils/core.py +0 -0
  138. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/utils/install.py +0 -0
  139. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/utils/launch.py +0 -0
  140. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/harnesses/utils/mcp.py +0 -0
  141. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/interception/__init__.py +0 -0
  142. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/interception/base.py +0 -0
  143. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/interception/pool.py +0 -0
  144. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/interception/server.py +0 -0
  145. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/interception/tool.py +0 -0
  146. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/interception/tunnel/__init__.py +0 -0
  147. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/interception/tunnel/base.py +0 -0
  148. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/interception/tunnel/custom.py +0 -0
  149. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/interception/tunnel/prime.py +0 -0
  150. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/judge.py +0 -0
  151. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/judges/__init__.py +0 -0
  152. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/judges/reference.py +0 -0
  153. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/judges/reference.txt +0 -0
  154. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/judges/rubric.py +0 -0
  155. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/judges/rubric.txt +0 -0
  156. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/mcp/__init__.py +0 -0
  157. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/mcp/launch.py +0 -0
  158. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/mcp/server.py +0 -0
  159. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/mcp/toolset.py +0 -0
  160. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/rollout.py +0 -0
  161. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/runtimes/__init__.py +0 -0
  162. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/runtimes/base.py +0 -0
  163. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/runtimes/docker/__init__.py +0 -0
  164. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/runtimes/docker/egress.py +0 -0
  165. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/runtimes/limiters.py +0 -0
  166. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/runtimes/modal.py +0 -0
  167. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/runtimes/prime.py +0 -0
  168. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/runtimes/subprocess.py +0 -0
  169. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/semantic.py +0 -0
  170. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/serve/__init__.py +0 -0
  171. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/serve/encoding.py +0 -0
  172. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/serve/pool.py +0 -0
  173. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/serve/server.py +0 -0
  174. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/serve/types.py +0 -0
  175. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/session.py +0 -0
  176. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/state.py +0 -0
  177. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/task.py +0 -0
  178. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/taskset.py +0 -0
  179. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/__init__.py +0 -0
  180. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
  181. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/harbor/env.py +0 -0
  182. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
  183. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/lean/__init__.py +0 -0
  184. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/lean/scoring.py +0 -0
  185. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/lean/taskset.py +0 -0
  186. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
  187. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
  188. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
  189. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/nemo_gym/taskset.py +0 -0
  190. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
  191. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
  192. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
  193. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
  194. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
  195. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/trace.py +0 -0
  196. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/types.py +0 -0
  197. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/__init__.py +0 -0
  198. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/aio.py +0 -0
  199. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/artifacts.py +0 -0
  200. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/compile.py +0 -0
  201. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/decorators.py +0 -0
  202. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/format.py +0 -0
  203. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/generic.py +0 -0
  204. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/git.py +0 -0
  205. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/image.py +0 -0
  206. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/interrupt.py +0 -0
  207. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/loaders.py +0 -0
  208. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/logging.py +0 -0
  209. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/memory.py +0 -0
  210. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/paths.py +0 -0
  211. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/platform.py +0 -0
  212. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/prime.py +0 -0
  213. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/retries.py +0 -0
  214. {verifiers-0.3.2.dev52 → verifiers-0.3.2.dev54}/verifiers/v1/utils/score.py +0 -0
  215. {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.dev52
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
- @pytest.mark.parametrize("weight", [float("nan"), float("inf"), float("-inf")])
586
- def test_judge_composition_weights_are_finite(weight):
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
- ScoreConfig.model_validate({field: weight})
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"].score == 0.25 # decorated rewards still run
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. Loop: awaiting one wave can schedule another
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
- await asyncio.gather(*list(self._cancel_tasks), return_exceptions=True)
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