hud-python 0.4.27__py3-none-any.whl → 0.4.29__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/__init__.py +2 -1
- hud/agents/base.py +73 -45
- hud/agents/claude.py +8 -4
- hud/agents/openai_chat_generic.py +65 -40
- hud/agents/tests/test_base.py +0 -4
- hud/agents/tests/test_openai.py +1 -1
- hud/cli/__init__.py +182 -52
- hud/cli/dev.py +8 -9
- hud/cli/eval.py +317 -119
- hud/cli/flows/__init__.py +0 -0
- hud/cli/flows/tasks.py +0 -0
- hud/cli/get.py +160 -0
- hud/cli/rl/__init__.py +563 -71
- hud/cli/rl/config.py +94 -0
- hud/cli/rl/display.py +133 -0
- hud/cli/rl/gpu.py +63 -0
- hud/cli/rl/gpu_utils.py +318 -0
- hud/cli/rl/presets.py +96 -0
- hud/cli/rl/remote_runner.py +348 -0
- hud/cli/rl/rl_api.py +150 -0
- hud/cli/rl/vllm.py +177 -0
- hud/cli/tests/test_analyze_metadata.py +0 -1
- hud/cli/utils/tasks.py +26 -0
- hud/clients/base.py +21 -23
- hud/clients/mcp_use.py +36 -44
- hud/clients/tests/test_mcp_use_retry.py +10 -10
- hud/datasets/__init__.py +4 -3
- hud/datasets/{execution/parallel.py → parallel.py} +1 -1
- hud/datasets/{execution/runner.py → runner.py} +1 -1
- hud/datasets/utils.py +1 -1
- hud/native/tests/test_native_init.py +1 -1
- hud/otel/config.py +1 -1
- hud/otel/instrumentation.py +35 -0
- hud/rl/README.md +31 -0
- hud/rl/__init__.py +1 -0
- hud/rl/actor.py +174 -0
- hud/rl/buffer.py +371 -0
- hud/rl/chat_template.jinja +101 -0
- hud/rl/config.py +184 -0
- hud/rl/distributed.py +95 -0
- hud/rl/learner.py +586 -0
- hud/rl/tests/__init__.py +1 -0
- hud/rl/tests/test_learner.py +171 -0
- hud/rl/train.py +354 -0
- hud/rl/types.py +101 -0
- hud/rl/utils/start_vllm_server.sh +30 -0
- hud/rl/utils.py +524 -0
- hud/rl/vllm_adapter.py +125 -0
- hud/settings.py +6 -0
- hud/telemetry/__init__.py +2 -1
- hud/telemetry/job.py +46 -3
- hud/telemetry/tests/test_trace.py +3 -3
- hud/telemetry/trace.py +85 -13
- hud/tools/computer/hud.py +4 -4
- hud/tools/tests/test_computer.py +3 -3
- hud/tools/tests/test_computer_actions.py +1 -1
- hud/types.py +123 -2
- hud/utils/group_eval.py +223 -0
- hud/utils/hud_console.py +113 -13
- hud/utils/tasks.py +119 -0
- hud/utils/tests/test_version.py +1 -1
- hud/version.py +1 -1
- {hud_python-0.4.27.dist-info → hud_python-0.4.29.dist-info}/METADATA +20 -2
- {hud_python-0.4.27.dist-info → hud_python-0.4.29.dist-info}/RECORD +67 -47
- hud/cli/hf.py +0 -406
- hud/cli/rl/README.md +0 -243
- hud/cli/rl/init.py +0 -370
- hud/cli/rl/pod.py +0 -501
- hud/cli/rl/ssh.py +0 -322
- hud/cli/rl/train.py +0 -562
- hud/cli/rl/utils.py +0 -165
- hud/datasets/execution/__init__.py +0 -13
- hud/datasets/task.py +0 -116
- {hud_python-0.4.27.dist-info → hud_python-0.4.29.dist-info}/WHEEL +0 -0
- {hud_python-0.4.27.dist-info → hud_python-0.4.29.dist-info}/entry_points.txt +0 -0
- {hud_python-0.4.27.dist-info → hud_python-0.4.29.dist-info}/licenses/LICENSE +0 -0
hud/utils/hud_console.py
CHANGED
|
@@ -16,7 +16,9 @@ Color Palette:
|
|
|
16
16
|
from __future__ import annotations
|
|
17
17
|
|
|
18
18
|
import logging
|
|
19
|
-
|
|
19
|
+
import time
|
|
20
|
+
import traceback
|
|
21
|
+
from typing import TYPE_CHECKING, Any, Literal, Self
|
|
20
22
|
|
|
21
23
|
import questionary
|
|
22
24
|
import typer
|
|
@@ -24,11 +26,14 @@ from rich.console import Console
|
|
|
24
26
|
from rich.panel import Panel
|
|
25
27
|
from rich.table import Table
|
|
26
28
|
|
|
29
|
+
if TYPE_CHECKING:
|
|
30
|
+
from rich.status import Status
|
|
27
31
|
# HUD Brand Colors - Optimized for both light and dark modes
|
|
28
32
|
GOLD = "rgb(192,150,12)" # #c0960c - Primary brand color
|
|
29
33
|
RED = "rgb(220,50,47)" # Slightly muted red that works on both backgrounds
|
|
30
34
|
GREEN = "rgb(133,153,0)" # Slightly muted green that works on both backgrounds
|
|
31
35
|
DIM = "bright_black" # Grey that's visible on both light and dark backgrounds
|
|
36
|
+
YELLOW = "yellow"
|
|
32
37
|
TEXT = "bright_white" # Off-white that's readable on dark, not too bright on light
|
|
33
38
|
SECONDARY = "rgb(108,113,196)" # Muted blue-purple for secondary text
|
|
34
39
|
|
|
@@ -85,7 +90,11 @@ class HUDConsole:
|
|
|
85
90
|
stderr: If True, output to stderr (default), otherwise stdout
|
|
86
91
|
"""
|
|
87
92
|
console = self._stderr_console if stderr else self._stdout_console
|
|
88
|
-
|
|
93
|
+
tb = traceback.format_exc()
|
|
94
|
+
if "NoneType: None" not in tb:
|
|
95
|
+
console.print(f"[{RED} not bold]❌ {message}\n{tb}[/{RED} not bold]")
|
|
96
|
+
else:
|
|
97
|
+
console.print(f"[{RED} not bold]❌ {message}[/{RED} not bold]")
|
|
89
98
|
|
|
90
99
|
def warning(self, message: str, stderr: bool = True) -> None:
|
|
91
100
|
"""Print a warning message.
|
|
@@ -95,7 +104,7 @@ class HUDConsole:
|
|
|
95
104
|
stderr: If True, output to stderr (default), otherwise stdout
|
|
96
105
|
"""
|
|
97
106
|
console = self._stderr_console if stderr else self._stdout_console
|
|
98
|
-
console.print(f"
|
|
107
|
+
console.print(f"⚠️ [{YELLOW} not bold]{message}[/{YELLOW} not bold]")
|
|
99
108
|
|
|
100
109
|
def info(self, message: str, stderr: bool = True) -> None:
|
|
101
110
|
"""Print an info message.
|
|
@@ -105,7 +114,7 @@ class HUDConsole:
|
|
|
105
114
|
stderr: If True, output to stderr (default), otherwise stdout
|
|
106
115
|
"""
|
|
107
116
|
console = self._stderr_console if stderr else self._stdout_console
|
|
108
|
-
console.print(f"[{TEXT}]{message}[/{TEXT}]")
|
|
117
|
+
console.print(f"[{TEXT} not bold]{message}[/{TEXT} not bold]")
|
|
109
118
|
|
|
110
119
|
def print(self, message: str, stderr: bool = True) -> None:
|
|
111
120
|
"""Print a message.
|
|
@@ -126,7 +135,9 @@ class HUDConsole:
|
|
|
126
135
|
stderr: If True, output to stderr (default), otherwise stdout
|
|
127
136
|
"""
|
|
128
137
|
console = self._stderr_console if stderr else self._stdout_console
|
|
129
|
-
console.print(
|
|
138
|
+
console.print(
|
|
139
|
+
f"[{DIM} not bold][default]{label}[/default][/{DIM} not bold] [default]{value}[/default]" # noqa: E501
|
|
140
|
+
)
|
|
130
141
|
|
|
131
142
|
def link(self, url: str, stderr: bool = True) -> None:
|
|
132
143
|
"""Print an underlined link.
|
|
@@ -150,7 +161,7 @@ class HUDConsole:
|
|
|
150
161
|
console.print(f"[{TEXT}]{json_str}[/{TEXT}]")
|
|
151
162
|
|
|
152
163
|
def key_value_table(
|
|
153
|
-
self, data: dict[str, str], show_header: bool = False, stderr: bool = True
|
|
164
|
+
self, data: dict[str, str | int | float], show_header: bool = False, stderr: bool = True
|
|
154
165
|
) -> None:
|
|
155
166
|
"""Print a key-value table.
|
|
156
167
|
|
|
@@ -164,7 +175,7 @@ class HUDConsole:
|
|
|
164
175
|
table.add_column("Value")
|
|
165
176
|
|
|
166
177
|
for key, value in data.items():
|
|
167
|
-
table.add_row(key, value)
|
|
178
|
+
table.add_row(key, str(value))
|
|
168
179
|
|
|
169
180
|
console = self._stderr_console if stderr else self._stdout_console
|
|
170
181
|
console.print(table)
|
|
@@ -210,7 +221,7 @@ class HUDConsole:
|
|
|
210
221
|
stderr: If True, output to stderr (default), otherwise stdout
|
|
211
222
|
"""
|
|
212
223
|
console = self._stderr_console if stderr else self._stdout_console
|
|
213
|
-
console.print(f"
|
|
224
|
+
console.print(f"[rgb(181,137,0)]💡 Hint: {hint}[/rgb(181,137,0)]")
|
|
214
225
|
|
|
215
226
|
def status_item(
|
|
216
227
|
self,
|
|
@@ -305,7 +316,7 @@ class HUDConsole:
|
|
|
305
316
|
if response_json and not details.get("Response"):
|
|
306
317
|
details["Response JSON"] = str(response_json)
|
|
307
318
|
if details:
|
|
308
|
-
self.key_value_table(details, show_header=False, stderr=stderr)
|
|
319
|
+
self.key_value_table(details, show_header=False, stderr=stderr) # type: ignore
|
|
309
320
|
|
|
310
321
|
# Structured hints, if available
|
|
311
322
|
hints = getattr(error, "hints", None)
|
|
@@ -315,7 +326,7 @@ class HUDConsole:
|
|
|
315
326
|
|
|
316
327
|
render_hints(hints, design=self)
|
|
317
328
|
except Exception as render_error:
|
|
318
|
-
self.
|
|
329
|
+
self.debug_log(f"Failed to render hints: {render_error}")
|
|
319
330
|
|
|
320
331
|
# Standard support hint
|
|
321
332
|
self.render_support_hint(stderr=stderr)
|
|
@@ -336,9 +347,35 @@ class HUDConsole:
|
|
|
336
347
|
else:
|
|
337
348
|
self._logger.setLevel(logging.WARNING)
|
|
338
349
|
|
|
350
|
+
@property
|
|
351
|
+
def prefix(self) -> str:
|
|
352
|
+
"""Get the metadata of the current file."""
|
|
353
|
+
metadata = self._logger.findCaller(stacklevel=3)
|
|
354
|
+
return f"{metadata[0]}:{metadata[1]} in {metadata[2]} | "
|
|
355
|
+
|
|
339
356
|
# Logging-aware methods that check logging levels before printing
|
|
357
|
+
def log(
|
|
358
|
+
self,
|
|
359
|
+
message: str,
|
|
360
|
+
level: Literal["info", "debug", "warning", "error"] = "info",
|
|
361
|
+
stderr: bool = True,
|
|
362
|
+
) -> None:
|
|
363
|
+
"""Print a message based on the logging level."""
|
|
364
|
+
prefix = self.prefix
|
|
365
|
+
if level == "info":
|
|
366
|
+
self.info_log(f"{prefix}{message}", stderr=stderr)
|
|
367
|
+
elif level == "debug":
|
|
368
|
+
self.debug_log(f"{prefix}{message}", stderr=stderr)
|
|
369
|
+
elif level == "warning":
|
|
370
|
+
self.warning_log(f"{prefix}{message}", stderr=stderr)
|
|
371
|
+
elif level == "error":
|
|
372
|
+
self.error_log(f"{prefix}{message}", stderr=stderr)
|
|
340
373
|
|
|
341
374
|
def debug(self, message: str, stderr: bool = True) -> None:
|
|
375
|
+
"""Print a debug message."""
|
|
376
|
+
self.debug_log(message, stderr=stderr)
|
|
377
|
+
|
|
378
|
+
def debug_log(self, message: str, stderr: bool = True) -> None:
|
|
342
379
|
"""Print a debug message only if DEBUG logging is enabled.
|
|
343
380
|
|
|
344
381
|
Args:
|
|
@@ -346,7 +383,7 @@ class HUDConsole:
|
|
|
346
383
|
stderr: If True, output to stderr (default), otherwise stdout
|
|
347
384
|
"""
|
|
348
385
|
if self._logger.isEnabledFor(logging.DEBUG):
|
|
349
|
-
self.dim_info("
|
|
386
|
+
self.dim_info(message, "", stderr=stderr)
|
|
350
387
|
|
|
351
388
|
def info_log(self, message: str, stderr: bool = True) -> None:
|
|
352
389
|
"""Print an info message only if INFO logging is enabled.
|
|
@@ -368,6 +405,25 @@ class HUDConsole:
|
|
|
368
405
|
if self._logger.isEnabledFor(logging.INFO):
|
|
369
406
|
self.progress_message(message, stderr=stderr)
|
|
370
407
|
|
|
408
|
+
def progress(self, initial: str = "", stderr: bool = True) -> _ProgressContext:
|
|
409
|
+
"""Create a progress context manager for inline updates.
|
|
410
|
+
|
|
411
|
+
Args:
|
|
412
|
+
initial: Initial message to display
|
|
413
|
+
stderr: If True, output to stderr (default), otherwise stdout
|
|
414
|
+
|
|
415
|
+
Returns:
|
|
416
|
+
A context manager that provides update() method
|
|
417
|
+
|
|
418
|
+
Example:
|
|
419
|
+
with console.progress("Processing...") as progress:
|
|
420
|
+
for i in range(10):
|
|
421
|
+
progress.update(f"Processing item {i+1}/10")
|
|
422
|
+
"""
|
|
423
|
+
return _ProgressContext(
|
|
424
|
+
console=self._stderr_console if stderr else self._stdout_console, initial=initial
|
|
425
|
+
)
|
|
426
|
+
|
|
371
427
|
def success_log(self, message: str, stderr: bool = True) -> None:
|
|
372
428
|
"""Print a success message only if INFO logging is enabled.
|
|
373
429
|
|
|
@@ -402,7 +458,7 @@ class HUDConsole:
|
|
|
402
458
|
self,
|
|
403
459
|
message: str,
|
|
404
460
|
choices: list[str | dict[str, Any]] | list[str],
|
|
405
|
-
default:
|
|
461
|
+
default: int | None = None,
|
|
406
462
|
) -> str:
|
|
407
463
|
"""Interactive selection with arrow key navigation.
|
|
408
464
|
|
|
@@ -428,6 +484,7 @@ class HUDConsole:
|
|
|
428
484
|
result = questionary.select(
|
|
429
485
|
message,
|
|
430
486
|
choices=q_choices,
|
|
487
|
+
default=q_choices[default] if default is not None else None,
|
|
431
488
|
instruction="(Use ↑/↓ arrows, Enter to select)",
|
|
432
489
|
).ask()
|
|
433
490
|
|
|
@@ -481,6 +538,49 @@ class HUDConsole:
|
|
|
481
538
|
else:
|
|
482
539
|
return f" [{GREEN}]✓[/{GREEN}] [{TEXT}]{content}[/{TEXT}]"
|
|
483
540
|
|
|
541
|
+
def confirm(self, message: str, default: bool = True) -> bool:
|
|
542
|
+
"""Print a confirmation message.
|
|
543
|
+
|
|
544
|
+
Args:
|
|
545
|
+
message: The confirmation message
|
|
546
|
+
default: If True, the default choice is True
|
|
547
|
+
"""
|
|
548
|
+
return questionary.confirm(message, default=default).ask()
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
# Global design instance for convenience
|
|
552
|
+
class _ProgressContext:
|
|
553
|
+
"""Context manager for inline progress updates."""
|
|
554
|
+
|
|
555
|
+
def __init__(self, console: Console, initial: str = "") -> None:
|
|
556
|
+
self.console = console
|
|
557
|
+
self.initial = initial
|
|
558
|
+
self.status: Status | None = None
|
|
559
|
+
self.start_time: float | None = None
|
|
560
|
+
|
|
561
|
+
def __enter__(self) -> Self:
|
|
562
|
+
self.status = self.console.status(self.initial)
|
|
563
|
+
self.status.__enter__()
|
|
564
|
+
self.start_time = time.time()
|
|
565
|
+
return self
|
|
566
|
+
|
|
567
|
+
def __exit__(self, exc_type: object, exc_val: object, exc_tb: object) -> None:
|
|
568
|
+
if self.status:
|
|
569
|
+
self.status.__exit__(exc_type, exc_val, exc_tb) # type: ignore
|
|
570
|
+
|
|
571
|
+
def update(self, message: str, with_elapsed: bool = True) -> None:
|
|
572
|
+
"""Update the progress message.
|
|
573
|
+
|
|
574
|
+
Args:
|
|
575
|
+
message: New message to display
|
|
576
|
+
with_elapsed: If True, append elapsed time to message
|
|
577
|
+
"""
|
|
578
|
+
if self.status:
|
|
579
|
+
if with_elapsed and self.start_time:
|
|
580
|
+
elapsed = time.time() - self.start_time
|
|
581
|
+
self.status.update(f"{message} [{elapsed:.1f}s]")
|
|
582
|
+
else:
|
|
583
|
+
self.status.update(message)
|
|
584
|
+
|
|
484
585
|
|
|
485
|
-
# Global hud_console instance for convenience
|
|
486
586
|
hud_console = HUDConsole()
|
hud/utils/tasks.py
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
|
|
6
|
+
from hud.types import Task
|
|
7
|
+
from hud.utils.hud_console import HUDConsole
|
|
8
|
+
|
|
9
|
+
hud_console = HUDConsole()
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def load_tasks(tasks_input: str | list[dict]) -> list[Task]:
|
|
13
|
+
"""Load tasks from various sources.
|
|
14
|
+
|
|
15
|
+
Args:
|
|
16
|
+
tasks_input: Either:
|
|
17
|
+
- Path to a JSON file (array of tasks)
|
|
18
|
+
- Path to a JSONL file (one task per line)
|
|
19
|
+
- HuggingFace dataset name (format: "username/dataset" or "username/dataset:split")
|
|
20
|
+
- List of task dictionaries
|
|
21
|
+
system_prompt: Default system prompt to use if not specified in task
|
|
22
|
+
|
|
23
|
+
Returns:
|
|
24
|
+
List of validated HUD Task objects
|
|
25
|
+
"""
|
|
26
|
+
tasks = []
|
|
27
|
+
|
|
28
|
+
if isinstance(tasks_input, list):
|
|
29
|
+
# Direct list of task dicts
|
|
30
|
+
hud_console.info(f"Loading {len(tasks_input)} tasks from provided list")
|
|
31
|
+
for item in tasks_input:
|
|
32
|
+
task = Task(**item)
|
|
33
|
+
tasks.append(task)
|
|
34
|
+
|
|
35
|
+
elif isinstance(tasks_input, str):
|
|
36
|
+
# Check if it's a file path
|
|
37
|
+
if Path(tasks_input).exists():
|
|
38
|
+
file_path = Path(tasks_input)
|
|
39
|
+
hud_console.info(f"Loading tasks from file: {tasks_input}")
|
|
40
|
+
|
|
41
|
+
with open(file_path) as f:
|
|
42
|
+
# Handle JSON files (array of tasks)
|
|
43
|
+
if file_path.suffix.lower() == ".json":
|
|
44
|
+
data = json.load(f)
|
|
45
|
+
if not isinstance(data, list):
|
|
46
|
+
raise ValueError(
|
|
47
|
+
f"JSON file must contain an array of tasks, got {type(data)}"
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
for item in data:
|
|
51
|
+
task = Task(**item)
|
|
52
|
+
tasks.append(task)
|
|
53
|
+
|
|
54
|
+
# Handle JSONL files (one task per line)
|
|
55
|
+
else:
|
|
56
|
+
for line in f:
|
|
57
|
+
line = line.strip()
|
|
58
|
+
if line: # Skip empty lines
|
|
59
|
+
item = json.loads(line)
|
|
60
|
+
|
|
61
|
+
# Handle case where line contains an array of tasks
|
|
62
|
+
if isinstance(item, list):
|
|
63
|
+
for task_item in item:
|
|
64
|
+
task = Task(**task_item)
|
|
65
|
+
tasks.append(task)
|
|
66
|
+
# Handle normal case where line contains a single task object
|
|
67
|
+
elif isinstance(item, dict):
|
|
68
|
+
task = Task(**item)
|
|
69
|
+
tasks.append(task)
|
|
70
|
+
else:
|
|
71
|
+
raise ValueError(
|
|
72
|
+
f"Invalid JSONL format: expected dict or list of dicts, got {type(item)}" # noqa: E501
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
# Check if it's a HuggingFace dataset
|
|
76
|
+
elif "/" in tasks_input:
|
|
77
|
+
hud_console.info(f"Loading tasks from HuggingFace dataset: {tasks_input}")
|
|
78
|
+
try:
|
|
79
|
+
from datasets import load_dataset
|
|
80
|
+
|
|
81
|
+
# Parse dataset name and optional split
|
|
82
|
+
if ":" in tasks_input:
|
|
83
|
+
dataset_name, split = tasks_input.split(":", 1)
|
|
84
|
+
else:
|
|
85
|
+
dataset_name = tasks_input
|
|
86
|
+
split = "train" # Default split
|
|
87
|
+
|
|
88
|
+
dataset = load_dataset(dataset_name, split=split)
|
|
89
|
+
|
|
90
|
+
# Convert dataset rows to Task objects
|
|
91
|
+
for item in dataset:
|
|
92
|
+
if not isinstance(item, dict):
|
|
93
|
+
raise ValueError(
|
|
94
|
+
f"Invalid HuggingFace dataset: expected dict, got {type(item)}"
|
|
95
|
+
)
|
|
96
|
+
if not item["mcp_config"] or not item["prompt"]:
|
|
97
|
+
raise ValueError(
|
|
98
|
+
f"Invalid HuggingFace dataset: expected mcp_config and prompt, got {item}" # noqa: E501
|
|
99
|
+
)
|
|
100
|
+
task = Task(**item)
|
|
101
|
+
tasks.append(task)
|
|
102
|
+
|
|
103
|
+
except ImportError as e:
|
|
104
|
+
raise ImportError(
|
|
105
|
+
"Please install 'datasets' to load from HuggingFace: uv pip install datasets"
|
|
106
|
+
) from e
|
|
107
|
+
except Exception as e:
|
|
108
|
+
raise ValueError(f"Failed to load HuggingFace dataset '{tasks_input}': {e}") from e
|
|
109
|
+
|
|
110
|
+
else:
|
|
111
|
+
raise ValueError(
|
|
112
|
+
f"Invalid tasks input: '{tasks_input}' is neither a file path nor a HuggingFace dataset" # noqa: E501
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
else:
|
|
116
|
+
raise TypeError(f"tasks_input must be str or list, got {type(tasks_input)}")
|
|
117
|
+
|
|
118
|
+
hud_console.info(f"Loaded {len(tasks)} tasks")
|
|
119
|
+
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.29
|
|
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
|
|
@@ -34,7 +34,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
34
34
|
Classifier: Programming Language :: Python :: 3.11
|
|
35
35
|
Classifier: Programming Language :: Python :: 3.12
|
|
36
36
|
Classifier: Programming Language :: Python :: 3.13
|
|
37
|
-
Requires-Python: <3.
|
|
37
|
+
Requires-Python: <3.13,>=3.11
|
|
38
38
|
Requires-Dist: httpx<1,>=0.23.0
|
|
39
39
|
Requires-Dist: hud-fastmcp-python-sdk>=0.1.2
|
|
40
40
|
Requires-Dist: hud-mcp-python-sdk>=3.13.2
|
|
@@ -107,6 +107,24 @@ Requires-Dist: pytest<9,>=8.1.1; extra == 'dev'
|
|
|
107
107
|
Requires-Dist: ruff>=0.11.8; extra == 'dev'
|
|
108
108
|
Requires-Dist: setuptools; extra == 'dev'
|
|
109
109
|
Requires-Dist: textdistance<5,>=4.5.0; extra == 'dev'
|
|
110
|
+
Provides-Extra: rl
|
|
111
|
+
Requires-Dist: anthropic; extra == 'rl'
|
|
112
|
+
Requires-Dist: bitsandbytes>=0.41.0; (sys_platform == 'linux') and extra == 'rl'
|
|
113
|
+
Requires-Dist: datasets>=2.14.0; extra == 'rl'
|
|
114
|
+
Requires-Dist: dotenv>=0.9.9; extra == 'rl'
|
|
115
|
+
Requires-Dist: ipykernel; extra == 'rl'
|
|
116
|
+
Requires-Dist: ipython<9; extra == 'rl'
|
|
117
|
+
Requires-Dist: jupyter-client; extra == 'rl'
|
|
118
|
+
Requires-Dist: jupyter-core; extra == 'rl'
|
|
119
|
+
Requires-Dist: langchain; extra == 'rl'
|
|
120
|
+
Requires-Dist: langchain-anthropic; extra == 'rl'
|
|
121
|
+
Requires-Dist: langchain-openai; extra == 'rl'
|
|
122
|
+
Requires-Dist: liger-kernel>=0.5.0; (sys_platform == 'linux') and extra == 'rl'
|
|
123
|
+
Requires-Dist: numpy>=1.24.0; extra == 'rl'
|
|
124
|
+
Requires-Dist: openai; extra == 'rl'
|
|
125
|
+
Requires-Dist: peft>=0.17.1; extra == 'rl'
|
|
126
|
+
Requires-Dist: pillow>=11.1.0; extra == 'rl'
|
|
127
|
+
Requires-Dist: vllm==0.10.1.1; extra == 'rl'
|
|
110
128
|
Description-Content-Type: text/markdown
|
|
111
129
|
|
|
112
130
|
<div align="left">
|
|
@@ -1,47 +1,51 @@
|
|
|
1
|
-
hud/__init__.py,sha256=
|
|
1
|
+
hud/__init__.py,sha256=JMDFUE1pP0J1Xl_miBdt7ERvoffZmTzSFe8yxz512A8,552
|
|
2
2
|
hud/__main__.py,sha256=YR8Dq8OhINOsVfQ55PmRXXg4fEK84Rt_-rMtJ5rvhWo,145
|
|
3
|
-
hud/settings.py,sha256=
|
|
4
|
-
hud/types.py,sha256=
|
|
5
|
-
hud/version.py,sha256
|
|
3
|
+
hud/settings.py,sha256=sMS31iW1m-5VpWk-Blhi5-obLcUA0fwxWE1GgJz-vqU,2708
|
|
4
|
+
hud/types.py,sha256=Cn9suZ_ZitLnxmnknfbCYVvmLsXRWI56kJ3LXtdfI6M,10157
|
|
5
|
+
hud/version.py,sha256=I65QTO8NMhRiDAN0vYH7G47SRwt713WHRXjHgx1VsL0,105
|
|
6
6
|
hud/agents/__init__.py,sha256=UoIkljWdbq4bM0LD-mSaw6w826EqdEjOk7r6glNYwYQ,286
|
|
7
|
-
hud/agents/base.py,sha256=
|
|
8
|
-
hud/agents/claude.py,sha256=
|
|
7
|
+
hud/agents/base.py,sha256=y3Aq3DtsDT5X2Q-_C-jqxFtDcHUlnBDOczmZIhqC0-w,35118
|
|
8
|
+
hud/agents/claude.py,sha256=wHiw8iAnjnRmZyKRKcOhagCDQMhz9Z6rlSBWqH1X--M,15781
|
|
9
9
|
hud/agents/grounded_openai.py,sha256=U-FHjB2Nh1_o0gmlxY5F17lWJ3oHsNRIB2a7z-IKB64,11231
|
|
10
10
|
hud/agents/langchain.py,sha256=1EgCy8jfjunsWxlPC5XfvfLS6_XZVrIF1ZjtHcrvhYw,9584
|
|
11
11
|
hud/agents/openai.py,sha256=ovARRWNuHqKkZ2Q_OCYSVCIZckrh8XY2jUB2p2x1m88,14259
|
|
12
|
-
hud/agents/openai_chat_generic.py,sha256=
|
|
12
|
+
hud/agents/openai_chat_generic.py,sha256=T2HTZaSUmvqBhYIfurtreb-gxnlVBqDO64GySu_uFIA,11514
|
|
13
13
|
hud/agents/misc/__init__.py,sha256=BYi4Ytp9b_vycpZFXnr5Oyw6ncKLNNGml8Jrb7bWUb4,136
|
|
14
14
|
hud/agents/misc/response_agent.py,sha256=OJdQJ76jP9xxQxVYJ-qPcdBxvFr8ABcwbP1f1I5zU5A,3227
|
|
15
15
|
hud/agents/tests/__init__.py,sha256=W-O-_4i34d9TTyEHV-O_q1Ai1gLhzwDaaPo02_TWQIY,34
|
|
16
|
-
hud/agents/tests/test_base.py,sha256=
|
|
16
|
+
hud/agents/tests/test_base.py,sha256=bDznxQDv2ickRkw98joH9zfuZT6ItHbmWvQ67iboa4g,28733
|
|
17
17
|
hud/agents/tests/test_claude.py,sha256=wqEKlzEvx8obz1sSm4NY0j-Zyt1qWNfDOmRqYIuAEd0,13069
|
|
18
18
|
hud/agents/tests/test_client.py,sha256=uikgh6yhjPPX2RBU4XJQMz1mNox9uXjuwsP8t93id18,13337
|
|
19
19
|
hud/agents/tests/test_grounded_openai_agent.py,sha256=VK8lUvHIjWicMX00VKPE-FZyjiJqTEhb80MuRRa9fVc,5437
|
|
20
|
-
hud/agents/tests/test_openai.py,sha256=
|
|
21
|
-
hud/cli/__init__.py,sha256
|
|
20
|
+
hud/agents/tests/test_openai.py,sha256=1S5IZuc3O3moSp70gqVGjc6m-_b49dCfz2fgX5IGvl4,7036
|
|
21
|
+
hud/cli/__init__.py,sha256=aAqoGtdoSP8omcmKqiLp8OhxHr4nCXGupGUwhNAOEQM,40119
|
|
22
22
|
hud/cli/__main__.py,sha256=fDH7XITyuDITwSDIVwRso06aouADO0CzTHKqp5TOwJE,143
|
|
23
23
|
hud/cli/analyze.py,sha256=4u5oYfJMquOjT9PzzRTYVcTZDxDi0ilNP_g532_hpOU,14716
|
|
24
24
|
hud/cli/build.py,sha256=SsZLQKYyMvIikLaSPYmg7-S1iJn-KkWXURhniQ0Ifi8,18015
|
|
25
25
|
hud/cli/clone.py,sha256=AwVDIuhr8mHb1oT2Af2HrD25SiTdwATpE6zd93vzLgA,6099
|
|
26
26
|
hud/cli/debug.py,sha256=jtFW8J5F_3rhq1Hf1_SkJ7aLS3wjnyIs_LsC8k5cnzc,14200
|
|
27
|
-
hud/cli/dev.py,sha256
|
|
28
|
-
hud/cli/eval.py,sha256=
|
|
29
|
-
hud/cli/
|
|
27
|
+
hud/cli/dev.py,sha256=56vQdH9oe_XGnOcRcFbNIsLEoBnpCl1eANlRFUeddHQ,31734
|
|
28
|
+
hud/cli/eval.py,sha256=W_eY4uoIQwHcSCvxNaQeRfWC10uQA1UhBWiNQzQPuXM,22694
|
|
29
|
+
hud/cli/get.py,sha256=sksKrdzBGZa7ZuSoQkc0haj-CvOGVSSikoVXeaUd3N4,6274
|
|
30
30
|
hud/cli/init.py,sha256=XswZB2ZnzdE0pxP1kRmO3bHfWGCrKAyrME34ZyPzs98,19715
|
|
31
31
|
hud/cli/list_func.py,sha256=EVi2Vc3Lb3glBNJxFx4MPnZknZ4xmuJz1OFg_dc8a_E,7177
|
|
32
32
|
hud/cli/pull.py,sha256=Vd1l1-IwskyACzhtC8Df1SYINUZEYmFxrLl0s9cNN6c,12151
|
|
33
33
|
hud/cli/push.py,sha256=JXUxu1QGU7BPWb0erSJq42CIq0sLbaDAO42yYDcvA1g,18347
|
|
34
34
|
hud/cli/remove.py,sha256=8vGQyXDqgtjz85_vtusoIG8zurH4RHz6z8UMevQRYM4,6861
|
|
35
|
-
hud/cli/
|
|
36
|
-
hud/cli/
|
|
37
|
-
hud/cli/rl/
|
|
38
|
-
hud/cli/rl/
|
|
39
|
-
hud/cli/rl/
|
|
40
|
-
hud/cli/rl/
|
|
41
|
-
hud/cli/rl/
|
|
35
|
+
hud/cli/flows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
|
+
hud/cli/flows/tasks.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
37
|
+
hud/cli/rl/__init__.py,sha256=HRIWMx5Dmmu2IorrmcyVu-Bs_3B45pwEsCC67M1z3Oo,22670
|
|
38
|
+
hud/cli/rl/config.py,sha256=iNhCxotM33OEiP9gqPvn8A_AxrBVe6fcFCQTvc13xzA,2884
|
|
39
|
+
hud/cli/rl/display.py,sha256=OTFcoIn5k3ehfi5-PmuClIkY04f4tpSMuNf7yd-bBr4,5212
|
|
40
|
+
hud/cli/rl/gpu.py,sha256=peXS-NdUF5RyuSs0aZoCzGLboneBUpCy8f9f99WMrG0,2009
|
|
41
|
+
hud/cli/rl/gpu_utils.py,sha256=H5ckPwgj5EVP3yJ5eVihR5R7Y6Gp6pt8ZUfWCCwcLG4,11072
|
|
42
|
+
hud/cli/rl/presets.py,sha256=DzOO82xL5QyzdVtlX-Do1CODMvDz9ILMPapjU92jcZg,3051
|
|
43
|
+
hud/cli/rl/remote_runner.py,sha256=ILjWpjbdZyH7db-C-x1T0GwsrLu3PBKx3IoTZl-qamg,12733
|
|
44
|
+
hud/cli/rl/rl_api.py,sha256=INJobvSa50ccR037u_GPsDa_9WboWyNwqEaoh9hcXj0,4306
|
|
45
|
+
hud/cli/rl/vllm.py,sha256=Gq_M6KsQArGz7FNIdemuM5mk16mu3xe8abpO2GCCuOE,6093
|
|
42
46
|
hud/cli/tests/__init__.py,sha256=ZrGVkmH7DHXGqOvjOSNGZeMYaFIRB2K8c6hwr8FPJ-8,68
|
|
43
47
|
hud/cli/tests/test_analyze.py,sha256=inbRvi7KJKoMYrcqXU6RSayoh7mAOGVrRknm6BLQFes,11055
|
|
44
|
-
hud/cli/tests/test_analyze_metadata.py,sha256=
|
|
48
|
+
hud/cli/tests/test_analyze_metadata.py,sha256=RtJ5PiOWu-AyOijLyZZwNfYazqwSMvtDS0krMMw0mak,9943
|
|
45
49
|
hud/cli/tests/test_build.py,sha256=9B_-jkCDMsNNn087SWbPEJVsbD_D1u5Mv1gBIySPuhU,14409
|
|
46
50
|
hud/cli/tests/test_cli_init.py,sha256=_H0bAn5_skJ91Zj8P5P_wtZoPWvrN7jMhPZvmnnf0n8,11289
|
|
47
51
|
hud/cli/tests/test_cli_main.py,sha256=0wMho9p9NcGjp0jLiUtCQh_FYdbMaCJtSY3sBbSgPwA,697
|
|
@@ -66,42 +70,56 @@ hud/cli/utils/registry.py,sha256=p6IaWmhUbf0Yh6aGa3jIPoSFT2uJPTOVBLS0jpKDUqc,437
|
|
|
66
70
|
hud/cli/utils/remote_runner.py,sha256=50Fqp7LG9dwiDyNM-LspNiKrSHmEo00C_Iuu5jg9mXU,9407
|
|
67
71
|
hud/cli/utils/runner.py,sha256=7HxVGa6OTflQnO0FSuRs273wnAmbm7cFRU9RTGL3-Wo,4390
|
|
68
72
|
hud/cli/utils/server.py,sha256=EE5DJ0RAmXCEjMcZycpAsAxxCj6sOdIsXqPh38kK2ew,7416
|
|
73
|
+
hud/cli/utils/tasks.py,sha256=bpH2mQkfgKUpgh1J0NtVxMxcM1jDZk2GAAPQMcqAUz4,826
|
|
69
74
|
hud/clients/README.md,sha256=XNE3mch95ozDgVqfwCGcrhlHY9CwT1GKfNANNboowto,3826
|
|
70
75
|
hud/clients/__init__.py,sha256=N5M_gZv4nP7dLRwpAiaqqaxyaLieGW6397FszeG7JGw,364
|
|
71
|
-
hud/clients/base.py,sha256=
|
|
76
|
+
hud/clients/base.py,sha256=Q4iJ78wxDYj_RTnj000ILetvhxZpGX2mubcfGzp3JYw,14207
|
|
72
77
|
hud/clients/fastmcp.py,sha256=KJGi8bmds0Q6rHnkTXb_Hw9ZqWmSo0OfjW05SSuyEJU,9182
|
|
73
|
-
hud/clients/mcp_use.py,sha256=
|
|
78
|
+
hud/clients/mcp_use.py,sha256=DgQ5q868jutH5aiDu3NVNePPqlOI_0iTWKmIuqCEJQ0,13559
|
|
74
79
|
hud/clients/tests/__init__.py,sha256=sKOtJFFa4mDIXh1U6O8ZUHjigE8CiRMQ2PzJTIBZuVE,33
|
|
75
80
|
hud/clients/tests/test_client_integration.py,sha256=kohU6jfCNfwSnAushHeB1_CmDlRfQc7VBL0GEdJYSeI,4198
|
|
76
81
|
hud/clients/tests/test_fastmcp.py,sha256=4q3TzDjuieTZa89taiNJIrzbUncNkYOG4MaubypA21k,13030
|
|
77
|
-
hud/clients/tests/test_mcp_use_retry.py,sha256=
|
|
82
|
+
hud/clients/tests/test_mcp_use_retry.py,sha256=9FxLAz4L5Vv3OTtj4wdhRY23wDYALUpE12TYWl7fbJA,13299
|
|
78
83
|
hud/clients/tests/test_protocol.py,sha256=aK4CS4g3j1D5jPo83ykzZuHUvcZFAulYtIq9T9Hb_fQ,6640
|
|
79
84
|
hud/clients/utils/__init__.py,sha256=-zZjcKIWGj2tXbVDOW45UgoGghhLJzFQVZ6miKenuA4,595
|
|
80
85
|
hud/clients/utils/mcp_use_retry.py,sha256=sBCjtgnAXiXASjzFF_AtBEtmizay0Fi0nPL6sVoooeI,6675
|
|
81
86
|
hud/clients/utils/retry.py,sha256=mMs2T_mAlb8AYhSqMR4AmCw7838gqCC4mdG3zjMAYM4,5744
|
|
82
87
|
hud/clients/utils/retry_transport.py,sha256=Rsq25eiKKt_pM1bas78QEZvO0illK97X_3opmaS3A3w,6809
|
|
83
|
-
hud/datasets/__init__.py,sha256
|
|
84
|
-
hud/datasets/
|
|
85
|
-
hud/datasets/
|
|
86
|
-
hud/datasets/
|
|
87
|
-
hud/datasets/execution/parallel.py,sha256=ZEMMmH018QXOL1QoD_AyspQkGs_41F-GB_mTgdXh6J4,25780
|
|
88
|
-
hud/datasets/execution/runner.py,sha256=EEvb90vvAqFXXx8NyVKLfK5p-gtsfJqiFJAoqSjyfXg,4695
|
|
88
|
+
hud/datasets/__init__.py,sha256=-g05iDy76CU4JiRHjKBBhgh3STtiIjmWhUfPqgf5hJE,697
|
|
89
|
+
hud/datasets/parallel.py,sha256=m7_z2QwjaRuM9gJFYyiPIJUwrlTxZSvFMAd9L2IDZEo,25772
|
|
90
|
+
hud/datasets/runner.py,sha256=2KhGEDzYW_qrSCaNJmsKqiAYZE_-h5VaQ7kv8rSe7Fw,4687
|
|
91
|
+
hud/datasets/utils.py,sha256=hdZfjWH5l3FVJaWBSHEEpjujAG7DqEam_vHgslL8MLs,4279
|
|
89
92
|
hud/misc/__init__.py,sha256=m_pprQQ-G-Y0Sd0NEiR8MtAMbElnuFZ2OWT8TXrw7c4,43
|
|
90
93
|
hud/misc/claude_plays_pokemon.py,sha256=IthAkjDVr2Q-GNvX-QLJyMzN7-0pHqqJbagGNv2m7yo,10453
|
|
91
94
|
hud/native/__init__.py,sha256=TqM0KaiQnDb2Nv1zOgpEMiLVq8JPd4j_aaK4rUZ0IiA,232
|
|
92
95
|
hud/native/comparator.py,sha256=A16wFGINLHPyuD23e8sEYxhRwWCUBYzYLb6TpvzJG9c,18297
|
|
93
96
|
hud/native/tests/__init__.py,sha256=gBTLMm6w5f6D-02Se2WleYsEEYyFt95JDcFzp3C2L_k,40
|
|
94
97
|
hud/native/tests/test_comparator.py,sha256=x1gFLXEDRIiJhH8tg5Rd3ptY-modYaHgSm6-hCJ1EdY,18568
|
|
95
|
-
hud/native/tests/test_native_init.py,sha256=
|
|
98
|
+
hud/native/tests/test_native_init.py,sha256=00zSF6jBLIYYbDaslI7fk-ANTEofIC9SPrRtX942WM4,2738
|
|
96
99
|
hud/otel/__init__.py,sha256=ii17ayoWiS5vAhA7UAmZ8TkmP52gs2pWyHsD46-uYbE,1003
|
|
97
100
|
hud/otel/collector.py,sha256=jLZymZ8r7xt2VDuWexfbnT7PY1-0aiyLMgjBy8KDY1M,4497
|
|
98
|
-
hud/otel/config.py,sha256=
|
|
101
|
+
hud/otel/config.py,sha256=mricuAmtFd1yIfOYKw2aHI-u4piku0GXHWv6hjsWQLM,6806
|
|
99
102
|
hud/otel/context.py,sha256=C9MvO99cRSNNDEDC7ehO3eoTPnb6J7AemUYvEp57yEU,17774
|
|
100
103
|
hud/otel/exporters.py,sha256=RLAjWa8b2DJEU21740Idq4fmeIuabLEqGGUspcFDcH4,14331
|
|
101
|
-
hud/otel/instrumentation.py,sha256=
|
|
104
|
+
hud/otel/instrumentation.py,sha256=fsFG9W89RdewFDxWKN9Ft4GUb7WbIKpfucTc16WxaZU,5093
|
|
102
105
|
hud/otel/processors.py,sha256=-gGRbwifplcExDQBLfx_9tqWreDImULJNcENgO9q7VU,4700
|
|
103
106
|
hud/otel/tests/__init__.py,sha256=VNJKBMaxTtbn7trW-1Ph50zCvCok_wTSGcI1HD6GOLA,43
|
|
104
107
|
hud/otel/tests/test_processors.py,sha256=np0R4ssd9j6LJSJykJ5bNjl0POwNYNhgb7BqOZHwcMY,6778
|
|
108
|
+
hud/rl/README.md,sha256=OLOmRGOWuQGE-xjLqQJbazzX8ygUG17ECP6kjbM2C0g,1163
|
|
109
|
+
hud/rl/__init__.py,sha256=yYL7U1WV6L3mr3Hig48-4lhnryTaWj4nCXm4lG5vrYI,25
|
|
110
|
+
hud/rl/actor.py,sha256=0YChXyxCz1wVBQ9lKb7vSl64_HQ24-DmYqCCxuORzJc,6747
|
|
111
|
+
hud/rl/buffer.py,sha256=xz4FlvO9l945VsSS4lzRFMwH3rA9HafgbUfADSauXok,15210
|
|
112
|
+
hud/rl/chat_template.jinja,sha256=XTdzI8oFGEcSA-exKxyHaprwRDmX5Am1KEb0VxvUc6U,4965
|
|
113
|
+
hud/rl/config.py,sha256=PAKYPCsKl8yg_j3gJSE5SJUgLM7j0lFy0K_Vt4-otDM,5384
|
|
114
|
+
hud/rl/distributed.py,sha256=8avhrb0lHYkhW22Z7MfkqSnlczWj5jMrUMEtkcoCf74,2473
|
|
115
|
+
hud/rl/learner.py,sha256=JBlzPFgX16uk6f6xYINLXWdDD1i1tiyzm6GLryrzgYg,24545
|
|
116
|
+
hud/rl/train.py,sha256=oZQGo0Wvb2LSrhh-7FLOsGCvI4G4AjgAAvF9P0k9l1Q,13436
|
|
117
|
+
hud/rl/types.py,sha256=lrLKo7iaqodYth2EyeuOQfLiuzXfYM2eJjPmpObrD7c,3965
|
|
118
|
+
hud/rl/utils.py,sha256=IsgVUUibxnUzb32a4mu1sYrgJC1CwoG9E-Dd5y5VDOA,19115
|
|
119
|
+
hud/rl/vllm_adapter.py,sha256=TBNo5lyNzszg6ATk9JoEZAm-xk_tcUJmq9YXwF1NB5w,3961
|
|
120
|
+
hud/rl/tests/__init__.py,sha256=PXmD3Gs6xOAwaYKb4HnwZERDjX05N1QF-aU6ya0dBtE,27
|
|
121
|
+
hud/rl/tests/test_learner.py,sha256=qfSHFFROteRb98TjBuAKjFmZjCGfuWXPysVvTAWJ7wQ,6025
|
|
122
|
+
hud/rl/utils/start_vllm_server.sh,sha256=ThPokrLK_Qm_uh916fHXXBfMlw1TC97P57-AEI5MuOc,910
|
|
105
123
|
hud/server/__init__.py,sha256=8LUwgsXO8xiViWP7uImDwcOsWLu01r5F4r8U8qH3rSY,91
|
|
106
124
|
hud/server/context.py,sha256=6bCdSzv1FGyItu9472HbbYef279H7QuMGJDR8EtYg5Y,3210
|
|
107
125
|
hud/server/low_level.py,sha256=XYs2pOJ9kN4OcJ6ahDmXM5mWkzq5wJLpKFInUYrWEok,4701
|
|
@@ -115,14 +133,14 @@ hud/shared/requests.py,sha256=HWrPp7nBSK4jhv9wqZdFiNrVaaxV0vWS8fcgGtoztBc,9479
|
|
|
115
133
|
hud/shared/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
116
134
|
hud/shared/tests/test_exceptions.py,sha256=bCKGqw2RwBmlGIMNpddzyfnWAOQwSIYB76r6iaBE2is,15761
|
|
117
135
|
hud/shared/tests/test_requests.py,sha256=nKFcSN1sjrOouVU2xik9lE5Wxapy3EWsO8iIXrM_Sts,9114
|
|
118
|
-
hud/telemetry/__init__.py,sha256=
|
|
136
|
+
hud/telemetry/__init__.py,sha256=uWiloBMXgEzPRsRIOpiSBhcTxJDyHfBqTg7qi8kxSTc,683
|
|
119
137
|
hud/telemetry/instrument.py,sha256=m3u6YK02PTk39Jr4L3se7l-cYyKx0maCaqf5Z5JqWNA,14096
|
|
120
|
-
hud/telemetry/job.py,sha256=
|
|
138
|
+
hud/telemetry/job.py,sha256=0c4Z69uNDwMeY_c_JpyuBvwvYTYk1YIkwotbXo3TAS4,11593
|
|
121
139
|
hud/telemetry/replay.py,sha256=YW17s314s5Wy6Rl8MXHqg1FU8EF9_XcHBMJI0rrkyS4,2306
|
|
122
|
-
hud/telemetry/trace.py,sha256=
|
|
140
|
+
hud/telemetry/trace.py,sha256=N2b_kc1JQKqxGb0mQjJ2HQrAJR94_Ai-1UCIs3LdANI,4671
|
|
123
141
|
hud/telemetry/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
124
142
|
hud/telemetry/tests/test_replay.py,sha256=eREc6qgSJDRT1pOPdyhiEoEJ9H2yT1ospaU1RvTKlvg,1328
|
|
125
|
-
hud/telemetry/tests/test_trace.py,sha256=
|
|
143
|
+
hud/telemetry/tests/test_trace.py,sha256=0rxR77CjcStat3ILA9QAswieOJ3J_386QmjmNDp34oA,2486
|
|
126
144
|
hud/tools/__init__.py,sha256=i6lE0GxYcPnlLLd-55ryCCHo7o9anC4RfqkuYFXvzMQ,1009
|
|
127
145
|
hud/tools/base.py,sha256=4qm5LS3SAkrq_lyfToWYCN9tNvTHohKJNH2siHkE364,15824
|
|
128
146
|
hud/tools/bash.py,sha256=LJViMGb3lTGBm_gequVVTM7ySh1Xh9bOOIZXU29Lmrw,5209
|
|
@@ -134,7 +152,7 @@ hud/tools/types.py,sha256=g-CWnUUDSxxIfUy54S1bpY1nfTzdYO1R_nPKYReABjQ,2734
|
|
|
134
152
|
hud/tools/utils.py,sha256=bfVyYMcBOJvr1QdptCjVb6jaHVGIL5WUxmY59kzMekQ,1447
|
|
135
153
|
hud/tools/computer/__init__.py,sha256=3tQBXPtGX0WPCwFXzEs3-duwg0rPEgj_0-K7aHskeQE,367
|
|
136
154
|
hud/tools/computer/anthropic.py,sha256=oJfNMnjNFAn9mW1xY1nbWnTY2IqwFqdDR0mWSf8lu-s,17352
|
|
137
|
-
hud/tools/computer/hud.py,sha256=
|
|
155
|
+
hud/tools/computer/hud.py,sha256=v2VdLMsc8-3J4_k2vpcZRr_RJzXsxdVNs6IfbCL-WTc,16466
|
|
138
156
|
hud/tools/computer/openai.py,sha256=QEsF45LWOHftDrAoIOnCFZZT1cL--s-ArSov5aluWb8,11189
|
|
139
157
|
hud/tools/computer/settings.py,sha256=b1XJsEQjB9qhN1xHfVENATkzinEebe0ZPyLzMgCGkKY,2763
|
|
140
158
|
hud/tools/executors/__init__.py,sha256=jHxfus9SLhkL6YGtebR5RyKYyVAix3yu5EkUp2Q27Kg,732
|
|
@@ -154,8 +172,8 @@ hud/tools/tests/__init__.py,sha256=eEYYkxX5Hz9woXVOBJ2H2_CQoEih0vH6nRt3sH2Z8v8,4
|
|
|
154
172
|
hud/tools/tests/test_base.py,sha256=m6EelJ47F_hMqvRjrr6vEdiW1AtLgz3ZH1V1IUzTxzI,8983
|
|
155
173
|
hud/tools/tests/test_bash.py,sha256=-g9a6sYgKKXRXmqYGYQBgpKEF_OlKE_uDDQXYMx6rT0,5113
|
|
156
174
|
hud/tools/tests/test_bash_extended.py,sha256=G1pgl2e7_7ILYYS2FE6pTwI3_IPzmkPjBjGnxMGwGq8,7000
|
|
157
|
-
hud/tools/tests/test_computer.py,sha256=
|
|
158
|
-
hud/tools/tests/test_computer_actions.py,sha256=
|
|
175
|
+
hud/tools/tests/test_computer.py,sha256=6BglMqodHkUT7365Ub0HpFe9dWUBiD3rL7_eDUsP07k,16397
|
|
176
|
+
hud/tools/tests/test_computer_actions.py,sha256=gufOrd4pOgOv_dOKonRAYb1g_Ph0FBTisa61YgnFitw,1195
|
|
159
177
|
hud/tools/tests/test_edit.py,sha256=pHw1MSs-P8mDKrwKUDW77vQfoMNwmbrEBt_MkKr2rE0,9734
|
|
160
178
|
hud/tools/tests/test_init.py,sha256=fl4Tf4IUUFOKhdSRHu9GE4mkaTDiXw-2auxj4s84HuE,698
|
|
161
179
|
hud/tools/tests/test_playwright_tool.py,sha256=TG0uieerc5wXq_JX66BLfXxphbSYGlDPhSbuoeizMu4,6737
|
|
@@ -166,10 +184,12 @@ hud/tools/tests/test_utils.py,sha256=qaujM1uyTMaKqWIeEgxty5GOFyfSUtrYCEHhmIazoy4
|
|
|
166
184
|
hud/utils/__init__.py,sha256=nk9Re6ls2RudAWnAHDWYbLG28AwNF4qMFYf5xQIJhQA,181
|
|
167
185
|
hud/utils/agent_factories.py,sha256=cvfXByqG6gOYHtm1VGeJjCpxoLxM4aJez8rH-AerP_A,3186
|
|
168
186
|
hud/utils/async_utils.py,sha256=5cKrJcnaHV2eJNxeyx0r7fPcdPTDBK7kM9-nLaF51X4,2409
|
|
169
|
-
hud/utils/
|
|
187
|
+
hud/utils/group_eval.py,sha256=oaoBqlQN6g5gRQmuY_JmqM5bpuf2sFIgu4uDZ7X-3a0,8360
|
|
188
|
+
hud/utils/hud_console.py,sha256=ywTrzyNhWFoQN2PpzpDDKp_32b-ACDvfKQuWxDoF8iE,21898
|
|
170
189
|
hud/utils/mcp.py,sha256=jvCWb5MXlMMObhrbYoiTlI-L9HNkEjLVx8GJ-HbdQ7U,2626
|
|
171
190
|
hud/utils/pretty_errors.py,sha256=WGeL4CTHtlA6KgPuV_JSX5l6H4-xbuTp6Y6tw1bkiFg,2430
|
|
172
191
|
hud/utils/progress.py,sha256=suikwFM8sdSfkV10nAOEaInDhG4XKgOSvFePg4jSj1A,5927
|
|
192
|
+
hud/utils/tasks.py,sha256=JwFIq0cpPMpMYnICUmx_G4CF6uy9MtiCmmmN7eA6FsA,4682
|
|
173
193
|
hud/utils/telemetry.py,sha256=hrVIx2rUjSGyy9IVxTZ_3Jii83PiHjyFRd5ls2whimM,1863
|
|
174
194
|
hud/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
175
195
|
hud/utils/tests/test_async_utils.py,sha256=RkdSnYErRV3Jn7dfg6CPlcE1RSUL__2B627oIqAyy1s,5945
|
|
@@ -177,10 +197,10 @@ hud/utils/tests/test_init.py,sha256=2QLQSGgyP9wJhOvPCusm_zjJad0qApOZi1BXpxcdHXQ,
|
|
|
177
197
|
hud/utils/tests/test_mcp.py,sha256=0pUa16mL-bqbZDXp5NHBnt1gO5o10BOg7zTMHZ1DNPM,4023
|
|
178
198
|
hud/utils/tests/test_progress.py,sha256=QSF7Kpi03Ff_l3mAeqW9qs1nhK50j9vBiSobZq7T4f4,7394
|
|
179
199
|
hud/utils/tests/test_telemetry.py,sha256=5jl7bEx8C8b-FfFUko5pf4UY-mPOR-9HaeL98dGtVHM,2781
|
|
180
|
-
hud/utils/tests/test_version.py,sha256=
|
|
200
|
+
hud/utils/tests/test_version.py,sha256=cXnWb-tAwTPK40YNpgJ0EwXe7op_7xDXBGf7sf5-ECU,160
|
|
181
201
|
hud/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
182
|
-
hud_python-0.4.
|
|
183
|
-
hud_python-0.4.
|
|
184
|
-
hud_python-0.4.
|
|
185
|
-
hud_python-0.4.
|
|
186
|
-
hud_python-0.4.
|
|
202
|
+
hud_python-0.4.29.dist-info/METADATA,sha256=xT3yJCdo-1-xJ1q54lgIyFALitPOiU2-YSParihkYvM,21069
|
|
203
|
+
hud_python-0.4.29.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
204
|
+
hud_python-0.4.29.dist-info/entry_points.txt,sha256=jJbodNFg1m0-CDofe5AHvB4zKBq7sSdP97-ohaQ3ae4,63
|
|
205
|
+
hud_python-0.4.29.dist-info/licenses/LICENSE,sha256=yIzBheVUf86FC1bztAcr7RYWWNxyd3B-UJQ3uddg1HA,1078
|
|
206
|
+
hud_python-0.4.29.dist-info/RECORD,,
|