inspect-ai 0.3.50__tar.gz → 0.3.52__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 (813) hide show
  1. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/.pre-commit-config.yaml +1 -1
  2. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/CHANGELOG.md +14 -0
  3. {inspect_ai-0.3.50/src/inspect_ai.egg-info → inspect_ai-0.3.52}/PKG-INFO +2 -2
  4. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/models.qmd +10 -0
  5. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/workflow.qmd +4 -0
  6. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/pyproject.toml +1 -1
  7. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_cli/eval.py +15 -2
  8. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/core/config.py +4 -0
  9. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/core/panel.py +1 -1
  10. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/textual/widgets/task_detail.py +46 -13
  11. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/textual/widgets/transcript.py +4 -17
  12. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_eval/eval.py +13 -1
  13. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_eval/evalset.py +3 -0
  14. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_eval/task/log.py +6 -1
  15. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_eval/task/run.py +4 -2
  16. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_eval/task/util.py +15 -6
  17. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/logger.py +10 -2
  18. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/samples.py +7 -0
  19. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/transcript.py +8 -0
  20. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/dist/assets/index.js +25 -12
  21. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/SampleDisplay.mjs +18 -5
  22. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/log/_log.py +3 -0
  23. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_call_tools.py +2 -6
  24. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_model.py +18 -4
  25. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/azureai.py +22 -2
  26. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_render.py +7 -6
  27. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_trace.py +1 -1
  28. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/solver/_basic_agent.py +8 -1
  29. inspect_ai-0.3.52/src/inspect_ai/tool/_tool_transcript.py +28 -0
  30. {inspect_ai-0.3.50 → inspect_ai-0.3.52/src/inspect_ai.egg-info}/PKG-INFO +2 -2
  31. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai.egg-info/SOURCES.txt +2 -0
  32. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai.egg-info/requires.txt +1 -1
  33. inspect_ai-0.3.52/tests/test_sample_id.py +28 -0
  34. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/.github/dependabot.yml +0 -0
  35. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/.github/pull_request_template.md +0 -0
  36. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/.github/workflows/build.yml +0 -0
  37. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/.github/workflows/docs.yml +0 -0
  38. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/.github/workflows/log_viewer.yml +0 -0
  39. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/.github/workflows/pypi.yml +0 -0
  40. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/.github/workflows/vscode.yml +0 -0
  41. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/.gitignore +0 -0
  42. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/.vscode/extensions.json +0 -0
  43. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/.vscode/settings.json +0 -0
  44. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/CITATION.cff +0 -0
  45. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/LICENSE +0 -0
  46. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/Makefile +0 -0
  47. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/README.md +0 -0
  48. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/.gitignore +0 -0
  49. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/CNAME +0 -0
  50. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/_errors_and_retries.md +0 -0
  51. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/_quarto.yml +0 -0
  52. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/_sample-preservation.md +0 -0
  53. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/_sandboxenv-interface.md +0 -0
  54. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/_tools-annotations-required.md +0 -0
  55. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/_tools-scaffold.md +0 -0
  56. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/_trace.md +0 -0
  57. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/_variables.yml +0 -0
  58. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/agents-api.qmd +0 -0
  59. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/agents.qmd +0 -0
  60. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/approval.qmd +0 -0
  61. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/caching.qmd +0 -0
  62. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/datasets.qmd +0 -0
  63. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/errors-and-limits.qmd +0 -0
  64. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/eval-logs.qmd +0 -0
  65. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/eval-sets.qmd +0 -0
  66. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/examples/examples.bib +0 -0
  67. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/examples/examples.css +0 -0
  68. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/examples/examples.ejs +0 -0
  69. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/examples/examples.yml +0 -0
  70. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/examples/index.qmd +0 -0
  71. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/extensions.qmd +0 -0
  72. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/aisi-logo.png +0 -0
  73. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/eval-log.png +0 -0
  74. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/inspect-activity-bar.png +0 -0
  75. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/inspect-multiple-models.png +0 -0
  76. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/inspect-view-answers.png +0 -0
  77. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/inspect-view-filter.png +0 -0
  78. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/inspect-view-history.png +0 -0
  79. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/inspect-view-home.png +0 -0
  80. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/inspect-view-info.png +0 -0
  81. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/inspect-view-logging-console.png +0 -0
  82. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/inspect-view-logging.png +0 -0
  83. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/inspect-view-main.png +0 -0
  84. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/inspect-view-messages.png +0 -0
  85. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/inspect-view-metadata.png +0 -0
  86. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/inspect-view-scoring.png +0 -0
  87. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/inspect-view-sort.png +0 -0
  88. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/inspect-view-splash.png +0 -0
  89. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/inspect-vscode-config.png +0 -0
  90. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/inspect-vscode-install.png +0 -0
  91. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/inspect-vscode-logview.png +0 -0
  92. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/inspect-vscode-output-channel.png +0 -0
  93. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/inspect-vscode-run-task.png +0 -0
  94. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/inspect.png +0 -0
  95. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/logs-drop-down.png +0 -0
  96. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/logs-open-button.png +0 -0
  97. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/logs.png +0 -0
  98. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/popularity.png +0 -0
  99. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/python-tool-view.png +0 -0
  100. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/rate-limit.png +0 -0
  101. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/running-theory.png +0 -0
  102. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/toolenv-no-cleanup.png +0 -0
  103. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/images/web-browser-tool-view.png +0 -0
  104. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/index.qmd +0 -0
  105. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/interactivity.qmd +0 -0
  106. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/llms.txt +0 -0
  107. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/log-viewer.qmd +0 -0
  108. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/parallelism.qmd +0 -0
  109. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/scorers.qmd +0 -0
  110. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/scripts/post-render.sh +0 -0
  111. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/solvers.qmd +0 -0
  112. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/theme.scss +0 -0
  113. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/tools.qmd +0 -0
  114. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/tutorial.qmd +0 -0
  115. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/docs/vscode.qmd +0 -0
  116. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/approval/README.md +0 -0
  117. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/approval/approval.py +0 -0
  118. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/approval/approval.yaml +0 -0
  119. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/biology_qa.py +0 -0
  120. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/browser/browser.py +0 -0
  121. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/browser/compose.yaml +0 -0
  122. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/cache.py +0 -0
  123. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/evalset.py +0 -0
  124. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/hello_world.py +0 -0
  125. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/images/ballons.png +0 -0
  126. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/images/bike.png +0 -0
  127. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/images/images.jsonl +0 -0
  128. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/images/images.py +0 -0
  129. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/intervention/Dockerfile +0 -0
  130. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/intervention/README.md +0 -0
  131. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/intervention/compose.yaml +0 -0
  132. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/intervention/intervention.py +0 -0
  133. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/langchain/.env.example +0 -0
  134. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/langchain/.gitignore +0 -0
  135. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/langchain/README.md +0 -0
  136. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/langchain/inspect_langchain.py +0 -0
  137. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/langchain/requirements.txt +0 -0
  138. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/langchain/wikipedia.jsonl +0 -0
  139. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/langchain/wikipedia.py +0 -0
  140. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/popularity.py +0 -0
  141. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/security_guide.py +0 -0
  142. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/theory_of_mind.py +0 -0
  143. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/examples/tool_use.py +0 -0
  144. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/requirements.txt +0 -0
  145. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/setup.cfg +0 -0
  146. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/__init__.py +0 -0
  147. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/__main__.py +0 -0
  148. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_cli/cache.py +0 -0
  149. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_cli/common.py +0 -0
  150. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_cli/info.py +0 -0
  151. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_cli/list.py +0 -0
  152. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_cli/log.py +0 -0
  153. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_cli/main.py +0 -0
  154. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_cli/sandbox.py +0 -0
  155. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_cli/score.py +0 -0
  156. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_cli/util.py +0 -0
  157. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_cli/view.py +0 -0
  158. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/__init__.py +0 -0
  159. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/core/active.py +0 -0
  160. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/core/display.py +0 -0
  161. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/core/footer.py +0 -0
  162. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/core/group.py +0 -0
  163. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/core/progress.py +0 -0
  164. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/core/results.py +0 -0
  165. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/core/rich.py +0 -0
  166. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/core/textual.py +0 -0
  167. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/rich/__init__.py +0 -0
  168. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/rich/display.py +0 -0
  169. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/textual/app.py +0 -0
  170. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/textual/app.tcss +0 -0
  171. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/textual/display.py +0 -0
  172. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/textual/theme.py +0 -0
  173. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/textual/widgets/clock.py +0 -0
  174. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/textual/widgets/console.py +0 -0
  175. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/textual/widgets/footer.py +0 -0
  176. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/textual/widgets/samples.py +0 -0
  177. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/textual/widgets/tasks.py +0 -0
  178. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/textual/widgets/titlebar.py +0 -0
  179. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_display/textual/widgets/toggle.py +0 -0
  180. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_eval/context.py +0 -0
  181. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_eval/list.py +0 -0
  182. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_eval/loader.py +0 -0
  183. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_eval/registry.py +0 -0
  184. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_eval/run.py +0 -0
  185. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_eval/score.py +0 -0
  186. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_eval/task/__init__.py +0 -0
  187. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_eval/task/constants.py +0 -0
  188. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_eval/task/epochs.py +0 -0
  189. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_eval/task/error.py +0 -0
  190. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_eval/task/generate.py +0 -0
  191. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_eval/task/images.py +0 -0
  192. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_eval/task/results.py +0 -0
  193. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_eval/task/rundir.py +0 -0
  194. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_eval/task/sandbox.py +0 -0
  195. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_eval/task/task.py +0 -0
  196. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/_async.py +0 -0
  197. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/appdirs.py +0 -0
  198. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/config.py +0 -0
  199. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/constants.py +0 -0
  200. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/content.py +0 -0
  201. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/datetime.py +0 -0
  202. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/decorator.py +0 -0
  203. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/deprecation.py +0 -0
  204. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/dev.py +0 -0
  205. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/dict.py +0 -0
  206. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/display.py +0 -0
  207. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/dotenv.py +0 -0
  208. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/entrypoints.py +0 -0
  209. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/environ.py +0 -0
  210. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/error.py +0 -0
  211. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/file.py +0 -0
  212. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/format.py +0 -0
  213. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/git.py +0 -0
  214. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/hash.py +0 -0
  215. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/hooks.py +0 -0
  216. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/html.py +0 -0
  217. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/http.py +0 -0
  218. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/images.py +0 -0
  219. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/json.py +0 -0
  220. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/list.py +0 -0
  221. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/notebook.py +0 -0
  222. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/package.py +0 -0
  223. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/path.py +0 -0
  224. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/pattern.py +0 -0
  225. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/platform.py +0 -0
  226. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/registry.py +0 -0
  227. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/retry.py +0 -0
  228. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/rich.py +0 -0
  229. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/terminal.py +0 -0
  230. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/text.py +0 -0
  231. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/throttle.py +0 -0
  232. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/timeouts.py +0 -0
  233. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/url.py +0 -0
  234. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_util/version.py +0 -0
  235. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/notify.py +0 -0
  236. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/schema.py +0 -0
  237. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/server.py +0 -0
  238. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/view.py +0 -0
  239. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/.gitignore +0 -0
  240. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/.prettierignore +0 -0
  241. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/.tool-versions +0 -0
  242. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/App.css +0 -0
  243. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/README.md +0 -0
  244. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/dist/assets/favicon.svg +0 -0
  245. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/dist/assets/index.css +0 -0
  246. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/dist/index.html +0 -0
  247. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/eslint.config.mjs +0 -0
  248. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/favicon.svg +0 -0
  249. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/index.html +0 -0
  250. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/jsconfig.json +0 -0
  251. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/log-schema.json +0 -0
  252. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/package.json +0 -0
  253. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/postcss.config.cjs +0 -0
  254. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/App.mjs +0 -0
  255. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/Register.mjs +0 -0
  256. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/Types.mjs +0 -0
  257. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/api/Types.mjs +0 -0
  258. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/api/api-browser.mjs +0 -0
  259. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/api/api-http.mjs +0 -0
  260. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/api/api-shared.mjs +0 -0
  261. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/api/api-vscode.mjs +0 -0
  262. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/api/client-api.mjs +0 -0
  263. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/api/index.mjs +0 -0
  264. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/api/jsonrpc.mjs +0 -0
  265. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/appearance/Colors.mjs +0 -0
  266. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/appearance/Fonts.mjs +0 -0
  267. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/appearance/Icons.mjs +0 -0
  268. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/appearance/Styles.mjs +0 -0
  269. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/AnsiDisplay.css +0 -0
  270. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/AnsiDisplay.mjs +0 -0
  271. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/AppErrorBoundary.mjs +0 -0
  272. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/Browser.mjs +0 -0
  273. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/Card.mjs +0 -0
  274. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/ChatView.mjs +0 -0
  275. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/CopyButton.mjs +0 -0
  276. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/Dialog.mjs +0 -0
  277. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/DownloadButton.mjs +0 -0
  278. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/DownloadPanel.mjs +0 -0
  279. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/EmptyPanel.mjs +0 -0
  280. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/ErrorPanel.mjs +0 -0
  281. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/ExpandablePanel.mjs +0 -0
  282. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/FindBand.mjs +0 -0
  283. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/JsonPanel.mjs +0 -0
  284. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/LabeledValue.mjs +0 -0
  285. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/LargeModal.mjs +0 -0
  286. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/MarkdownDiv.mjs +0 -0
  287. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/MessageBand.mjs +0 -0
  288. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/MessageContent.mjs +0 -0
  289. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/MetaDataGrid.mjs +0 -0
  290. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/MetaDataView.mjs +0 -0
  291. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/MorePopOver.mjs +0 -0
  292. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/NavPills.mjs +0 -0
  293. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/ProgressBar.mjs +0 -0
  294. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/RenderedContent/ChatMessageRenderer.mjs +0 -0
  295. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/RenderedContent/RenderedContent.mjs +0 -0
  296. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/RenderedContent/Types.mjs +0 -0
  297. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/TabSet.mjs +0 -0
  298. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/ToolButton.mjs +0 -0
  299. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/Tools.mjs +0 -0
  300. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/VirtualList.mjs +0 -0
  301. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/components/ansi-output.js +0 -0
  302. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/constants.mjs +0 -0
  303. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/index.js +0 -0
  304. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/json/JsonTab.mjs +0 -0
  305. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/log/remoteLogFile.mjs +0 -0
  306. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/log-reader/Log-Reader.mjs +0 -0
  307. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/log-reader/Native-Log-Reader.mjs +0 -0
  308. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/log-reader/Open-AI-Log-Reader.mjs +0 -0
  309. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/navbar/Navbar.mjs +0 -0
  310. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/navbar/SecondaryBar.mjs +0 -0
  311. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/plan/PlanCard.mjs +0 -0
  312. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/SampleDialog.mjs +0 -0
  313. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/SampleError.mjs +0 -0
  314. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/SampleLimit.mjs +0 -0
  315. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/SampleList.mjs +0 -0
  316. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/SampleScoreView.mjs +0 -0
  317. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/SampleScores.mjs +0 -0
  318. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/SampleTranscript.mjs +0 -0
  319. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/SamplesDescriptor.mjs +0 -0
  320. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/SamplesTab.mjs +0 -0
  321. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/SamplesTools.mjs +0 -0
  322. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/tools/EpochFilter.mjs +0 -0
  323. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/tools/SampleFilter.mjs +0 -0
  324. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/tools/SelectScorer.mjs +0 -0
  325. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/tools/SortFilter.mjs +0 -0
  326. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/tools/filters.mjs +0 -0
  327. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/transcript/ApprovalEventView.mjs +0 -0
  328. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/transcript/ErrorEventView.mjs +0 -0
  329. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/transcript/EventPanel.mjs +0 -0
  330. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/transcript/EventRow.mjs +0 -0
  331. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/transcript/EventSection.mjs +0 -0
  332. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/transcript/InfoEventView.mjs +0 -0
  333. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/transcript/InputEventView.mjs +0 -0
  334. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/transcript/LoggerEventView.mjs +0 -0
  335. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/transcript/ModelEventView.mjs +0 -0
  336. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/transcript/SampleInitEventView.mjs +0 -0
  337. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/transcript/SampleLimitEventView.mjs +0 -0
  338. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/transcript/ScoreEventView.mjs +0 -0
  339. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/transcript/StepEventView.mjs +0 -0
  340. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/transcript/SubtaskEventView.mjs +0 -0
  341. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/transcript/ToolEventView.mjs +0 -0
  342. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/transcript/TranscriptState.mjs +0 -0
  343. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/transcript/TranscriptView.mjs +0 -0
  344. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/transcript/Types.mjs +0 -0
  345. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/transcript/state/StateDiffView.mjs +0 -0
  346. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/transcript/state/StateEventRenderers.mjs +0 -0
  347. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/samples/transcript/state/StateEventView.mjs +0 -0
  348. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/sidebar/Sidebar.mjs +0 -0
  349. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/types/jsondiffpatch.d.ts +0 -0
  350. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/types/log.d.ts +0 -0
  351. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/types/prism.d.ts +0 -0
  352. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/usage/ModelTokenTable.mjs +0 -0
  353. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/usage/UsageCard.mjs +0 -0
  354. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/utils/Base64.mjs +0 -0
  355. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/utils/Format.mjs +0 -0
  356. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/utils/Git.mjs +0 -0
  357. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/utils/Html.mjs +0 -0
  358. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/utils/Json.mjs +0 -0
  359. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/utils/Path.mjs +0 -0
  360. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/utils/Print.mjs +0 -0
  361. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/utils/Type.mjs +0 -0
  362. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/utils/attachments.mjs +0 -0
  363. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/utils/debugging.mjs +0 -0
  364. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/utils/http.mjs +0 -0
  365. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/utils/queue.mjs +0 -0
  366. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/utils/remoteZipFile.mjs +0 -0
  367. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/utils/sync.mjs +0 -0
  368. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/utils/vscode.mjs +0 -0
  369. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/workspace/TaskErrorPanel.mjs +0 -0
  370. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/src/workspace/WorkSpace.mjs +0 -0
  371. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/tsconfig.json +0 -0
  372. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/vite.config.js +0 -0
  373. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/_view/www/yarn.lock +0 -0
  374. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/approval/__init__.py +0 -0
  375. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/approval/_apply.py +0 -0
  376. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/approval/_approval.py +0 -0
  377. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/approval/_approver.py +0 -0
  378. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/approval/_auto.py +0 -0
  379. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/approval/_call.py +0 -0
  380. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/approval/_human/approver.py +0 -0
  381. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/approval/_human/console.py +0 -0
  382. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/approval/_human/manager.py +0 -0
  383. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/approval/_human/panel.py +0 -0
  384. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/approval/_human/util.py +0 -0
  385. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/approval/_policy.py +0 -0
  386. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/approval/_registry.py +0 -0
  387. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/dataset/__init__.py +0 -0
  388. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/dataset/_dataset.py +0 -0
  389. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/dataset/_examples/bias_detection.jsonl +0 -0
  390. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/dataset/_examples/biology_qa.jsonl +0 -0
  391. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/dataset/_examples/popularity.jsonl +0 -0
  392. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/dataset/_examples/security_guide.jsonl +0 -0
  393. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/dataset/_examples/theory_of_mind.jsonl +0 -0
  394. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/dataset/_sources/csv.py +0 -0
  395. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/dataset/_sources/example.py +0 -0
  396. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/dataset/_sources/file.py +0 -0
  397. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/dataset/_sources/hf.py +0 -0
  398. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/dataset/_sources/json.py +0 -0
  399. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/dataset/_sources/util.py +0 -0
  400. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/dataset/_util.py +0 -0
  401. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/log/__init__.py +0 -0
  402. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/log/_bundle.py +0 -0
  403. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/log/_condense.py +0 -0
  404. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/log/_convert.py +0 -0
  405. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/log/_file.py +0 -0
  406. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/log/_message.py +0 -0
  407. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/log/_recorders/__init__.py +0 -0
  408. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/log/_recorders/create.py +0 -0
  409. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/log/_recorders/eval.py +0 -0
  410. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/log/_recorders/file.py +0 -0
  411. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/log/_recorders/json.py +0 -0
  412. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/log/_recorders/recorder.py +0 -0
  413. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/log/_retry.py +0 -0
  414. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/log/_samples.py +0 -0
  415. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/log/_transcript.py +0 -0
  416. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/__init__.py +0 -0
  417. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_cache.py +0 -0
  418. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_chat_message.py +0 -0
  419. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_generate_config.py +0 -0
  420. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_image.py +0 -0
  421. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_model_call.py +0 -0
  422. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_model_output.py +0 -0
  423. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/anthropic.py +0 -0
  424. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/bedrock.py +0 -0
  425. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/cloudflare.py +0 -0
  426. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/google.py +0 -0
  427. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/grok.py +0 -0
  428. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/groq.py +0 -0
  429. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/hf.py +0 -0
  430. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/llama_cpp_python.py +0 -0
  431. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/mistral.py +0 -0
  432. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/mockllm.py +0 -0
  433. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/ollama.py +0 -0
  434. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/openai.py +0 -0
  435. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/openai_o1.py +0 -0
  436. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/providers.py +0 -0
  437. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/together.py +0 -0
  438. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/util/__init__.py +0 -0
  439. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/util/chatapi.py +0 -0
  440. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/util/hf_handler.py +0 -0
  441. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/util/llama31.py +0 -0
  442. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/util/util.py +0 -0
  443. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/vertex.py +0 -0
  444. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_providers/vllm.py +0 -0
  445. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/model/_registry.py +0 -0
  446. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/py.typed +0 -0
  447. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/scorer/__init__.py +0 -0
  448. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/scorer/_answer.py +0 -0
  449. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/scorer/_choice.py +0 -0
  450. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/scorer/_classification.py +0 -0
  451. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/scorer/_common.py +0 -0
  452. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/scorer/_match.py +0 -0
  453. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/scorer/_metric.py +0 -0
  454. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/scorer/_metrics/__init__.py +0 -0
  455. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/scorer/_metrics/accuracy.py +0 -0
  456. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/scorer/_metrics/mean.py +0 -0
  457. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/scorer/_metrics/std.py +0 -0
  458. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/scorer/_model.py +0 -0
  459. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/scorer/_multi.py +0 -0
  460. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/scorer/_pattern.py +0 -0
  461. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/scorer/_reducer/__init__.py +0 -0
  462. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/scorer/_reducer/reducer.py +0 -0
  463. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/scorer/_reducer/registry.py +0 -0
  464. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/scorer/_reducer/types.py +0 -0
  465. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/scorer/_score.py +0 -0
  466. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/scorer/_scorer.py +0 -0
  467. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/scorer/_target.py +0 -0
  468. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/solver/__init__.py +0 -0
  469. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/solver/_chain.py +0 -0
  470. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/solver/_critique.py +0 -0
  471. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/solver/_fork.py +0 -0
  472. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/solver/_multiple_choice.py +0 -0
  473. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/solver/_plan.py +0 -0
  474. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/solver/_prompt.py +0 -0
  475. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/solver/_solver.py +0 -0
  476. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/solver/_task_state.py +0 -0
  477. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/solver/_transcript.py +0 -0
  478. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/solver/_use_tools.py +0 -0
  479. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/solver/_util.py +0 -0
  480. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/__init__.py +0 -0
  481. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tool.py +0 -0
  482. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tool_call.py +0 -0
  483. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tool_choice.py +0 -0
  484. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tool_def.py +0 -0
  485. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tool_description.py +0 -0
  486. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tool_info.py +0 -0
  487. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tool_params.py +0 -0
  488. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tool_with.py +0 -0
  489. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tools/_execute.py +0 -0
  490. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tools/_web_browser/__init__.py +0 -0
  491. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tools/_web_browser/_resources/Dockerfile +0 -0
  492. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tools/_web_browser/_resources/README.md +0 -0
  493. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tools/_web_browser/_resources/accessibility_node.py +0 -0
  494. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tools/_web_browser/_resources/dm_env_servicer.py +0 -0
  495. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tools/_web_browser/_resources/images/usage_diagram.png +0 -0
  496. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tools/_web_browser/_resources/mock_environment.py +0 -0
  497. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tools/_web_browser/_resources/playwright_crawler.py +0 -0
  498. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tools/_web_browser/_resources/test_accessibility_node.py +0 -0
  499. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tools/_web_browser/_resources/test_dm_env_servicer.py +0 -0
  500. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tools/_web_browser/_resources/test_playwright_crawler.py +0 -0
  501. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tools/_web_browser/_resources/test_web_environment.py +0 -0
  502. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tools/_web_browser/_resources/web_client.py +0 -0
  503. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tools/_web_browser/_resources/web_client_new_session.py +0 -0
  504. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tools/_web_browser/_resources/web_environment.py +0 -0
  505. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tools/_web_browser/_resources/web_server.py +0 -0
  506. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tools/_web_browser/_web_browser.py +0 -0
  507. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/tool/_tools/_web_search.py +0 -0
  508. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/__init__.py +0 -0
  509. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_concurrency.py +0 -0
  510. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_console.py +0 -0
  511. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_panel.py +0 -0
  512. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_resource.py +0 -0
  513. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_sandbox/__init__.py +0 -0
  514. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_sandbox/context.py +0 -0
  515. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_sandbox/docker/cleanup.py +0 -0
  516. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_sandbox/docker/compose.py +0 -0
  517. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_sandbox/docker/config.py +0 -0
  518. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_sandbox/docker/docker.py +0 -0
  519. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_sandbox/docker/internal.py +0 -0
  520. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_sandbox/docker/prereqs.py +0 -0
  521. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_sandbox/docker/util.py +0 -0
  522. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_sandbox/environment.py +0 -0
  523. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_sandbox/limits.py +0 -0
  524. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_sandbox/local.py +0 -0
  525. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_sandbox/registry.py +0 -0
  526. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_sandbox/self_check.py +0 -0
  527. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_sandbox/service.py +0 -0
  528. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_store.py +0 -0
  529. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_subprocess.py +0 -0
  530. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_subtask.py +0 -0
  531. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai/util/_trace.py +0 -0
  532. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai.egg-info/dependency_links.txt +0 -0
  533. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai.egg-info/entry_points.txt +0 -0
  534. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/src/inspect_ai.egg-info/top_level.txt +0 -0
  535. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/approval/approve.yaml +0 -0
  536. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/approval/escalate.yaml +0 -0
  537. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/approval/modify.yaml +0 -0
  538. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/approval/reject.yaml +0 -0
  539. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/approval/terminate.yaml +0 -0
  540. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/approval/test_approval.py +0 -0
  541. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/conftest.py +0 -0
  542. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/dataset/test_dataset/dataset.jsonl +0 -0
  543. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/dataset/test_dataset/images/ballons.png +0 -0
  544. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/dataset/test_dataset/images.jsonl +0 -0
  545. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/dataset/test_dataset/samples-md.csv +0 -0
  546. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/dataset/test_dataset/samples-md.json +0 -0
  547. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/dataset/test_dataset/samples-md.jsonl +0 -0
  548. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/dataset/test_dataset/samples.csv +0 -0
  549. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/dataset/test_dataset/samples.json +0 -0
  550. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/dataset/test_dataset/samples.jsonl +0 -0
  551. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/dataset/test_dataset.py +0 -0
  552. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/log/test_eval_log/log_formats.json +0 -0
  553. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/log/test_eval_log/log_images.json +0 -0
  554. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/log/test_eval_log/log_images_tc.json +0 -0
  555. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/log/test_eval_log/log_invalid.txt +0 -0
  556. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/log/test_eval_log/log_length_stop_reason.txt +0 -0
  557. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/log/test_eval_log/log_streaming.eval +0 -0
  558. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/log/test_eval_log/log_valid.txt +0 -0
  559. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/log/test_eval_log/log_version_3.txt +0 -0
  560. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/log/test_eval_log/log_with_nan.txt +0 -0
  561. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/log/test_eval_log.py +0 -0
  562. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/log/test_list_logs/2024-11-05T13-31-45-05-00_input-task_8zXjbRzCWrL9GXiXo2vus9.json +0 -0
  563. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/log/test_list_logs/2024-11-05T13-32-37-05-00_input-task_hxs4q9azL3ySGkjJirypKZ.eval +0 -0
  564. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/log/test_list_logs/custom.eval +0 -0
  565. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/log/test_list_logs/ignore.json +0 -0
  566. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/log/test_list_logs.py +0 -0
  567. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/log/test_log_attachments.py +0 -0
  568. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/log/test_log_formats.py +0 -0
  569. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/log/test_log_level.py +0 -0
  570. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/log/test_log_streaming.py +0 -0
  571. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/log/test_log_tags.py +0 -0
  572. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/model/providers/test_anthropic.py +0 -0
  573. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/model/providers/test_azureai.py +0 -0
  574. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/model/providers/test_cloudflare.py +0 -0
  575. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/model/providers/test_google.py +0 -0
  576. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/model/providers/test_grok.py +0 -0
  577. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/model/providers/test_groq.py +0 -0
  578. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/model/providers/test_hf.py +0 -0
  579. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/model/providers/test_llama_cpp_python.py +0 -0
  580. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/model/providers/test_openai.py +0 -0
  581. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/model/providers/test_openai_o1.py +0 -0
  582. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/model/providers/test_vertex.py +0 -0
  583. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/model/providers/test_vllm.py +0 -0
  584. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/model/test_api_key.py +0 -0
  585. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/model/test_collapse_assistant_message.py +0 -0
  586. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/model/test_collapse_user_message.py +0 -0
  587. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/model/test_disable.py +0 -0
  588. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/model/test_logprobs.py +0 -0
  589. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/model/test_mock_model_llm.py +0 -0
  590. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/model/test_num_choices.py +0 -0
  591. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/model/test_parse_tool_call.py +0 -0
  592. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/model/test_stop_reason.py +0 -0
  593. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/scorer/test_answer.py +0 -0
  594. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/scorer/test_choice.py +0 -0
  595. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/scorer/test_classification.py +0 -0
  596. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/scorer/test_match.py +0 -0
  597. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/scorer/test_metric.py +0 -0
  598. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/scorer/test_model_graded.py +0 -0
  599. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/scorer/test_multiscorer.py +0 -0
  600. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/scorer/test_pattern.py +0 -0
  601. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/scorer/test_reducers.py +0 -0
  602. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/scorer/test_scorer.py +0 -0
  603. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/scorer/test_value_to_float.py +0 -0
  604. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/solver/test_basic_agent.py +0 -0
  605. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/solver/test_chain.py +0 -0
  606. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/solver/test_fork.py +0 -0
  607. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/solver/test_multiple_choice.py +0 -0
  608. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/solver/test_prompt.py +0 -0
  609. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/solver/test_solver.py +0 -0
  610. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/solver/test_solver_decorator.py +0 -0
  611. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/solver/test_solver_spec.py +0 -0
  612. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/solver/test_store.py +0 -0
  613. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/solver/test_subtask.py +0 -0
  614. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/solver/test_transcript.py +0 -0
  615. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_eval.py +0 -0
  616. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_eval_config/model.yaml +0 -0
  617. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_eval_config/solver.yaml +0 -0
  618. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_eval_config/task.yaml +0 -0
  619. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_eval_config.py +0 -0
  620. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_eval_set/2024-08-29T15-11-17+00-00_popularity_5EAmX6wjMFqea6WY7XHzZp.json +0 -0
  621. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_eval_set/2024-08-29T15-11-18+00-00_popularity_5EAmX6wjMFqea6WY7XHzZp.json +0 -0
  622. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_eval_set.py +0 -0
  623. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_examples.py +0 -0
  624. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_extensions.py +0 -0
  625. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_fail_on_error.py +0 -0
  626. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_helpers/__init__.py +0 -0
  627. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_helpers/tasks.py +0 -0
  628. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_helpers/tool_call_utils.py +0 -0
  629. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_helpers/tools.py +0 -0
  630. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_helpers/utils.py +0 -0
  631. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_list_task.py +0 -0
  632. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_log_dir/example_task/example_task.py +0 -0
  633. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_log_dir/test_log_dir.py +0 -0
  634. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_package/.gitignore +0 -0
  635. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_package/inspect_package/__init__.py +0 -0
  636. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_package/inspect_package/_registry.py +0 -0
  637. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_package/inspect_package/approvers/renamer.py +0 -0
  638. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_package/inspect_package/modelapi/custom.py +0 -0
  639. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_package/inspect_package/py.typed +0 -0
  640. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_package/inspect_package/sandboxenv/podman.py +0 -0
  641. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_package/inspect_package/score/scorer.py +0 -0
  642. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_package/inspect_package/solvers/cot.py +0 -0
  643. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_package/pyproject.toml +0 -0
  644. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_retry.py +0 -0
  645. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_run_dir/task1/task1.py +0 -0
  646. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_run_dir/task2/task2.py +0 -0
  647. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_run_dir.py +0 -0
  648. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_sample_limits.py +0 -0
  649. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_task_attr.py +0 -0
  650. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_task_list/__init__.py +0 -0
  651. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_task_list/attribs.ipynb +0 -0
  652. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_task_list/multiple.py +0 -0
  653. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_task_list/multiple_dir/_decoy/testit.py +0 -0
  654. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_task_list/multiple_dir/_decoy2.py +0 -0
  655. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_task_list/multiple_dir/bar.py +0 -0
  656. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_task_list/multiple_dir/foo.py +0 -0
  657. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_task_list/recurse/.folder3/epsilon.py +0 -0
  658. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_task_list/recurse/folder1/_decoy.py +0 -0
  659. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_task_list/recurse/folder1/theta.py +0 -0
  660. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_task_list/recurse/folder2/.folder3/epsilon.py +0 -0
  661. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_task_list/recurse/folder2/another.py +0 -0
  662. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/test_task_list/recurse/folder2/first.py +0 -0
  663. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/tools/docker-compose-context/Dockerfile +0 -0
  664. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/tools/docker-compose-context-alpine/Dockerfile +0 -0
  665. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/tools/test_bash_tool.py +0 -0
  666. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/tools/test_max_exec_output.py +0 -0
  667. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/tools/test_max_tool_output.py +0 -0
  668. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/tools/test_python_tool.py +0 -0
  669. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/tools/test_sandbox_compose.yaml +0 -0
  670. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/tools/test_sandbox_compose_alpine.yaml +0 -0
  671. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/tools/test_sandbox_docker_and_local.py +0 -0
  672. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/tools/test_sandbox_dockerfile.py +0 -0
  673. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/tools/test_sandbox_tool_eval.py +0 -0
  674. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/tools/test_tool_def.py +0 -0
  675. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/tools/test_tool_parse.py +0 -0
  676. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/tools/test_tool_types.py +0 -0
  677. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/tools/test_tool_view.py +0 -0
  678. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/tools/test_tool_with.py +0 -0
  679. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/tools/test_tools.py +0 -0
  680. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/tools/test_use_tools.py +0 -0
  681. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/tools/test_web_browser.py +0 -0
  682. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/tools/test_web_browser_compose.yaml +0 -0
  683. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/util/sandbox/docker_compose_multiple_services/docker-compose.yaml +0 -0
  684. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/util/sandbox/sandbox_setup.sh +0 -0
  685. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/util/sandbox/test_docker_compose_multiple_services.py +0 -0
  686. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/util/sandbox/test_sandbox_service.py +0 -0
  687. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/util/sandbox/test_sandbox_setup.py +0 -0
  688. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/util/test_file.py +0 -0
  689. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/util/test_images/images.jsonl +0 -0
  690. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/util/test_images.py +0 -0
  691. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/util/test_package.py +0 -0
  692. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/util/test_registry.py +0 -0
  693. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/util/test_str_to_float.py +0 -0
  694. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/util/test_subprocess.py +0 -0
  695. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tests/view/test_bundle.py +0 -0
  696. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/.eslintrc.json +0 -0
  697. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/.gitignore +0 -0
  698. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/.vscode/extensions.json +0 -0
  699. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/.vscode/launch.json +0 -0
  700. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/.vscode/settings.json +0 -0
  701. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/.vscode/tasks.json +0 -0
  702. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/.vscode-test.mjs +0 -0
  703. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/.vscodeignore +0 -0
  704. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/.yarnrc +0 -0
  705. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/CHANGELOG.md +0 -0
  706. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/LICENSE +0 -0
  707. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/README.md +0 -0
  708. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/assets/icon/eval-treeview.svg +0 -0
  709. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/assets/icon/eval.svg +0 -0
  710. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/assets/logo/inspect.png +0 -0
  711. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/assets/logo/inspect.svg +0 -0
  712. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/assets/templates/task.py.template +0 -0
  713. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/assets/www/codicon/codicon.css +0 -0
  714. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/assets/www/codicon/codicon.ttf +0 -0
  715. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/assets/www/view/view-overrides.css +0 -0
  716. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/package.json +0 -0
  717. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/@types/hooks.d.ts +0 -0
  718. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/@types/log.d.ts +0 -0
  719. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/components/document.ts +0 -0
  720. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/components/error.ts +0 -0
  721. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/components/focus.ts +0 -0
  722. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/components/notebook.ts +0 -0
  723. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/components/symbol.ts +0 -0
  724. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/components/task.ts +0 -0
  725. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/components/templates.ts +0 -0
  726. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/components/webview.ts +0 -0
  727. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/appdirs.ts +0 -0
  728. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/command.ts +0 -0
  729. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/dispose.ts +0 -0
  730. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/env.ts +0 -0
  731. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/file.ts +0 -0
  732. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/git.ts +0 -0
  733. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/jsonrpc.ts +0 -0
  734. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/log.ts +0 -0
  735. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/nonce.ts +0 -0
  736. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/path.ts +0 -0
  737. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/port.ts +0 -0
  738. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/process.ts +0 -0
  739. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/python/code.ts +0 -0
  740. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/python/env.ts +0 -0
  741. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/python/exec.ts +0 -0
  742. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/python/index.ts +0 -0
  743. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/python/interpreter.ts +0 -0
  744. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/random.ts +0 -0
  745. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/string.ts +0 -0
  746. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/text.ts +0 -0
  747. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/uri.ts +0 -0
  748. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/vscode/association.ts +0 -0
  749. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/wait.ts +0 -0
  750. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/core/workspace.ts +0 -0
  751. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/extension.ts +0 -0
  752. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/hooks/hooks.ts +0 -0
  753. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/hooks/index.ts +0 -0
  754. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/hooks/preview.ts +0 -0
  755. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/inspect/index.ts +0 -0
  756. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/inspect/logs.ts +0 -0
  757. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/inspect/props.ts +0 -0
  758. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/inspect/version.ts +0 -0
  759. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/active-task/active-task-command.ts +0 -0
  760. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/active-task/active-task-provider.ts +0 -0
  761. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/activity-bar/activity-bar-provider.ts +0 -0
  762. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/activity-bar/env-config-provider.ts +0 -0
  763. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/activity-bar/log-listing/log-directory-selector.ts +0 -0
  764. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/activity-bar/log-listing/log-listing-data.ts +0 -0
  765. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/activity-bar/log-listing/log-listing-mru.ts +0 -0
  766. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/activity-bar/log-listing/log-listing-provider.ts +0 -0
  767. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/activity-bar/log-listing/log-listing.ts +0 -0
  768. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/activity-bar/task-config-commands.ts +0 -0
  769. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/activity-bar/task-config-provider.ts +0 -0
  770. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/activity-bar/task-outline-commands.ts +0 -0
  771. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/activity-bar/task-outline-provider.ts +0 -0
  772. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/activity-bar/webview/env-config-webview.css +0 -0
  773. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/activity-bar/webview/env-config-webview.ts +0 -0
  774. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/activity-bar/webview/task-config-webview.css +0 -0
  775. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/activity-bar/webview/task-config-webview.ts +0 -0
  776. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/activity-bar/webview/vscode-controls.css +0 -0
  777. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/activity-bar/webview/webview-utils.ts +0 -0
  778. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/codelens/codelens-provider.ts +0 -0
  779. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/inspect/inspect-commands.ts +0 -0
  780. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/inspect/inspect-constants.ts +0 -0
  781. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/inspect/inspect-eval-commands.ts +0 -0
  782. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/inspect/inspect-eval.ts +0 -0
  783. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/inspect/inspect-logs-watcher.ts +0 -0
  784. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/inspect/inspect-manager.ts +0 -0
  785. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/inspect/inspect-view-server.ts +0 -0
  786. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/lognotify.ts +0 -0
  787. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/logview/commands.ts +0 -0
  788. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/logview/logview-editor.ts +0 -0
  789. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/logview/logview-link-provider.ts +0 -0
  790. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/logview/logview-panel.ts +0 -0
  791. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/logview/logview-state.ts +0 -0
  792. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/logview/logview-view.ts +0 -0
  793. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/logview/logview.ts +0 -0
  794. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/openlog.ts +0 -0
  795. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/protocol-handler.ts +0 -0
  796. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/settings/inspect-settings.ts +0 -0
  797. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/settings/user-settings.ts +0 -0
  798. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/statusbar.ts +0 -0
  799. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/workspace/workspace-env-commands.ts +0 -0
  800. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/workspace/workspace-env-provider.ts +0 -0
  801. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/workspace/workspace-init.ts +0 -0
  802. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/workspace/workspace-state-provider.ts +0 -0
  803. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/providers/workspace/workspace-task-provider.ts +0 -0
  804. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/src/test/extension.test.ts +0 -0
  805. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/tools/ts-to-mjs/.gitignore +0 -0
  806. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/tools/ts-to-mjs/package.json +0 -0
  807. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/tools/ts-to-mjs/rollup.config.js +0 -0
  808. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/tools/ts-to-mjs/src/index.ts +0 -0
  809. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/tools/ts-to-mjs/src/jsonrpc.ts +0 -0
  810. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/tools/ts-to-mjs/yarn.lock +0 -0
  811. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/tsconfig.json +0 -0
  812. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/webpack.config.js +0 -0
  813. {inspect_ai-0.3.50 → inspect_ai-0.3.52}/tools/vscode/yarn.lock +0 -0
@@ -5,7 +5,7 @@ default_language_version:
5
5
  python: python3.11
6
6
  repos:
7
7
  - repo: https://github.com/astral-sh/ruff-pre-commit
8
- rev: v0.8.2
8
+ rev: v0.8.3
9
9
  hooks:
10
10
  # Run the linter.
11
11
  - id: ruff
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.3.52 (13 December 2024)
4
+
5
+ - Eval: `--sample-id` option for evaluating specific sample id(s).
6
+ - Bedrock: Detect and report HTTP rate limit errors.
7
+ - Azure AI: Add `emulate_tools` model arg to force tool emulation (emulation is enabled by default for Llama models).
8
+ - Basic Agent: Add `max_tool_output` parameter to override default max tool output from generate config.
9
+ - Inspect View: Correct display of sample ID for single sample tasks.
10
+ - Trace: Show custom tool views in `--trace` mode.
11
+ - Bugfix: Support for dynamic metric names in realtime scoring display.
12
+
13
+ ## v0.3.51 (13 December 2024)
14
+
15
+ - Bugfix: Task display fails to load when no scorers are defined for a task.
16
+
3
17
  ## v0.3.50 (12 December 2024)
4
18
 
5
19
  - Tools: Improved typing/schema support (unions, optional params, enums).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: inspect_ai
3
- Version: 0.3.50
3
+ Version: 0.3.52
4
4
  Summary: Framework for large language model evaluations
5
5
  Author: UK AI Safety Institute
6
6
  License: MIT License
@@ -68,7 +68,7 @@ Requires-Dist: pytest-asyncio; extra == "dev"
68
68
  Requires-Dist: pytest-cov; extra == "dev"
69
69
  Requires-Dist: pytest-dotenv; extra == "dev"
70
70
  Requires-Dist: pytest-xdist; extra == "dev"
71
- Requires-Dist: ruff==0.8.2; extra == "dev"
71
+ Requires-Dist: ruff==0.8.3; extra == "dev"
72
72
  Requires-Dist: textual-dev>=0.86.2; extra == "dev"
73
73
  Requires-Dist: types-PyYAML; extra == "dev"
74
74
  Requires-Dist: types-aiofiles; extra == "dev"
@@ -187,6 +187,16 @@ $ export AZUREAI_BASE_URL=https://your-url-at.azure.com
187
187
  $ inspect eval --model azureai/llama-2-70b-chat-wnsnw
188
188
  ```
189
189
 
190
+ #### Tool Emulation
191
+
192
+ When using the `azureai` model provider, tool calling support can be 'emulated' for models that Azure AI has not yet implemented tool calling for. This occurs by default for Llama models. For other models, use the `emulate_tools` model arg to force tool emulation:
193
+
194
+ ```bash
195
+ inspect eval ctf.py -M emulate_tools=true
196
+ ```
197
+
198
+ You can also use this option to disable tool emulation for Llama models with `emulate_tools=false`.
199
+
190
200
  ### AWS Bedrock {#aws-bedrock}
191
201
 
192
202
  [AWS Bedrock](https://aws.amazon.com/bedrock/) provides hosting of models from Anthropic as well as a wide variety of other open models. Note that all models on AWS Bedrock require that you [request model access](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html) before using them in a deployment (in some cases access is granted immediately, in other cases it could one or more days).
@@ -170,6 +170,10 @@ There are several other command line options you can pass to eval. Here are some
170
170
  # limit to 10 samples
171
171
  $ inspect eval theory.py --limit 10
172
172
 
173
+ # limit to specific sample id(s)
174
+ $ inspect eval theory.py --sample-id 10
175
+ $ insepct eval theory.py --sample_id 9,10
176
+
173
177
  # limit tokens
174
178
  $ inspect eval theory.py --max-tokens 128
175
179
 
@@ -129,7 +129,7 @@ dev = [
129
129
  "pytest-cov",
130
130
  "pytest-dotenv",
131
131
  "pytest-xdist",
132
- "ruff==0.8.2", # match version specified in .pre-commit-config.yaml
132
+ "ruff==0.8.3", # match version specified in .pre-commit-config.yaml
133
133
  "textual-dev>=0.86.2",
134
134
  "types-PyYAML",
135
135
  "types-aiofiles",
@@ -12,7 +12,7 @@ from inspect_ai._util.constants import (
12
12
  DEFAULT_MAX_RETRIES,
13
13
  )
14
14
  from inspect_ai._util.file import filesystem
15
- from inspect_ai._util.samples import parse_samples_limit
15
+ from inspect_ai._util.samples import parse_sample_id, parse_samples_limit
16
16
  from inspect_ai.log._file import log_file_info
17
17
  from inspect_ai.model import GenerateConfigArgs
18
18
  from inspect_ai.scorer._reducer import create_reducers
@@ -144,6 +144,12 @@ def eval_options(func: Callable[..., Any]) -> Callable[..., click.Context]:
144
144
  help="Limit samples to evaluate e.g. 10 or 10-20",
145
145
  envvar="INSPECT_EVAL_LIMIT",
146
146
  )
147
+ @click.option(
148
+ "--sample-id",
149
+ type=str,
150
+ help="Evaluate specific sample(s) (comma separated list of ids)",
151
+ envvar="INSPECT_EVAL_SAMPLE_ID",
152
+ )
147
153
  @click.option(
148
154
  "--epochs",
149
155
  type=int,
@@ -391,6 +397,7 @@ def eval_command(
391
397
  epochs: int | None,
392
398
  epochs_reducer: str | None,
393
399
  limit: str | None,
400
+ sample_id: str | None,
394
401
  max_retries: int | None,
395
402
  timeout: int | None,
396
403
  max_connections: int | None,
@@ -458,6 +465,7 @@ def eval_command(
458
465
  epochs=epochs,
459
466
  epochs_reducer=epochs_reducer,
460
467
  limit=limit,
468
+ sample_id=sample_id,
461
469
  message_limit=message_limit,
462
470
  token_limit=token_limit,
463
471
  time_limit=time_limit,
@@ -543,6 +551,7 @@ def eval_set_command(
543
551
  epochs: int | None,
544
552
  epochs_reducer: str | None,
545
553
  limit: str | None,
554
+ sample_id: str | None,
546
555
  max_retries: int | None,
547
556
  timeout: int | None,
548
557
  max_connections: int | None,
@@ -612,6 +621,7 @@ def eval_set_command(
612
621
  epochs=epochs,
613
622
  epochs_reducer=epochs_reducer,
614
623
  limit=limit,
624
+ sample_id=sample_id,
615
625
  message_limit=message_limit,
616
626
  token_limit=token_limit,
617
627
  time_limit=time_limit,
@@ -662,6 +672,7 @@ def eval_exec(
662
672
  epochs: int | None,
663
673
  epochs_reducer: str | None,
664
674
  limit: str | None,
675
+ sample_id: str | None,
665
676
  message_limit: int | None,
666
677
  token_limit: int | None,
667
678
  time_limit: int | None,
@@ -699,8 +710,9 @@ def eval_exec(
699
710
  else None
700
711
  )
701
712
 
702
- # resolve range
713
+ # resolve range and sample id
703
714
  eval_limit = parse_samples_limit(limit)
715
+ eval_sample_id = parse_sample_id(sample_id)
704
716
 
705
717
  # resolve fail_on_error
706
718
  if no_fail_on_error is True:
@@ -734,6 +746,7 @@ def eval_exec(
734
746
  log_dir=log_dir,
735
747
  log_format=log_format,
736
748
  limit=eval_limit,
749
+ sample_id=eval_sample_id,
737
750
  epochs=eval_epochs,
738
751
  fail_on_error=fail_on_error,
739
752
  debug_errors=debug_errors,
@@ -24,6 +24,10 @@ def task_config(
24
24
  config_print.append(
25
25
  f"{name}: {','.join([approver['name'] for approver in value['approvers']])}"
26
26
  )
27
+ elif name == "sample_id":
28
+ value = value if isinstance(value, list) else [value]
29
+ value = [str(v) for v in value]
30
+ config_print.append(f"{name}: {','.join(value)}")
27
31
  elif name not in ["limit", "model"]:
28
32
  config_print.append(f"{name}: {value}")
29
33
  values = ", ".join(config_print)
@@ -112,7 +112,7 @@ def tasks_title(completed: int, total: int) -> str:
112
112
  def task_title(profile: TaskProfile, show_model: bool) -> str:
113
113
  eval_epochs = profile.eval_config.epochs or 1
114
114
  epochs = f" x {profile.eval_config.epochs}" if eval_epochs > 1 else ""
115
- samples = f"{profile.samples//eval_epochs:,}{epochs} sample{'s' if profile.samples > 1 else ''}"
115
+ samples = f"{profile.samples//eval_epochs:,}{epochs} sample{'s' if profile.samples != 1 else ''}"
116
116
  title = f"{registry_unqualified_name(profile.name)} ({samples})"
117
117
  if show_model:
118
118
  title = f"{title}: {profile.model}"
@@ -63,6 +63,9 @@ class TaskDetail(Widget):
63
63
  def update_metrics(self, metrics: list[TaskDisplayMetric]) -> None:
64
64
  # Group by reducer then scorer within reducers
65
65
  self.metrics = metrics
66
+
67
+ # clear the existing computed reducers
68
+ self.by_reducer = {}
66
69
  for metric in metrics:
67
70
  reducer_group = (
68
71
  self.by_reducer[metric.reducer]
@@ -85,6 +88,10 @@ class TaskDetail(Widget):
85
88
  if not self.grid.is_attached:
86
89
  return
87
90
 
91
+ # don't refresh the grid if there are no scores
92
+ if len(self.by_reducer) == 0:
93
+ return
94
+
88
95
  # Compute the row and column count
89
96
  row_count = len(self.by_reducer)
90
97
  col_count = len(next(iter(self.by_reducer.values())))
@@ -113,6 +120,7 @@ class TaskDetail(Widget):
113
120
  for remove in to_remove:
114
121
  task_metric = self.existing_metrics[remove]
115
122
  task_metric.remove()
123
+ del self.existing_metrics[remove]
116
124
 
117
125
  # add or update widgets with metrics
118
126
  for reducer, scorers in self.by_reducer.items():
@@ -183,24 +191,49 @@ class TaskMetrics(Widget):
183
191
  self.grid: Grid = Grid()
184
192
  self.value_widgets: dict[str, Static] = {}
185
193
 
194
+ def grid_id(self) -> str:
195
+ return f"{self.id}-grid"
196
+
186
197
  def compose(self) -> ComposeResult:
187
- # Just yield a single DataTable widget
198
+ # Yield the title and base grid
188
199
  yield Center(self._title())
189
- with Grid():
190
- for metric in self.metrics:
191
- # Add the value static but keep it around
192
- # for future updates
193
- self.value_widgets[metric.name] = Static(
194
- self._metric_value(metric.value)
195
- )
196
-
197
- yield Static(metric.name)
198
- yield self.value_widgets[metric.name]
200
+ yield Grid(id=self.grid_id())
199
201
 
200
202
  def update(self, metrics: list[TaskMetric]) -> None:
203
+ self.metrics = metrics
204
+
205
+ # We assume that generally the initial metric names will
206
+ # always match future updates (so we can just update values in line)
207
+ # but if an unrecognized metric appears on the scene, just
208
+ # recompute the whole grid
209
+ need_recompute = False
201
210
  for metric in metrics:
202
- widget = self.value_widgets[metric.name]
203
- widget.update(content=f"{metric.value:,.3f}")
211
+ widget = self.value_widgets.get(metric.name)
212
+ if widget:
213
+ # Just update the values themselves
214
+ widget.update(content=f"{metric.value:,.3f}")
215
+ else:
216
+ # Don't have a widget for this, recompute the whole grid
217
+ need_recompute = True
218
+ break
219
+
220
+ if need_recompute:
221
+ self.recompute_grid()
222
+
223
+ def on_mount(self) -> None:
224
+ self.recompute_grid()
225
+
226
+ def recompute_grid(self) -> None:
227
+ grid = self.query_one(f"#{self.grid_id()}")
228
+
229
+ grid.remove_children()
230
+ for metric in self.metrics:
231
+ # Add the value static but keep it around
232
+ # for future updates
233
+ self.value_widgets[metric.name] = Static(self._metric_value(metric.value))
234
+
235
+ grid.mount(Static(metric.name))
236
+ grid.mount(self.value_widgets[metric.name])
204
237
 
205
238
  def _title(self) -> Widget:
206
239
  if self.scorer is None:
@@ -10,10 +10,10 @@ from textual.widget import Widget
10
10
  from textual.widgets import Static
11
11
 
12
12
  from inspect_ai._util.content import ContentText
13
- from inspect_ai._util.format import format_function_call
14
13
  from inspect_ai._util.rich import lines_display
15
14
  from inspect_ai._util.transcript import (
16
15
  set_transcript_markdown_options,
16
+ transcript_function,
17
17
  transcript_markdown,
18
18
  transcript_separator,
19
19
  )
@@ -36,6 +36,7 @@ from inspect_ai.log._transcript import (
36
36
  from inspect_ai.model._chat_message import ChatMessage, ChatMessageUser
37
37
  from inspect_ai.model._render import messages_preceding_assistant
38
38
  from inspect_ai.tool._tool import ToolResult
39
+ from inspect_ai.tool._tool_transcript import transcript_tool_call
39
40
 
40
41
 
41
42
  class TranscriptView(ScrollableContainer):
@@ -195,16 +196,7 @@ def render_tool_event(event: ToolEvent) -> list[EventDisplay]:
195
196
  display.extend(render_event(e) or [])
196
197
 
197
198
  # render the call
198
- content: list[RenderableType] = []
199
- if event.view:
200
- if event.view.title:
201
- content.append(Text.from_markup(f"[bold]{event.view.title}[/bold]\n"))
202
- if event.view.format == "markdown":
203
- content.append(transcript_markdown(event.view.content))
204
- else:
205
- content.append(event.view.content)
206
- else:
207
- content.append(render_function_call(event.function, event.arguments))
199
+ content = transcript_tool_call(event)
208
200
 
209
201
  # render the output
210
202
  if isinstance(event.result, list):
@@ -266,7 +258,7 @@ def render_subtask_event(event: SubtaskEvent) -> list[EventDisplay]:
266
258
  for e in event.events:
267
259
  display.extend(render_event(e) or [])
268
260
 
269
- content: list[RenderableType] = [render_function_call(event.name, event.input)]
261
+ content: list[RenderableType] = [transcript_function(event.name, event.input)]
270
262
  if event.result:
271
263
  content.append(Text())
272
264
  if isinstance(event.result, str | int | float | bool | None):
@@ -309,11 +301,6 @@ def render_error_event(event: ErrorEvent) -> EventDisplay:
309
301
  return EventDisplay("error", event.error.traceback.strip())
310
302
 
311
303
 
312
- def render_function_call(function: str, arguments: dict[str, Any]) -> RenderableType:
313
- call = format_function_call(function, arguments)
314
- return transcript_markdown("```python\n" + call + "\n```\n")
315
-
316
-
317
304
  def render_as_json(json: Any) -> RenderableType:
318
305
  return transcript_markdown(
319
306
  "```json\n"
@@ -61,6 +61,7 @@ def eval(
61
61
  log_dir: str | None = None,
62
62
  log_format: Literal["eval", "json"] | None = None,
63
63
  limit: int | tuple[int, int] | None = None,
64
+ sample_id: str | int | list[str | int] | None = None,
64
65
  epochs: int | Epochs | None = None,
65
66
  fail_on_error: bool | float | None = None,
66
67
  debug_errors: bool | None = None,
@@ -110,6 +111,7 @@ def eval(
110
111
  to "eval", the native high-performance format).
111
112
  limit (int | tuple[int, int] | None): Limit evaluated samples
112
113
  (defaults to all samples).
114
+ sample_id (str | int | list[str | int] | None): Evaluate specific sample(s) from the dataset.
113
115
  epochs (int | Epochs | None): Epochs to repeat samples for and optional score
114
116
  reducer function(s) used to combine sample scores (defaults to "mean")
115
117
  fail_on_error (bool | float | None): `True` to fail on first sample error
@@ -163,6 +165,7 @@ def eval(
163
165
  log_dir=log_dir,
164
166
  log_format=log_format,
165
167
  limit=limit,
168
+ sample_id=sample_id,
166
169
  epochs=epochs,
167
170
  fail_on_error=fail_on_error,
168
171
  debug_errors=debug_errors,
@@ -198,6 +201,7 @@ async def eval_async(
198
201
  log_dir: str | None = None,
199
202
  log_format: Literal["eval", "json"] | None = None,
200
203
  limit: int | tuple[int, int] | None = None,
204
+ sample_id: str | int | list[str | int] | None = None,
201
205
  epochs: int | Epochs | None = None,
202
206
  fail_on_error: bool | float | None = None,
203
207
  debug_errors: bool | None = None,
@@ -245,8 +249,9 @@ async def eval_async(
245
249
  (defaults to file log in ./logs directory).
246
250
  log_format (Literal["eval", "json"] | None): Format for writing log files (defaults
247
251
  to "eval", the native high-performance format).
248
- limit (int | tuple[int, int] | None): Limit evaluated samples
252
+ limit (str | int | list[str | int] | None): Limit evaluated samples
249
253
  (defaults to all samples).
254
+ sample_id (str | list[str] | None): Evaluate specific sample(s) from the dataset.
250
255
  epochs (int | Epochs | None): Epochs to repeat samples for and optional score
251
256
  reducer function(s) used to combine sample scores (defaults to "mean")
252
257
  fail_on_error (bool | float | None): `True` to fail on first sample error
@@ -335,6 +340,10 @@ async def eval_async(
335
340
  # resolve solver
336
341
  solver = chain(solver) if isinstance(solver, list) else solver
337
342
 
343
+ # ensure consistency of limit and sample_id
344
+ if sample_id is not None and limit is not None:
345
+ raise ValueError("You cannot specify both sample_id and limit.")
346
+
338
347
  # resolve epochs
339
348
  if isinstance(epochs, int):
340
349
  epochs = Epochs(epochs)
@@ -345,6 +354,7 @@ async def eval_async(
345
354
  epochs_reducer = epochs.reducer if epochs else None
346
355
  eval_config = EvalConfig(
347
356
  limit=limit,
357
+ sample_id=sample_id,
348
358
  epochs=epochs.epochs if epochs else None,
349
359
  epochs_reducer=reducer_log_names(epochs_reducer)
350
360
  if epochs_reducer
@@ -642,6 +652,7 @@ async def eval_retry_async(
642
652
  task_args = eval_log.eval.task_args
643
653
  tags = eval_log.eval.tags
644
654
  limit = eval_log.eval.config.limit
655
+ sample_id = eval_log.eval.config.sample_id
645
656
  epochs = (
646
657
  Epochs(eval_log.eval.config.epochs, eval_log.eval.config.epochs_reducer)
647
658
  if eval_log.eval.config.epochs
@@ -699,6 +710,7 @@ async def eval_retry_async(
699
710
  log_dir=log_dir,
700
711
  log_format=log_format,
701
712
  limit=limit,
713
+ sample_id=sample_id,
702
714
  epochs=epochs,
703
715
  fail_on_error=fail_on_error,
704
716
  debug_errors=debug_errors,
@@ -65,6 +65,7 @@ def eval_set(
65
65
  log_level_transcript: str | None = None,
66
66
  log_format: Literal["eval", "json"] | None = None,
67
67
  limit: int | tuple[int, int] | None = None,
68
+ sample_id: str | int | list[str | int] | None = None,
68
69
  epochs: int | Epochs | None = None,
69
70
  fail_on_error: bool | float | None = None,
70
71
  debug_errors: bool | None = None,
@@ -125,6 +126,7 @@ def eval_set(
125
126
  log files (defaults to "eval", the native high-performance format).
126
127
  limit (int | tuple[int, int] | None): Limit evaluated samples
127
128
  (defaults to all samples).
129
+ sample_id (str | int | list[str | int] | None): Evaluate specific sample(s) from the dataset.
128
130
  epochs (int | Epochs | None): Epochs to repeat samples for and optional score
129
131
  reducer function(s) used to combine sample scores (defaults to "mean")
130
132
  fail_on_error (bool | float | None): `True` to fail on first sample error
@@ -181,6 +183,7 @@ def eval_set(
181
183
  log_dir=log_dir,
182
184
  log_format=log_format,
183
185
  limit=limit,
186
+ sample_id=sample_id,
184
187
  epochs=epochs,
185
188
  fail_on_error=fail_on_error,
186
189
  debug_errors=debug_errors,
@@ -83,7 +83,12 @@ class TaskLogger:
83
83
  # ensure that the dataset has sample ids and record them
84
84
  sample_ids = cast(
85
85
  list[int | str],
86
- [sample.id for sample in slice_dataset(dataset, eval_config.limit)],
86
+ [
87
+ sample.id
88
+ for sample in slice_dataset(
89
+ dataset, eval_config.limit, eval_config.sample_id
90
+ )
91
+ ],
87
92
  )
88
93
 
89
94
  # create eval spec
@@ -162,6 +162,7 @@ async def task_run(options: TaskRunOptions) -> EvalLog:
162
162
  dataset=task.dataset,
163
163
  model_name=model_name,
164
164
  limit=config.limit,
165
+ sample_id=config.sample_id,
165
166
  epochs=epochs,
166
167
  log_images=log_images,
167
168
  message_limit=config.message_limit,
@@ -748,13 +749,14 @@ async def resolve_dataset(
748
749
  dataset: Dataset,
749
750
  model_name: ModelName,
750
751
  limit: int | tuple[int, int] | None,
752
+ sample_id: str | int | list[str | int] | None,
751
753
  epochs: int,
752
754
  log_images: bool,
753
755
  message_limit: int | None,
754
756
  token_limit: int | None,
755
757
  ) -> tuple[Dataset, list[Sample], list[TaskState]]:
756
- # apply limit to dataset
757
- dataset = slice_dataset(dataset, limit)
758
+ # slice dataset
759
+ dataset = slice_dataset(dataset, limit, sample_id)
758
760
 
759
761
  # apply epochs (deepcopy the samples so they remain independent)
760
762
  samples: list[Sample] = []
@@ -39,10 +39,19 @@ def task_file(task: Task, relative: bool = False) -> str | None:
39
39
  def slice_dataset(
40
40
  dataset: Dataset,
41
41
  limit: int | tuple[int, int] | None,
42
+ sample_id: str | int | list[str | int] | None,
42
43
  ) -> Dataset:
43
- dataset_limit = (
44
- slice(0, len(dataset))
45
- if limit is None
46
- else (slice(*limit) if isinstance(limit, tuple) else slice(0, limit))
47
- )
48
- return dataset[dataset_limit]
44
+ def normalise(id: str | int | None) -> str:
45
+ return id if isinstance(id, str) else str(id).zfill(20)
46
+
47
+ if sample_id is not None:
48
+ sample_id = sample_id if isinstance(sample_id, list) else [sample_id]
49
+ sample_id = [normalise(id) for id in sample_id]
50
+ return dataset.filter(lambda sample: normalise(sample.id) in sample_id)
51
+ else:
52
+ dataset_limit = (
53
+ slice(0, len(dataset))
54
+ if limit is None
55
+ else (slice(*limit) if isinstance(limit, tuple) else slice(0, limit))
56
+ )
57
+ return dataset[dataset_limit]
@@ -1,5 +1,6 @@
1
1
  import os
2
2
  from logging import (
3
+ DEBUG,
3
4
  INFO,
4
5
  WARNING,
5
6
  FileHandler,
@@ -129,7 +130,7 @@ def init_logger(
129
130
  # init logging handler on demand
130
131
  global _logHandler
131
132
  if not _logHandler:
132
- _logHandler = LogHandler(min(HTTP, levelno), transcript_levelno)
133
+ _logHandler = LogHandler(min(DEBUG, levelno), transcript_levelno)
133
134
  getLogger().addHandler(_logHandler)
134
135
 
135
136
  # establish default capture level
@@ -139,6 +140,7 @@ def init_logger(
139
140
  getLogger().setLevel(capture_level)
140
141
  getLogger(PKG_NAME).setLevel(capture_level)
141
142
  getLogger("httpx").setLevel(capture_level)
143
+ getLogger("botocore").setLevel(DEBUG)
142
144
 
143
145
  # set the levelno on the global handler
144
146
  _logHandler.display_level = levelno
@@ -154,7 +156,13 @@ def notify_logger_record(record: LogRecord, write: bool) -> None:
154
156
  if write:
155
157
  transcript()._event(LoggerEvent(message=LoggingMessage.from_log_record(record)))
156
158
  global _rate_limit_count
157
- if record.levelno <= INFO and "429" in record.getMessage():
159
+ if (record.levelno <= INFO and "429" in record.getMessage()) or (
160
+ record.levelno == DEBUG
161
+ # See https://boto3.amazonaws.com/v1/documentation/api/latest/guide/retries.html#validating-retry-attempts
162
+ # for boto retry logic / log messages (this is tracking standard or adapative retries)
163
+ and "botocore.retries.standard" in record.name
164
+ and "Retry needed, retrying request after delay of:" in record.getMessage()
165
+ ):
158
166
  _rate_limit_count = _rate_limit_count + 1
159
167
 
160
168
 
@@ -7,3 +7,10 @@ def parse_samples_limit(limit: str | None) -> int | tuple[int, int] | None:
7
7
  return (limit_split[0] - 1, limit_split[1])
8
8
  else:
9
9
  return None
10
+
11
+
12
+ def parse_sample_id(sample_id: str | None) -> list[str] | None:
13
+ if sample_id is not None:
14
+ return [id.strip() for id in sample_id.split(",")]
15
+ else:
16
+ return None
@@ -1,4 +1,5 @@
1
1
  import html
2
+ from typing import Any
2
3
 
3
4
  from rich.align import AlignMethod
4
5
  from rich.box import ROUNDED, Box
@@ -8,6 +9,8 @@ from rich.panel import Panel
8
9
  from rich.rule import Rule
9
10
  from rich.text import Text
10
11
 
12
+ from .format import format_function_call
13
+
11
14
 
12
15
  def transcript_code_theme() -> str:
13
16
  return "github-dark"
@@ -81,6 +84,11 @@ def transcript_separator(title: str, color: str) -> RenderableType:
81
84
  return Rule(title=title, style=f"{color} bold", align="center", end="\n\n")
82
85
 
83
86
 
87
+ def transcript_function(function: str, arguments: dict[str, Any]) -> RenderableType:
88
+ call = format_function_call(function, arguments)
89
+ return transcript_markdown("```python\n" + call + "\n```\n")
90
+
91
+
84
92
  LINE = Box(" ── \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n")
85
93
 
86
94
  DOTTED = Box(" ·· \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n")
@@ -20225,7 +20225,7 @@ const metadataViewsForSample = (id, sample) => {
20225
20225
  }
20226
20226
  return sampleMetadatas;
20227
20227
  };
20228
- const SampleSummary = ({ id, sample, style, sampleDescriptor }) => {
20228
+ const SampleSummary = ({ parent_id, sample, style, sampleDescriptor }) => {
20229
20229
  const input = (sampleDescriptor == null ? void 0 : sampleDescriptor.messageShape.normalized.input) > 0 ? Math.max(0.15, sampleDescriptor.messageShape.normalized.input) : 0;
20230
20230
  const target = (sampleDescriptor == null ? void 0 : sampleDescriptor.messageShape.normalized.target) > 0 ? Math.max(0.15, sampleDescriptor.messageShape.normalized.target) : 0;
20231
20231
  const answer = (sampleDescriptor == null ? void 0 : sampleDescriptor.messageShape.normalized.answer) > 0 ? Math.max(0.15, sampleDescriptor.messageShape.normalized.answer) : 0;
@@ -20246,7 +20246,7 @@ const SampleSummary = ({ id, sample, style, sampleDescriptor }) => {
20246
20246
  const columns = [];
20247
20247
  columns.push({
20248
20248
  label: "Id",
20249
- value: id,
20249
+ value: sample.id,
20250
20250
  size: `${idSize}em`
20251
20251
  });
20252
20252
  columns.push({
@@ -20299,7 +20299,7 @@ const SampleSummary = ({ id, sample, style, sampleDescriptor }) => {
20299
20299
  });
20300
20300
  return m$1`
20301
20301
  <div
20302
- id=${`sample-heading-${id}`}
20302
+ id=${`sample-heading-${parent_id}`}
20303
20303
  style=${{
20304
20304
  display: "grid",
20305
20305
  gridTemplateColumns: `${columns.map((col) => {
@@ -25449,22 +25449,35 @@ const createsSamplesDescriptor = (scorers, samples, epochs, selectedScore) => {
25449
25449
  if (!sample || !sample.scores) {
25450
25450
  return [];
25451
25451
  }
25452
- scorers.map((score2) => {
25452
+ const scoreNames = scorers.map((score2) => {
25453
25453
  return score2.name;
25454
25454
  });
25455
25455
  const sampleScorer = sample.scores[scorer];
25456
25456
  const scoreVal = sampleScorer.value;
25457
25457
  if (typeof scoreVal === "object") {
25458
25458
  const names = Object.keys(scoreVal);
25459
- const scores = names.map((name) => {
25460
- return {
25461
- name,
25462
- rendered: () => {
25463
- return scoreDescriptor.render(scoreVal[name]);
25459
+ if (names.find((name) => {
25460
+ return scoreNames.includes(name);
25461
+ })) {
25462
+ const scores = names.map((name) => {
25463
+ return {
25464
+ name,
25465
+ rendered: () => {
25466
+ return scoreDescriptor.render(scoreVal[name]);
25467
+ }
25468
+ };
25469
+ });
25470
+ return scores;
25471
+ } else {
25472
+ return [
25473
+ {
25474
+ name: scorer,
25475
+ rendered: () => {
25476
+ return scoreDescriptor.render(scoreVal);
25477
+ }
25464
25478
  }
25465
- };
25466
- });
25467
- return scores;
25479
+ ];
25480
+ }
25468
25481
  } else {
25469
25482
  return [
25470
25483
  {