hud-python 0.6.2__py3-none-any.whl → 0.6.3__py3-none-any.whl
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.
- hud/cli/eval.py +38 -4
- hud/cli/init.py +3 -3
- hud/cli/templates.py +4 -5
- hud/cli/tests/test_deploy.py +1 -1
- hud/cli/tests/test_eval_config.py +29 -0
- hud/cli/tests/test_init.py +8 -0
- hud/eval/job.py +33 -9
- hud/eval/run.py +8 -1
- hud/eval/taskset.py +18 -2
- hud/version.py +1 -1
- {hud_python-0.6.2.dist-info → hud_python-0.6.3.dist-info}/METADATA +1 -1
- {hud_python-0.6.2.dist-info → hud_python-0.6.3.dist-info}/RECORD +15 -15
- {hud_python-0.6.2.dist-info → hud_python-0.6.3.dist-info}/WHEEL +0 -0
- {hud_python-0.6.2.dist-info → hud_python-0.6.3.dist-info}/entry_points.txt +0 -0
- {hud_python-0.6.2.dist-info → hud_python-0.6.3.dist-info}/licenses/LICENSE +0 -0
hud/cli/eval.py
CHANGED
|
@@ -5,6 +5,7 @@ Config Override Order: CLI arguments > .hud_eval.toml > defaults
|
|
|
5
5
|
|
|
6
6
|
from __future__ import annotations
|
|
7
7
|
|
|
8
|
+
import ast
|
|
8
9
|
import asyncio
|
|
9
10
|
import logging
|
|
10
11
|
import os
|
|
@@ -665,13 +666,46 @@ def _build_agent(cfg: EvalConfig) -> Any:
|
|
|
665
666
|
return cast("Any", cfg.agent_type.cls)(config=config)
|
|
666
667
|
|
|
667
668
|
|
|
669
|
+
def _python_defines_environment(path: Path) -> bool:
|
|
670
|
+
"""Return True when ``path`` constructs a v6 :class:`~hud.environment.Environment`."""
|
|
671
|
+
try:
|
|
672
|
+
tree = ast.parse(path.read_text(encoding="utf-8"))
|
|
673
|
+
except (OSError, SyntaxError):
|
|
674
|
+
return False
|
|
675
|
+
for node in ast.walk(tree):
|
|
676
|
+
if not isinstance(node, ast.Call):
|
|
677
|
+
continue
|
|
678
|
+
callee = node.func
|
|
679
|
+
callee_name = (
|
|
680
|
+
callee.id
|
|
681
|
+
if isinstance(callee, ast.Name)
|
|
682
|
+
else callee.attr
|
|
683
|
+
if isinstance(callee, ast.Attribute)
|
|
684
|
+
else None
|
|
685
|
+
)
|
|
686
|
+
if callee_name == "Environment":
|
|
687
|
+
return True
|
|
688
|
+
return False
|
|
689
|
+
|
|
690
|
+
|
|
668
691
|
def _spawn_target(source: Path) -> Path:
|
|
669
|
-
"""The path the ``LocalRuntime`` provider serves
|
|
670
|
-
|
|
671
|
-
|
|
692
|
+
"""The path the ``LocalRuntime`` provider serves.
|
|
693
|
+
|
|
694
|
+
Directories and env-defining ``.py`` files are served as-is. Task-only
|
|
695
|
+
sources (``tasks.py`` importing from ``env.py``) resolve to a sibling
|
|
696
|
+
``env.py`` or the containing directory. JSON/JSONL data files use the
|
|
697
|
+
surrounding directory (the env source lives next to the tasks file).
|
|
698
|
+
"""
|
|
672
699
|
resolved = source.resolve()
|
|
673
|
-
if resolved.is_dir()
|
|
700
|
+
if resolved.is_dir():
|
|
701
|
+
return resolved
|
|
702
|
+
if resolved.suffix != ".py":
|
|
703
|
+
return resolved.parent
|
|
704
|
+
if _python_defines_environment(resolved):
|
|
674
705
|
return resolved
|
|
706
|
+
env_py = resolved.parent / "env.py"
|
|
707
|
+
if env_py.is_file():
|
|
708
|
+
return env_py
|
|
675
709
|
return resolved.parent
|
|
676
710
|
|
|
677
711
|
|
hud/cli/init.py
CHANGED
|
@@ -76,8 +76,8 @@ def init_command(
|
|
|
76
76
|
None,
|
|
77
77
|
"--preset",
|
|
78
78
|
"-p",
|
|
79
|
-
help="Starter preset to download from GitHub (e.g. blank,
|
|
80
|
-
"deepresearch,
|
|
79
|
+
help="Starter preset to download from GitHub (e.g. blank, browser, "
|
|
80
|
+
"deepresearch, cua, autonomous-businesses, verilog). Omit for an interactive picker; in a "
|
|
81
81
|
"non-interactive shell, omitting it writes the minimal local scaffold.",
|
|
82
82
|
),
|
|
83
83
|
) -> None:
|
|
@@ -89,7 +89,7 @@ def init_command(
|
|
|
89
89
|
|
|
90
90
|
Examples:
|
|
91
91
|
hud init my-env # interactive picker (or local scaffold)
|
|
92
|
-
hud init my-env --preset
|
|
92
|
+
hud init my-env --preset browser # download the browser starter
|
|
93
93
|
hud init my-env --dir envs # create ./envs/my-env[/not dim]
|
|
94
94
|
"""
|
|
95
95
|
hud_console = HUDConsole()
|
hud/cli/templates.py
CHANGED
|
@@ -13,7 +13,7 @@ COPY . .
|
|
|
13
13
|
|
|
14
14
|
# Serve the Environment's control channel (tcp JSON-RPC) on 8765.
|
|
15
15
|
EXPOSE 8765
|
|
16
|
-
CMD ["uv", "run", "
|
|
16
|
+
CMD ["uv", "run", "hud", "serve", "env:env", "--host", "0.0.0.0", "--port", "8765"]
|
|
17
17
|
"""
|
|
18
18
|
|
|
19
19
|
# fmt: off
|
|
@@ -78,7 +78,7 @@ async def count(sentence: str, letter: str):
|
|
|
78
78
|
|
|
79
79
|
|
|
80
80
|
# =============================================================================
|
|
81
|
-
# TEST - run with: python env.py
|
|
81
|
+
# TEST - run with: uv run python env.py
|
|
82
82
|
# =============================================================================
|
|
83
83
|
|
|
84
84
|
async def test():
|
|
@@ -136,7 +136,6 @@ version = "0.1.0"
|
|
|
136
136
|
requires-python = ">=3.11"
|
|
137
137
|
dependencies = ["hud-python"]
|
|
138
138
|
|
|
139
|
-
[
|
|
140
|
-
|
|
141
|
-
build-backend = "hatchling.build"
|
|
139
|
+
[tool.uv]
|
|
140
|
+
package = false
|
|
142
141
|
"""
|
hud/cli/tests/test_deploy.py
CHANGED
|
@@ -48,7 +48,7 @@ class TestResolveEnvironmentName:
|
|
|
48
48
|
|
|
49
49
|
def test_entrypoint_disambiguates_subagent(self, tmp_path: Path) -> None:
|
|
50
50
|
(tmp_path / "Dockerfile").write_text(
|
|
51
|
-
'CMD ["hud", "
|
|
51
|
+
'CMD ["hud", "serve", "env:env", "--port", "8765"]\n', encoding="utf-8"
|
|
52
52
|
)
|
|
53
53
|
(tmp_path / "env.py").write_text('env = Environment("trace-explorer")\n', encoding="utf-8")
|
|
54
54
|
(tmp_path / "verify.py").write_text(
|
|
@@ -237,3 +237,32 @@ def test_eval_max_steps_lands_in_agent_config() -> None:
|
|
|
237
237
|
)
|
|
238
238
|
agent = eval_mod._build_agent(cfg)
|
|
239
239
|
assert agent.config.max_steps == 17
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
def test_spawn_target_serves_single_file_env(tmp_path: Path) -> None:
|
|
243
|
+
env_py = tmp_path / "tasks.py"
|
|
244
|
+
env_py.write_text(
|
|
245
|
+
'from hud import Environment\nenv = Environment(name="demo")\n',
|
|
246
|
+
encoding="utf-8",
|
|
247
|
+
)
|
|
248
|
+
assert eval_mod._spawn_target(env_py) == env_py.resolve()
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
def test_spawn_target_resolves_split_tasks_layout(tmp_path: Path) -> None:
|
|
252
|
+
(tmp_path / "env.py").write_text(
|
|
253
|
+
'from hud.environment import Environment\nenv = Environment(name="demo")\n',
|
|
254
|
+
encoding="utf-8",
|
|
255
|
+
)
|
|
256
|
+
tasks_py = tmp_path / "tasks.py"
|
|
257
|
+
tasks_py.write_text("from env import env\n\ntasks = []\n", encoding="utf-8")
|
|
258
|
+
assert eval_mod._spawn_target(tasks_py) == (tmp_path / "env.py").resolve()
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
def test_spawn_target_json_uses_parent_directory(tmp_path: Path) -> None:
|
|
262
|
+
tasks_json = tmp_path / "tasks.json"
|
|
263
|
+
tasks_json.write_text("[]", encoding="utf-8")
|
|
264
|
+
assert eval_mod._spawn_target(tasks_json) == tmp_path.resolve()
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
def test_spawn_target_directory_is_served_as_is(tmp_path: Path) -> None:
|
|
268
|
+
assert eval_mod._spawn_target(tmp_path) == tmp_path.resolve()
|
hud/cli/tests/test_init.py
CHANGED
|
@@ -29,6 +29,14 @@ def test_init_scaffolds_a_runnable_package(tmp_path: Path) -> None:
|
|
|
29
29
|
assert (target / "tasks.py").read_text().startswith('"""')
|
|
30
30
|
assert 'name = "my-cool-env"' in (target / "pyproject.toml").read_text()
|
|
31
31
|
|
|
32
|
+
pyproject = (target / "pyproject.toml").read_text()
|
|
33
|
+
assert "package = false" in pyproject
|
|
34
|
+
assert "[build-system]" not in pyproject
|
|
35
|
+
|
|
36
|
+
dockerfile = (target / "Dockerfile.hud").read_text()
|
|
37
|
+
assert 'CMD ["uv", "run", "hud", "serve"' in dockerfile
|
|
38
|
+
assert '"dev"' not in dockerfile
|
|
39
|
+
|
|
32
40
|
|
|
33
41
|
def test_init_refuses_to_clobber_nonempty_directory(tmp_path: Path) -> None:
|
|
34
42
|
target = tmp_path / "taken"
|
hud/eval/job.py
CHANGED
|
@@ -38,17 +38,20 @@ class Job:
|
|
|
38
38
|
name: str
|
|
39
39
|
runs: list[Run] = field(default_factory=list)
|
|
40
40
|
group: int = 1
|
|
41
|
+
#: Platform taskset id this job runs, when it's a synced taskset
|
|
42
|
+
#: (``Taskset.from_api``). Links the job to that taskset on the platform.
|
|
43
|
+
taskset_id: str | None = None
|
|
41
44
|
|
|
42
45
|
@classmethod
|
|
43
|
-
async def start(cls, name: str, *, group: int = 1) -> Job:
|
|
46
|
+
async def start(cls, name: str, *, group: int = 1, taskset_id: str | None = None) -> Job:
|
|
44
47
|
"""Open a job spanning multiple scheduler calls.
|
|
45
48
|
|
|
46
49
|
A scheduler call mints its own job by default; pass a started job as
|
|
47
50
|
``job=`` to ``Task.run`` / ``Taskset.run`` to accumulate every run of a
|
|
48
51
|
longer arc — a training session, a chat conversation — under one id.
|
|
49
52
|
"""
|
|
50
|
-
job = cls(id=uuid.uuid4().hex, name=name, group=group)
|
|
51
|
-
await job_enter(job.id, name=name, group=group)
|
|
53
|
+
job = cls(id=uuid.uuid4().hex, name=name, group=group, taskset_id=taskset_id)
|
|
54
|
+
await job_enter(job.id, name=name, group=group, taskset_id=taskset_id)
|
|
52
55
|
return job
|
|
53
56
|
|
|
54
57
|
@property
|
|
@@ -79,21 +82,42 @@ def _reporting_enabled() -> bool:
|
|
|
79
82
|
return bool(settings.telemetry_enabled and settings.api_key)
|
|
80
83
|
|
|
81
84
|
|
|
82
|
-
async def job_enter(job_id: str, *, name: str, group: int) -> None:
|
|
83
|
-
"""Register a batch job with the platform.
|
|
85
|
+
async def job_enter(job_id: str, *, name: str, group: int, taskset_id: str | None = None) -> None:
|
|
86
|
+
"""Register a batch job with the platform.
|
|
87
|
+
|
|
88
|
+
``taskset_id`` links the job to a synced taskset (set when running
|
|
89
|
+
``Taskset.from_api``); ``None`` for ad-hoc/local tasksets. The platform
|
|
90
|
+
creates no taskset on its own — remote rollouts carry the scenario inline.
|
|
91
|
+
"""
|
|
84
92
|
if not _reporting_enabled():
|
|
85
93
|
return
|
|
86
|
-
await _report(
|
|
94
|
+
await _report(
|
|
95
|
+
f"/trace/job/{job_id}/enter",
|
|
96
|
+
{"name": name, "group": group, "taskset_id": taskset_id},
|
|
97
|
+
)
|
|
87
98
|
from hud.settings import settings
|
|
88
99
|
|
|
89
100
|
logger.info("job: %s/jobs/%s", settings.hud_web_url, job_id)
|
|
90
101
|
|
|
91
102
|
|
|
92
|
-
async def trace_enter(
|
|
93
|
-
|
|
103
|
+
async def trace_enter(
|
|
104
|
+
trace_id: str,
|
|
105
|
+
*,
|
|
106
|
+
job_id: str | None,
|
|
107
|
+
group_id: str | None,
|
|
108
|
+
model: str | None = None,
|
|
109
|
+
) -> None:
|
|
110
|
+
"""Report that one rollout started.
|
|
111
|
+
|
|
112
|
+
``model`` is the model string the agent will sample (when known); the
|
|
113
|
+
platform resolves it and attributes the trace immediately on enter.
|
|
114
|
+
"""
|
|
94
115
|
if not _reporting_enabled():
|
|
95
116
|
return
|
|
96
|
-
await _report(
|
|
117
|
+
await _report(
|
|
118
|
+
f"/trace/{trace_id}/enter",
|
|
119
|
+
{"job_id": job_id, "group_id": group_id, "model": model},
|
|
120
|
+
)
|
|
97
121
|
|
|
98
122
|
|
|
99
123
|
async def trace_exit(run: Run) -> None:
|
hud/eval/run.py
CHANGED
|
@@ -295,8 +295,15 @@ async def rollout(
|
|
|
295
295
|
job_id = uuid.uuid4().hex
|
|
296
296
|
await job_enter(job_id, name=task.id, group=1)
|
|
297
297
|
trace_id = trace_id or uuid.uuid4().hex
|
|
298
|
+
# Report the model the agent will sample so the platform attributes the
|
|
299
|
+
# trace to it on enter. Only LLM tool agents carry an inference-model slug
|
|
300
|
+
# (``config.model``); robot/other agents have none. Local import avoids an
|
|
301
|
+
# eval<->agents import cycle.
|
|
302
|
+
from hud.agents.tool_agent import ToolAgent
|
|
303
|
+
|
|
304
|
+
agent_model = agent.config.model if isinstance(agent, ToolAgent) else None
|
|
298
305
|
with set_trace_context(trace_id):
|
|
299
|
-
await trace_enter(trace_id, job_id=job_id, group_id=group_id)
|
|
306
|
+
await trace_enter(trace_id, job_id=job_id, group_id=group_id, model=agent_model)
|
|
300
307
|
run: Run | None = None
|
|
301
308
|
_phase = "provisioning"
|
|
302
309
|
|
hud/eval/taskset.py
CHANGED
|
@@ -59,6 +59,17 @@ class Taskset:
|
|
|
59
59
|
self.origin = origin
|
|
60
60
|
self.tasks: dict[str, Task] = self._index_by_slug(list(tasks))
|
|
61
61
|
|
|
62
|
+
@property
|
|
63
|
+
def api_id(self) -> str | None:
|
|
64
|
+
"""The platform taskset id when loaded via :meth:`from_api`, else None.
|
|
65
|
+
|
|
66
|
+
Threaded into the job so a remote run of a synced taskset links to it;
|
|
67
|
+
ad-hoc/file/module tasksets have none and create no taskset.
|
|
68
|
+
"""
|
|
69
|
+
if self.origin and self.origin.startswith("api:"):
|
|
70
|
+
return self.origin[len("api:") :]
|
|
71
|
+
return None
|
|
72
|
+
|
|
62
73
|
@classmethod
|
|
63
74
|
def from_file(cls, path: str | Path) -> Taskset:
|
|
64
75
|
"""Load a taskset from ``.py`` source, a directory, or JSON/JSONL data.
|
|
@@ -242,8 +253,13 @@ class Taskset:
|
|
|
242
253
|
expanded.extend((task, group_id) for _ in range(group))
|
|
243
254
|
|
|
244
255
|
if job is None:
|
|
245
|
-
job = Job(
|
|
246
|
-
|
|
256
|
+
job = Job(
|
|
257
|
+
id=uuid.uuid4().hex,
|
|
258
|
+
name=_job_name(self.name, task_list, group),
|
|
259
|
+
group=group,
|
|
260
|
+
taskset_id=self.api_id,
|
|
261
|
+
)
|
|
262
|
+
await job_enter(job.id, name=job.name, group=group, taskset_id=self.api_id)
|
|
247
263
|
job_id = job.id
|
|
248
264
|
|
|
249
265
|
# Placement is chosen once for the batch: HostedRuntime delegates the
|
hud/version.py
CHANGED
|
@@ -5,7 +5,7 @@ hud/conftest.py,sha256=HKbHvmFXLPX6KFSJgPFUAM22auclNNdFmHGwilNzg98,1012
|
|
|
5
5
|
hud/server.py,sha256=NtSHIjBFr9lYvryfXrCa-VhwqnwkRy7n5fp_OuNhNOI,1235
|
|
6
6
|
hud/settings.py,sha256=crfeQArM_8JnwmMdx0fcwL5xCvJMjeofGrGbpn0nW3c,6393
|
|
7
7
|
hud/types.py,sha256=yOBFED8Ii7KA-8EzvmE3CU16LCXVigPnNjjl3kB8aRo,15326
|
|
8
|
-
hud/version.py,sha256=
|
|
8
|
+
hud/version.py,sha256=Fp9FcgGRmYznsb5parYeGGuY6b_pSnDj5Yz7XEFRzDU,104
|
|
9
9
|
hud/agents/__init__.py,sha256=ISruomRkEw1-cWCncyCgqKeeueYZFeBvFJ62RBIBQI8,4866
|
|
10
10
|
hud/agents/base.py,sha256=WgEOWUmMioXTxYe6cOvbqnbM4n989Z9kFEZIN6xJ3pU,659
|
|
11
11
|
hud/agents/tool_agent.py,sha256=a0xsh2d8IwvmiPGMs9LCzghi61FHt4vMK_9sW8eNFbA,12557
|
|
@@ -94,23 +94,23 @@ hud/cli/__main__.py,sha256=fDH7XITyuDITwSDIVwRso06aouADO0CzTHKqp5TOwJE,143
|
|
|
94
94
|
hud/cli/cancel.py,sha256=MHRdZ6IoFy3iac9NtTT_c91IB_iQbYISsCb7ph7u298,3785
|
|
95
95
|
hud/cli/client.py,sha256=cC23TUTo7w4S63jtk8SWkFWzG9h8Z2AKwYEqaefBWqg,2946
|
|
96
96
|
hud/cli/deploy.py,sha256=QytQKmGY60YKNnQnhv0gXjMl9BVdwsvMRq0yZypVgpY,26082
|
|
97
|
-
hud/cli/eval.py,sha256=
|
|
98
|
-
hud/cli/init.py,sha256=
|
|
97
|
+
hud/cli/eval.py,sha256=mgXRftSef-6aAr8EkmYumQePGS0djcsUeR2TIDZIKQg,34812
|
|
98
|
+
hud/cli/init.py,sha256=LfxVnuw5rnPCIvCnKWYIkAt6cg2Wxk-DSOM16lbuOvQ,6470
|
|
99
99
|
hud/cli/login.py,sha256=3DhM_FfvfjP-cdfCj596kPo0bE9L3eQdz520X0oWqbc,7961
|
|
100
100
|
hud/cli/models.py,sha256=NInyi2I5x-GFBpcTdjvfTI3f3eWC_U-E-SgWJUxbQz8,8770
|
|
101
101
|
hud/cli/presets.py,sha256=qZmc_GKwdnRNJqxRqrg-MDUhN1Vh1JcDB4nJ94_AXLw,4523
|
|
102
102
|
hud/cli/serve.py,sha256=074y6dGh1yPxr6m8MScKpYPXo2SX38zWbq2uZUrXl9k,3757
|
|
103
103
|
hud/cli/sync.py,sha256=rvbcAM7ZfXOrlxRT3Zpp25Y-UkFbPqTuOzrcHAH1tK4,16927
|
|
104
104
|
hud/cli/task.py,sha256=eYByPZHCqSy1GFiyZOVHNNqDFxvHaSLUGNQZ7o9kdz4,8111
|
|
105
|
-
hud/cli/templates.py,sha256=
|
|
105
|
+
hud/cli/templates.py,sha256=bOu31T9e3IueWvmwU-PFJz869V2EZbZL9ECApfdj-Dk,4691
|
|
106
106
|
hud/cli/tests/__init__.py,sha256=ZrGVkmH7DHXGqOvjOSNGZeMYaFIRB2K8c6hwr8FPJ-8,68
|
|
107
107
|
hud/cli/tests/test_cli_init.py,sha256=e4pHfw4jLt2TY5n_fSTfA7XRcMsu1hKxOK7PNfVRO7U,3002
|
|
108
108
|
hud/cli/tests/test_cli_main.py,sha256=0wMho9p9NcGjp0jLiUtCQh_FYdbMaCJtSY3sBbSgPwA,697
|
|
109
109
|
hud/cli/tests/test_cli_more_wrappers.py,sha256=EEFrqTMg3yknQdmb8hWcHJAbinGAOGyqx3CGdiVX1b8,115
|
|
110
|
-
hud/cli/tests/test_deploy.py,sha256=
|
|
110
|
+
hud/cli/tests/test_deploy.py,sha256=atjacSnfZGf2DVG82Hf1vWswweqDKl6OBxb_Gmddma0,13985
|
|
111
111
|
hud/cli/tests/test_eval_bedrock.py,sha256=UBGakgIV4kzXUj0Jtbr3t05xBss66YPqruKsovUYyoo,1900
|
|
112
|
-
hud/cli/tests/test_eval_config.py,sha256=
|
|
113
|
-
hud/cli/tests/test_init.py,sha256=
|
|
112
|
+
hud/cli/tests/test_eval_config.py,sha256=A4ViJOap-taGwYckb3CJqc-gSLFCxHt-86tPx8nv_dE,9034
|
|
113
|
+
hud/cli/tests/test_init.py,sha256=KjBMyfbu9N46v8Fv1OUIC5kQTgkB3WLXNkOYUV4p_io,1778
|
|
114
114
|
hud/cli/tests/test_main_module.py,sha256=PyfuSdqI-4Zt-kd16FMj2XHEHrw7SQ75YLJbQPdcIco,1223
|
|
115
115
|
hud/cli/tests/test_sync_export.py,sha256=wd4ICZlNr_7XMw8MfNJuC8v0-lhywsjG7DnZE1zpJek,735
|
|
116
116
|
hud/cli/utils/__init__.py,sha256=L6s0oNzY2LugGp9faodCPnjzM-ZUorUH05-HmYOq5hY,35
|
|
@@ -162,12 +162,12 @@ hud/environment/tests/test_tunnel.py,sha256=CDUO3wudYwxRTXhJCFsz3KsSxe10k9tesPd7
|
|
|
162
162
|
hud/eval/__init__.py,sha256=keLJ4nozyM5soYcqPb1_t821u-xrp0QH0iQo_HS8gr0,2109
|
|
163
163
|
hud/eval/chat.py,sha256=Gu6aDv1UkDAZ8qs41TXLUrFlcX4cav4HHSa7Yyovifw,5853
|
|
164
164
|
hud/eval/file_tracking.py,sha256=MqLNl_lYfp74KCr4ZbwW9yGHmIyJ6GeOgAN9NMhELgs,4278
|
|
165
|
-
hud/eval/job.py,sha256=
|
|
166
|
-
hud/eval/run.py,sha256=
|
|
165
|
+
hud/eval/job.py,sha256=QMck-M_0HWtEd56hvfdYaNnStLlIOuNOGBStdcLr2vI,5606
|
|
166
|
+
hud/eval/run.py,sha256=oyuFkT9W47KixTX8cmQMoO65R0QTxgd6sk9_eL02d9k,17276
|
|
167
167
|
hud/eval/runtime.py,sha256=q71caY2XuWYvnKJ3zxB3bBawLU970bg_HwxcbdSD_Ko,40738
|
|
168
168
|
hud/eval/sync.py,sha256=i7kxOoLyX5t6Jf9AoT9IRiDVhAfvY2bPIuYyDdqtc-Y,6469
|
|
169
169
|
hud/eval/task.py,sha256=9xQ_x4AjY26M-sVRH6HhDZpKeofBw1hd8LZ0csBy53k,4617
|
|
170
|
-
hud/eval/taskset.py,sha256=
|
|
170
|
+
hud/eval/taskset.py,sha256=9KVYxoeMnMHa2syR4fRGh9r1IuKoDVyMe7WEUFvaGxQ,12086
|
|
171
171
|
hud/eval/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
172
172
|
hud/eval/tests/test_chat.py,sha256=yQt_dM1UJu-Cw8JS8di102h06ee7QI9CqNA27U66_Qg,4310
|
|
173
173
|
hud/eval/tests/test_docker_provider.py,sha256=1W1xyOzjHti6jfV2eiVnNd5CxKEMAKq8NBgBy-m5ftA,23741
|
|
@@ -221,8 +221,8 @@ hud/utils/tests/test_platform.py,sha256=mwhyFkUBvgmHRc43vQ_JgAAW2N9fIaxkQhVo-GB4
|
|
|
221
221
|
hud/utils/tests/test_requests.py,sha256=ENK6P5xLTuSgWDcCau4zCj_5zPV_EooGwU4P8YYl5Gw,9109
|
|
222
222
|
hud/utils/tests/test_serialization.py,sha256=GY4NiFUJtwLSYQWA0n1zme-Ul4DnBLByHCOOkxn2kLM,819
|
|
223
223
|
hud/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
224
|
-
hud_python-0.6.
|
|
225
|
-
hud_python-0.6.
|
|
226
|
-
hud_python-0.6.
|
|
227
|
-
hud_python-0.6.
|
|
228
|
-
hud_python-0.6.
|
|
224
|
+
hud_python-0.6.3.dist-info/METADATA,sha256=SI8xLaheCjc74TPSLvbYoHFDWOlgMzb8b4sdlfQ8fEY,12304
|
|
225
|
+
hud_python-0.6.3.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
|
|
226
|
+
hud_python-0.6.3.dist-info/entry_points.txt,sha256=jJbodNFg1m0-CDofe5AHvB4zKBq7sSdP97-ohaQ3ae4,63
|
|
227
|
+
hud_python-0.6.3.dist-info/licenses/LICENSE,sha256=yIzBheVUf86FC1bztAcr7RYWWNxyd3B-UJQ3uddg1HA,1078
|
|
228
|
+
hud_python-0.6.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|