llamactl 0.3.23__py3-none-any.whl → 0.3.25__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.
Files changed (32) hide show
  1. llama_deploy/cli/app.py +7 -4
  2. llama_deploy/cli/auth/client.py +19 -2
  3. llama_deploy/cli/client.py +4 -1
  4. llama_deploy/cli/commands/aliased_group.py +11 -3
  5. llama_deploy/cli/commands/auth.py +105 -37
  6. llama_deploy/cli/commands/deployment.py +47 -17
  7. llama_deploy/cli/commands/dev.py +126 -11
  8. llama_deploy/cli/commands/env.py +30 -5
  9. llama_deploy/cli/commands/init.py +33 -10
  10. llama_deploy/cli/commands/pkg.py +2 -2
  11. llama_deploy/cli/commands/serve.py +21 -15
  12. llama_deploy/cli/config/_config.py +4 -4
  13. llama_deploy/cli/config/_migrations.py +7 -2
  14. llama_deploy/cli/config/auth_service.py +1 -1
  15. llama_deploy/cli/config/migrations/0001_init.sql +1 -1
  16. llama_deploy/cli/config/migrations/0002_add_auth_fields.sql +0 -2
  17. llama_deploy/cli/pkg/options.py +4 -1
  18. llama_deploy/cli/pkg/utils.py +8 -5
  19. llama_deploy/cli/textual/deployment_form.py +5 -3
  20. llama_deploy/cli/textual/deployment_help.py +8 -7
  21. llama_deploy/cli/textual/deployment_monitor.py +8 -5
  22. llama_deploy/cli/textual/git_validation.py +45 -8
  23. llama_deploy/cli/textual/github_callback_server.py +12 -12
  24. llama_deploy/cli/textual/llama_loader.py +25 -19
  25. llama_deploy/cli/textual/secrets_form.py +2 -1
  26. llama_deploy/cli/textual/styles.tcss +1 -1
  27. llama_deploy/cli/utils/retry.py +49 -0
  28. {llamactl-0.3.23.dist-info → llamactl-0.3.25.dist-info}/METADATA +7 -5
  29. llamactl-0.3.25.dist-info/RECORD +47 -0
  30. llamactl-0.3.23.dist-info/RECORD +0 -46
  31. {llamactl-0.3.23.dist-info → llamactl-0.3.25.dist-info}/WHEEL +0 -0
  32. {llamactl-0.3.23.dist-info → llamactl-0.3.25.dist-info}/entry_points.txt +0 -0
@@ -46,11 +46,12 @@ from llama_deploy.core.schema.deployments import (
46
46
  from packaging.version import Version
47
47
  from textual import events
48
48
  from textual.app import App, ComposeResult
49
- from textual.containers import Container, HorizontalGroup, Widget
49
+ from textual.containers import Container, HorizontalGroup
50
50
  from textual.content import Content
51
51
  from textual.message import Message
52
52
  from textual.reactive import reactive
53
53
  from textual.validation import Length
54
+ from textual.widget import Widget
54
55
  from textual.widgets import Button, Input, Label, Select, Static
55
56
 
56
57
 
@@ -529,8 +530,9 @@ class DeploymentEditApp(App[DeploymentResponse | None]):
529
530
  def action_show_help(self) -> None:
530
531
  widget = self.query("DeploymentFormWidget")
531
532
  if widget:
532
- typed_widget: DeploymentFormWidget = widget[0]
533
- self.form_data = typed_widget.resolve_form_data()
533
+ first_widget = widget[0]
534
+ if isinstance(first_widget, DeploymentFormWidget):
535
+ self.form_data = first_widget.resolve_form_data()
534
536
 
535
537
  self.current_state = "help"
536
538
 
@@ -1,9 +1,10 @@
1
1
  from textwrap import dedent
2
2
 
3
3
  from textual.app import ComposeResult
4
- from textual.containers import HorizontalGroup, Widget
4
+ from textual.containers import HorizontalGroup
5
5
  from textual.content import Content
6
6
  from textual.message import Message
7
+ from textual.widget import Widget
7
8
  from textual.widgets import Button, Static
8
9
 
9
10
 
@@ -29,16 +30,16 @@ class DeploymentHelpWidget(Widget):
29
30
  dedent("""
30
31
  [b]Deployment Name[/b]
31
32
  A unique name to identify this deployment. Controls the URL where your deployment is accessible. Will have a random suffix appended if not unique.
32
-
33
+
33
34
  [b]Git Repository[/b]
34
- A git repository URL to pull code from. If not publically accessible, you will be prompted to install the llama deploy github app. If code is on another platform, either provide a Personal Access Token (basic access credentials) instead.
35
-
35
+ A git repository URL to pull code from. If not publicly accessible, you will be prompted to install the llama deploy github app. If code is on another platform, either provide a Personal Access Token (basic access credentials) instead.
36
+
36
37
  [b]Git Ref[/b]
37
38
  The git ref to deploy. This can be a branch, tag, or commit hash. If this is a branch, after deploying, run a `[slategrey reverse]llamactl deploy update[/]` to update the deployment to the latest git ref after you make updates.
38
-
39
+
39
40
  [b]Config File[/b]
40
41
  Path to a directory or file containing a `[slategrey reverse]pyproject.toml[/]` or `[slategrey reverse]llama_deploy.yaml[/]` containing the llama deploy configuration. Only necessary if you have the configuration not at the root of the repo, or you have an unconventional configuration file.
41
-
42
+
42
43
  [b]Personal Access Token[/b]
43
44
  A personal access token to access the git repository. Can be used instead of the github integration.
44
45
 
@@ -47,7 +48,7 @@ class DeploymentHelpWidget(Widget):
47
48
 
48
49
  [b]Secrets[/b]
49
50
  Secrets to add as environment variables to the deployment. e.g. to access a database or an API. Supports adding in `[slategrey reverse].env[/]` file format.
50
-
51
+
51
52
  """).strip()
52
53
  ),
53
54
  )
@@ -19,11 +19,12 @@ from llama_deploy.core.schema.deployments import DeploymentResponse
19
19
  from rich.text import Text
20
20
  from textual import events
21
21
  from textual.app import App, ComposeResult
22
- from textual.containers import Container, HorizontalGroup, Widget
22
+ from textual.containers import Container, HorizontalGroup
23
23
  from textual.content import Content
24
24
  from textual.css.query import NoMatches
25
25
  from textual.message import Message
26
26
  from textual.reactive import reactive
27
+ from textual.widget import Widget
27
28
  from textual.widgets import Button, RichLog, Static
28
29
  from typing_extensions import Literal
29
30
 
@@ -344,15 +345,17 @@ class DeploymentMonitorWidget(Widget):
344
345
  return Content.from_rich_text(txt)
345
346
 
346
347
  def _render_last_event_status(self) -> Content:
347
- if not self.deployment or not self.deployment.events:
348
+ if self.deployment is None or not self.deployment.events:
348
349
  return Content()
349
350
  txt = Text()
350
351
  # Pick the most recent by last_timestamp
351
352
  latest = self.deployment.events[-1]
352
353
  ts = None
353
- ts = (latest.last_timestamp or latest.first_timestamp).strftime(
354
- "%Y-%m-%d %H:%M:%S"
355
- )
354
+ timestamp = latest.last_timestamp or latest.first_timestamp
355
+ if timestamp:
356
+ ts = timestamp.strftime("%Y-%m-%d %H:%M:%S")
357
+ else:
358
+ ts = "-"
356
359
  parts: list[str] = []
357
360
  if latest.type:
358
361
  parts.append(latest.type)
@@ -4,15 +4,18 @@ import logging
4
4
  import webbrowser
5
5
  from typing import Literal, cast
6
6
 
7
+ import httpx
7
8
  from llama_deploy.cli.client import get_project_client as get_client
8
9
  from llama_deploy.cli.textual.github_callback_server import GitHubCallbackServer
9
10
  from llama_deploy.cli.textual.llama_loader import PixelLlamaLoader
11
+ from llama_deploy.cli.utils.retry import run_with_network_retries
10
12
  from llama_deploy.core.schema.git_validation import RepositoryValidationResponse
11
13
  from textual.app import ComposeResult
12
- from textual.containers import HorizontalGroup, Widget
14
+ from textual.containers import HorizontalGroup
13
15
  from textual.content import Content
14
16
  from textual.message import Message
15
17
  from textual.reactive import reactive
18
+ from textual.widget import Widget
16
19
  from textual.widgets import Button, Input, Label, Static
17
20
 
18
21
  logger = logging.getLogger(__name__)
@@ -282,9 +285,27 @@ class GitValidationWidget(Widget):
282
285
  self.error_message = ""
283
286
  try:
284
287
  client = get_client()
285
- self.validation_response = await client.validate_repository(
286
- repo_url=self.repo_url, deployment_id=self.deployment_id, pat=pat
287
- )
288
+
289
+ try:
290
+ self.validation_response = await run_with_network_retries(
291
+ lambda: client.validate_repository(
292
+ repo_url=self.repo_url,
293
+ deployment_id=self.deployment_id,
294
+ pat=pat,
295
+ )
296
+ )
297
+ except httpx.HTTPStatusError:
298
+ # Propagate status errors to the generic error handler below
299
+ raise
300
+ except httpx.RequestError as e:
301
+ detail = str(e) or e.__class__.__name__
302
+ self.error_message = (
303
+ "Network error while validating repository access. "
304
+ "Please check your internet connection or VPN, then try again. "
305
+ f"Details: {detail}"
306
+ )
307
+ self.current_state = "options"
308
+ return
288
309
 
289
310
  resp = self.validation_response
290
311
  if resp and resp.accessible:
@@ -308,9 +329,25 @@ class GitValidationWidget(Widget):
308
329
  self.error_message = ""
309
330
  try:
310
331
  client = get_client()
311
- self.validation_response = await client.validate_repository(
312
- repo_url=self.repo_url, deployment_id=self.deployment_id
313
- )
332
+
333
+ try:
334
+ self.validation_response = await run_with_network_retries(
335
+ lambda: client.validate_repository(
336
+ repo_url=self.repo_url,
337
+ deployment_id=self.deployment_id,
338
+ )
339
+ )
340
+ except httpx.HTTPStatusError:
341
+ # Propagate status errors to the generic error handler below
342
+ raise
343
+ except httpx.RequestError as e:
344
+ detail = str(e) or e.__class__.__name__
345
+ self.error_message = (
346
+ "Network error while re-checking GitHub App installation. "
347
+ "Please verify your internet connection and try again. "
348
+ f"Details: {detail}"
349
+ )
350
+ return
314
351
 
315
352
  resp = self.validation_response
316
353
  if resp and resp.accessible:
@@ -352,5 +389,5 @@ class GitValidationWidget(Widget):
352
389
  self.current_state = "options"
353
390
  finally:
354
391
  if self.github_callback_server:
355
- self.github_callback_server.stop()
392
+ await self.github_callback_server.stop()
356
393
  self.github_callback_server = None
@@ -89,13 +89,13 @@ class GitHubCallbackServer:
89
89
  <title>llamactl - Authentication Complete</title>
90
90
  <style>
91
91
  @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&display=swap');
92
-
92
+
93
93
  * {
94
94
  margin: 0;
95
95
  padding: 0;
96
96
  box-sizing: border-box;
97
97
  }
98
-
98
+
99
99
  body {
100
100
  font-family: 'JetBrains Mono', 'Courier New', monospace;
101
101
  background: #1a0d26;
@@ -106,7 +106,7 @@ class GitHubCallbackServer:
106
106
  justify-content: center;
107
107
  line-height: 1.6;
108
108
  }
109
-
109
+
110
110
  .terminal {
111
111
  background: #0f0a17;
112
112
  border: 2px solid #7c3aed;
@@ -116,7 +116,7 @@ class GitHubCallbackServer:
116
116
  padding: 0;
117
117
  box-shadow: 0 0 20px rgba(124, 58, 237, 0.3);
118
118
  }
119
-
119
+
120
120
  .terminal-header {
121
121
  background: #7c3aed;
122
122
  color: #ffffff;
@@ -125,27 +125,27 @@ class GitHubCallbackServer:
125
125
  font-size: 14px;
126
126
  border-bottom: 2px solid #6d28d9;
127
127
  }
128
-
128
+
129
129
  .terminal-body {
130
130
  padding: 30px;
131
131
  }
132
-
132
+
133
133
  .prompt {
134
134
  color: #10b981;
135
135
  font-weight: bold;
136
136
  }
137
-
137
+
138
138
  .success-icon {
139
139
  color: #10b981;
140
140
  font-size: 24px;
141
141
  margin-right: 8px;
142
142
  }
143
-
143
+
144
144
  .highlight {
145
145
  color: #a78bfa;
146
146
  font-weight: bold;
147
147
  }
148
-
148
+
149
149
  .instruction {
150
150
  background: #2d1b69;
151
151
  border: 1px solid #7c3aed;
@@ -153,11 +153,11 @@ class GitHubCallbackServer:
153
153
  margin: 20px 0;
154
154
  border-radius: 4px;
155
155
  }
156
-
156
+
157
157
  .blink {
158
158
  animation: blink 1s infinite;
159
159
  }
160
-
160
+
161
161
  @keyframes blink {
162
162
  0%, 50% { opacity: 1; }
163
163
  51%, 100% { opacity: 0; }
@@ -184,7 +184,7 @@ class GitHubCallbackServer:
184
184
  """).strip()
185
185
 
186
186
 
187
- async def main():
187
+ async def main() -> None:
188
188
  """Main function to demo the callback server"""
189
189
  logging.basicConfig(level=logging.INFO)
190
190
 
@@ -1,8 +1,14 @@
1
1
  import re
2
+ import sys
2
3
  from typing import TypedDict
3
4
 
4
5
  from textual.widgets import Static
5
6
 
7
+ if sys.version_info >= (3, 11):
8
+ from typing import Unpack
9
+ else:
10
+ from typing_extensions import Unpack
11
+
6
12
 
7
13
  class StaticKwargs(TypedDict, total=False):
8
14
  expand: bool
@@ -17,36 +23,36 @@ class StaticKwargs(TypedDict, total=False):
17
23
  class PixelLlamaLoader(Static):
18
24
  """Pixelated llama loading animation using block characters"""
19
25
 
20
- def __init__(self, **kwargs: StaticKwargs):
26
+ def __init__(self, **kwargs: Unpack[StaticKwargs]):
21
27
  self.frame = 0
22
28
  # Pixelated llama frames using Unicode block characters
23
29
  self.frames = [
24
30
  # ── Frame 1 – all legs down (starting position) ─
25
31
  """
26
- ,
27
- ~)
28
- (_---;
29
- |~|
32
+ ,
33
+ ~)
34
+ (_---;
35
+ |~|
30
36
  | |""",
31
37
  # ── Frame 2 – lift right front leg ─
32
38
  """
33
- ,
34
- ~)
35
- (_---;
36
- /|~|
39
+ ,
40
+ ~)
41
+ (_---;
42
+ /|~|
37
43
  / | |""",
38
44
  """
39
- ,
40
- ~)
41
- (_---;
42
- /|~|
45
+ ,
46
+ ~)
47
+ (_---;
48
+ /|~|
43
49
  || |\\""",
44
50
  # ── Frame 3 – right front forward, lift left back ─
45
51
  """
46
- ,
47
- ~)
48
- (_---;
49
- |~|\\
52
+ ,
53
+ ~)
54
+ (_---;
55
+ |~|\\
50
56
  |\\| \\""",
51
57
  ]
52
58
  self.frames = [re.sub(r"^\n", "", x) for x in self.frames]
@@ -57,8 +63,8 @@ class PixelLlamaLoader(Static):
57
63
  return f"{self.frames[self.frame]}"
58
64
 
59
65
  def on_mount(self) -> None:
60
- self.timer = self.set_interval(0.6, self.animate)
66
+ self.timer = self.set_interval(0.6, self._advance_frame)
61
67
 
62
- def animate(self) -> None:
68
+ def _advance_frame(self) -> None:
63
69
  self.frame = (self.frame + 1) % len(self.frames)
64
70
  self.update(self._get_display_text())
@@ -2,8 +2,9 @@
2
2
 
3
3
  from llama_deploy.cli.env import load_env_secrets_from_string
4
4
  from textual.app import ComposeResult
5
- from textual.containers import HorizontalGroup, Widget
5
+ from textual.containers import HorizontalGroup
6
6
  from textual.reactive import reactive
7
+ from textual.widget import Widget
7
8
  from textual.widgets import Button, Input, Label, Static, TextArea
8
9
 
9
10
 
@@ -312,4 +312,4 @@ Button.secondary {
312
312
 
313
313
  .h-100 {
314
314
  height: 100%;
315
- }
315
+ }
@@ -0,0 +1,49 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Awaitable, Callable
4
+ from typing import TypeVar
5
+
6
+ import httpx
7
+ from tenacity import (
8
+ AsyncRetrying,
9
+ retry_if_exception,
10
+ stop_after_attempt,
11
+ wait_exponential,
12
+ )
13
+
14
+ _T = TypeVar("_T")
15
+
16
+
17
+ def _is_transient_httpx_error(exc: BaseException) -> bool:
18
+ """Return True for network-level httpx errors that are safe to retry.
19
+
20
+ - Retries on httpx.RequestError (connection errors, timeouts, etc.)
21
+ - Never retries httpx.HTTPStatusError (4xx/5xx responses from the server)
22
+ """
23
+ return isinstance(exc, httpx.RequestError) and not isinstance(
24
+ exc, httpx.HTTPStatusError
25
+ )
26
+
27
+
28
+ async def run_with_network_retries(
29
+ operation: Callable[[], Awaitable[_T]],
30
+ *,
31
+ max_attempts: int = 3,
32
+ ) -> _T:
33
+ """Run an async operation with standard network retry semantics.
34
+
35
+ Retries transient httpx network errors with exponential backoff, but does not retry
36
+ HTTP status errors. After the final attempt, the last exception is re-raised.
37
+ """
38
+ async for attempt in AsyncRetrying(
39
+ retry=retry_if_exception(_is_transient_httpx_error),
40
+ stop=stop_after_attempt(max_attempts),
41
+ wait=wait_exponential(multiplier=1, min=1),
42
+ reraise=True,
43
+ ):
44
+ with attempt:
45
+ return await operation()
46
+
47
+ # This line should be unreachable because AsyncRetrying either yields an
48
+ # attempt or re-raises the last exception.
49
+ raise RuntimeError("run_with_network_retries reached an unexpected state")
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: llamactl
3
- Version: 0.3.23
3
+ Version: 0.3.25
4
4
  Summary: A command-line interface for managing LlamaDeploy projects and deployments
5
5
  Author: Adrian Lyjak
6
6
  Author-email: Adrian Lyjak <adrianlyjak@gmail.com>
7
7
  License: MIT
8
- Requires-Dist: llama-deploy-core[client]>=0.3.23,<0.4.0
9
- Requires-Dist: llama-deploy-appserver>=0.3.23,<0.4.0
8
+ Requires-Dist: llama-deploy-core[client]>=0.3.25,<0.4.0
9
+ Requires-Dist: llama-deploy-appserver>=0.3.25,<0.4.0
10
10
  Requires-Dist: vibe-llama-core>=0.1.0
11
11
  Requires-Dist: rich>=13.0.0
12
12
  Requires-Dist: questionary>=2.0.0
@@ -17,7 +17,9 @@ Requires-Dist: textual>=6.0.0
17
17
  Requires-Dist: aiohttp>=3.12.14
18
18
  Requires-Dist: copier>=9.10.2
19
19
  Requires-Dist: pyjwt[crypto]>=2.10.1
20
- Requires-Python: >=3.11, <4
20
+ Requires-Dist: typing-extensions>=4.15.0
21
+ Requires-Dist: typing-extensions>=4.15.0 ; python_full_version < '3.11'
22
+ Requires-Python: >=3.10, <4
21
23
  Description-Content-Type: text/markdown
22
24
 
23
25
  # llamactl
@@ -89,7 +91,7 @@ uv add llamactl
89
91
 
90
92
  ## Configuration
91
93
 
92
- llamactl stores configuration in your home directory at `~/.llamactl/`.
94
+ llamactl stores configuration in your home directory at `~/.llamactl/`.
93
95
 
94
96
  ### Profile Configuration
95
97
  Profiles allow you to manage multiple control plane connections:
@@ -0,0 +1,47 @@
1
+ llama_deploy/cli/__init__.py,sha256=7c13390f1b6aa0e0970b0e7c661c6ae97e3e6ef266129c0daaa7acc5732388a6,922
2
+ llama_deploy/cli/app.py,sha256=617baf6ebb61ef26e955612950a9fe17bea20cabeb3119486cf4be3a197e5c79,2243
3
+ llama_deploy/cli/auth/client.py,sha256=7da19d45f033037ff753c72adc5a69f646e44c7a054a471251416a6d7b68f36e,12203
4
+ llama_deploy/cli/client.py,sha256=61c04ff808374913bf2fc1fc5838c498b4f8c779d4e056f4dfe57526078228e8,1793
5
+ llama_deploy/cli/commands/aliased_group.py,sha256=364d846d9ceec465e6f2f47051ad06e1ccfbea1d7526654c1ffbd7b7ab7e6af0,1302
6
+ llama_deploy/cli/commands/auth.py,sha256=c8b94de8c0647e241b0083782b8e241225c0c68ee2d32f85d54c29ae0d7dcb1b,26891
7
+ llama_deploy/cli/commands/deployment.py,sha256=dc5d039224409708446b91db482c20da648eba720c1527cfdb2952a1bb07ad3e,15567
8
+ llama_deploy/cli/commands/dev.py,sha256=10f394bc91ea71c3d1f23d280919482794ddf918e5676e7a3305f49d2a71f646,9436
9
+ llama_deploy/cli/commands/env.py,sha256=ae8f94eb2651a10615bac37afa16447ad1d78cb78c83ad8b8ae75e878733d323,7478
10
+ llama_deploy/cli/commands/init.py,sha256=afdb65b5e70cfaf3bdbc923d13db1a31ad23c14605e5bcd55ddaab8fff6e69a4,17514
11
+ llama_deploy/cli/commands/pkg.py,sha256=f91a87220c1d527e02a183dac5ca52c58608128e29bedf664362af3d2d31c461,4084
12
+ llama_deploy/cli/commands/serve.py,sha256=c66fed8b3117c278eca2eca86eb7933ba434442d4f315c1505449580f59bfdca,12974
13
+ llama_deploy/cli/config/_config.py,sha256=66ba1869d620ef2f31fa3b7d7ba38c3e3718c3dabdbe90f7ea49cbdcdfc4a951,14262
14
+ llama_deploy/cli/config/_migrations.py,sha256=9b5e3b9eec692a3edb58c1f99a03d04a63bfc29dbebfc1719a5daf5a9d024738,2448
15
+ llama_deploy/cli/config/auth_service.py,sha256=0cf47ad032aceefc27283ce2760432e915554d544876ce471746a58692cb9249,5150
16
+ llama_deploy/cli/config/env_service.py,sha256=cd51a68f1e9aad0bdd49cd76351cd54cea612a7f669512484c42e2876fea0458,2650
17
+ llama_deploy/cli/config/migrations/0001_init.sql,sha256=dc9ee7439d8d79262e41f2d9f1a9306ae5b0812cc4b454167d556330f0cc578c,1092
18
+ llama_deploy/cli/config/migrations/0002_add_auth_fields.sql,sha256=82d35fc12c36b08a287db1ffca0521702633b7d342571bc2986688b845f54d40,722
19
+ llama_deploy/cli/config/migrations/__init__.py,sha256=a092bdd1eba7041e69db0a9594941821a6337018f90d7e231d651195a9db0a69,151
20
+ llama_deploy/cli/config/schema.py,sha256=bd7b68eacd8a242c7f6fbccd176970425eeed504f593838d228a73ea75d73770,1542
21
+ llama_deploy/cli/debug.py,sha256=e85a72d473bbe1645eb31772f7349bde703d45704166f767385895c440afc762,496
22
+ llama_deploy/cli/env.py,sha256=d4b83c1f12e07f90893fcc7388d769de37dc2b41d345eb6bc2041c39b4fb2c31,1057
23
+ llama_deploy/cli/interactive_prompts/session_utils.py,sha256=b996f2eddf70d6c49636c4797d246d212fce0950fe7e9a3f59cf6a1bf7ae26f5,1142
24
+ llama_deploy/cli/interactive_prompts/utils.py,sha256=594cc2a242cc3405d66d0e26a60647496cc5fcb4ce7d0500a4cfec4888c9a0fa,516
25
+ llama_deploy/cli/options.py,sha256=1bddcaf69c0293b07ce8b73fa4ef92d62ea5d8eecd7f66b65e957d4a59381243,2479
26
+ llama_deploy/cli/pkg/__init__.py,sha256=6e5ba5891b4d71c046fd4759202c1326ea686aeaaa54e2cbf4e78c86a80d6286,286
27
+ llama_deploy/cli/pkg/defaults.py,sha256=3d315935352f5271e301fc907420f44e616630911e6e6fb6a33bf9f57adb57c3,104
28
+ llama_deploy/cli/pkg/options.py,sha256=c50352dce68a0ff5e290ed7c83887b22aed6135e35129d033a3bbc7e806443cf,2527
29
+ llama_deploy/cli/pkg/utils.py,sha256=49d54d5e1394ddf1abc8ab457718b52f3ce47c927d085f383e0e1e9725fbcb56,1245
30
+ llama_deploy/cli/py.typed,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
31
+ llama_deploy/cli/styles.py,sha256=15901fb567b0d10470f56a06d863819c4ed00a9f90b2a8c46b4bc2fb1dbdf6c3,307
32
+ llama_deploy/cli/textual/deployment_form.py,sha256=0a3b25e301d770673cf42599dd97340b5d5479547b43187ea7fd0c797c3097b7,29833
33
+ llama_deploy/cli/textual/deployment_help.py,sha256=e60f377ec8e8ec121576f4da065852843c0ec47273d15ac1c5ffec418badfae8,2803
34
+ llama_deploy/cli/textual/deployment_monitor.py,sha256=1a36cea9a79c31a7d181370eb502e45f5a5e4f9d1e60329a408cbe9c84cf87a2,17912
35
+ llama_deploy/cli/textual/git_validation.py,sha256=20d799c9ac5cf091333384da5ce61787f56e736369a5dea7f076e8bf52f8cfbf,14910
36
+ llama_deploy/cli/textual/github_callback_server.py,sha256=76d99835fe9bd18a228622f32a6a49f2910c49475aa97da85ff099fe9d873b4f,7372
37
+ llama_deploy/cli/textual/llama_loader.py,sha256=7c02cc8a9f46684282627ffaadf7b3dad428e5677ce3c6d01abc6d6905558fcf,1519
38
+ llama_deploy/cli/textual/secrets_form.py,sha256=fa9c2a3776575a9e4d5b568e60c41f49259a7c9155a214979a169131d2bc049d,7277
39
+ llama_deploy/cli/textual/styles.tcss,sha256=cd50b3aaf98151209331973fc4a5cc0b180571b8b5bfb661f223b2150565efc1,4296
40
+ llama_deploy/cli/utils/env_inject.py,sha256=01911758bcc3cf22aad0db0d1ade56aece48d6ad6bdb7186ea213337c67f5a89,688
41
+ llama_deploy/cli/utils/redact.py,sha256=1e768d76b4a6708230c34f7ce8a5a82ab52795bb3d6ab0387071ab4e8d7e7934,863
42
+ llama_deploy/cli/utils/retry.py,sha256=62ca6f286cb4de38cc5efcef3f376b12c2e6eb9b3e5ebe555d2a60aeb0957c19,1526
43
+ llama_deploy/cli/utils/version.py,sha256=bf01a6dda948b868cc08c93701ed44cd36b487402404af8451d4c0996a2edb31,364
44
+ llamactl-0.3.25.dist-info/WHEEL,sha256=66530aef82d5020ef5af27ae0123c71abb9261377c5bc519376c671346b12918,79
45
+ llamactl-0.3.25.dist-info/entry_points.txt,sha256=b67e1eb64305058751a651a80f2d2268b5f7046732268421e796f64d4697f83c,52
46
+ llamactl-0.3.25.dist-info/METADATA,sha256=d9a13b3e596b86e5eb582b5756230c2994ea9a4aec6d12be7cab534e542b1022,3329
47
+ llamactl-0.3.25.dist-info/RECORD,,
@@ -1,46 +0,0 @@
1
- llama_deploy/cli/__init__.py,sha256=7c13390f1b6aa0e0970b0e7c661c6ae97e3e6ef266129c0daaa7acc5732388a6,922
2
- llama_deploy/cli/app.py,sha256=9170e4f506c482522bd745eb1cdb700a198cfcfd7204c168c94e5ee2b6b43ffa,2199
3
- llama_deploy/cli/auth/client.py,sha256=3ebd2526f65f8d576e17d304df1b8a163d07586b88b5628cb36c9fa487a23ef6,11841
4
- llama_deploy/cli/client.py,sha256=f4053b5183224cff55c1393e78887d1af2597219135379a851b742c676adc154,1727
5
- llama_deploy/cli/commands/aliased_group.py,sha256=101fe7733802dfb448198331818123184523b54cb80a27f166d4ff7010a76e49,1097
6
- llama_deploy/cli/commands/auth.py,sha256=48c4cc786e8c4e0fb8c0caaba690cef359cddac9b7fbb0b88505111323c07667,24754
7
- llama_deploy/cli/commands/deployment.py,sha256=2571aa7f220930adc47f17e9aa33147c13156f81acfb911f3455f3800c742720,14611
8
- llama_deploy/cli/commands/dev.py,sha256=e4f17c6fdb13dd370ba594f0d4084ec8a454f41f932ecba1b6222e4e3c676409,5875
9
- llama_deploy/cli/commands/env.py,sha256=36cb1b0abb9e3d1c5546d3e8a3c4c7839c4d6c2abf75763e39efb08376b3eae9,6808
10
- llama_deploy/cli/commands/init.py,sha256=09cf69fd610ffac8fa2fbc9fbb27fd0e9876262ef037593962c40df89ba9cf93,16931
11
- llama_deploy/cli/commands/pkg.py,sha256=31049a8266fba71a45920187ef983988bb5ba3b9ad81ab4b7bca6042a071a810,4068
12
- llama_deploy/cli/commands/serve.py,sha256=e1e91f17e13dce31ebadb4a1b91cda9e2e3eeb45f89f1db0ae3fadd879e8a2ab,12871
13
- llama_deploy/cli/config/_config.py,sha256=654a4b6d06542e3503edab7023fc1c3148de510b3e3f6194e28cd4bd3e7c029a,14230
14
- llama_deploy/cli/config/_migrations.py,sha256=37055641970e1ea41abc583f270dc8a9dab03076224a02cd5fb08bbab2b9259f,2333
15
- llama_deploy/cli/config/auth_service.py,sha256=9e62ed2ea112e6142a5d384835568d4a926627eb58730af89bef9420f549d42e,5126
16
- llama_deploy/cli/config/env_service.py,sha256=cd51a68f1e9aad0bdd49cd76351cd54cea612a7f669512484c42e2876fea0458,2650
17
- llama_deploy/cli/config/migrations/0001_init.sql,sha256=aaffcb1fd0a00398ecf0af2d98ae26479c91519ec938efa99270f2d98dfdd1f4,1091
18
- llama_deploy/cli/config/migrations/0002_add_auth_fields.sql,sha256=31bd109e5fa0a9ad563a205b4c0e8110db4df3b4b3956704a0c0cdf345002daa,724
19
- llama_deploy/cli/config/migrations/__init__.py,sha256=a092bdd1eba7041e69db0a9594941821a6337018f90d7e231d651195a9db0a69,151
20
- llama_deploy/cli/config/schema.py,sha256=bd7b68eacd8a242c7f6fbccd176970425eeed504f593838d228a73ea75d73770,1542
21
- llama_deploy/cli/debug.py,sha256=e85a72d473bbe1645eb31772f7349bde703d45704166f767385895c440afc762,496
22
- llama_deploy/cli/env.py,sha256=d4b83c1f12e07f90893fcc7388d769de37dc2b41d345eb6bc2041c39b4fb2c31,1057
23
- llama_deploy/cli/interactive_prompts/session_utils.py,sha256=b996f2eddf70d6c49636c4797d246d212fce0950fe7e9a3f59cf6a1bf7ae26f5,1142
24
- llama_deploy/cli/interactive_prompts/utils.py,sha256=594cc2a242cc3405d66d0e26a60647496cc5fcb4ce7d0500a4cfec4888c9a0fa,516
25
- llama_deploy/cli/options.py,sha256=1bddcaf69c0293b07ce8b73fa4ef92d62ea5d8eecd7f66b65e957d4a59381243,2479
26
- llama_deploy/cli/pkg/__init__.py,sha256=6e5ba5891b4d71c046fd4759202c1326ea686aeaaa54e2cbf4e78c86a80d6286,286
27
- llama_deploy/cli/pkg/defaults.py,sha256=3d315935352f5271e301fc907420f44e616630911e6e6fb6a33bf9f57adb57c3,104
28
- llama_deploy/cli/pkg/options.py,sha256=540c619a2a11f72161b8e41002446cf9d3f62de605d6026d262d5e72cb36bd82,2418
29
- llama_deploy/cli/pkg/utils.py,sha256=b25348ac0f9ddc984ef98edc930aef0648ed182437e660cc60b0daf56172b171,1197
30
- llama_deploy/cli/py.typed,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
31
- llama_deploy/cli/styles.py,sha256=15901fb567b0d10470f56a06d863819c4ed00a9f90b2a8c46b4bc2fb1dbdf6c3,307
32
- llama_deploy/cli/textual/deployment_form.py,sha256=a7f6d8fffe2ae066241a397bf920c109aed7503faf5bcbf4c8b5bb46ac27cb6f,29762
33
- llama_deploy/cli/textual/deployment_help.py,sha256=991d8cdcc61ae0cf79ddd27715db5452c9902d343ce20775f8651252056eca77,2859
34
- llama_deploy/cli/textual/deployment_monitor.py,sha256=f14680cdd0d913a7b5e850560abb3923122d4f86ebd71e6efc358ad357c08387,17815
35
- llama_deploy/cli/textual/git_validation.py,sha256=94c95b61d0cbc490566a406b4886c9c12e1d1793dc14038a5be37119223c9568,13419
36
- llama_deploy/cli/textual/github_callback_server.py,sha256=3111cc45b3ff2632255a37e4472c85084670c94bcea25ec428f06b0761dd27bf,7584
37
- llama_deploy/cli/textual/llama_loader.py,sha256=33cb32a46dd40bcf889c553e44f2672c410e26bd1d4b17aa6cca6d0a5d59c2c4,1468
38
- llama_deploy/cli/textual/secrets_form.py,sha256=df6699de29d2bc2cbcaddd41ad2495ce0e622cdccaadbc8369a6ee09a9e79d34,7251
39
- llama_deploy/cli/textual/styles.tcss,sha256=2536f52ea1a654ae1f8990a25d45c845cb3140ffd359e62404f6a9ec3af4bb12,4295
40
- llama_deploy/cli/utils/env_inject.py,sha256=01911758bcc3cf22aad0db0d1ade56aece48d6ad6bdb7186ea213337c67f5a89,688
41
- llama_deploy/cli/utils/redact.py,sha256=1e768d76b4a6708230c34f7ce8a5a82ab52795bb3d6ab0387071ab4e8d7e7934,863
42
- llama_deploy/cli/utils/version.py,sha256=bf01a6dda948b868cc08c93701ed44cd36b487402404af8451d4c0996a2edb31,364
43
- llamactl-0.3.23.dist-info/WHEEL,sha256=66530aef82d5020ef5af27ae0123c71abb9261377c5bc519376c671346b12918,79
44
- llamactl-0.3.23.dist-info/entry_points.txt,sha256=b67e1eb64305058751a651a80f2d2268b5f7046732268421e796f64d4697f83c,52
45
- llamactl-0.3.23.dist-info/METADATA,sha256=bd009c5a924f2b593060869bb8257c15461e22e15fe33ae5671b9222f21ad69e,3217
46
- llamactl-0.3.23.dist-info/RECORD,,