hud-python 0.4.36__py3-none-any.whl → 0.4.37__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.
Potentially problematic release.
This version of hud-python might be problematic. Click here for more details.
- hud/agents/__init__.py +2 -0
- hud/agents/lite_llm.py +72 -0
- hud/agents/openai_chat_generic.py +21 -7
- hud/cli/__init__.py +19 -4
- hud/cli/build.py +17 -2
- hud/cli/dev.py +1 -1
- hud/cli/eval.py +93 -13
- hud/cli/flows/tasks.py +197 -65
- hud/cli/push.py +9 -0
- hud/cli/rl/__init__.py +14 -4
- hud/cli/rl/celebrate.py +187 -0
- hud/cli/rl/config.py +15 -8
- hud/cli/rl/local_runner.py +44 -20
- hud/cli/rl/remote_runner.py +163 -86
- hud/cli/rl/viewer.py +141 -0
- hud/cli/rl/wait_utils.py +89 -0
- hud/cli/utils/env_check.py +196 -0
- hud/cli/utils/source_hash.py +108 -0
- hud/clients/base.py +1 -1
- hud/clients/fastmcp.py +1 -1
- hud/otel/config.py +1 -1
- hud/otel/context.py +2 -2
- hud/rl/vllm_adapter.py +1 -1
- hud/server/server.py +84 -13
- hud/server/tests/test_add_tool.py +60 -0
- hud/server/tests/test_context.py +128 -0
- hud/server/tests/test_mcp_server_handlers.py +44 -0
- hud/server/tests/test_mcp_server_integration.py +405 -0
- hud/server/tests/test_mcp_server_more.py +247 -0
- hud/server/tests/test_run_wrapper.py +53 -0
- hud/server/tests/test_server_extra.py +166 -0
- hud/server/tests/test_sigterm_runner.py +78 -0
- hud/shared/hints.py +1 -1
- hud/telemetry/job.py +2 -2
- hud/types.py +9 -2
- hud/utils/tasks.py +32 -24
- hud/utils/tests/test_version.py +1 -1
- hud/version.py +1 -1
- {hud_python-0.4.36.dist-info → hud_python-0.4.37.dist-info}/METADATA +14 -12
- {hud_python-0.4.36.dist-info → hud_python-0.4.37.dist-info}/RECORD +43 -29
- {hud_python-0.4.36.dist-info → hud_python-0.4.37.dist-info}/WHEEL +0 -0
- {hud_python-0.4.36.dist-info → hud_python-0.4.37.dist-info}/entry_points.txt +0 -0
- {hud_python-0.4.36.dist-info → hud_python-0.4.37.dist-info}/licenses/LICENSE +0 -0
hud/utils/tasks.py
CHANGED
|
@@ -9,7 +9,7 @@ from hud.utils.hud_console import HUDConsole
|
|
|
9
9
|
hud_console = HUDConsole()
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
def load_tasks(tasks_input: str | list[dict]) -> list[Task]:
|
|
12
|
+
def load_tasks(tasks_input: str | list[dict], *, raw: bool = False) -> list[Task] | list[dict]:
|
|
13
13
|
"""Load tasks from various sources.
|
|
14
14
|
|
|
15
15
|
Args:
|
|
@@ -18,16 +18,19 @@ def load_tasks(tasks_input: str | list[dict]) -> list[Task]:
|
|
|
18
18
|
- Path to a JSONL file (one task per line)
|
|
19
19
|
- HuggingFace dataset name (format: "username/dataset" or "username/dataset:split")
|
|
20
20
|
- List of task dictionaries
|
|
21
|
-
|
|
21
|
+
raw: If True, return raw dicts without validation or env substitution
|
|
22
22
|
|
|
23
23
|
Returns:
|
|
24
|
-
|
|
24
|
+
- If raw=False (default): list[Task]
|
|
25
|
+
- If raw=True: list[dict]
|
|
25
26
|
"""
|
|
26
|
-
tasks = []
|
|
27
|
+
tasks: list[Task] | list[dict] = []
|
|
27
28
|
|
|
28
29
|
if isinstance(tasks_input, list):
|
|
29
30
|
# Direct list of task dicts
|
|
30
31
|
hud_console.info(f"Loading {len(tasks_input)} tasks from provided list")
|
|
32
|
+
if raw:
|
|
33
|
+
return [item for item in tasks_input if isinstance(item, dict)]
|
|
31
34
|
for item in tasks_input:
|
|
32
35
|
task = Task(**item)
|
|
33
36
|
tasks.append(task)
|
|
@@ -36,7 +39,6 @@ def load_tasks(tasks_input: str | list[dict]) -> list[Task]:
|
|
|
36
39
|
# Check if it's a file path
|
|
37
40
|
if Path(tasks_input).exists():
|
|
38
41
|
file_path = Path(tasks_input)
|
|
39
|
-
hud_console.info(f"Loading tasks from file: {tasks_input}")
|
|
40
42
|
|
|
41
43
|
with open(file_path) as f:
|
|
42
44
|
# Handle JSON files (array of tasks)
|
|
@@ -46,31 +48,33 @@ def load_tasks(tasks_input: str | list[dict]) -> list[Task]:
|
|
|
46
48
|
raise ValueError(
|
|
47
49
|
f"JSON file must contain an array of tasks, got {type(data)}"
|
|
48
50
|
)
|
|
49
|
-
|
|
51
|
+
if raw:
|
|
52
|
+
return [item for item in data if isinstance(item, dict)]
|
|
50
53
|
for item in data:
|
|
51
54
|
task = Task(**item)
|
|
52
55
|
tasks.append(task)
|
|
53
56
|
|
|
54
57
|
# Handle JSONL files (one task per line)
|
|
55
58
|
else:
|
|
59
|
+
raw_items: list[dict] = []
|
|
56
60
|
for line in f:
|
|
57
61
|
line = line.strip()
|
|
58
|
-
if line:
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if isinstance(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
62
|
+
if not line:
|
|
63
|
+
continue
|
|
64
|
+
item = json.loads(line)
|
|
65
|
+
if isinstance(item, list):
|
|
66
|
+
raw_items.extend([it for it in item if isinstance(it, dict)])
|
|
67
|
+
elif isinstance(item, dict):
|
|
68
|
+
raw_items.append(item)
|
|
69
|
+
else:
|
|
70
|
+
raise ValueError(
|
|
71
|
+
f"Invalid JSONL format: expected dict or list of dicts, got {type(item)}" # noqa: E501
|
|
72
|
+
)
|
|
73
|
+
if raw:
|
|
74
|
+
return raw_items
|
|
75
|
+
for it in raw_items:
|
|
76
|
+
task = Task(**it)
|
|
77
|
+
tasks.append(task)
|
|
74
78
|
|
|
75
79
|
# Check if it's a HuggingFace dataset
|
|
76
80
|
elif "/" in tasks_input:
|
|
@@ -88,6 +92,7 @@ def load_tasks(tasks_input: str | list[dict]) -> list[Task]:
|
|
|
88
92
|
dataset = load_dataset(dataset_name, split=split)
|
|
89
93
|
|
|
90
94
|
# Convert dataset rows to Task objects
|
|
95
|
+
raw_rows: list[dict] = []
|
|
91
96
|
for item in dataset:
|
|
92
97
|
if not isinstance(item, dict):
|
|
93
98
|
raise ValueError(
|
|
@@ -97,7 +102,11 @@ def load_tasks(tasks_input: str | list[dict]) -> list[Task]:
|
|
|
97
102
|
raise ValueError(
|
|
98
103
|
f"Invalid HuggingFace dataset: expected mcp_config and prompt, got {item}" # noqa: E501
|
|
99
104
|
)
|
|
100
|
-
|
|
105
|
+
raw_rows.append(item)
|
|
106
|
+
if raw:
|
|
107
|
+
return raw_rows
|
|
108
|
+
for row in raw_rows:
|
|
109
|
+
task = Task(**row)
|
|
101
110
|
tasks.append(task)
|
|
102
111
|
|
|
103
112
|
except ImportError as e:
|
|
@@ -115,5 +124,4 @@ def load_tasks(tasks_input: str | list[dict]) -> list[Task]:
|
|
|
115
124
|
else:
|
|
116
125
|
raise TypeError(f"tasks_input must be str or list, got {type(tasks_input)}")
|
|
117
126
|
|
|
118
|
-
hud_console.info(f"Loaded {len(tasks)} tasks")
|
|
119
127
|
return tasks
|
hud/utils/tests/test_version.py
CHANGED
hud/version.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hud-python
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.37
|
|
4
4
|
Summary: SDK for the HUD platform.
|
|
5
5
|
Project-URL: Homepage, https://github.com/hud-evals/hud-python
|
|
6
6
|
Project-URL: Bug Tracker, https://github.com/hud-evals/hud-python/issues
|
|
@@ -36,11 +36,13 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
36
36
|
Classifier: Programming Language :: Python :: 3.13
|
|
37
37
|
Requires-Python: <3.13,>=3.11
|
|
38
38
|
Requires-Dist: anthropic
|
|
39
|
+
Requires-Dist: blessed>=1.20.0
|
|
39
40
|
Requires-Dist: datasets>=2.14.0
|
|
40
41
|
Requires-Dist: httpx<1,>=0.23.0
|
|
41
42
|
Requires-Dist: hud-fastmcp-python-sdk>=0.1.2
|
|
42
43
|
Requires-Dist: hud-mcp-python-sdk>=3.13.2
|
|
43
44
|
Requires-Dist: hud-mcp-use-python-sdk==2.3.19
|
|
45
|
+
Requires-Dist: litellm>=1.55.0
|
|
44
46
|
Requires-Dist: numpy>=1.24.0
|
|
45
47
|
Requires-Dist: openai
|
|
46
48
|
Requires-Dist: opentelemetry-api>=1.34.1
|
|
@@ -156,8 +158,8 @@ OSS RL environment + evals toolkit. Wrap software as environments, run benchmark
|
|
|
156
158
|
## Highlights
|
|
157
159
|
|
|
158
160
|
- 🚀 **[MCP environment skeleton](https://docs.hud.so/core-concepts/mcp-protocol)** – any agent can call any environment.
|
|
159
|
-
- ⚡️ **[Live telemetry](https://
|
|
160
|
-
- 🗂️ **[Public benchmarks](https://
|
|
161
|
+
- ⚡️ **[Live telemetry](https://hud.so)** – inspect every tool call, observation, and reward in real time.
|
|
162
|
+
- 🗂️ **[Public benchmarks](https://hud.so/leaderboards)** – OSWorld-Verified, SheetBench-50, and more.
|
|
161
163
|
- 🌱 **[Reinforcement learning built-in](rl/)** – Verifiers gym pipelines for GRPO on any environment.
|
|
162
164
|
- 🌐 **[Cloud browsers](environments/remote_browser/)** – AnchorBrowser, Steel, BrowserBase integrations for browser automation.
|
|
163
165
|
- 🛠️ **[Hot-reload dev loop](environments/README.md#phase-5-hot-reload-development-with-cursor-agent)** – `hud dev` for iterating on environments without rebuilds.
|
|
@@ -203,14 +205,14 @@ from hud.agents import ClaudeAgent
|
|
|
203
205
|
from hud.datasets import Task # See docs: https://docs.hud.so/reference/tasks
|
|
204
206
|
|
|
205
207
|
async def main() -> None:
|
|
206
|
-
with hud.trace("Quick Start 2048"): # All telemetry works for any MCP-based agent (see https://
|
|
208
|
+
with hud.trace("Quick Start 2048"): # All telemetry works for any MCP-based agent (see https://hud.so)
|
|
207
209
|
task = {
|
|
208
210
|
"prompt": "Reach 64 in 2048.",
|
|
209
211
|
"mcp_config": {
|
|
210
212
|
"hud": {
|
|
211
213
|
"url": "https://mcp.hud.so/v3/mcp", # HUD's cloud MCP server (see https://docs.hud.so/core-concepts/architecture)
|
|
212
214
|
"headers": {
|
|
213
|
-
"Authorization": f"Bearer {settings.api_key}", # Get your key at https://
|
|
215
|
+
"Authorization": f"Bearer {settings.api_key}", # Get your key at https://hud.so
|
|
214
216
|
"Mcp-Image": "hudpython/hud-text-2048:v1.2" # Docker image from https://hub.docker.com/u/hudpython
|
|
215
217
|
}
|
|
216
218
|
}
|
|
@@ -237,7 +239,7 @@ async def main() -> None:
|
|
|
237
239
|
asyncio.run(main())
|
|
238
240
|
```
|
|
239
241
|
|
|
240
|
-
The above example let's the agent play 2048 ([See replay](https://
|
|
242
|
+
The above example let's the agent play 2048 ([See replay](https://hud.so/trace/6feed7bd-5f67-4d66-b77f-eb1e3164604f))
|
|
241
243
|
|
|
242
244
|

|
|
243
245
|
|
|
@@ -268,7 +270,7 @@ Supports multi‑turn RL for both:
|
|
|
268
270
|
- Language‑only models (e.g., `Qwen/Qwen2.5-7B-Instruct`)
|
|
269
271
|
- Vision‑Language models (e.g., `Qwen/Qwen2.5-VL-3B-Instruct`)
|
|
270
272
|
|
|
271
|
-
By default, `hud rl` provisions a persistant server and trainer in the cloud, streams telemetry to `
|
|
273
|
+
By default, `hud rl` provisions a persistant server and trainer in the cloud, streams telemetry to `hud.so`, and lets you monitor/manage models at `hud.so/models`. Use `--local` to run entirely on your machines (typically 2+ GPUs: one for vLLM, the rest for training).
|
|
272
274
|
|
|
273
275
|
Any HUD MCP environment and evaluation works with our RL pipeline (including remote configurations). See the guided docs: `https://docs.hud.so/train-agents/quickstart`.
|
|
274
276
|
|
|
@@ -278,7 +280,7 @@ This is Claude Computer Use running on our proprietary financial analyst benchma
|
|
|
278
280
|
|
|
279
281
|

|
|
280
282
|
|
|
281
|
-
> [See this trace on
|
|
283
|
+
> [See this trace on _hud.so_](https://hud.so/trace/9e212e9e-3627-4f1f-9eb5-c6d03c59070a)
|
|
282
284
|
|
|
283
285
|
This example runs the full dataset (only takes ~20 minutes) using [run_evaluation.py](examples/run_evaluation.py):
|
|
284
286
|
|
|
@@ -304,7 +306,7 @@ results = await run_dataset(
|
|
|
304
306
|
print(f"Average reward: {sum(r.reward for r in results) / len(results):.2f}")
|
|
305
307
|
```
|
|
306
308
|
|
|
307
|
-
> Running a dataset creates a job and streams results to the [
|
|
309
|
+
> Running a dataset creates a job and streams results to the [hud.so](https://hud.so) platform for analysis and [leaderboard submission](https://docs.hud.so/evaluate-agents/leaderboards).
|
|
308
310
|
|
|
309
311
|
## Building Environments (MCP)
|
|
310
312
|
|
|
@@ -395,7 +397,7 @@ Tools
|
|
|
395
397
|
hud push # needs docker login, hud api key
|
|
396
398
|
```
|
|
397
399
|
|
|
398
|
-
5. Now you can use `mcp.hud.so` to launch 100s of instances of this environment in parallel with any agent, and see everything live on [
|
|
400
|
+
5. Now you can use `mcp.hud.so` to launch 100s of instances of this environment in parallel with any agent, and see everything live on [hud.so](https://hud.so):
|
|
399
401
|
|
|
400
402
|
```python
|
|
401
403
|
from hud.agents import ClaudeAgent
|
|
@@ -426,7 +428,7 @@ result = await ClaudeAgent().run({ # See all agents: https://docs.hud.so/refere
|
|
|
426
428
|
|
|
427
429
|
## Leaderboards & benchmarks
|
|
428
430
|
|
|
429
|
-
All leaderboards are publicly available on [
|
|
431
|
+
All leaderboards are publicly available on [hud.so/leaderboards](https://hud.so/leaderboards) (see [docs](https://docs.hud.so/evaluate-agents/leaderboards))
|
|
430
432
|
|
|
431
433
|

|
|
432
434
|
|
|
@@ -440,7 +442,7 @@ Using the [`run_dataset`](https://docs.hud.so/reference/tasks#run_dataset) funct
|
|
|
440
442
|
%%{init: {"theme": "neutral", "themeVariables": {"fontSize": "14px"}} }%%
|
|
441
443
|
graph LR
|
|
442
444
|
subgraph "Platform"
|
|
443
|
-
Dashboard["📊
|
|
445
|
+
Dashboard["📊 hud.so"]
|
|
444
446
|
API["🔌 mcp.hud.so"]
|
|
445
447
|
end
|
|
446
448
|
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
hud/__init__.py,sha256=JMDFUE1pP0J1Xl_miBdt7ERvoffZmTzSFe8yxz512A8,552
|
|
2
2
|
hud/__main__.py,sha256=YR8Dq8OhINOsVfQ55PmRXXg4fEK84Rt_-rMtJ5rvhWo,145
|
|
3
3
|
hud/settings.py,sha256=disObWa-DgXzoDcCDp3y1dTPaNsbR0IvoMJL9Eg4zyo,3947
|
|
4
|
-
hud/types.py,sha256=
|
|
5
|
-
hud/version.py,sha256=
|
|
6
|
-
hud/agents/__init__.py,sha256=
|
|
4
|
+
hud/types.py,sha256=pmPj_8emfMIfEY_fRS8NgIJ56kCsolWSqQjyCzXDaGY,11072
|
|
5
|
+
hud/version.py,sha256=eyxH_OnAkABRodBYKzlnuUeSA7qG7L4E5MwL2DLmsOE,105
|
|
6
|
+
hud/agents/__init__.py,sha256=d-t5-PHHDoEFCuhv-IrpixCu7syvrjqSrDekQ0SdFiM,335
|
|
7
7
|
hud/agents/base.py,sha256=_u1zR3gXzZ1RlTCUYdMcvgHqdJBC4-AB1lZt0yBx8lg,35406
|
|
8
8
|
hud/agents/claude.py,sha256=TGhm5gE2ltINDAdEsDxKuT9iGMQ5G87R6kmabU3KPt8,16101
|
|
9
9
|
hud/agents/grounded_openai.py,sha256=U-FHjB2Nh1_o0gmlxY5F17lWJ3oHsNRIB2a7z-IKB64,11231
|
|
10
10
|
hud/agents/langchain.py,sha256=1EgCy8jfjunsWxlPC5XfvfLS6_XZVrIF1ZjtHcrvhYw,9584
|
|
11
|
+
hud/agents/lite_llm.py,sha256=Nv2o541Q2MpaopR3P7ICoRzl0eHMLz0VzKctUrEU5nc,2232
|
|
11
12
|
hud/agents/openai.py,sha256=O1xV1h1l-W8lmnmXqTYr5CwnmnaniMqOxAZbl2CTTng,14576
|
|
12
|
-
hud/agents/openai_chat_generic.py,sha256=
|
|
13
|
+
hud/agents/openai_chat_generic.py,sha256=NDk_Bht_ePf8gfW1nuvlM6CXcntcRaJw4QzzAmxA6yc,12068
|
|
13
14
|
hud/agents/misc/__init__.py,sha256=BYi4Ytp9b_vycpZFXnr5Oyw6ncKLNNGml8Jrb7bWUb4,136
|
|
14
15
|
hud/agents/misc/response_agent.py,sha256=uMuRDkz5QgaMQliNzBRepond5sb7KyqIiKm3LstjVnw,3753
|
|
15
16
|
hud/agents/tests/__init__.py,sha256=W-O-_4i34d9TTyEHV-O_q1Ai1gLhzwDaaPo02_TWQIY,34
|
|
@@ -18,32 +19,35 @@ hud/agents/tests/test_claude.py,sha256=0nZnfsbGoECvsLPdmaRnc9jVmrehVvc3kxeyiCQI2
|
|
|
18
19
|
hud/agents/tests/test_client.py,sha256=uikgh6yhjPPX2RBU4XJQMz1mNox9uXjuwsP8t93id18,13337
|
|
19
20
|
hud/agents/tests/test_grounded_openai_agent.py,sha256=VK8lUvHIjWicMX00VKPE-FZyjiJqTEhb80MuRRa9fVc,5437
|
|
20
21
|
hud/agents/tests/test_openai.py,sha256=Npbdr0acgLExGLbrleXze-k3w9LHfmqzQjPk9TnjN68,7620
|
|
21
|
-
hud/cli/__init__.py,sha256=
|
|
22
|
+
hud/cli/__init__.py,sha256=urgZQiFle1i4InTOn6FmCK_KrpGYgkVppN3v2CM5YmQ,45409
|
|
22
23
|
hud/cli/__main__.py,sha256=fDH7XITyuDITwSDIVwRso06aouADO0CzTHKqp5TOwJE,143
|
|
23
24
|
hud/cli/analyze.py,sha256=4u5oYfJMquOjT9PzzRTYVcTZDxDi0ilNP_g532_hpOU,14716
|
|
24
|
-
hud/cli/build.py,sha256=
|
|
25
|
+
hud/cli/build.py,sha256=h-4SAoe3j8Pth3mPYf26vh7q1Do5JADlvKKwkZrf2AU,19551
|
|
25
26
|
hud/cli/clone.py,sha256=AwVDIuhr8mHb1oT2Af2HrD25SiTdwATpE6zd93vzLgA,6099
|
|
26
27
|
hud/cli/debug.py,sha256=jtFW8J5F_3rhq1Hf1_SkJ7aLS3wjnyIs_LsC8k5cnzc,14200
|
|
27
|
-
hud/cli/dev.py,sha256=
|
|
28
|
-
hud/cli/eval.py,sha256=
|
|
28
|
+
hud/cli/dev.py,sha256=J0Q_ndHbQcXe64gMjXfqiccWYWpdiYWvTKbJhCAvlgI,30666
|
|
29
|
+
hud/cli/eval.py,sha256=d1RouB3rxP3axca2sRblNWZMNvHGP1EugST5fCJ-7tc,25790
|
|
29
30
|
hud/cli/get.py,sha256=sksKrdzBGZa7ZuSoQkc0haj-CvOGVSSikoVXeaUd3N4,6274
|
|
30
31
|
hud/cli/init.py,sha256=xReks9TF77kjjQKFs2l7iJ3AHUqmhbRkFJokyPitzSY,9795
|
|
31
32
|
hud/cli/list_func.py,sha256=EVi2Vc3Lb3glBNJxFx4MPnZknZ4xmuJz1OFg_dc8a_E,7177
|
|
32
33
|
hud/cli/pull.py,sha256=XGEZ8n60tbzLQP_8d9h7XYmzyCW0e2-Rkr3_tLG7jvw,12449
|
|
33
|
-
hud/cli/push.py,sha256=
|
|
34
|
+
hud/cli/push.py,sha256=DsXFrMtWBZ-HUxt6VoLihpklk8JJIe2gy-GA4AMg6Kw,18805
|
|
34
35
|
hud/cli/remove.py,sha256=8vGQyXDqgtjz85_vtusoIG8zurH4RHz6z8UMevQRYM4,6861
|
|
35
36
|
hud/cli/flows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
|
-
hud/cli/flows/tasks.py,sha256=
|
|
37
|
-
hud/cli/rl/__init__.py,sha256=
|
|
38
|
-
hud/cli/rl/
|
|
37
|
+
hud/cli/flows/tasks.py,sha256=0vqTd-pAVEqXYZUp2hntSXMu9JuCJkKZzJQ3YZ1r3AE,14564
|
|
38
|
+
hud/cli/rl/__init__.py,sha256=PuOOPr2Y7Xnn6e_DQHAZ_RzhfVOsKx_ikEFshQ5PeIg,5203
|
|
39
|
+
hud/cli/rl/celebrate.py,sha256=trGEJn3xebexlHwFVKPJKhRujVVV8sy7TQTJvRd2p9A,5947
|
|
40
|
+
hud/cli/rl/config.py,sha256=VZ8fiOI22Aw6YTRk7gj1ozpF-TU7NK8QWQgWFwMbNs0,3235
|
|
39
41
|
hud/cli/rl/display.py,sha256=hqJVGmO9csYinladhZwjF-GMvppYWngxDHajTyIJ_gM,5214
|
|
40
42
|
hud/cli/rl/gpu.py,sha256=peXS-NdUF5RyuSs0aZoCzGLboneBUpCy8f9f99WMrG0,2009
|
|
41
43
|
hud/cli/rl/gpu_utils.py,sha256=H5ckPwgj5EVP3yJ5eVihR5R7Y6Gp6pt8ZUfWCCwcLG4,11072
|
|
42
|
-
hud/cli/rl/local_runner.py,sha256=
|
|
44
|
+
hud/cli/rl/local_runner.py,sha256=NFsNmRZ4nenPnb45ZtdsILeICKEq11wmpLwq9E-a8ZE,22614
|
|
43
45
|
hud/cli/rl/presets.py,sha256=DzOO82xL5QyzdVtlX-Do1CODMvDz9ILMPapjU92jcZg,3051
|
|
44
|
-
hud/cli/rl/remote_runner.py,sha256=
|
|
46
|
+
hud/cli/rl/remote_runner.py,sha256=lIsuEJYSCXSd_Ag_tQ1xBp9RgfTd5eqFOiI51nWUZk4,17373
|
|
45
47
|
hud/cli/rl/rl_api.py,sha256=INJobvSa50ccR037u_GPsDa_9WboWyNwqEaoh9hcXj0,4306
|
|
48
|
+
hud/cli/rl/viewer.py,sha256=ExQs1IX3T8x_9aBzc4JojZ779jmFvFTh7EjOYIHzYsU,4441
|
|
46
49
|
hud/cli/rl/vllm.py,sha256=Gq_M6KsQArGz7FNIdemuM5mk16mu3xe8abpO2GCCuOE,6093
|
|
50
|
+
hud/cli/rl/wait_utils.py,sha256=FyIvqYWLOydANTetukoE5Rp2AOQi67qkiAlIJp4HpL8,2577
|
|
47
51
|
hud/cli/tests/__init__.py,sha256=ZrGVkmH7DHXGqOvjOSNGZeMYaFIRB2K8c6hwr8FPJ-8,68
|
|
48
52
|
hud/cli/tests/test_analyze.py,sha256=inbRvi7KJKoMYrcqXU6RSayoh7mAOGVrRknm6BLQFes,11055
|
|
49
53
|
hud/cli/tests/test_analyze_metadata.py,sha256=RtJ5PiOWu-AyOijLyZZwNfYazqwSMvtDS0krMMw0mak,9943
|
|
@@ -64,6 +68,7 @@ hud/cli/utils/__init__.py,sha256=L6s0oNzY2LugGp9faodCPnjzM-ZUorUH05-HmYOq5hY,35
|
|
|
64
68
|
hud/cli/utils/config.py,sha256=AnsN6FEa8V3jg3EWaqUJN38-UuYC6tVZxPfBb_5LFBs,2652
|
|
65
69
|
hud/cli/utils/cursor.py,sha256=fy850p0rVp5k_1wwOCI7rK1SggbselJrywFInSQ2gio,3009
|
|
66
70
|
hud/cli/utils/docker.py,sha256=oGVzPfp0Rn89o9d6tgSEziKy9GXFrYaWn_mjBmGRHe4,6326
|
|
71
|
+
hud/cli/utils/env_check.py,sha256=TqsmwgTfMDzfP0Ii50YxDkOP4_T5nqks9JMTxIq60-s,7095
|
|
67
72
|
hud/cli/utils/environment.py,sha256=EfATQyAz8Jybj4N9QNaaADUrpiZ2JMp2elQYnAG9gU8,4371
|
|
68
73
|
hud/cli/utils/interactive.py,sha256=sHhTjaImxlwlZ5_DTXb23Jwrjy5oJ7diB-8duhHbImU,16647
|
|
69
74
|
hud/cli/utils/local_runner.py,sha256=jnPFoJu3sCq65LSUapKCkakdlEuz__96oJU_FfOYtEg,6542
|
|
@@ -74,11 +79,12 @@ hud/cli/utils/registry.py,sha256=p6IaWmhUbf0Yh6aGa3jIPoSFT2uJPTOVBLS0jpKDUqc,437
|
|
|
74
79
|
hud/cli/utils/remote_runner.py,sha256=OOSJ6wU_gS_hJaURDfxZcyekjIIwPQKGN_Pq64tin3E,9505
|
|
75
80
|
hud/cli/utils/runner.py,sha256=7HxVGa6OTflQnO0FSuRs273wnAmbm7cFRU9RTGL3-Wo,4390
|
|
76
81
|
hud/cli/utils/server.py,sha256=EE5DJ0RAmXCEjMcZycpAsAxxCj6sOdIsXqPh38kK2ew,7416
|
|
82
|
+
hud/cli/utils/source_hash.py,sha256=zQX9Dd3RIumfepxVNBpNmV8DGcWJf8GDG6TMp7waY4k,2962
|
|
77
83
|
hud/cli/utils/tasks.py,sha256=bpH2mQkfgKUpgh1J0NtVxMxcM1jDZk2GAAPQMcqAUz4,826
|
|
78
84
|
hud/clients/README.md,sha256=XNE3mch95ozDgVqfwCGcrhlHY9CwT1GKfNANNboowto,3826
|
|
79
85
|
hud/clients/__init__.py,sha256=N5M_gZv4nP7dLRwpAiaqqaxyaLieGW6397FszeG7JGw,364
|
|
80
|
-
hud/clients/base.py,sha256=
|
|
81
|
-
hud/clients/fastmcp.py,sha256=
|
|
86
|
+
hud/clients/base.py,sha256=yyQ4ctrXVyPps7Q_JGq2wilr1diNetWZ05wUJ4YCRng,14203
|
|
87
|
+
hud/clients/fastmcp.py,sha256=1xaAg7DwMcwt_GRx2n3OsZaX-UMEQCZCaLDK4cr2HhQ,9178
|
|
82
88
|
hud/clients/mcp_use.py,sha256=WE_99LxilPnfYo2yXsxQOl3Rt8eNyYuvvIycVzpUzk0,14627
|
|
83
89
|
hud/clients/tests/__init__.py,sha256=sKOtJFFa4mDIXh1U6O8ZUHjigE8CiRMQ2PzJTIBZuVE,33
|
|
84
90
|
hud/clients/tests/test_client_integration.py,sha256=kohU6jfCNfwSnAushHeB1_CmDlRfQc7VBL0GEdJYSeI,4198
|
|
@@ -102,8 +108,8 @@ hud/native/tests/test_comparator.py,sha256=pDch3r3xDi2o5YXF_bkoLfIdHcCjse3foAaqy
|
|
|
102
108
|
hud/native/tests/test_native_init.py,sha256=Z-2dinbQYEkrbCcfBrBOLGdpXtWWOtkfPzp7ZKri68Y,2839
|
|
103
109
|
hud/otel/__init__.py,sha256=ii17ayoWiS5vAhA7UAmZ8TkmP52gs2pWyHsD46-uYbE,1003
|
|
104
110
|
hud/otel/collector.py,sha256=jLZymZ8r7xt2VDuWexfbnT7PY1-0aiyLMgjBy8KDY1M,4497
|
|
105
|
-
hud/otel/config.py,sha256=
|
|
106
|
-
hud/otel/context.py,sha256=
|
|
111
|
+
hud/otel/config.py,sha256=PzyMOk_WYlJzVgZwQ_-F0DIlBbEy8Xt3ZA2e1QvFDes,6802
|
|
112
|
+
hud/otel/context.py,sha256=9kJ_99KWGDvqU2O_DjmTHPXmhNDsMhbk_AHNvcHXR5Q,19116
|
|
107
113
|
hud/otel/exporters.py,sha256=RLAjWa8b2DJEU21740Idq4fmeIuabLEqGGUspcFDcH4,14331
|
|
108
114
|
hud/otel/instrumentation.py,sha256=fsFG9W89RdewFDxWKN9Ft4GUb7WbIKpfucTc16WxaZU,5093
|
|
109
115
|
hud/otel/processors.py,sha256=-gGRbwifplcExDQBLfx_9tqWreDImULJNcENgO9q7VU,4700
|
|
@@ -120,7 +126,7 @@ hud/rl/learner.py,sha256=FKIgIIghsNiDr_g090xokOO_BxNmTSj1O-TSJzIq_Uw,24703
|
|
|
120
126
|
hud/rl/train.py,sha256=ZigkUKj-I1nsYmFByZprqaoDZ88LVDH-6auYneEPOsA,13555
|
|
121
127
|
hud/rl/types.py,sha256=lrLKo7iaqodYth2EyeuOQfLiuzXfYM2eJjPmpObrD7c,3965
|
|
122
128
|
hud/rl/utils.py,sha256=IsgVUUibxnUzb32a4mu1sYrgJC1CwoG9E-Dd5y5VDOA,19115
|
|
123
|
-
hud/rl/vllm_adapter.py,sha256=
|
|
129
|
+
hud/rl/vllm_adapter.py,sha256=2wnTfoXPI4C9EzhVxk0GU-ArLjX7hgXS0BndMwN8Ppg,4751
|
|
124
130
|
hud/rl/tests/__init__.py,sha256=PXmD3Gs6xOAwaYKb4HnwZERDjX05N1QF-aU6ya0dBtE,27
|
|
125
131
|
hud/rl/tests/test_learner.py,sha256=LfTwB626gWurYfZv91wk8ASETBNqrLh9i_GCMP4CB3E,6834
|
|
126
132
|
hud/rl/utils/start_vllm_server.sh,sha256=ThPokrLK_Qm_uh916fHXXBfMlw1TC97P57-AEI5MuOc,910
|
|
@@ -129,19 +135,27 @@ hud/samples/browser.py,sha256=7LkzGx2G5dA8RogZwORnxxpVsxMV2gF18D_hGJIEow8,973
|
|
|
129
135
|
hud/server/__init__.py,sha256=8LUwgsXO8xiViWP7uImDwcOsWLu01r5F4r8U8qH3rSY,91
|
|
130
136
|
hud/server/context.py,sha256=6bCdSzv1FGyItu9472HbbYef279H7QuMGJDR8EtYg5Y,3210
|
|
131
137
|
hud/server/low_level.py,sha256=XYs2pOJ9kN4OcJ6ahDmXM5mWkzq5wJLpKFInUYrWEok,4701
|
|
132
|
-
hud/server/server.py,sha256=
|
|
138
|
+
hud/server/server.py,sha256=epr-yZ7XpyOe-3EPXJy2DgfU3rYCMAEebM9icDotJN4,20132
|
|
133
139
|
hud/server/helper/__init__.py,sha256=ZxO8VP3RZEBBp-q65VixuhzQgqEPSVzW0hEY9J9QqDA,116
|
|
134
140
|
hud/server/tests/__init__.py,sha256=eEYYkxX5Hz9woXVOBJ2H2_CQoEih0vH6nRt3sH2Z8v8,49
|
|
141
|
+
hud/server/tests/test_add_tool.py,sha256=9Y59LJpow3BQ31Jg7fowhV7nAeyqude9Tap9tEs_vBE,1863
|
|
142
|
+
hud/server/tests/test_context.py,sha256=y1DoraXi7_Docm8WAyjUvMG8yVkm2E9HvY_a1Orpn_k,3693
|
|
143
|
+
hud/server/tests/test_mcp_server_handlers.py,sha256=MAH7EIXbvPlrAOmtsr9zL-n9a8HIwHktSTSx15GypRA,1410
|
|
144
|
+
hud/server/tests/test_mcp_server_integration.py,sha256=YhKo4SFRpyS4ysfUvvB_svmmntwZ8bx7sXHZUuYHbHw,13415
|
|
145
|
+
hud/server/tests/test_mcp_server_more.py,sha256=tlEMRO0GNy89EmurVdsaM2YPE157q44t3SfixhtrjDs,8292
|
|
146
|
+
hud/server/tests/test_run_wrapper.py,sha256=EdwxMWCIHAp8t-l6VUeMOMhPRLTWjEVfTyysafeUl4E,1805
|
|
147
|
+
hud/server/tests/test_server_extra.py,sha256=MAmIrFwQWMFAP2AT6h1kbExZGxEvJZLq1bxvS7guQFE,5489
|
|
148
|
+
hud/server/tests/test_sigterm_runner.py,sha256=HTM_0DAxA2exGYj7LK4udxMGXHZhY9LDZaKkHhQMu_Y,2610
|
|
135
149
|
hud/shared/__init__.py,sha256=IPxPCqtPLguryN-nBq78Sakypw2bRiE2iHv3SXG8YRk,139
|
|
136
150
|
hud/shared/exceptions.py,sha256=dhmt5KMciQ2fmV-yqXtTNO868k-WzuZae6w7dOk3M44,12144
|
|
137
|
-
hud/shared/hints.py,sha256=
|
|
151
|
+
hud/shared/hints.py,sha256=aa1CtBzsxLHRSZBFCXH00uY-1j2_7WLxYFwAy-neibE,5086
|
|
138
152
|
hud/shared/requests.py,sha256=HWrPp7nBSK4jhv9wqZdFiNrVaaxV0vWS8fcgGtoztBc,9479
|
|
139
153
|
hud/shared/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
140
154
|
hud/shared/tests/test_exceptions.py,sha256=bCKGqw2RwBmlGIMNpddzyfnWAOQwSIYB76r6iaBE2is,15761
|
|
141
155
|
hud/shared/tests/test_requests.py,sha256=nKFcSN1sjrOouVU2xik9lE5Wxapy3EWsO8iIXrM_Sts,9114
|
|
142
156
|
hud/telemetry/__init__.py,sha256=uWiloBMXgEzPRsRIOpiSBhcTxJDyHfBqTg7qi8kxSTc,683
|
|
143
157
|
hud/telemetry/instrument.py,sha256=m3u6YK02PTk39Jr4L3se7l-cYyKx0maCaqf5Z5JqWNA,14096
|
|
144
|
-
hud/telemetry/job.py,sha256=
|
|
158
|
+
hud/telemetry/job.py,sha256=LjspT-mSqQO2DnFL6h0ZkCkeMrrpjAuFVZnTJiOaDek,11585
|
|
145
159
|
hud/telemetry/replay.py,sha256=YW17s314s5Wy6Rl8MXHqg1FU8EF9_XcHBMJI0rrkyS4,2306
|
|
146
160
|
hud/telemetry/trace.py,sha256=N2b_kc1JQKqxGb0mQjJ2HQrAJR94_Ai-1UCIs3LdANI,4671
|
|
147
161
|
hud/telemetry/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -195,7 +209,7 @@ hud/utils/hud_console.py,sha256=ywTrzyNhWFoQN2PpzpDDKp_32b-ACDvfKQuWxDoF8iE,2189
|
|
|
195
209
|
hud/utils/mcp.py,sha256=pMadd7A0DH6Y_aWywKU8jVYu2pRHGPEndV2ZQFrrj60,2888
|
|
196
210
|
hud/utils/pretty_errors.py,sha256=WGeL4CTHtlA6KgPuV_JSX5l6H4-xbuTp6Y6tw1bkiFg,2430
|
|
197
211
|
hud/utils/progress.py,sha256=suikwFM8sdSfkV10nAOEaInDhG4XKgOSvFePg4jSj1A,5927
|
|
198
|
-
hud/utils/tasks.py,sha256=
|
|
212
|
+
hud/utils/tasks.py,sha256=4v8FvVhXXefbWFldf564XPCQIActYI3tmA510-SA4LE,4967
|
|
199
213
|
hud/utils/telemetry.py,sha256=hrVIx2rUjSGyy9IVxTZ_3Jii83PiHjyFRd5ls2whimM,1863
|
|
200
214
|
hud/utils/tool_shorthand.py,sha256=_haLgK3yazLR2Y0jlEHUUQjw9uZCxi9yTipAwdOAJ70,2148
|
|
201
215
|
hud/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -204,10 +218,10 @@ hud/utils/tests/test_init.py,sha256=2QLQSGgyP9wJhOvPCusm_zjJad0qApOZi1BXpxcdHXQ,
|
|
|
204
218
|
hud/utils/tests/test_mcp.py,sha256=0pUa16mL-bqbZDXp5NHBnt1gO5o10BOg7zTMHZ1DNPM,4023
|
|
205
219
|
hud/utils/tests/test_progress.py,sha256=QSF7Kpi03Ff_l3mAeqW9qs1nhK50j9vBiSobZq7T4f4,7394
|
|
206
220
|
hud/utils/tests/test_telemetry.py,sha256=5jl7bEx8C8b-FfFUko5pf4UY-mPOR-9HaeL98dGtVHM,2781
|
|
207
|
-
hud/utils/tests/test_version.py,sha256=
|
|
221
|
+
hud/utils/tests/test_version.py,sha256=734xb4pHpNbO99PYx6axzFkgg6qzS06uDGbnsGWq87w,160
|
|
208
222
|
hud/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
209
|
-
hud_python-0.4.
|
|
210
|
-
hud_python-0.4.
|
|
211
|
-
hud_python-0.4.
|
|
212
|
-
hud_python-0.4.
|
|
213
|
-
hud_python-0.4.
|
|
223
|
+
hud_python-0.4.37.dist-info/METADATA,sha256=EYWnZtysnXJRiDAqcEOcIhjW9L6cCmQTcCkDsSDSE3o,21785
|
|
224
|
+
hud_python-0.4.37.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
225
|
+
hud_python-0.4.37.dist-info/entry_points.txt,sha256=jJbodNFg1m0-CDofe5AHvB4zKBq7sSdP97-ohaQ3ae4,63
|
|
226
|
+
hud_python-0.4.37.dist-info/licenses/LICENSE,sha256=yIzBheVUf86FC1bztAcr7RYWWNxyd3B-UJQ3uddg1HA,1078
|
|
227
|
+
hud_python-0.4.37.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|