hud-python 0.4.14__py3-none-any.whl → 0.4.16__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.

Files changed (42) hide show
  1. hud/agents/base.py +118 -33
  2. hud/agents/claude.py +1 -1
  3. hud/agents/openai.py +5 -16
  4. hud/agents/tests/test_openai.py +24 -79
  5. hud/cli/__init__.py +137 -15
  6. hud/cli/analyze.py +2 -4
  7. hud/cli/build.py +6 -2
  8. hud/cli/dev.py +67 -0
  9. hud/cli/eval.py +90 -35
  10. hud/cli/hf.py +406 -0
  11. hud/cli/init.py +38 -19
  12. hud/cli/rl/README.md +243 -0
  13. hud/cli/rl/__init__.py +82 -0
  14. hud/cli/rl/init.py +370 -0
  15. hud/cli/rl/pod.py +491 -0
  16. hud/cli/rl/ssh.py +288 -0
  17. hud/cli/rl/train.py +421 -0
  18. hud/cli/rl/utils.py +165 -0
  19. hud/cli/tests/test_mcp_server.py +1 -4
  20. hud/clients/base.py +2 -0
  21. hud/clients/fastmcp.py +7 -2
  22. hud/clients/mcp_use.py +3 -1
  23. hud/clients/utils/retry_transport.py +34 -8
  24. hud/datasets/__init__.py +32 -0
  25. hud/datasets/execution/__init__.py +13 -0
  26. hud/datasets/execution/parallel.py +592 -0
  27. hud/datasets/execution/runner.py +123 -0
  28. hud/datasets/task.py +107 -0
  29. hud/datasets/utils.py +118 -0
  30. hud/otel/instrumentation.py +2 -1
  31. hud/server/server.py +58 -21
  32. hud/settings.py +12 -0
  33. hud/types.py +31 -10
  34. hud/utils/design.py +168 -2
  35. hud/utils/tests/test_version.py +1 -1
  36. hud/version.py +1 -1
  37. {hud_python-0.4.14.dist-info → hud_python-0.4.16.dist-info}/METADATA +4 -3
  38. {hud_python-0.4.14.dist-info → hud_python-0.4.16.dist-info}/RECORD +41 -28
  39. hud/datasets.py +0 -327
  40. {hud_python-0.4.14.dist-info → hud_python-0.4.16.dist-info}/WHEEL +0 -0
  41. {hud_python-0.4.14.dist-info → hud_python-0.4.16.dist-info}/entry_points.txt +0 -0
  42. {hud_python-0.4.14.dist-info → hud_python-0.4.16.dist-info}/licenses/LICENSE +0 -0
hud/utils/design.py CHANGED
@@ -14,6 +14,11 @@ Color Palette:
14
14
 
15
15
  from __future__ import annotations
16
16
 
17
+ import logging
18
+ from typing import Any
19
+
20
+ import questionary
21
+ import typer
17
22
  from rich.console import Console
18
23
  from rich.panel import Panel
19
24
  from rich.table import Table
@@ -28,10 +33,15 @@ DIM = "dim"
28
33
  class HUDDesign:
29
34
  """Design system for HUD CLI output."""
30
35
 
31
- def __init__(self) -> None:
32
- """Initialize the design system."""
36
+ def __init__(self, logger: logging.Logger | None = None) -> None:
37
+ """Initialize the design system.
38
+
39
+ Args:
40
+ logger: Logger to check for log levels. If None, uses the root logger.
41
+ """
33
42
  self._stdout_console = Console(stderr=False)
34
43
  self._stderr_console = Console(stderr=True)
44
+ self._logger = logger or logging.getLogger()
35
45
 
36
46
  def header(self, title: str, icon: str = "🚀", stderr: bool = True) -> None:
37
47
  """Print a header panel with gold border.
@@ -252,6 +262,162 @@ class HUDDesign:
252
262
  """Get the stderr console for direct access when needed."""
253
263
  return self._stderr_console
254
264
 
265
+ def set_verbose(self, verbose: bool) -> None:
266
+ """Set the logging level based on verbose flag.
267
+
268
+ Args:
269
+ verbose: If True, show INFO level messages. If False, only show WARNING and above.
270
+ """
271
+ if verbose:
272
+ self._logger.setLevel(logging.INFO)
273
+ else:
274
+ self._logger.setLevel(logging.WARNING)
275
+
276
+ # Logging-aware methods that check logging levels before printing
277
+
278
+ def debug(self, message: str, stderr: bool = True) -> None:
279
+ """Print a debug message only if DEBUG logging is enabled.
280
+
281
+ Args:
282
+ message: The debug message
283
+ stderr: If True, output to stderr (default), otherwise stdout
284
+ """
285
+ if self._logger.isEnabledFor(logging.DEBUG):
286
+ self.dim_info("[DEBUG]", message, stderr=stderr)
287
+
288
+ def info_log(self, message: str, stderr: bool = True) -> None:
289
+ """Print an info message only if INFO logging is enabled.
290
+
291
+ Args:
292
+ message: The info message
293
+ stderr: If True, output to stderr (default), otherwise stdout
294
+ """
295
+ if self._logger.isEnabledFor(logging.INFO):
296
+ self.info(message, stderr=stderr)
297
+
298
+ def progress_log(self, message: str, stderr: bool = True) -> None:
299
+ """Print a progress message only if INFO logging is enabled.
300
+
301
+ Args:
302
+ message: The progress message
303
+ stderr: If True, output to stderr (default), otherwise stdout
304
+ """
305
+ if self._logger.isEnabledFor(logging.INFO):
306
+ self.progress_message(message, stderr=stderr)
307
+
308
+ def success_log(self, message: str, stderr: bool = True) -> None:
309
+ """Print a success message only if INFO logging is enabled.
310
+
311
+ Args:
312
+ message: The success message
313
+ stderr: If True, output to stderr (default), otherwise stdout
314
+ """
315
+ if self._logger.isEnabledFor(logging.INFO):
316
+ self.success(message, stderr=stderr)
317
+
318
+ def warning_log(self, message: str, stderr: bool = True) -> None:
319
+ """Print a warning message only if WARNING logging is enabled.
320
+
321
+ Args:
322
+ message: The warning message
323
+ stderr: If True, output to stderr (default), otherwise stdout
324
+ """
325
+ if self._logger.isEnabledFor(logging.WARNING):
326
+ self.warning(message, stderr=stderr)
327
+
328
+ def error_log(self, message: str, stderr: bool = True) -> None:
329
+ """Print an error message only if ERROR logging is enabled.
330
+
331
+ Args:
332
+ message: The error message
333
+ stderr: If True, output to stderr (default), otherwise stdout
334
+ """
335
+ if self._logger.isEnabledFor(logging.ERROR):
336
+ self.error(message, stderr=stderr)
337
+
338
+ def select(
339
+ self,
340
+ message: str,
341
+ choices: list[str | dict[str, Any]] | list[str],
342
+ default: str | None = None,
343
+ ) -> str:
344
+ """Interactive selection with arrow key navigation.
345
+
346
+ Args:
347
+ message: The prompt message to display
348
+ choices: List of choices. Can be strings or dicts with 'name' and 'value' keys
349
+ default: Default selection (matches against choice name/string)
350
+
351
+ Returns:
352
+ The selected choice value
353
+ """
354
+ # Convert choices to questionary format
355
+ q_choices = []
356
+
357
+ for choice in choices:
358
+ if isinstance(choice, dict):
359
+ name = choice.get("name", str(choice.get("value", "")))
360
+ value = choice.get("value", name)
361
+ q_choices.append(questionary.Choice(title=name, value=value))
362
+ else:
363
+ q_choices.append(choice)
364
+
365
+ result = questionary.select(
366
+ message,
367
+ choices=q_choices,
368
+ instruction="(Use ↑/↓ arrows, Enter to select)",
369
+ ).ask()
370
+
371
+ # If no selection made (Ctrl+C or ESC), exit
372
+ if result is None:
373
+ raise typer.Exit(1)
374
+
375
+ return result
376
+
377
+ def format_tool_call(self, name: str, arguments: dict[str, Any] | None = None) -> str:
378
+ """Format a tool call in compact HUD style.
379
+
380
+ Args:
381
+ name: Tool name
382
+ arguments: Tool arguments dictionary
383
+
384
+ Returns:
385
+ Formatted string with Rich markup
386
+ """
387
+ import json
388
+
389
+ args_str = ""
390
+ if arguments:
391
+ try:
392
+ # Compact JSON representation
393
+ args_str = json.dumps(arguments, separators=(",", ":"))
394
+ if len(args_str) > 60:
395
+ args_str = args_str[:57] + "..."
396
+ except (TypeError, ValueError):
397
+ args_str = str(arguments)[:60]
398
+
399
+ return f"[{GOLD}]→[/{GOLD}] [bold]{name}[/bold][{DIM}]({args_str})[/{DIM}]"
400
+
401
+ def format_tool_result(self, content: str, is_error: bool = False) -> str:
402
+ """Format a tool result in compact HUD style.
403
+
404
+ Args:
405
+ content: Result content (will be truncated if too long)
406
+ is_error: Whether this is an error result
407
+
408
+ Returns:
409
+ Formatted string with Rich markup
410
+ """
411
+ # Truncate content if needed
412
+ if len(content) > 80:
413
+ content = content[:77] + "..."
414
+
415
+ # Format with status using HUD colors
416
+ if is_error:
417
+ return f" [{RED}]✗[/{RED}] [{DIM}]{content}[/{DIM}]"
418
+ else:
419
+ return f" [{GREEN}]✓[/{GREEN}] {content}"
420
+
255
421
 
256
422
  # Global design instance for convenience
257
423
  design = HUDDesign()
@@ -5,4 +5,4 @@ def test_import():
5
5
  """Test that the package can be imported."""
6
6
  import hud
7
7
 
8
- assert hud.__version__ == "0.4.14"
8
+ assert hud.__version__ == "0.4.16"
hud/version.py CHANGED
@@ -4,4 +4,4 @@ Version information for the HUD SDK.
4
4
 
5
5
  from __future__ import annotations
6
6
 
7
- __version__ = "0.4.14"
7
+ __version__ = "0.4.16"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hud-python
3
- Version: 0.4.14
3
+ Version: 0.4.16
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
@@ -43,9 +43,10 @@ Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.34.1
43
43
  Requires-Dist: opentelemetry-instrumentation-mcp>=0.44.1
44
44
  Requires-Dist: opentelemetry-sdk>=1.34.1
45
45
  Requires-Dist: pathspec>=0.12.1
46
+ Requires-Dist: prompt-toolkit==3.0.51
46
47
  Requires-Dist: pydantic-settings<3,>=2
47
48
  Requires-Dist: pydantic<3,>=2
48
- Requires-Dist: questionary>=1.10.0
49
+ Requires-Dist: questionary==2.1.0
49
50
  Requires-Dist: rich>=13.0.0
50
51
  Requires-Dist: toml>=0.10.2
51
52
  Requires-Dist: typer>=0.9.0
@@ -160,7 +161,7 @@ pip install -e "hud-python[dev]"
160
161
  ```
161
162
 
162
163
  > See [docs.hud.so](https://docs.hud.so), or add docs to any MCP client:
163
- > `claude mcp add docs-hud https://docs.hud.so/mcp`
164
+ > `claude mcp add --transport http docs-hud https://docs.hud.so/mcp`
164
165
 
165
166
  ## Quickstart
166
167
 
@@ -1,14 +1,13 @@
1
1
  hud/__init__.py,sha256=BjAhZtsHbGN371Q8t3o4v4jltedkmDE85xW0yOILU9g,397
2
2
  hud/__main__.py,sha256=YR8Dq8OhINOsVfQ55PmRXXg4fEK84Rt_-rMtJ5rvhWo,145
3
- hud/datasets.py,sha256=8lqC840kcNx01D2CcWZCd1j0eZTpepILmQrvohZIZYU,12056
4
- hud/settings.py,sha256=WIJDsyrfwBZGcaGT46YUOpW8xjBZl3siXXprd92ASAg,2039
5
- hud/types.py,sha256=pQWOPYXUZ2hhK0h-AHBc3DCj5tkbRXHqKZnsQQIcSFA,4237
6
- hud/version.py,sha256=EujFSzlsB3e5WmhxNLuJ-8DYtTfWdY6iOL9lPpx0r5U,105
3
+ hud/settings.py,sha256=q9aZiHjvbL4oLE-N8AttTW4rmzS8zPMnsca-iMGyEGc,2362
4
+ hud/types.py,sha256=gNnyS1G7aYHIR5sT3k3bOfSTFnPylUO6lNGLWbjbeYk,5149
5
+ hud/version.py,sha256=6t66BWvg9Ogi1zfYHDfU7EW-PaxTj515uBQwruhu3X8,105
7
6
  hud/agents/__init__.py,sha256=UoIkljWdbq4bM0LD-mSaw6w826EqdEjOk7r6glNYwYQ,286
8
- hud/agents/base.py,sha256=M2g7Cj5InE4EsXpmxqURprC3IHNGvNZFBZ8HPIQxz-A,24574
9
- hud/agents/claude.py,sha256=snbYFPW-KAkw4n9Rdz7dC2f46RuSHJKC53HPm8SucFM,14273
7
+ hud/agents/base.py,sha256=rbwYP_a6XTwhY_5CaBlE7SWflnTq1EOuDiNY2XeUWdM,28275
8
+ hud/agents/claude.py,sha256=in-dRByL7wU1gsuwFvscltQ1PGZURb2bIeU3QFhfpQU,14271
10
9
  hud/agents/langchain.py,sha256=1EgCy8jfjunsWxlPC5XfvfLS6_XZVrIF1ZjtHcrvhYw,9584
11
- hud/agents/openai.py,sha256=kHG73mohO4uru49qmQiygUFt0eDCGJU06weqIUwTO3Y,14323
10
+ hud/agents/openai.py,sha256=9G7u17oN9yne7ObiuaBV67a3U3byC-NPJchDT4s5kZ0,13994
12
11
  hud/agents/openai_chat_generic.py,sha256=jTJ-KY6HkglPK0iwZH5v3PVnaUjDsWc9IbRo3AbXlyE,5322
13
12
  hud/agents/misc/__init__.py,sha256=BYi4Ytp9b_vycpZFXnr5Oyw6ncKLNNGml8Jrb7bWUb4,136
14
13
  hud/agents/misc/response_agent.py,sha256=MsnIVElXM4ABrSJfEc_MMYp1Y_Rxmkq4kEGJ9vDX7hw,3098
@@ -16,20 +15,28 @@ hud/agents/tests/__init__.py,sha256=W-O-_4i34d9TTyEHV-O_q1Ai1gLhzwDaaPo02_TWQIY,
16
15
  hud/agents/tests/test_base.py,sha256=F39ajSqASGUbPyPoWSY9KARFav62qNTK74W11Tr1Tg4,28970
17
16
  hud/agents/tests/test_claude.py,sha256=wqEKlzEvx8obz1sSm4NY0j-Zyt1qWNfDOmRqYIuAEd0,13069
18
17
  hud/agents/tests/test_client.py,sha256=Sk5bGZw2hL5GsVi2LMp9tsLngl5ZQ18pkpeeQmts0ao,13908
19
- hud/agents/tests/test_openai.py,sha256=ZJqctxCbJtKw6TkJCP4D2xAcG8CkxzDXO7dh5IIWN_M,9175
20
- hud/cli/__init__.py,sha256=ecjrYlswQB9JJsbxQFcKZVD0fn0ZWneKSLm_kBYWpQ0,30302
18
+ hud/agents/tests/test_openai.py,sha256=lhHowQyLp09oDVwBUjUECoPeH01F16i4O9YIHeugK6E,7028
19
+ hud/cli/__init__.py,sha256=BhrFre1_ZCwoXJsZ67I29KTlgKzH3W_g0Y9FOvmh9-s,34937
21
20
  hud/cli/__main__.py,sha256=fDH7XITyuDITwSDIVwRso06aouADO0CzTHKqp5TOwJE,143
22
- hud/cli/analyze.py,sha256=G-tjT1xLPLcYhDhZEaI7TAIS0z0OACUksnGFoAWd2ag,14416
23
- hud/cli/build.py,sha256=c8pg8iUlCT1-E4koEKFX1Nx8oGaB2ln57pHdOCCDAvs,19126
21
+ hud/cli/analyze.py,sha256=DngDPM53DHZn8gFndz8d7hCIOUwB4tqtYEii6AGFIZk,14393
22
+ hud/cli/build.py,sha256=2bggugEegRp_QguK5aTzoM607NY-toQaic9WtnnoI2o,19231
24
23
  hud/cli/clone.py,sha256=AwVDIuhr8mHb1oT2Af2HrD25SiTdwATpE6zd93vzLgA,6099
25
24
  hud/cli/debug.py,sha256=FNzg9-_ZzUJA1nJfubmop7_2OT5mqnWsdpZyi4AVSXA,14163
26
- hud/cli/dev.py,sha256=ANsd34gHX08eQxeXz6atIuDyi7Tw8qngqvmDPAx-PI0,28640
27
- hud/cli/eval.py,sha256=zrUoXYdSe5cVbWa5fc9-tNK9syBCtKOpKDvc0ApeYQU,12604
28
- hud/cli/init.py,sha256=guJbNkVuFhc-c2jTEx_jZxzzPkJRtGTJapWk5hyuyd8,18710
25
+ hud/cli/dev.py,sha256=R7YJWIZCUURXzs8ovOCF9V1FwOhsAJT5D3mZQkFmTI4,31134
26
+ hud/cli/eval.py,sha256=LjDCci3lYsu8RRmL5DiWYfroK1n2FrMUUhOiQ53242s,15142
27
+ hud/cli/hf.py,sha256=EYWL-fEN9SS2QJYU7iIBXs0qa9JIvmMWOMh9a8Ewt9s,15179
28
+ hud/cli/init.py,sha256=xRUy92TqBALNQxycBB4Kk0m380WtE-qD3L6A5Sr1Lxw,19581
29
29
  hud/cli/list_func.py,sha256=ENxLL4X5uuqAASWZdQuI0k-tEzmlhUn5LATgz3QPQqQ,7065
30
30
  hud/cli/pull.py,sha256=JHwCwUwRO0Nzbgm9mkjsz6EpxbxgwQVhgNSY64nNZ-s,11969
31
31
  hud/cli/push.py,sha256=4KrEHj0_i3xJNCB3eRjANmHFhSW4MFfpnld3nfVYENs,17904
32
32
  hud/cli/remove.py,sha256=USAvB6pbMA3jd19xUtLEBiMsklVTEfE2Maw9nYcpSAE,6619
33
+ hud/cli/rl/README.md,sha256=3pqRZMrnwD-lJwWGCCNZNhGdZG6zyydLBOer0e8BkLw,5983
34
+ hud/cli/rl/__init__.py,sha256=_C95dDud3-YMpqfuRBbW0RyMboPGWzhT7aVcly0n5N8,3074
35
+ hud/cli/rl/init.py,sha256=GXVOXLrX8CVAgpJ1pHuk6Y6oujbh46Rtz8kG18jGzk8,13789
36
+ hud/cli/rl/pod.py,sha256=ARXEG4RZyI1zOrQnsEjLiQDZuM-gv_yNc6JP7-VPRfI,18691
37
+ hud/cli/rl/ssh.py,sha256=4KrdFQP1uv-RUCVe-Sw01SH84ogk9cwts9i0oyaTFSg,10267
38
+ hud/cli/rl/train.py,sha256=40vzQeDrYa9hxI0HwwcFu-zWfhoH2vM8-AUx_JJVHiA,14702
39
+ hud/cli/rl/utils.py,sha256=ZW3sjl5KaHZaOCjAbut_QIpQvxgzlxjPGuM6fuYkU9I,4836
33
40
  hud/cli/tests/__init__.py,sha256=ZrGVkmH7DHXGqOvjOSNGZeMYaFIRB2K8c6hwr8FPJ-8,68
34
41
  hud/cli/tests/test_analyze.py,sha256=SwxvRlnw-VaEwKN2nd1FJAxfhieujPjh7PdQh_LYJ5E,11050
35
42
  hud/cli/tests/test_analyze_metadata.py,sha256=s-N-ETJECloiNQhdnZrfvxDI4pWBI8hl8edQNSRaw14,9982
@@ -41,7 +48,7 @@ hud/cli/tests/test_cursor.py,sha256=ZfxAFKJesJ3UV1JBoASSRlv6BXbpvVEk_pjxUg1jnf4,
41
48
  hud/cli/tests/test_debug.py,sha256=bQ76d_0HJfthHBSECmGNv499ZE57CIOKsanMlNfNHGk,18036
42
49
  hud/cli/tests/test_list_func.py,sha256=pkG4TtJJBMi9Xk8KBNFBlGcam7kwz01IRsjfQBL2PxM,10700
43
50
  hud/cli/tests/test_main_module.py,sha256=6RhwCcdRSN2uQV6-adti40ZcLd3u-mPR1ai6wL64c6Y,1105
44
- hud/cli/tests/test_mcp_server.py,sha256=FM8F_hSgvljDRzu4RDHzd_vcdRIs2kMzoKty28Qb_f8,4357
51
+ hud/cli/tests/test_mcp_server.py,sha256=wLFkDOR22FuBe3kIdYeLG7H81HHiorKB8kXRubftLpU,4316
45
52
  hud/cli/tests/test_pull.py,sha256=7wHxdf_rN3LDmo554-S63WT6eoYUquwDWpjgoy_f1eQ,12923
46
53
  hud/cli/tests/test_push.py,sha256=8LpKY4lASRYPd8xM8c_SlTbE11IQ8kCfzfC8UBqhzN4,12709
47
54
  hud/cli/tests/test_registry.py,sha256=mTfgr6fkY5ygRnSgbVU7988QRQKdpEKUpWmQicGnHGs,9461
@@ -59,15 +66,21 @@ hud/cli/utils/runner.py,sha256=qZI1lFNZIFn6d919awUkMtjQ36TfhAvyqGRzQmkal8c,4269
59
66
  hud/cli/utils/server.py,sha256=uSx2DjG5vX-PFoD8zNH-gBHbkTNSHveFSVdAfmp09Tc,7341
60
67
  hud/clients/README.md,sha256=XNE3mch95ozDgVqfwCGcrhlHY9CwT1GKfNANNboowto,3826
61
68
  hud/clients/__init__.py,sha256=bcPIa7dwH5ENsjh7CzjsJ84fm7Ma93NBc2lGfSjGAKM,328
62
- hud/clients/base.py,sha256=ob8G7_Gi-aENnc0yxHpZmzuqBD-swn_jVWkY2Iw7F4k,13995
63
- hud/clients/fastmcp.py,sha256=b1Q5HltWWmnAhj-Nv6T4T5gitDn5bEfqiLy5PU5yD9g,9102
64
- hud/clients/mcp_use.py,sha256=qRHDJ6ELRISD4V9NVPAX5SNE3NZqyunPAqDdpBtaslg,11920
69
+ hud/clients/base.py,sha256=F8wq-UGoW1J_MguHq5w_Tcr0mJ4awSWbFOE8xP7sSDA,14129
70
+ hud/clients/fastmcp.py,sha256=KJGi8bmds0Q6rHnkTXb_Hw9ZqWmSo0OfjW05SSuyEJU,9182
71
+ hud/clients/mcp_use.py,sha256=tgvQ5MyY1cJeCR1M7dwYMfDmPnxOQuXPjZeKCr98CJc,11962
65
72
  hud/clients/tests/__init__.py,sha256=sKOtJFFa4mDIXh1U6O8ZUHjigE8CiRMQ2PzJTIBZuVE,33
66
73
  hud/clients/tests/test_client_integration.py,sha256=kohU6jfCNfwSnAushHeB1_CmDlRfQc7VBL0GEdJYSeI,4198
67
74
  hud/clients/tests/test_fastmcp.py,sha256=4q3TzDjuieTZa89taiNJIrzbUncNkYOG4MaubypA21k,13030
68
75
  hud/clients/tests/test_protocol.py,sha256=aK4CS4g3j1D5jPo83ykzZuHUvcZFAulYtIq9T9Hb_fQ,6640
69
76
  hud/clients/utils/__init__.py,sha256=ucYJqOVpEsN-D9OFE2YTNLG628MgxcZAzfYhnbzx02k,32
70
- hud/clients/utils/retry_transport.py,sha256=-DyiXTtNBqHMg6Xb340q0wTyYv6qVPQv1zyJskD4JrE,5358
77
+ hud/clients/utils/retry_transport.py,sha256=Rsq25eiKKt_pM1bas78QEZvO0illK97X_3opmaS3A3w,6809
78
+ hud/datasets/__init__.py,sha256=74T4mrjELKtE04XkZKwU8QAJcg2wjqXLqRO9s4GlPr4,678
79
+ hud/datasets/task.py,sha256=V82HzRb2_c2MO9EG5ZcY-PMsLt3234Uks7WlkMta5HY,3615
80
+ hud/datasets/utils.py,sha256=3hKvZTkZuCRkTeITB86nNdA1dtHZAqFfAdSPMtcTUhs,4275
81
+ hud/datasets/execution/__init__.py,sha256=4m1AEpMQaUSJFVN_iAXvY6zFttVgZKwE6oQtC0Rrk7U,330
82
+ hud/datasets/execution/parallel.py,sha256=AxtbEgX1v9UFO3nHN91vQyhtfeU6oe65rV50ubDWBkg,22182
83
+ hud/datasets/execution/runner.py,sha256=EEvb90vvAqFXXx8NyVKLfK5p-gtsfJqiFJAoqSjyfXg,4695
71
84
  hud/misc/__init__.py,sha256=m_pprQQ-G-Y0Sd0NEiR8MtAMbElnuFZ2OWT8TXrw7c4,43
72
85
  hud/misc/claude_plays_pokemon.py,sha256=IthAkjDVr2Q-GNvX-QLJyMzN7-0pHqqJbagGNv2m7yo,10453
73
86
  hud/otel/__init__.py,sha256=ii17ayoWiS5vAhA7UAmZ8TkmP52gs2pWyHsD46-uYbE,1003
@@ -75,14 +88,14 @@ hud/otel/collector.py,sha256=jLZymZ8r7xt2VDuWexfbnT7PY1-0aiyLMgjBy8KDY1M,4497
75
88
  hud/otel/config.py,sha256=6np_C2UXhtKHHjY41HQxZElua2Eh_EUCBiRB_YuiSuc,6249
76
89
  hud/otel/context.py,sha256=C9MvO99cRSNNDEDC7ehO3eoTPnb6J7AemUYvEp57yEU,17774
77
90
  hud/otel/exporters.py,sha256=TP7SF6ySCP-gFV1i-u5-HbpYsK3n9GP3OjW_ZBfsj-w,14246
78
- hud/otel/instrumentation.py,sha256=xbRRmTDwDyCvJVm4iWmB65kXOhotTnv9GjwkufARBuk,3782
91
+ hud/otel/instrumentation.py,sha256=xTjrkn2p490lJ8UlSD1SfzkPZsD8XKDocQqYQfwMMKo,3775
79
92
  hud/otel/processors.py,sha256=yI5BWsDBMEPfwMzD-iWbJd4KWH3qUDSe-5-C1yT6fjU,4615
80
93
  hud/otel/tests/__init__.py,sha256=VNJKBMaxTtbn7trW-1Ph50zCvCok_wTSGcI1HD6GOLA,43
81
94
  hud/otel/tests/test_processors.py,sha256=np0R4ssd9j6LJSJykJ5bNjl0POwNYNhgb7BqOZHwcMY,6778
82
95
  hud/server/__init__.py,sha256=8LUwgsXO8xiViWP7uImDwcOsWLu01r5F4r8U8qH3rSY,91
83
96
  hud/server/context.py,sha256=6bCdSzv1FGyItu9472HbbYef279H7QuMGJDR8EtYg5Y,3210
84
97
  hud/server/low_level.py,sha256=XYs2pOJ9kN4OcJ6ahDmXM5mWkzq5wJLpKFInUYrWEok,4701
85
- hud/server/server.py,sha256=jx2JEGeVkV5wDVKM7Sb474uY4fd-c6azo7HS_SFYDxo,8013
98
+ hud/server/server.py,sha256=_Up01RQ989QnChXRl2ZfMDCbmkGIlX0-Rj_acrpGdEI,9775
86
99
  hud/server/helper/__init__.py,sha256=ZxO8VP3RZEBBp-q65VixuhzQgqEPSVzW0hEY9J9QqDA,116
87
100
  hud/server/tests/__init__.py,sha256=eEYYkxX5Hz9woXVOBJ2H2_CQoEih0vH6nRt3sH2Z8v8,49
88
101
  hud/shared/__init__.py,sha256=IPxPCqtPLguryN-nBq78Sakypw2bRiE2iHv3SXG8YRk,139
@@ -134,7 +147,7 @@ hud/tools/tests/test_tools_init.py,sha256=qbUCNWbswlkbsSJR-CBnRk_h_l1CLasRffIhp8
134
147
  hud/tools/tests/test_utils.py,sha256=oYxEnLpSA5sEeYFGUTj74QRNv0AHP3AjmYYHXgIW0BY,5496
135
148
  hud/utils/__init__.py,sha256=ckuIzwqgTxkzASa04XTPsOu_TqsRYUKBWUYfcSi3Xnc,164
136
149
  hud/utils/async_utils.py,sha256=5cKrJcnaHV2eJNxeyx0r7fPcdPTDBK7kM9-nLaF51X4,2409
137
- hud/utils/design.py,sha256=MueBX8KpENuQlZFPCh2qiCqGrJghm-jilQA-ZQGZ9ZA,9375
150
+ hud/utils/design.py,sha256=NCl31thhNeYyMSc0GaB0uNe5CIwcM6dONWzed8mI2jI,15052
138
151
  hud/utils/mcp.py,sha256=uFn4qE2IIe-isV0mKQI2rlMDl6l0dHfovYgGa-vOfI8,2455
139
152
  hud/utils/progress.py,sha256=suikwFM8sdSfkV10nAOEaInDhG4XKgOSvFePg4jSj1A,5927
140
153
  hud/utils/telemetry.py,sha256=hrVIx2rUjSGyy9IVxTZ_3Jii83PiHjyFRd5ls2whimM,1863
@@ -144,10 +157,10 @@ hud/utils/tests/test_init.py,sha256=2QLQSGgyP9wJhOvPCusm_zjJad0qApOZi1BXpxcdHXQ,
144
157
  hud/utils/tests/test_mcp.py,sha256=0pUa16mL-bqbZDXp5NHBnt1gO5o10BOg7zTMHZ1DNPM,4023
145
158
  hud/utils/tests/test_progress.py,sha256=QSF7Kpi03Ff_l3mAeqW9qs1nhK50j9vBiSobZq7T4f4,7394
146
159
  hud/utils/tests/test_telemetry.py,sha256=5jl7bEx8C8b-FfFUko5pf4UY-mPOR-9HaeL98dGtVHM,2781
147
- hud/utils/tests/test_version.py,sha256=JXMZuhuGL6fqB8mARikOgFFMpmq1Y0rG-7kz7V43w5k,160
160
+ hud/utils/tests/test_version.py,sha256=M21hhb0gKclB4LA6y_X7tX7vrZqXbiSo91NgKX0wug4,160
148
161
  hud/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
- hud_python-0.4.14.dist-info/METADATA,sha256=e7OCOwaSi0F_gPdM0CUg2buSpTx0wd9w4uny00NH2xM,20233
150
- hud_python-0.4.14.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
151
- hud_python-0.4.14.dist-info/entry_points.txt,sha256=jJbodNFg1m0-CDofe5AHvB4zKBq7sSdP97-ohaQ3ae4,63
152
- hud_python-0.4.14.dist-info/licenses/LICENSE,sha256=yIzBheVUf86FC1bztAcr7RYWWNxyd3B-UJQ3uddg1HA,1078
153
- hud_python-0.4.14.dist-info/RECORD,,
162
+ hud_python-0.4.16.dist-info/METADATA,sha256=0tx5JSLCozbv8youtq3Cp-HuDe0OMHoRA2afl5RrU28,20287
163
+ hud_python-0.4.16.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
164
+ hud_python-0.4.16.dist-info/entry_points.txt,sha256=jJbodNFg1m0-CDofe5AHvB4zKBq7sSdP97-ohaQ3ae4,63
165
+ hud_python-0.4.16.dist-info/licenses/LICENSE,sha256=yIzBheVUf86FC1bztAcr7RYWWNxyd3B-UJQ3uddg1HA,1078
166
+ hud_python-0.4.16.dist-info/RECORD,,