hud-python 0.4.19__py3-none-any.whl → 0.4.21__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/types.py CHANGED
@@ -15,7 +15,20 @@ class MCPToolCall(CallToolRequestParams):
15
15
  id: str = Field(default_factory=lambda: str(uuid.uuid4())) # Unique identifier for reference
16
16
 
17
17
  def __str__(self) -> str:
18
- """Format tool call with Rich markup for HUD design."""
18
+ """Format tool call as plain text."""
19
+ args_str = ""
20
+ if self.arguments:
21
+ try:
22
+ args_str = json.dumps(self.arguments, separators=(",", ":"))
23
+ if len(args_str) > 60:
24
+ args_str = args_str[:57] + "..."
25
+ except (TypeError, ValueError):
26
+ args_str = str(self.arguments)[:60]
27
+
28
+ return f"→ {self.name}({args_str})"
29
+
30
+ def __rich__(self) -> str:
31
+ """Rich representation with color formatting."""
19
32
  from hud.utils.design import design
20
33
 
21
34
  return design.format_tool_call(self.name, self.arguments)
@@ -24,10 +37,8 @@ class MCPToolCall(CallToolRequestParams):
24
37
  class MCPToolResult(CallToolResult):
25
38
  """A tool result."""
26
39
 
27
- def __str__(self) -> str:
28
- """Format tool result with Rich markup for HUD design - compact version."""
29
- from hud.utils.design import design
30
-
40
+ def _get_content_summary(self) -> str:
41
+ """Extract a summary of the content."""
31
42
  # Extract content summary
32
43
  content_summary = ""
33
44
  if self.content:
@@ -49,6 +60,23 @@ class MCPToolResult(CallToolResult):
49
60
  except (TypeError, ValueError):
50
61
  content_summary = str(self.structuredContent)
51
62
 
63
+ return content_summary
64
+
65
+ def __str__(self) -> str:
66
+ """Format tool result as plain text for compatibility."""
67
+ content_summary = self._get_content_summary()
68
+
69
+ # Plain text format with unicode symbols
70
+ if self.isError:
71
+ return f"✗ {content_summary}"
72
+ else:
73
+ return f"✓ {content_summary}"
74
+
75
+ def __rich__(self) -> str:
76
+ """Rich representation with color formatting."""
77
+ from hud.utils.design import design
78
+
79
+ content_summary = self._get_content_summary()
52
80
  return design.format_tool_result(content_summary, self.isError)
53
81
 
54
82
 
hud/utils/design.py CHANGED
@@ -257,6 +257,63 @@ class HUDDesign:
257
257
  else:
258
258
  console.print(f" [cyan]{command}[/cyan]")
259
259
 
260
+ # Exception rendering utilities
261
+ def render_support_hint(self, stderr: bool = True) -> None:
262
+ """Render a standard support message for users encountering issues."""
263
+ support = (
264
+ "If this looks like an issue with the sdk, please make a github issue at "
265
+ "https://github.com/hud-evals/hud-python/issues"
266
+ )
267
+ self.info(support, stderr=stderr)
268
+
269
+ def render_exception(self, error: BaseException, *, stderr: bool = True) -> None:
270
+ """Render exceptions consistently using the HUD design system.
271
+
272
+ - Shows exception type and message
273
+ - Displays structured hints if present on the exception (e.g., HudException.hints)
274
+ - Prints a link to open an issue for SDK problems
275
+ """
276
+ try:
277
+ from hud.shared.exceptions import HudRequestError # lazy import
278
+ except Exception:
279
+ # Keep type available for isinstance guards below without import-time dependency
280
+ HudRequestError = tuple() # type: ignore
281
+
282
+ # Header with exception type
283
+ ex_type = type(error).__name__
284
+ message = getattr(error, "message", "") or str(error) or ex_type
285
+ self.error(f"{ex_type}: {message}", stderr=stderr)
286
+
287
+ # Specialized details for request errors
288
+ if isinstance(error, HudRequestError): # type: ignore[arg-type]
289
+ details: dict[str, str] = {}
290
+ status_code = getattr(error, "status_code", None)
291
+ if status_code is not None:
292
+ details["Status"] = str(status_code)
293
+ response_text = getattr(error, "response_text", None)
294
+ if response_text:
295
+ # Limit very long responses
296
+ trimmed = response_text[:500] + ("..." if len(response_text) > 500 else "")
297
+ details["Response"] = trimmed
298
+ response_json = getattr(error, "response_json", None)
299
+ if response_json and not details.get("Response"):
300
+ details["Response JSON"] = str(response_json)
301
+ if details:
302
+ self.key_value_table(details, show_header=False, stderr=stderr)
303
+
304
+ # Structured hints, if available
305
+ hints = getattr(error, "hints", None)
306
+ if hints:
307
+ try:
308
+ from hud.shared.hints import render_hints # lazy import
309
+
310
+ render_hints(hints, design=self)
311
+ except Exception as render_error:
312
+ self.debug(f"Failed to render hints: {render_error}")
313
+
314
+ # Standard support hint
315
+ self.render_support_hint(stderr=stderr)
316
+
260
317
  @property
261
318
  def console(self) -> Console:
262
319
  """Get the stderr console for direct access when needed."""
hud/utils/mcp.py CHANGED
@@ -76,4 +76,10 @@ def setup_hud_telemetry(
76
76
  MCPConfigPatch(headers={"Run-Id": run_id}, meta={"run_id": run_id}),
77
77
  )
78
78
 
79
+ if settings.api_key:
80
+ patch_mcp_config(
81
+ mcp_config,
82
+ MCPConfigPatch(headers={"Authorization": f"Bearer {settings.api_key}"}),
83
+ )
84
+
79
85
  return auto_trace_cm
@@ -0,0 +1,68 @@
1
+ from __future__ import annotations
2
+
3
+ import asyncio
4
+ import logging
5
+ import sys
6
+ from typing import Any
7
+
8
+ from hud.utils.design import design
9
+
10
+ logger = logging.getLogger(__name__)
11
+
12
+
13
+ def _render_and_fallback(exc_type: type[BaseException], value: BaseException, tb: Any) -> None:
14
+ """Render exceptions via HUD design, then delegate to default excepthook.
15
+
16
+ Only formats for HudException family or when running in a TTY; otherwise,
17
+ defers to the default handler to avoid swallowing useful tracebacks in code.
18
+ """
19
+ # First, print the full traceback
20
+ sys.__excepthook__(exc_type, value, tb)
21
+
22
+ # Then print our formatted error
23
+ try:
24
+ from hud.shared.exceptions import HudException # lazy import
25
+
26
+ if isinstance(value, HudException):
27
+ # Flush stderr to ensure traceback is printed first
28
+ sys.stderr.flush()
29
+ # Add separator and render our formatted error
30
+ design.console.print("")
31
+ design.render_exception(value)
32
+ except Exception:
33
+ # If rendering fails for any reason, silently continue
34
+ logger.warning("Failed to render exception: %s, %s, %s", exc_type, value, tb)
35
+
36
+
37
+ def _async_exception_handler(loop: asyncio.AbstractEventLoop, context: dict[str, Any]) -> None:
38
+ exc = context.get("exception")
39
+ msg = context.get("message")
40
+ try:
41
+ if exc is not None:
42
+ design.render_exception(exc)
43
+ elif msg:
44
+ design.error(msg)
45
+ design.render_support_hint()
46
+ except Exception:
47
+ logger.warning("Failed to render exception: %s, %s, %s", exc, msg, context)
48
+
49
+ # Delegate to default handler
50
+ loop.default_exception_handler(context)
51
+
52
+
53
+ def install_pretty_errors() -> None:
54
+ """Install global pretty error handlers for sync and async exceptions."""
55
+ sys.excepthook = _render_and_fallback
56
+ try:
57
+ # Try to get the running loop first
58
+ loop = asyncio.get_running_loop()
59
+ loop.set_exception_handler(_async_exception_handler)
60
+ except RuntimeError:
61
+ # No running loop, try to create one
62
+ try:
63
+ loop = asyncio.new_event_loop()
64
+ loop.set_exception_handler(_async_exception_handler)
65
+ except Exception:
66
+ logger.warning("No running loop, could not set exception handler")
67
+ except Exception:
68
+ logger.warning("No running loop, could not set exception handler")
@@ -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.19"
8
+ assert hud.__version__ == "0.4.21"
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.19"
7
+ __version__ = "0.4.21"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hud-python
3
- Version: 0.4.19
3
+ Version: 0.4.21
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
@@ -38,6 +38,7 @@ Requires-Python: <3.14,>=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
41
+ Requires-Dist: hud-mcp-use-python-sdk>=2.3.16
41
42
  Requires-Dist: opentelemetry-api>=1.34.1
42
43
  Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.34.1
43
44
  Requires-Dist: opentelemetry-instrumentation-mcp>=0.44.1
@@ -56,7 +57,6 @@ Provides-Extra: agent
56
57
  Requires-Dist: anthropic; extra == 'agent'
57
58
  Requires-Dist: datasets>=2.14.0; extra == 'agent'
58
59
  Requires-Dist: dotenv>=0.9.9; extra == 'agent'
59
- Requires-Dist: hud-mcp-use-python-sdk>=2.3.13; extra == 'agent'
60
60
  Requires-Dist: ipykernel; extra == 'agent'
61
61
  Requires-Dist: ipython<9; extra == 'agent'
62
62
  Requires-Dist: jupyter-client; extra == 'agent'
@@ -70,7 +70,6 @@ Provides-Extra: agents
70
70
  Requires-Dist: anthropic; extra == 'agents'
71
71
  Requires-Dist: datasets>=2.14.0; extra == 'agents'
72
72
  Requires-Dist: dotenv>=0.9.9; extra == 'agents'
73
- Requires-Dist: hud-mcp-use-python-sdk>=2.3.13; extra == 'agents'
74
73
  Requires-Dist: ipykernel; extra == 'agents'
75
74
  Requires-Dist: ipython<9; extra == 'agents'
76
75
  Requires-Dist: jupyter-client; extra == 'agents'
@@ -85,7 +84,6 @@ Requires-Dist: aiodocker>=0.24.0; extra == 'dev'
85
84
  Requires-Dist: anthropic; extra == 'dev'
86
85
  Requires-Dist: datasets>=2.14.0; extra == 'dev'
87
86
  Requires-Dist: dotenv>=0.9.9; extra == 'dev'
88
- Requires-Dist: hud-mcp-use-python-sdk>=2.3.13; extra == 'dev'
89
87
  Requires-Dist: inspect-ai>=0.3.80; extra == 'dev'
90
88
  Requires-Dist: ipykernel; extra == 'dev'
91
89
  Requires-Dist: ipython<9; extra == 'dev'
@@ -1,11 +1,11 @@
1
- hud/__init__.py,sha256=BjAhZtsHbGN371Q8t3o4v4jltedkmDE85xW0yOILU9g,397
1
+ hud/__init__.py,sha256=KU7G-_Mj6Mjf7trXA6X0ufN6QUmqhVi19NKbnNIvD74,532
2
2
  hud/__main__.py,sha256=YR8Dq8OhINOsVfQ55PmRXXg4fEK84Rt_-rMtJ5rvhWo,145
3
3
  hud/settings.py,sha256=q9aZiHjvbL4oLE-N8AttTW4rmzS8zPMnsca-iMGyEGc,2362
4
- hud/types.py,sha256=gNnyS1G7aYHIR5sT3k3bOfSTFnPylUO6lNGLWbjbeYk,5149
5
- hud/version.py,sha256=TspylpJFduiccfFe6aqVOAungquP27FSDJSivDPvJ5E,105
4
+ hud/types.py,sha256=DDK7-jcoI0iZbyIOfXlGJy9MpHAGcw_4napLs-v-8vY,6077
5
+ hud/version.py,sha256=888JgQ-gt1NqBeShBZC3JqfOBDr4dkkOuQ33EZpv7yA,105
6
6
  hud/agents/__init__.py,sha256=UoIkljWdbq4bM0LD-mSaw6w826EqdEjOk7r6glNYwYQ,286
7
- hud/agents/base.py,sha256=t3bPRTKzGuejhSeo1jLNprlUv6zNU9ezQfP16tX_pXw,29562
8
- hud/agents/claude.py,sha256=_eD_XKZhVJ6grkHQfbS6JskztueomQcmJeGJMbfNdmE,14534
7
+ hud/agents/base.py,sha256=2kZ8KOuNk_RQGqE7MvdMPm_jrlAkiaNNBz1tEW0Uxpg,30937
8
+ hud/agents/claude.py,sha256=upWnGGwLz88k8i6zg0A6l1rK7DSTwJEU8pRevnR3irc,15314
9
9
  hud/agents/langchain.py,sha256=1EgCy8jfjunsWxlPC5XfvfLS6_XZVrIF1ZjtHcrvhYw,9584
10
10
  hud/agents/openai.py,sha256=tvFYsZ5yaoLkfjMnHe-COxRttMsLRXBLPdSqgeipQRk,14257
11
11
  hud/agents/openai_chat_generic.py,sha256=PQAD4GGE6sHs8R95qpgDBHEbSOJ7WXCYGYFmd3Nic1g,10628
@@ -14,21 +14,21 @@ hud/agents/misc/response_agent.py,sha256=pnaomb4H-QJm1YKU3tC1YnZXxOlDbTHIXaIH-6N
14
14
  hud/agents/tests/__init__.py,sha256=W-O-_4i34d9TTyEHV-O_q1Ai1gLhzwDaaPo02_TWQIY,34
15
15
  hud/agents/tests/test_base.py,sha256=F39ajSqASGUbPyPoWSY9KARFav62qNTK74W11Tr1Tg4,28970
16
16
  hud/agents/tests/test_claude.py,sha256=wqEKlzEvx8obz1sSm4NY0j-Zyt1qWNfDOmRqYIuAEd0,13069
17
- hud/agents/tests/test_client.py,sha256=Sk5bGZw2hL5GsVi2LMp9tsLngl5ZQ18pkpeeQmts0ao,13908
17
+ hud/agents/tests/test_client.py,sha256=fZoT22awa-Q84kAZ0CGiFGLNDEjBQ75rf6lImmVDsoQ,13120
18
18
  hud/agents/tests/test_openai.py,sha256=lhHowQyLp09oDVwBUjUECoPeH01F16i4O9YIHeugK6E,7028
19
- hud/cli/__init__.py,sha256=BhrFre1_ZCwoXJsZ67I29KTlgKzH3W_g0Y9FOvmh9-s,34937
19
+ hud/cli/__init__.py,sha256=W4McbKAvs8cMIYlruzjV8Z_nxkmOK9ktYWP-WBnD6xo,35804
20
20
  hud/cli/__main__.py,sha256=fDH7XITyuDITwSDIVwRso06aouADO0CzTHKqp5TOwJE,143
21
21
  hud/cli/analyze.py,sha256=DngDPM53DHZn8gFndz8d7hCIOUwB4tqtYEii6AGFIZk,14393
22
- hud/cli/build.py,sha256=2bggugEegRp_QguK5aTzoM607NY-toQaic9WtnnoI2o,19231
22
+ hud/cli/build.py,sha256=_3rNFhNDNAChE95Ou5AqblVfD6QlUwKtcpgrPFChuq8,17742
23
23
  hud/cli/clone.py,sha256=AwVDIuhr8mHb1oT2Af2HrD25SiTdwATpE6zd93vzLgA,6099
24
24
  hud/cli/debug.py,sha256=FNzg9-_ZzUJA1nJfubmop7_2OT5mqnWsdpZyi4AVSXA,14163
25
25
  hud/cli/dev.py,sha256=R7YJWIZCUURXzs8ovOCF9V1FwOhsAJT5D3mZQkFmTI4,31134
26
- hud/cli/eval.py,sha256=LjDCci3lYsu8RRmL5DiWYfroK1n2FrMUUhOiQ53242s,15142
26
+ hud/cli/eval.py,sha256=v_uvzkS-J_dsxzVqszPkotOfUsNoq501-Ygdqi9BhKA,15770
27
27
  hud/cli/hf.py,sha256=EYWL-fEN9SS2QJYU7iIBXs0qa9JIvmMWOMh9a8Ewt9s,15179
28
- hud/cli/init.py,sha256=xRUy92TqBALNQxycBB4Kk0m380WtE-qD3L6A5Sr1Lxw,19581
28
+ hud/cli/init.py,sha256=7Yqp3gUVmK-vVE_6A9RKhZlSTlwxxb2ylJn1H22TYSY,19573
29
29
  hud/cli/list_func.py,sha256=ENxLL4X5uuqAASWZdQuI0k-tEzmlhUn5LATgz3QPQqQ,7065
30
30
  hud/cli/pull.py,sha256=JHwCwUwRO0Nzbgm9mkjsz6EpxbxgwQVhgNSY64nNZ-s,11969
31
- hud/cli/push.py,sha256=4KrEHj0_i3xJNCB3eRjANmHFhSW4MFfpnld3nfVYENs,17904
31
+ hud/cli/push.py,sha256=KFuykjmBVTInjEKmV7BaMwu9n6BYT9GUgkzZ9J7r6gQ,17966
32
32
  hud/cli/remove.py,sha256=USAvB6pbMA3jd19xUtLEBiMsklVTEfE2Maw9nYcpSAE,6619
33
33
  hud/cli/rl/README.md,sha256=3pqRZMrnwD-lJwWGCCNZNhGdZG6zyydLBOer0e8BkLw,5983
34
34
  hud/cli/rl/__init__.py,sha256=g_Crqn5o0m9xANrTOkQZENWVlwHAV6MWiobte-FfqiY,3412
@@ -50,7 +50,7 @@ hud/cli/tests/test_list_func.py,sha256=pkG4TtJJBMi9Xk8KBNFBlGcam7kwz01IRsjfQBL2P
50
50
  hud/cli/tests/test_main_module.py,sha256=6RhwCcdRSN2uQV6-adti40ZcLd3u-mPR1ai6wL64c6Y,1105
51
51
  hud/cli/tests/test_mcp_server.py,sha256=wLFkDOR22FuBe3kIdYeLG7H81HHiorKB8kXRubftLpU,4316
52
52
  hud/cli/tests/test_pull.py,sha256=7wHxdf_rN3LDmo554-S63WT6eoYUquwDWpjgoy_f1eQ,12923
53
- hud/cli/tests/test_push.py,sha256=8LpKY4lASRYPd8xM8c_SlTbE11IQ8kCfzfC8UBqhzN4,12709
53
+ hud/cli/tests/test_push.py,sha256=ixuqb39Q1A-GJGjnELYifIYBU9lIWCM1q7s_gjUEhYE,12709
54
54
  hud/cli/tests/test_registry.py,sha256=mTfgr6fkY5ygRnSgbVU7988QRQKdpEKUpWmQicGnHGs,9461
55
55
  hud/cli/tests/test_utils.py,sha256=_oa2lTvgqJxXe0Mtovxb8x-Sug-f6oJJKvG67r5pFtA,13474
56
56
  hud/cli/utils/__init__.py,sha256=L6s0oNzY2LugGp9faodCPnjzM-ZUorUH05-HmYOq5hY,35
@@ -65,10 +65,10 @@ hud/cli/utils/remote_runner.py,sha256=50Fqp7LG9dwiDyNM-LspNiKrSHmEo00C_Iuu5jg9mX
65
65
  hud/cli/utils/runner.py,sha256=qZI1lFNZIFn6d919awUkMtjQ36TfhAvyqGRzQmkal8c,4269
66
66
  hud/cli/utils/server.py,sha256=uSx2DjG5vX-PFoD8zNH-gBHbkTNSHveFSVdAfmp09Tc,7341
67
67
  hud/clients/README.md,sha256=XNE3mch95ozDgVqfwCGcrhlHY9CwT1GKfNANNboowto,3826
68
- hud/clients/__init__.py,sha256=bcPIa7dwH5ENsjh7CzjsJ84fm7Ma93NBc2lGfSjGAKM,328
69
- hud/clients/base.py,sha256=F8wq-UGoW1J_MguHq5w_Tcr0mJ4awSWbFOE8xP7sSDA,14129
68
+ hud/clients/__init__.py,sha256=N5M_gZv4nP7dLRwpAiaqqaxyaLieGW6397FszeG7JGw,364
69
+ hud/clients/base.py,sha256=vt9mRMZwZg2DtVxQmccR_VZZGamXhx3dvlFJPulbOd8,14131
70
70
  hud/clients/fastmcp.py,sha256=KJGi8bmds0Q6rHnkTXb_Hw9ZqWmSo0OfjW05SSuyEJU,9182
71
- hud/clients/mcp_use.py,sha256=tgvQ5MyY1cJeCR1M7dwYMfDmPnxOQuXPjZeKCr98CJc,11962
71
+ hud/clients/mcp_use.py,sha256=fKG_yRM-GlucQbd7f4aYF2Go0kSjwApHqO3DhbIPG04,13034
72
72
  hud/clients/tests/__init__.py,sha256=sKOtJFFa4mDIXh1U6O8ZUHjigE8CiRMQ2PzJTIBZuVE,33
73
73
  hud/clients/tests/test_client_integration.py,sha256=kohU6jfCNfwSnAushHeB1_CmDlRfQc7VBL0GEdJYSeI,4198
74
74
  hud/clients/tests/test_fastmcp.py,sha256=4q3TzDjuieTZa89taiNJIrzbUncNkYOG4MaubypA21k,13030
@@ -76,33 +76,39 @@ hud/clients/tests/test_protocol.py,sha256=aK4CS4g3j1D5jPo83ykzZuHUvcZFAulYtIq9T9
76
76
  hud/clients/utils/__init__.py,sha256=ucYJqOVpEsN-D9OFE2YTNLG628MgxcZAzfYhnbzx02k,32
77
77
  hud/clients/utils/retry_transport.py,sha256=Rsq25eiKKt_pM1bas78QEZvO0illK97X_3opmaS3A3w,6809
78
78
  hud/datasets/__init__.py,sha256=74T4mrjELKtE04XkZKwU8QAJcg2wjqXLqRO9s4GlPr4,678
79
- hud/datasets/task.py,sha256=V82HzRb2_c2MO9EG5ZcY-PMsLt3234Uks7WlkMta5HY,3615
79
+ hud/datasets/task.py,sha256=bDVLy4EOBfjiU4i8hrFqcQ3dc077vzVNRXIbyNXFnp8,3916
80
80
  hud/datasets/utils.py,sha256=3hKvZTkZuCRkTeITB86nNdA1dtHZAqFfAdSPMtcTUhs,4275
81
81
  hud/datasets/execution/__init__.py,sha256=4m1AEpMQaUSJFVN_iAXvY6zFttVgZKwE6oQtC0Rrk7U,330
82
82
  hud/datasets/execution/parallel.py,sha256=4aL1XpS3vOBqZjgs0vrMZJ4eAoi86Td8C-m5SUtVxMs,25231
83
83
  hud/datasets/execution/runner.py,sha256=EEvb90vvAqFXXx8NyVKLfK5p-gtsfJqiFJAoqSjyfXg,4695
84
84
  hud/misc/__init__.py,sha256=m_pprQQ-G-Y0Sd0NEiR8MtAMbElnuFZ2OWT8TXrw7c4,43
85
85
  hud/misc/claude_plays_pokemon.py,sha256=IthAkjDVr2Q-GNvX-QLJyMzN7-0pHqqJbagGNv2m7yo,10453
86
+ hud/native/__init__.py,sha256=TqM0KaiQnDb2Nv1zOgpEMiLVq8JPd4j_aaK4rUZ0IiA,232
87
+ hud/native/comparator.py,sha256=A16wFGINLHPyuD23e8sEYxhRwWCUBYzYLb6TpvzJG9c,18297
88
+ hud/native/tests/__init__.py,sha256=gBTLMm6w5f6D-02Se2WleYsEEYyFt95JDcFzp3C2L_k,40
89
+ hud/native/tests/test_comparator.py,sha256=x1gFLXEDRIiJhH8tg5Rd3ptY-modYaHgSm6-hCJ1EdY,18568
90
+ hud/native/tests/test_native_init.py,sha256=Is8fcDZimp1Oi2Bv4zavqM3KrpS86_DUXFnqc0AsCH0,2736
86
91
  hud/otel/__init__.py,sha256=ii17ayoWiS5vAhA7UAmZ8TkmP52gs2pWyHsD46-uYbE,1003
87
92
  hud/otel/collector.py,sha256=jLZymZ8r7xt2VDuWexfbnT7PY1-0aiyLMgjBy8KDY1M,4497
88
93
  hud/otel/config.py,sha256=6np_C2UXhtKHHjY41HQxZElua2Eh_EUCBiRB_YuiSuc,6249
89
94
  hud/otel/context.py,sha256=C9MvO99cRSNNDEDC7ehO3eoTPnb6J7AemUYvEp57yEU,17774
90
95
  hud/otel/exporters.py,sha256=RLAjWa8b2DJEU21740Idq4fmeIuabLEqGGUspcFDcH4,14331
91
- hud/otel/instrumentation.py,sha256=xTjrkn2p490lJ8UlSD1SfzkPZsD8XKDocQqYQfwMMKo,3775
96
+ hud/otel/instrumentation.py,sha256=bBWxQ5vkiP-2WZ_2ztR5LAw0Wu02SZNKUgs5f-rU-ro,3734
92
97
  hud/otel/processors.py,sha256=-gGRbwifplcExDQBLfx_9tqWreDImULJNcENgO9q7VU,4700
93
98
  hud/otel/tests/__init__.py,sha256=VNJKBMaxTtbn7trW-1Ph50zCvCok_wTSGcI1HD6GOLA,43
94
99
  hud/otel/tests/test_processors.py,sha256=np0R4ssd9j6LJSJykJ5bNjl0POwNYNhgb7BqOZHwcMY,6778
95
100
  hud/server/__init__.py,sha256=8LUwgsXO8xiViWP7uImDwcOsWLu01r5F4r8U8qH3rSY,91
96
101
  hud/server/context.py,sha256=6bCdSzv1FGyItu9472HbbYef279H7QuMGJDR8EtYg5Y,3210
97
102
  hud/server/low_level.py,sha256=XYs2pOJ9kN4OcJ6ahDmXM5mWkzq5wJLpKFInUYrWEok,4701
98
- hud/server/server.py,sha256=_Up01RQ989QnChXRl2ZfMDCbmkGIlX0-Rj_acrpGdEI,9775
103
+ hud/server/server.py,sha256=w32-A0iRu4TIaHpWm2lBx7kIf8CcpaMbBKRrEn6GyKk,10026
99
104
  hud/server/helper/__init__.py,sha256=ZxO8VP3RZEBBp-q65VixuhzQgqEPSVzW0hEY9J9QqDA,116
100
105
  hud/server/tests/__init__.py,sha256=eEYYkxX5Hz9woXVOBJ2H2_CQoEih0vH6nRt3sH2Z8v8,49
101
106
  hud/shared/__init__.py,sha256=IPxPCqtPLguryN-nBq78Sakypw2bRiE2iHv3SXG8YRk,139
102
- hud/shared/exceptions.py,sha256=tLmXxBaW4S04gnfc1vrjTqXwIECVlhFZqO5u0kjk_7c,5902
103
- hud/shared/requests.py,sha256=og2jEbBHCebrg4kiBShunWKMaxQSaO2V7SHU5HPslHg,8848
107
+ hud/shared/exceptions.py,sha256=dhmt5KMciQ2fmV-yqXtTNO868k-WzuZae6w7dOk3M44,12144
108
+ hud/shared/hints.py,sha256=UdJyGmizk0fz8QZqkRJVvQGlxalBsEzumu7h9pP_2kA,5009
109
+ hud/shared/requests.py,sha256=HWrPp7nBSK4jhv9wqZdFiNrVaaxV0vWS8fcgGtoztBc,9479
104
110
  hud/shared/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
- hud/shared/tests/test_exceptions.py,sha256=JvraqsLUIWx4xoYn4UGytE11hPlc5ikj2SoMrFc_fIE,6075
111
+ hud/shared/tests/test_exceptions.py,sha256=bCKGqw2RwBmlGIMNpddzyfnWAOQwSIYB76r6iaBE2is,15761
106
112
  hud/shared/tests/test_requests.py,sha256=nKFcSN1sjrOouVU2xik9lE5Wxapy3EWsO8iIXrM_Sts,9114
107
113
  hud/telemetry/__init__.py,sha256=pPqkq4XekqJEkzwoCwGHGAv1NcytZ55yIB1aLxBpo6U,663
108
114
  hud/telemetry/instrument.py,sha256=m3u6YK02PTk39Jr4L3se7l-cYyKx0maCaqf5Z5JqWNA,14096
@@ -112,12 +118,13 @@ hud/telemetry/trace.py,sha256=gem9pcioNI71hLs18vNidv-7KAZBJAn35stjVvOu_Ic,2208
112
118
  hud/telemetry/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
119
  hud/telemetry/tests/test_replay.py,sha256=eREc6qgSJDRT1pOPdyhiEoEJ9H2yT1ospaU1RvTKlvg,1328
114
120
  hud/telemetry/tests/test_trace.py,sha256=uKPjVqJ7kSWhiLXxMVQjQ3PcuKM-ryNs38LNaJanByg,2477
115
- hud/tools/__init__.py,sha256=dT-s4zs2B5GsOZ_K2tZZLKuSIp4u3RIvNYMJ_eUpkrE,960
121
+ hud/tools/__init__.py,sha256=i6lE0GxYcPnlLLd-55ryCCHo7o9anC4RfqkuYFXvzMQ,1009
116
122
  hud/tools/base.py,sha256=4qm5LS3SAkrq_lyfToWYCN9tNvTHohKJNH2siHkE364,15824
117
123
  hud/tools/bash.py,sha256=LJViMGb3lTGBm_gequVVTM7ySh1Xh9bOOIZXU29Lmrw,5209
118
124
  hud/tools/edit.py,sha256=N0AYFXp07-vAJy2li7lvHOL6hfgJOU4LL3iLSZrbRWU,12745
119
- hud/tools/playwright.py,sha256=lF7NxyEu8YbB7tpmCoTf8p9HxIrejahC67x3Xs0Jjb4,15007
125
+ hud/tools/playwright.py,sha256=iyMrQ-ZKyeFia2fBp0yguXswTcXfGqdZcTXXCfUupFU,14988
120
126
  hud/tools/response.py,sha256=t6Oc8NM4u951A1XMCBaIkFyu3VNEQ8dcWURyTygfZmA,2228
127
+ hud/tools/submit.py,sha256=hJG2G3Oex4fz_3CsAUVhOhAA56UvDMhquB29xCT-C3M,1973
121
128
  hud/tools/types.py,sha256=g-CWnUUDSxxIfUy54S1bpY1nfTzdYO1R_nPKYReABjQ,2734
122
129
  hud/tools/utils.py,sha256=bfVyYMcBOJvr1QdptCjVb6jaHVGIL5WUxmY59kzMekQ,1447
123
130
  hud/tools/computer/__init__.py,sha256=3tQBXPtGX0WPCwFXzEs3-duwg0rPEgj_0-K7aHskeQE,367
@@ -147,8 +154,9 @@ hud/tools/tests/test_tools_init.py,sha256=qbUCNWbswlkbsSJR-CBnRk_h_l1CLasRffIhp8
147
154
  hud/tools/tests/test_utils.py,sha256=oYxEnLpSA5sEeYFGUTj74QRNv0AHP3AjmYYHXgIW0BY,5496
148
155
  hud/utils/__init__.py,sha256=ckuIzwqgTxkzASa04XTPsOu_TqsRYUKBWUYfcSi3Xnc,164
149
156
  hud/utils/async_utils.py,sha256=5cKrJcnaHV2eJNxeyx0r7fPcdPTDBK7kM9-nLaF51X4,2409
150
- hud/utils/design.py,sha256=NCl31thhNeYyMSc0GaB0uNe5CIwcM6dONWzed8mI2jI,15052
151
- hud/utils/mcp.py,sha256=uFn4qE2IIe-isV0mKQI2rlMDl6l0dHfovYgGa-vOfI8,2455
157
+ hud/utils/design.py,sha256=Ymz29qdgqmnXCupDmASCqgkoW8fS6_cg5COXiFUUl50,17621
158
+ hud/utils/mcp.py,sha256=jvCWb5MXlMMObhrbYoiTlI-L9HNkEjLVx8GJ-HbdQ7U,2626
159
+ hud/utils/pretty_errors.py,sha256=M4mEzzyB-ZbqbX8KQmlBTtoc2q7OBKzFYvkXgVBcj6o,2395
152
160
  hud/utils/progress.py,sha256=suikwFM8sdSfkV10nAOEaInDhG4XKgOSvFePg4jSj1A,5927
153
161
  hud/utils/telemetry.py,sha256=hrVIx2rUjSGyy9IVxTZ_3Jii83PiHjyFRd5ls2whimM,1863
154
162
  hud/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -157,10 +165,10 @@ hud/utils/tests/test_init.py,sha256=2QLQSGgyP9wJhOvPCusm_zjJad0qApOZi1BXpxcdHXQ,
157
165
  hud/utils/tests/test_mcp.py,sha256=0pUa16mL-bqbZDXp5NHBnt1gO5o10BOg7zTMHZ1DNPM,4023
158
166
  hud/utils/tests/test_progress.py,sha256=QSF7Kpi03Ff_l3mAeqW9qs1nhK50j9vBiSobZq7T4f4,7394
159
167
  hud/utils/tests/test_telemetry.py,sha256=5jl7bEx8C8b-FfFUko5pf4UY-mPOR-9HaeL98dGtVHM,2781
160
- hud/utils/tests/test_version.py,sha256=bB6kVxiVIBfXJAEJpmnhn0ml3FG8Gk5ByfSd2fgoARc,160
168
+ hud/utils/tests/test_version.py,sha256=5ReSod83u8tP-ZJBhZwzeY-rFMhIy8Mpt-zP-v7YeEA,160
161
169
  hud/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
162
- hud_python-0.4.19.dist-info/METADATA,sha256=T-D9DILS-I5e6xdOmJOIU6wOPpXn3yY_zxk0bKFfPts,20287
163
- hud_python-0.4.19.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
164
- hud_python-0.4.19.dist-info/entry_points.txt,sha256=jJbodNFg1m0-CDofe5AHvB4zKBq7sSdP97-ohaQ3ae4,63
165
- hud_python-0.4.19.dist-info/licenses/LICENSE,sha256=yIzBheVUf86FC1bztAcr7RYWWNxyd3B-UJQ3uddg1HA,1078
166
- hud_python-0.4.19.dist-info/RECORD,,
170
+ hud_python-0.4.21.dist-info/METADATA,sha256=Np2Ririw3UDdAAiaOIa0QSyDdYdjjAypm25ZoSK8KPg,20142
171
+ hud_python-0.4.21.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
172
+ hud_python-0.4.21.dist-info/entry_points.txt,sha256=jJbodNFg1m0-CDofe5AHvB4zKBq7sSdP97-ohaQ3ae4,63
173
+ hud_python-0.4.21.dist-info/licenses/LICENSE,sha256=yIzBheVUf86FC1bztAcr7RYWWNxyd3B-UJQ3uddg1HA,1078
174
+ hud_python-0.4.21.dist-info/RECORD,,