llama-deploy-appserver 0.3.13__tar.gz → 0.3.14__tar.gz

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 (24) hide show
  1. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/PKG-INFO +2 -2
  2. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/pyproject.toml +2 -2
  3. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/src/llama_deploy/appserver/process_utils.py +11 -3
  4. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/src/llama_deploy/appserver/workflow_loader.py +8 -0
  5. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/README.md +0 -0
  6. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/src/llama_deploy/appserver/__init__.py +0 -0
  7. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/src/llama_deploy/appserver/app.py +0 -0
  8. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/src/llama_deploy/appserver/bootstrap.py +0 -0
  9. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/src/llama_deploy/appserver/configure_logging.py +0 -0
  10. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/src/llama_deploy/appserver/correlation_id.py +0 -0
  11. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/src/llama_deploy/appserver/deployment.py +0 -0
  12. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/src/llama_deploy/appserver/deployment_config_parser.py +0 -0
  13. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/src/llama_deploy/appserver/interrupts.py +0 -0
  14. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/src/llama_deploy/appserver/py.typed +0 -0
  15. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/src/llama_deploy/appserver/routers/__init__.py +0 -0
  16. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/src/llama_deploy/appserver/routers/deployments.py +0 -0
  17. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/src/llama_deploy/appserver/routers/status.py +0 -0
  18. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/src/llama_deploy/appserver/routers/ui_proxy.py +0 -0
  19. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/src/llama_deploy/appserver/settings.py +0 -0
  20. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/src/llama_deploy/appserver/stats.py +0 -0
  21. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/src/llama_deploy/appserver/types.py +0 -0
  22. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/src/llama_deploy/appserver/workflow_store/agent_data_store.py +0 -0
  23. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/src/llama_deploy/appserver/workflow_store/keyed_lock.py +0 -0
  24. {llama_deploy_appserver-0.3.13 → llama_deploy_appserver-0.3.14}/src/llama_deploy/appserver/workflow_store/lru_cache.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: llama-deploy-appserver
3
- Version: 0.3.13
3
+ Version: 0.3.14
4
4
  Summary: Application server components for LlamaDeploy
5
5
  Author: Massimiliano Pippi, Adrian Lyjak
6
6
  Author-email: Massimiliano Pippi <mpippi@gmail.com>, Adrian Lyjak <adrianlyjak@gmail.com>
@@ -9,7 +9,7 @@ Requires-Dist: llama-index-workflows[server]>=2.6.0
9
9
  Requires-Dist: pydantic-settings>=2.10.1
10
10
  Requires-Dist: fastapi>=0.100.0
11
11
  Requires-Dist: websockets>=12.0
12
- Requires-Dist: llama-deploy-core>=0.3.13,<0.4.0
12
+ Requires-Dist: llama-deploy-core>=0.3.14,<0.4.0
13
13
  Requires-Dist: httpx>=0.24.0,<1.0.0
14
14
  Requires-Dist: prometheus-fastapi-instrumentator>=7.1.0
15
15
  Requires-Dist: packaging>=25.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "llama-deploy-appserver"
3
- version = "0.3.13"
3
+ version = "0.3.14"
4
4
  description = "Application server components for LlamaDeploy"
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -14,7 +14,7 @@ dependencies = [
14
14
  "pydantic-settings>=2.10.1",
15
15
  "fastapi>=0.100.0",
16
16
  "websockets>=12.0",
17
- "llama-deploy-core>=0.3.13,<0.4.0",
17
+ "llama-deploy-core>=0.3.14,<0.4.0",
18
18
  "httpx>=0.24.0,<1.0.0",
19
19
  "prometheus-fastapi-instrumentator>=7.1.0",
20
20
  "packaging>=25.0",
@@ -1,7 +1,6 @@
1
1
  import functools
2
2
  import os
3
3
  import platform
4
- import pty
5
4
  import subprocess
6
5
  import sys
7
6
  import threading
@@ -118,6 +117,8 @@ def _spawn_process(
118
117
  use_pty: bool,
119
118
  ) -> tuple[subprocess.Popen, list[tuple[int | TextIO, TextIO]], Callable[[], None]]:
120
119
  if use_pty:
120
+ import pty
121
+
121
122
  master_fd, slave_fd = pty.openpty()
122
123
  process = subprocess.Popen(
123
124
  cmd,
@@ -140,6 +141,9 @@ def _spawn_process(
140
141
  ]
141
142
  return process, sources, cleanup
142
143
 
144
+ use_shell = False
145
+ if platform.system() == "Windows":
146
+ use_shell = True
143
147
  process = subprocess.Popen(
144
148
  cmd,
145
149
  env=env,
@@ -149,6 +153,7 @@ def _spawn_process(
149
153
  stderr=subprocess.PIPE,
150
154
  text=True,
151
155
  encoding="utf-8",
156
+ shell=use_shell,
152
157
  )
153
158
 
154
159
  def cleanup() -> None:
@@ -175,8 +180,11 @@ def _stream_source(
175
180
  for line in f:
176
181
  out = transform(line) if transform else line
177
182
  if out is not None:
178
- writer.write(out)
179
- writer.flush()
183
+ try:
184
+ writer.write(out)
185
+ writer.flush()
186
+ except UnicodeEncodeError:
187
+ pass
180
188
  except OSError:
181
189
  # PTY EOF may raise EIO; ignore
182
190
  pass
@@ -37,6 +37,10 @@ def load_workflows(config: DeploymentConfig) -> dict[str, Workflow]:
37
37
  if config.app:
38
38
  module_name, app_name = config.app.split(":", 1)
39
39
  module = importlib.import_module(module_name)
40
+ if not hasattr(module, app_name):
41
+ raise AttributeError(
42
+ f"Module '{module_name}' has no attribute '{app_name}'"
43
+ )
40
44
  workflow = getattr(module, app_name)
41
45
  if not isinstance(workflow, WorkflowServer):
42
46
  raise ValueError(
@@ -48,6 +52,10 @@ def load_workflows(config: DeploymentConfig) -> dict[str, Workflow]:
48
52
  for service_id, workflow_name in config.workflows.items():
49
53
  module_name, workflow_name = workflow_name.split(":", 1)
50
54
  module = importlib.import_module(module_name)
55
+ if not hasattr(module, workflow_name):
56
+ raise AttributeError(
57
+ f"Module '{module_name}' has no attribute '{workflow_name}'"
58
+ )
51
59
  workflow = getattr(module, workflow_name)
52
60
  if not isinstance(workflow, Workflow):
53
61
  logger.warning(