hud-python 0.4.2__py3-none-any.whl → 0.4.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of hud-python might be problematic. Click here for more details.

hud/utils/design.py CHANGED
@@ -28,96 +28,111 @@ DIM = "dim"
28
28
  class HUDDesign:
29
29
  """Design system for HUD CLI output."""
30
30
 
31
- def __init__(self, console: Console | None = None, stderr: bool = False) -> None:
32
- """Initialize the design system.
31
+ def __init__(self) -> None:
32
+ """Initialize the design system."""
33
+ self._stdout_console = Console(stderr=False)
34
+ self._stderr_console = Console(stderr=True)
33
35
 
34
- Args:
35
- console: Rich console instance. Creates new one if not provided.
36
- stderr: If True, output to stderr instead of stdout.
37
- """
38
- self.console = console or Console(stderr=stderr)
39
-
40
- def header(self, title: str, icon: str = "🚀") -> None:
36
+ def header(self, title: str, icon: str = "🚀", stderr: bool = True) -> None:
41
37
  """Print a header panel with gold border.
42
38
 
43
39
  Args:
44
40
  title: The title text
45
41
  icon: Optional emoji icon
42
+ stderr: If True, output to stderr (default), otherwise stdout
46
43
  """
47
- self.console.print(Panel.fit(f"{icon} [bold]{title}[/bold]", border_style=GOLD))
44
+ console = self._stderr_console if stderr else self._stdout_console
45
+ console.print(Panel.fit(f"{icon} [bold]{title}[/bold]", border_style=GOLD))
48
46
 
49
- def section_title(self, title: str) -> None:
47
+ def section_title(self, title: str, stderr: bool = True) -> None:
50
48
  """Print a section title in gold.
51
49
 
52
50
  Args:
53
51
  title: The section title
52
+ stderr: If True, output to stderr (default), otherwise stdout
54
53
  """
55
- self.console.print(f"\n[bold {GOLD}]{title}[/bold {GOLD}]")
54
+ console = self._stderr_console if stderr else self._stdout_console
55
+ console.print(f"\n[bold {GOLD}]{title}[/bold {GOLD}]")
56
56
 
57
- def success(self, message: str) -> None:
57
+ def success(self, message: str, stderr: bool = True) -> None:
58
58
  """Print a success message.
59
59
 
60
60
  Args:
61
61
  message: The success message
62
+ stderr: If True, output to stderr (default), otherwise stdout
62
63
  """
63
- self.console.print(f"[{GREEN} not bold]✅ {message}[/{GREEN} not bold]")
64
+ console = self._stderr_console if stderr else self._stdout_console
65
+ console.print(f"[{GREEN} not bold]✅ {message}[/{GREEN} not bold]")
64
66
 
65
- def error(self, message: str) -> None:
67
+ def error(self, message: str, stderr: bool = True) -> None:
66
68
  """Print an error message.
67
69
 
68
70
  Args:
69
71
  message: The error message
72
+ stderr: If True, output to stderr (default), otherwise stdout
70
73
  """
71
- self.console.print(f"[{RED} not bold]❌ {message}[/{RED} not bold]")
74
+ console = self._stderr_console if stderr else self._stdout_console
75
+ console.print(f"[{RED} not bold]❌ {message}[/{RED} not bold]")
72
76
 
73
- def warning(self, message: str) -> None:
77
+ def warning(self, message: str, stderr: bool = True) -> None:
74
78
  """Print a warning message.
75
79
 
76
80
  Args:
77
81
  message: The warning message
82
+ stderr: If True, output to stderr (default), otherwise stdout
78
83
  """
79
- self.console.print(f"[yellow]⚠️ {message}[/yellow]")
84
+ console = self._stderr_console if stderr else self._stdout_console
85
+ console.print(f"[yellow]⚠️ {message}[/yellow]")
80
86
 
81
- def info(self, message: str) -> None:
87
+ def info(self, message: str, stderr: bool = True) -> None:
82
88
  """Print an info message.
83
89
 
84
90
  Args:
85
91
  message: The info message
92
+ stderr: If True, output to stderr (default), otherwise stdout
86
93
  """
87
- self.console.print(f"[default not bold]{message}[/default not bold]")
94
+ console = self._stderr_console if stderr else self._stdout_console
95
+ console.print(f"[default not bold]{message}[/default not bold]")
88
96
 
89
- def dim_info(self, label: str, value: str) -> None:
97
+ def dim_info(self, label: str, value: str, stderr: bool = True) -> None:
90
98
  """Print dimmed info with a label.
91
99
 
92
100
  Args:
93
101
  label: The label text
94
102
  value: The value text
103
+ stderr: If True, output to stderr (default), otherwise stdout
95
104
  """
96
- self.console.print(f"[{DIM}]{label}[/{DIM}] [default]{value}[/default]")
105
+ console = self._stderr_console if stderr else self._stdout_console
106
+ console.print(f"[{DIM}]{label}[/{DIM}] [default]{value}[/default]")
97
107
 
98
- def link(self, url: str) -> None:
108
+ def link(self, url: str, stderr: bool = True) -> None:
99
109
  """Print an underlined link.
100
110
 
101
111
  Args:
102
112
  url: The URL to display
113
+ stderr: If True, output to stderr (default), otherwise stdout
103
114
  """
104
- self.console.print(f"[default not bold underline]{url}[/default not bold underline]")
115
+ console = self._stderr_console if stderr else self._stdout_console
116
+ console.print(f"[default not bold underline]{url}[/default not bold underline]")
105
117
 
106
- def json_config(self, json_str: str) -> None:
118
+ def json_config(self, json_str: str, stderr: bool = True) -> None:
107
119
  """Print JSON configuration with light theme.
108
120
 
109
121
  Args:
110
122
  json_str: JSON string to display
123
+ stderr: If True, output to stderr (default), otherwise stdout
111
124
  """
112
125
  # Just print the JSON as plain text to avoid any syntax coloring
113
- self.console.print(f"[default not bold]{json_str}[/default not bold]")
126
+ console = self._stderr_console if stderr else self._stdout_console
127
+ console.print(f"[default not bold]{json_str}[/default not bold]")
114
128
 
115
- def key_value_table(self, data: dict[str, str], show_header: bool = False) -> None:
129
+ def key_value_table(self, data: dict[str, str], show_header: bool = False, stderr: bool = True) -> None:
116
130
  """Print a key-value table.
117
131
 
118
132
  Args:
119
133
  data: Dictionary of key-value pairs
120
134
  show_header: Whether to show table header
135
+ stderr: If True, output to stderr (default), otherwise stdout
121
136
  """
122
137
  table = Table(show_header=show_header, box=None, padding=(0, 1))
123
138
  table.add_column("Key", style=DIM, no_wrap=True)
@@ -126,42 +141,95 @@ class HUDDesign:
126
141
  for key, value in data.items():
127
142
  table.add_row(key, value)
128
143
 
129
- self.console.print(table)
144
+ console = self._stderr_console if stderr else self._stdout_console
145
+ console.print(table)
130
146
 
131
- def progress_message(self, message: str) -> None:
147
+ def progress_message(self, message: str, stderr: bool = True) -> None:
132
148
  """Print a progress message.
133
149
 
134
150
  Args:
135
151
  message: The progress message
152
+ stderr: If True, output to stderr (default), otherwise stdout
136
153
  """
137
- self.console.print(f"[{DIM} not bold]{message}[/{DIM} not bold]")
154
+ console = self._stderr_console if stderr else self._stdout_console
155
+ console.print(f"[{DIM} not bold]{message}[/{DIM} not bold]")
138
156
 
139
- def phase(self, phase_num: int, title: str) -> None:
157
+ def phase(self, phase_num: int, title: str, stderr: bool = True) -> None:
140
158
  """Print a phase header (for debug command).
141
159
 
142
160
  Args:
143
161
  phase_num: Phase number
144
162
  title: Phase title
163
+ stderr: If True, output to stderr (default), otherwise stdout
145
164
  """
146
- self.console.print(f"\n{'=' * 80}", style=GOLD)
147
- self.console.print(f"[bold {GOLD}]PHASE {phase_num}: {title}[/bold {GOLD}]")
148
- self.console.print(f"{'=' * 80}", style=GOLD)
165
+ console = self._stderr_console if stderr else self._stdout_console
166
+ console.print(f"\n{'=' * 80}", style=GOLD)
167
+ console.print(f"[bold {GOLD}]PHASE {phase_num}: {title}[/bold {GOLD}]")
168
+ console.print(f"{'=' * 80}", style=GOLD)
149
169
 
150
- def command(self, cmd: list[str]) -> None:
170
+ def command(self, cmd: list[str], stderr: bool = True) -> None:
151
171
  """Print a command being executed.
152
172
 
153
173
  Args:
154
174
  cmd: Command parts as list
175
+ stderr: If True, output to stderr (default), otherwise stdout
155
176
  """
156
- self.console.print(f"[bold]$ {' '.join(cmd)}[/bold]")
177
+ console = self._stderr_console if stderr else self._stdout_console
178
+ console.print(f"[bold]$ {' '.join(cmd)}[/bold]")
157
179
 
158
- def hint(self, hint: str) -> None:
180
+ def hint(self, hint: str, stderr: bool = True) -> None:
159
181
  """Print a hint message.
160
182
 
161
183
  Args:
162
184
  hint: The hint text
185
+ stderr: If True, output to stderr (default), otherwise stdout
186
+ """
187
+ console = self._stderr_console if stderr else self._stdout_console
188
+ console.print(f"\n[yellow]💡 Hint: {hint}[/yellow]")
189
+
190
+ def status_item(self, label: str, value: str, status: str = "success", primary: bool = False, stderr: bool = True) -> None:
191
+ """Print a status item with indicator.
192
+
193
+ Args:
194
+ label: The label text
195
+ value: The value text
196
+ status: Status type - "success" (✓), "error" (✗), "warning" (⚠), "info" (•)
197
+ primary: If True, highlight the value as primary
198
+ stderr: If True, output to stderr (default), otherwise stdout
199
+ """
200
+ indicators = {
201
+ "success": f"[{GREEN} not bold]✓[/{GREEN} not bold]",
202
+ "error": f"[{RED} not bold]✗[/{RED} not bold]",
203
+ "warning": "[yellow]⚠[/yellow]",
204
+ "info": f"[{DIM}]•[/{DIM}]"
205
+ }
206
+
207
+ indicator = indicators.get(status, indicators["info"])
208
+ console = self._stderr_console if stderr else self._stdout_console
209
+
210
+ if primary:
211
+ console.print(f"{indicator} {label}: [bold cyan]{value}[/bold cyan]")
212
+ else:
213
+ console.print(f"{indicator} {label}: {value}")
214
+
215
+ def command_example(self, command: str, description: str | None = None, stderr: bool = True) -> None:
216
+ """Print a command example with cyan highlighting.
217
+
218
+ Args:
219
+ command: The command to show
220
+ description: Optional description after the command
221
+ stderr: If True, output to stderr (default), otherwise stdout
163
222
  """
164
- self.console.print(f"\n[yellow]💡 Hint: {hint}[/yellow]")
223
+ console = self._stderr_console if stderr else self._stdout_console
224
+ if description:
225
+ console.print(f" [cyan]{command}[/cyan] # {description}")
226
+ else:
227
+ console.print(f" [cyan]{command}[/cyan]")
228
+
229
+ @property
230
+ def console(self) -> Console:
231
+ """Get the stderr console for direct access when needed."""
232
+ return self._stderr_console
165
233
 
166
234
 
167
235
  # Global design instance for convenience
hud/utils/mcp.py CHANGED
@@ -20,7 +20,7 @@ def patch_mcp_config(mcp_config: dict[str, dict[str, Any]], patch: MCPConfigPatc
20
20
 
21
21
  for server_cfg in mcp_config.values():
22
22
  url = server_cfg.get("url", "")
23
-
23
+
24
24
  # 1) HTTP header lane (only for hud MCP servers)
25
25
  if hud_mcp_url in url and patch.headers:
26
26
  for key, value in patch.headers.items():
@@ -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.2"
8
+ assert hud.__version__ == "0.4.3"
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.2"
7
+ __version__ = "0.4.3"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hud-python
3
- Version: 0.4.2
3
+ Version: 0.4.3
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
@@ -202,7 +202,7 @@ The above example let's the agent play 2048 ([See replay](https://app.hud.so/tra
202
202
 
203
203
  ## Reinforcement Learning with GRPO
204
204
 
205
- This is a Qwen-2.5-3B agent training a policy on the [`text-2048`](environments/text_2048/) environment (see above) using [Verifiers](rl/README):
205
+ This is a Qwen-2.5-3B agent training a policy on the [`text-2048`](environments/text_2048/) environment (see above) using [Verifiers](rl/):
206
206
 
207
207
  ![RL curve](https://raw.githubusercontent.com/hud-evals/hud-python/main/docs/src/images/rl_2.png)
208
208
 
@@ -1,16 +1,16 @@
1
1
  hud/__init__.py,sha256=BjAhZtsHbGN371Q8t3o4v4jltedkmDE85xW0yOILU9g,397
2
- hud/datasets.py,sha256=3QIZyAdbzlSghE44EIhehWOAoE8CPvLyS40FM2X2a4U,11892
2
+ hud/datasets.py,sha256=8lqC840kcNx01D2CcWZCd1j0eZTpepILmQrvohZIZYU,12056
3
3
  hud/settings.py,sha256=WIJDsyrfwBZGcaGT46YUOpW8xjBZl3siXXprd92ASAg,2039
4
4
  hud/types.py,sha256=pQWOPYXUZ2hhK0h-AHBc3DCj5tkbRXHqKZnsQQIcSFA,4237
5
- hud/version.py,sha256=npIZLGW0QouBuUp2GO8yLq33HW7-l4Zd9UXWHtiYJos,104
5
+ hud/version.py,sha256=jcTLPFHK9eItf63ms1H-BiD-W2bxmgGtXphzpysflmg,104
6
6
  hud/agents/__init__.py,sha256=UoIkljWdbq4bM0LD-mSaw6w826EqdEjOk7r6glNYwYQ,286
7
7
  hud/agents/base.py,sha256=OdvuPMMZFGMft5PEkImjs_nWi-05hJyGJMBSOGbtxBo,22258
8
8
  hud/agents/claude.py,sha256=snbYFPW-KAkw4n9Rdz7dC2f46RuSHJKC53HPm8SucFM,14273
9
- hud/agents/langchain.py,sha256=FTofalIKYZEM7W2AQ1OErk8Jdo47V4tDT7xaiR8RDsA,9129
9
+ hud/agents/langchain.py,sha256=_2ZJT1S1yREI0p2WSQkgcTmECaLXwnmSOURQrNXTxkk,9524
10
10
  hud/agents/openai.py,sha256=kHG73mohO4uru49qmQiygUFt0eDCGJU06weqIUwTO3Y,14323
11
11
  hud/agents/openai_chat_generic.py,sha256=jTJ-KY6HkglPK0iwZH5v3PVnaUjDsWc9IbRo3AbXlyE,5322
12
12
  hud/agents/misc/__init__.py,sha256=BYi4Ytp9b_vycpZFXnr5Oyw6ncKLNNGml8Jrb7bWUb4,136
13
- hud/agents/misc/response_agent.py,sha256=qqvRSH-e5NaLXXUFSt3aXZauDE8JlWAabMymrJr9bd4,3036
13
+ hud/agents/misc/response_agent.py,sha256=MsnIVElXM4ABrSJfEc_MMYp1Y_Rxmkq4kEGJ9vDX7hw,3098
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
@@ -20,16 +20,16 @@ hud/cli/__init__.py,sha256=IsP148YyCod5gC-CduIN6MGGCLsITBe-kEtzE4NqbLo,21734
20
20
  hud/cli/__main__.py,sha256=fDH7XITyuDITwSDIVwRso06aouADO0CzTHKqp5TOwJE,143
21
21
  hud/cli/analyze.py,sha256=G-tjT1xLPLcYhDhZEaI7TAIS0z0OACUksnGFoAWd2ag,14416
22
22
  hud/cli/analyze_metadata.py,sha256=Mgs_je-XbPulG6noRLRNXe3_3a1eb20Cvxz5OQJ2NeU,8262
23
- hud/cli/build.py,sha256=4wMigENf6dpL9Eu0wN9SvgGWMHIh85IEJ1WKuNyVrfs,14263
23
+ hud/cli/build.py,sha256=7GWBte4x6X24hZghEMC4Q0IBrBaFIf_eWZodkEHFba0,16693
24
24
  hud/cli/clone.py,sha256=AwVDIuhr8mHb1oT2Af2HrD25SiTdwATpE6zd93vzLgA,6099
25
25
  hud/cli/cursor.py,sha256=fy850p0rVp5k_1wwOCI7rK1SggbselJrywFInSQ2gio,3009
26
26
  hud/cli/debug.py,sha256=pa24bP4KVE0vdvrODuN57i2t8YDHxKJgwzXy7eD2tBE,13613
27
27
  hud/cli/docker_utils.py,sha256=5k5sXtI4V5d4VWRJR6lzVRy_Hu8Wf1nLsmW-dBNW0cM,2695
28
- hud/cli/init.py,sha256=wbGfKx-A17mSYw1aubRT3Ggt12A3PIkvZL6aW0AxoxU,7780
28
+ hud/cli/init.py,sha256=Jb9h4MJPMNiUhr9GmmJjwjjmGQQOOMG1GadXIEsvKKk,7702
29
29
  hud/cli/interactive.py,sha256=w1fAoefizNKqjcl5Fi5EgEsUdPpXKcCFuU-Z-S3CL9o,12863
30
- hud/cli/mcp_server.py,sha256=ZdJA8M8DtLvda4xQOQ0MuEOTvRR8_ZEIaIW-Qs8DfZ0,29609
31
- hud/cli/pull.py,sha256=SmbaHXaDKgazovYbw4we1og1qtT-B4opEjiDOlaNZcs,11939
32
- hud/cli/push.py,sha256=Cbjiy0AAcvgFcatAz3H2t3IhxsHMbLlc0WcdQwXe9V0,14163
30
+ hud/cli/mcp_server.py,sha256=kqXlHPm7ABVtP_MTJON5OgUAeVcXRuM-NrqqjBWYgd0,28221
31
+ hud/cli/pull.py,sha256=8caEpiCsvHHMsQ9K7QRfZ8dC5Zq3G_OLF5YrUGHUP6E,11721
32
+ hud/cli/push.py,sha256=MBee7EtcrzAHzmVWneT7hvHV9aF_hgxVRPoc1U1Oi1c,15626
33
33
  hud/cli/remote_runner.py,sha256=X01x6DeVkyc9HgxVCGEZJxEhhVPvHpAMoeYR44R8_BQ,9405
34
34
  hud/cli/runner.py,sha256=ukEr6ZmD5rs-taoEBu0P_-hr275d-ZE5_WAR-dvSqrw,4888
35
35
  hud/cli/utils.py,sha256=ZgjjKVPAa7dcfJ6SMBrdfZ63d1UnnhYC-zeh7gFBXsI,8841
@@ -44,9 +44,9 @@ hud/cli/tests/test_mcp_server.py,sha256=e5fh6AUcqdv0jp0rJ8VL-DdJ-1nNgS85N8Ua53eh
44
44
  hud/cli/tests/test_utils.py,sha256=dKmHgyLtDEqKVXlvs5tyNHyHhpBlZHUpmJF-iUraBVM,13466
45
45
  hud/clients/README.md,sha256=XNE3mch95ozDgVqfwCGcrhlHY9CwT1GKfNANNboowto,3826
46
46
  hud/clients/__init__.py,sha256=bcPIa7dwH5ENsjh7CzjsJ84fm7Ma93NBc2lGfSjGAKM,328
47
- hud/clients/base.py,sha256=vm8pQS7lwbfhOUyZsti94yzig6dcWIa6NOO3wwhl39w,13497
48
- hud/clients/fastmcp.py,sha256=kpVwgyltQB_gCeoD0kU9HYC1RHELaib-675qPztwfRg,8125
49
- hud/clients/mcp_use.py,sha256=G7jnfsFvGgye-LxyEMobgL47wxZ-Id1aq_5AQLuEaBE,11024
47
+ hud/clients/base.py,sha256=y2yH8H4-cefWiI3oey_YPKLpDM2OwZ-hgvpjoOpEb8c,13459
48
+ hud/clients/fastmcp.py,sha256=kocw7fpLbTnFmeE39XrPd5yyl5KY8kvtB_udLzQVRtg,9168
49
+ hud/clients/mcp_use.py,sha256=Q1h3Hb9R1SVeue2CqhC5W7PqnQzuuAQf5T9O8GhzpbI,11981
50
50
  hud/clients/tests/__init__.py,sha256=sKOtJFFa4mDIXh1U6O8ZUHjigE8CiRMQ2PzJTIBZuVE,33
51
51
  hud/clients/tests/test_client_integration.py,sha256=kohU6jfCNfwSnAushHeB1_CmDlRfQc7VBL0GEdJYSeI,4198
52
52
  hud/clients/tests/test_fastmcp.py,sha256=4q3TzDjuieTZa89taiNJIrzbUncNkYOG4MaubypA21k,13030
@@ -113,8 +113,8 @@ hud/tools/tests/test_tools.py,sha256=paz28V98Am-oR7MBJPDgY-BRV14HQo_0F6X5JIC8aic
113
113
  hud/tools/tests/test_utils.py,sha256=oYxEnLpSA5sEeYFGUTj74QRNv0AHP3AjmYYHXgIW0BY,5496
114
114
  hud/utils/__init__.py,sha256=ckuIzwqgTxkzASa04XTPsOu_TqsRYUKBWUYfcSi3Xnc,164
115
115
  hud/utils/async_utils.py,sha256=5cKrJcnaHV2eJNxeyx0r7fPcdPTDBK7kM9-nLaF51X4,2409
116
- hud/utils/design.py,sha256=JZu4Fgfr_sOpH90oi1pu__woV56jPutCKsKAcmkHsUc,4987
117
- hud/utils/mcp.py,sha256=0r9_ffRObfAb6Zx6PRDJP6ibOTewOsQxJU0K-6JPveM,1847
116
+ hud/utils/design.py,sha256=8-GHAegyJelQMdSSnY-MKXks2m3GVYHSW2Dlf17-daM,8965
117
+ hud/utils/mcp.py,sha256=SQgEemHpIc0LshA0ImZw4nMzPPn1SE6qEO0dpNLwxy4,1855
118
118
  hud/utils/progress.py,sha256=suikwFM8sdSfkV10nAOEaInDhG4XKgOSvFePg4jSj1A,5927
119
119
  hud/utils/telemetry.py,sha256=hrVIx2rUjSGyy9IVxTZ_3Jii83PiHjyFRd5ls2whimM,1863
120
120
  hud/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -122,10 +122,10 @@ hud/utils/tests/test_async_utils.py,sha256=RkdSnYErRV3Jn7dfg6CPlcE1RSUL__2B627oI
122
122
  hud/utils/tests/test_init.py,sha256=2QLQSGgyP9wJhOvPCusm_zjJad0qApOZi1BXpxcdHXQ,383
123
123
  hud/utils/tests/test_progress.py,sha256=QSF7Kpi03Ff_l3mAeqW9qs1nhK50j9vBiSobZq7T4f4,7394
124
124
  hud/utils/tests/test_telemetry.py,sha256=5jl7bEx8C8b-FfFUko5pf4UY-mPOR-9HaeL98dGtVHM,2781
125
- hud/utils/tests/test_version.py,sha256=jy8VM-qboqR_TWjmFy3hCw93dCZsguyIgBsqNmUtzM4,159
125
+ hud/utils/tests/test_version.py,sha256=HCf9E1JvES6_A04uA0hkW1UdvSMxpkPaBeGNPvAinMw,159
126
126
  hud/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
- hud_python-0.4.2.dist-info/METADATA,sha256=fTLXYCnwj5LOHUKjMeKQmmRFJ2BgWYCrcPBWD4c2Fng,19675
128
- hud_python-0.4.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
129
- hud_python-0.4.2.dist-info/entry_points.txt,sha256=jJbodNFg1m0-CDofe5AHvB4zKBq7sSdP97-ohaQ3ae4,63
130
- hud_python-0.4.2.dist-info/licenses/LICENSE,sha256=yIzBheVUf86FC1bztAcr7RYWWNxyd3B-UJQ3uddg1HA,1078
131
- hud_python-0.4.2.dist-info/RECORD,,
127
+ hud_python-0.4.3.dist-info/METADATA,sha256=t2F4sMfl2cY-Ve2asy2esZCXLgUL1X7g6I1KhPvoQ7w,19669
128
+ hud_python-0.4.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
129
+ hud_python-0.4.3.dist-info/entry_points.txt,sha256=jJbodNFg1m0-CDofe5AHvB4zKBq7sSdP97-ohaQ3ae4,63
130
+ hud_python-0.4.3.dist-info/licenses/LICENSE,sha256=yIzBheVUf86FC1bztAcr7RYWWNxyd3B-UJQ3uddg1HA,1078
131
+ hud_python-0.4.3.dist-info/RECORD,,