langgraph-api 0.4.27__tar.gz → 0.4.28__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 (122) hide show
  1. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/PKG-INFO +1 -1
  2. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/benchmark/update-revision.js +5 -0
  3. langgraph_api-0.4.28/langgraph_api/__init__.py +1 -0
  4. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/api/a2a.py +22 -2
  5. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/cli.py +2 -0
  6. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/config.py +2 -0
  7. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/queue_entrypoint.py +40 -22
  8. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/uv.lock +40 -40
  9. langgraph_api-0.4.27/langgraph_api/__init__.py +0 -1
  10. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/.gitignore +0 -0
  11. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/LICENSE +0 -0
  12. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/Makefile +0 -0
  13. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/README.md +0 -0
  14. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/benchmark/.gitignore +0 -0
  15. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/benchmark/Makefile +0 -0
  16. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/benchmark/README.md +0 -0
  17. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/benchmark/burst.js +0 -0
  18. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/benchmark/clean.js +0 -0
  19. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/benchmark/graphs.js +0 -0
  20. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/benchmark/package.json +0 -0
  21. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/benchmark/ramp.js +0 -0
  22. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/benchmark/weather.js +0 -0
  23. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/constraints.txt +0 -0
  24. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/forbidden.txt +0 -0
  25. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/healthcheck.py +0 -0
  26. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/api/__init__.py +0 -0
  27. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/api/assistants.py +0 -0
  28. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/api/mcp.py +0 -0
  29. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/api/meta.py +0 -0
  30. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/api/openapi.py +0 -0
  31. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/api/runs.py +0 -0
  32. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/api/store.py +0 -0
  33. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/api/threads.py +0 -0
  34. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/api/ui.py +0 -0
  35. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/asgi_transport.py +0 -0
  36. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/asyncio.py +0 -0
  37. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/auth/__init__.py +0 -0
  38. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/auth/custom.py +0 -0
  39. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/auth/langsmith/__init__.py +0 -0
  40. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/auth/langsmith/backend.py +0 -0
  41. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/auth/langsmith/client.py +0 -0
  42. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/auth/middleware.py +0 -0
  43. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/auth/noop.py +0 -0
  44. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/auth/studio_user.py +0 -0
  45. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/command.py +0 -0
  46. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/cron_scheduler.py +0 -0
  47. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/errors.py +0 -0
  48. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/executor_entrypoint.py +0 -0
  49. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/feature_flags.py +0 -0
  50. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/graph.py +0 -0
  51. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/http.py +0 -0
  52. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/http_metrics.py +0 -0
  53. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/.gitignore +0 -0
  54. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/.prettierrc +0 -0
  55. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/__init__.py +0 -0
  56. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/base.py +0 -0
  57. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/build.mts +0 -0
  58. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/client.http.mts +0 -0
  59. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/client.mts +0 -0
  60. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/errors.py +0 -0
  61. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/global.d.ts +0 -0
  62. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/package.json +0 -0
  63. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/remote.py +0 -0
  64. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/schema.py +0 -0
  65. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/src/graph.mts +0 -0
  66. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/src/load.hooks.mjs +0 -0
  67. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/src/preload.mjs +0 -0
  68. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/src/utils/files.mts +0 -0
  69. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/src/utils/importMap.mts +0 -0
  70. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
  71. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/src/utils/serde.mts +0 -0
  72. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/sse.py +0 -0
  73. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/traceblock.mts +0 -0
  74. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/tsconfig.json +0 -0
  75. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/ui.py +0 -0
  76. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/js/yarn.lock +0 -0
  77. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/logging.py +0 -0
  78. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/metadata.py +0 -0
  79. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/middleware/__init__.py +0 -0
  80. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/middleware/http_logger.py +0 -0
  81. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/middleware/private_network.py +0 -0
  82. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/middleware/request_id.py +0 -0
  83. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/models/__init__.py +0 -0
  84. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/models/run.py +0 -0
  85. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/patch.py +0 -0
  86. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/route.py +0 -0
  87. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/schema.py +0 -0
  88. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/serde.py +0 -0
  89. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/server.py +0 -0
  90. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/sse.py +0 -0
  91. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/state.py +0 -0
  92. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/store.py +0 -0
  93. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/stream.py +0 -0
  94. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/thread_ttl.py +0 -0
  95. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/traceblock.py +0 -0
  96. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/tunneling/cloudflare.py +0 -0
  97. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/utils/__init__.py +0 -0
  98. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/utils/cache.py +0 -0
  99. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/utils/config.py +0 -0
  100. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/utils/future.py +0 -0
  101. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/utils/headers.py +0 -0
  102. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/utils/retriable_client.py +0 -0
  103. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/utils/stream_codec.py +0 -0
  104. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/utils/uuids.py +0 -0
  105. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/validation.py +0 -0
  106. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/webhook.py +0 -0
  107. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_api/worker.py +0 -0
  108. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_license/__init__.py +0 -0
  109. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_license/validation.py +0 -0
  110. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_runtime/__init__.py +0 -0
  111. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_runtime/checkpoint.py +0 -0
  112. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_runtime/database.py +0 -0
  113. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_runtime/lifespan.py +0 -0
  114. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_runtime/metrics.py +0 -0
  115. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_runtime/ops.py +0 -0
  116. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_runtime/queue.py +0 -0
  117. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_runtime/retry.py +0 -0
  118. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/langgraph_runtime/store.py +0 -0
  119. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/logging.json +0 -0
  120. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/openapi.json +0 -0
  121. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/pyproject.toml +0 -0
  122. {langgraph_api-0.4.27 → langgraph_api-0.4.28}/scripts/create_license.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langgraph-api
3
- Version: 0.4.27
3
+ Version: 0.4.28
4
4
  Author-email: Nuno Campos <nuno@langchain.dev>, Will Fu-Hinthorn <will@langchain.dev>
5
5
  License: Elastic-2.0
6
6
  License-File: LICENSE
@@ -16,6 +16,11 @@ const REVISION_CONFIG = {
16
16
  name: "N_JOBS_PER_WORKER",
17
17
  value: "100",
18
18
  type: "secret"
19
+ },
20
+ {
21
+ name: "FF_LOG_DROPPED_EVENTS",
22
+ value: "true",
23
+ type: "secret"
19
24
  }
20
25
  ],
21
26
  shareable: false
@@ -0,0 +1 @@
1
+ __version__ = "0.4.28"
@@ -674,12 +674,12 @@ async def handle_post_request(request: ApiRequest, assistant_id: str) -> Respons
674
674
 
675
675
  accept_header = request.headers.get("Accept") or ""
676
676
  if method == "message/stream":
677
- if "text/event-stream" not in accept_header:
677
+ if not _accepts_media_type(accept_header, "text/event-stream"):
678
678
  return create_error_response(
679
679
  "Accept header must include text/event-stream for streaming", 400
680
680
  )
681
681
  else:
682
- if "application/json" not in accept_header:
682
+ if not _accepts_media_type(accept_header, "application/json"):
683
683
  return create_error_response(
684
684
  "Accept header must include application/json", 400
685
685
  )
@@ -720,6 +720,26 @@ def create_error_response(message: str, status_code: int) -> Response:
720
720
  )
721
721
 
722
722
 
723
+ def _accepts_media_type(accept_header: str, media_type: str) -> bool:
724
+ """Return True if the Accept header allows the provided media type."""
725
+ if not accept_header:
726
+ return False
727
+
728
+ target = media_type.lower()
729
+ for media_range in accept_header.split(","):
730
+ value = media_range.strip().lower()
731
+ if not value:
732
+ continue
733
+ candidate = value.split(";", 1)[0].strip()
734
+ if candidate == "*/*" or candidate == target:
735
+ return True
736
+ if candidate.endswith("/*"):
737
+ type_prefix = candidate.split("/", 1)[0]
738
+ if target.startswith(f"{type_prefix}/"):
739
+ return True
740
+ return False
741
+
742
+
723
743
  # ============================================================================
724
744
  # JSON-RPC Message Handlers
725
745
  # ============================================================================
@@ -165,6 +165,8 @@ def run_server(
165
165
  mount_prefix = None
166
166
  if http is not None and http.get("mount_prefix") is not None:
167
167
  mount_prefix = http.get("mount_prefix")
168
+ if os.environ.get("MOUNT_PREFIX"):
169
+ mount_prefix = os.environ.get("MOUNT_PREFIX")
168
170
  if os.environ.get("LANGGRAPH_MOUNT_PREFIX"):
169
171
  mount_prefix = os.environ.get("LANGGRAPH_MOUNT_PREFIX")
170
172
  if isinstance(env, str | pathlib.Path):
@@ -288,8 +288,10 @@ if THREAD_TTL is None and CHECKPOINTER_CONFIG is not None:
288
288
 
289
289
  N_JOBS_PER_WORKER = env("N_JOBS_PER_WORKER", cast=int, default=10)
290
290
  BG_JOB_TIMEOUT_SECS = env("BG_JOB_TIMEOUT_SECS", cast=float, default=3600)
291
+
291
292
  FF_CRONS_ENABLED = env("FF_CRONS_ENABLED", cast=bool, default=True)
292
293
  FF_RICH_THREADS = env("FF_RICH_THREADS", cast=bool, default=True)
294
+ FF_LOG_DROPPED_EVENTS = env("FF_LOG_DROPPED_EVENTS", cast=bool, default=False)
293
295
 
294
296
  # auth
295
297
 
@@ -1,6 +1,8 @@
1
1
  # ruff: noqa: E402
2
2
  import os
3
3
 
4
+ from langgraph_api.api.meta import METRICS_FORMATS
5
+
4
6
  if not (
5
7
  (disable_truststore := os.getenv("DISABLE_TRUSTSTORE"))
6
8
  and disable_truststore.lower() == "true"
@@ -30,6 +32,7 @@ logger = structlog.stdlib.get_logger(__name__)
30
32
  async def health_and_metrics_server():
31
33
  import uvicorn
32
34
  from starlette.applications import Starlette
35
+ from starlette.requests import Request
33
36
  from starlette.responses import JSONResponse, PlainTextResponse
34
37
  from starlette.routing import Route
35
38
 
@@ -38,7 +41,14 @@ async def health_and_metrics_server():
38
41
  async def health_endpoint(request):
39
42
  return JSONResponse({"status": "ok"})
40
43
 
41
- async def metrics_endpoint(request):
44
+ async def metrics_endpoint(request: Request):
45
+ metrics_format = request.query_params.get("format", "prometheus")
46
+ if metrics_format not in METRICS_FORMATS:
47
+ await logger.awarning(
48
+ f"metrics format {metrics_format} not supported, falling back to prometheus"
49
+ )
50
+ metrics_format = "prometheus"
51
+
42
52
  metrics = get_metrics()
43
53
  worker_metrics = cast(dict[str, int], metrics["workers"])
44
54
  workers_max = worker_metrics["max"]
@@ -48,29 +58,37 @@ async def health_and_metrics_server():
48
58
  project_id = os.getenv("LANGSMITH_HOST_PROJECT_ID")
49
59
  revision_id = os.getenv("LANGSMITH_HOST_REVISION_ID")
50
60
 
51
- metrics_lines = [
52
- "# HELP lg_api_workers_max The maximum number of workers available.",
53
- "# TYPE lg_api_workers_max gauge",
54
- f'lg_api_workers_max{{project_id="{project_id}", revision_id="{revision_id}"}} {workers_max}',
55
- "# HELP lg_api_workers_active The number of currently active workers.",
56
- "# TYPE lg_api_workers_active gauge",
57
- f'lg_api_workers_active{{project_id="{project_id}", revision_id="{revision_id}"}} {workers_active}',
58
- "# HELP lg_api_workers_available The number of available (idle) workers.",
59
- "# TYPE lg_api_workers_available gauge",
60
- f'lg_api_workers_available{{project_id="{project_id}", revision_id="{revision_id}"}} {workers_available}',
61
- ]
62
-
63
- metrics_lines.extend(
64
- pool_stats(
65
- project_id=project_id,
66
- revision_id=revision_id,
67
- )
61
+ pg_redis_stats = pool_stats(
62
+ project_id=project_id,
63
+ revision_id=revision_id,
64
+ format=metrics_format,
68
65
  )
69
66
 
70
- return PlainTextResponse(
71
- "\n".join(metrics_lines),
72
- media_type="text/plain; version=0.0.4; charset=utf-8",
73
- )
67
+ if metrics_format == "json":
68
+ resp = {
69
+ **pg_redis_stats,
70
+ "workers": worker_metrics,
71
+ }
72
+ return JSONResponse(resp)
73
+ elif metrics_format == "prometheus":
74
+ metrics_lines = [
75
+ "# HELP lg_api_workers_max The maximum number of workers available.",
76
+ "# TYPE lg_api_workers_max gauge",
77
+ f'lg_api_workers_max{{project_id="{project_id}", revision_id="{revision_id}"}} {workers_max}',
78
+ "# HELP lg_api_workers_active The number of currently active workers.",
79
+ "# TYPE lg_api_workers_active gauge",
80
+ f'lg_api_workers_active{{project_id="{project_id}", revision_id="{revision_id}"}} {workers_active}',
81
+ "# HELP lg_api_workers_available The number of available (idle) workers.",
82
+ "# TYPE lg_api_workers_available gauge",
83
+ f'lg_api_workers_available{{project_id="{project_id}", revision_id="{revision_id}"}} {workers_available}',
84
+ ]
85
+
86
+ metrics_lines.extend(pg_redis_stats)
87
+
88
+ return PlainTextResponse(
89
+ "\n".join(metrics_lines),
90
+ media_type="text/plain; version=0.0.4; charset=utf-8",
91
+ )
74
92
 
75
93
  app = Starlette(
76
94
  routes=[
@@ -183,14 +183,14 @@ wheels = [
183
183
 
184
184
  [[package]]
185
185
  name = "click"
186
- version = "8.2.1"
186
+ version = "8.3.0"
187
187
  source = { registry = "https://pypi.org/simple" }
188
188
  dependencies = [
189
189
  { name = "colorama", marker = "sys_platform == 'win32'" },
190
190
  ]
191
- sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" }
191
+ sdist = { url = "https://files.pythonhosted.org/packages/46/61/de6cd827efad202d7057d93e0fed9294b96952e188f7384832791c7b2254/click-8.3.0.tar.gz", hash = "sha256:e7b8232224eba16f4ebe410c25ced9f7875cb5f3263ffc93cc3e8da705e229c4", size = 276943, upload-time = "2025-09-18T17:32:23.696Z" }
192
192
  wheels = [
193
- { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" },
193
+ { url = "https://files.pythonhosted.org/packages/db/d3/9dcc0f5797f070ec8edf30fbadfb200e71d9db6b84d211e3b2085a7589a0/click-8.3.0-py3-none-any.whl", hash = "sha256:9b9f285302c6e3064f4330c05f05b81945b2a39544279343e6e7c5f27a9baddc", size = 107295, upload-time = "2025-09-18T17:32:22.42Z" },
194
194
  ]
195
195
 
196
196
  [[package]]
@@ -263,16 +263,16 @@ wheels = [
263
263
 
264
264
  [[package]]
265
265
  name = "fastapi"
266
- version = "0.116.1"
266
+ version = "0.117.1"
267
267
  source = { registry = "https://pypi.org/simple" }
268
268
  dependencies = [
269
269
  { name = "pydantic" },
270
270
  { name = "starlette" },
271
271
  { name = "typing-extensions" },
272
272
  ]
273
- sdist = { url = "https://files.pythonhosted.org/packages/78/d7/6c8b3bfe33eeffa208183ec037fee0cce9f7f024089ab1c5d12ef04bd27c/fastapi-0.116.1.tar.gz", hash = "sha256:ed52cbf946abfd70c5a0dccb24673f0670deeb517a88b3544d03c2a6bf283143", size = 296485, upload-time = "2025-07-11T16:22:32.057Z" }
273
+ sdist = { url = "https://files.pythonhosted.org/packages/7e/7e/d9788300deaf416178f61fb3c2ceb16b7d0dc9f82a08fdb87a5e64ee3cc7/fastapi-0.117.1.tar.gz", hash = "sha256:fb2d42082d22b185f904ca0ecad2e195b851030bd6c5e4c032d1c981240c631a", size = 307155, upload-time = "2025-09-20T20:16:56.663Z" }
274
274
  wheels = [
275
- { url = "https://files.pythonhosted.org/packages/e5/47/d63c60f59a59467fda0f93f46335c9d18526d7071f025cb5b89d5353ea42/fastapi-0.116.1-py3-none-any.whl", hash = "sha256:c46ac7c312df840f0c9e220f7964bada936781bc4e2e6eb71f1c4d7553786565", size = 95631, upload-time = "2025-07-11T16:22:30.485Z" },
275
+ { url = "https://files.pythonhosted.org/packages/6d/45/d9d3e8eeefbe93be1c50060a9d9a9f366dba66f288bb518a9566a23a8631/fastapi-0.117.1-py3-none-any.whl", hash = "sha256:33c51a0d21cab2b9722d4e56dbb9316f3687155be6b276191790d8da03507552", size = 95959, upload-time = "2025-09-20T20:16:53.661Z" },
276
276
  ]
277
277
 
278
278
  [[package]]
@@ -593,20 +593,20 @@ dev = [
593
593
 
594
594
  [[package]]
595
595
  name = "langgraph-sdk"
596
- version = "0.2.6"
596
+ version = "0.2.9"
597
597
  source = { registry = "https://pypi.org/simple" }
598
598
  dependencies = [
599
599
  { name = "httpx" },
600
600
  { name = "orjson" },
601
601
  ]
602
- sdist = { url = "https://files.pythonhosted.org/packages/55/35/a1caf4fdb725adec30f1e9562f218524a92d8b675deb97be653687f086ee/langgraph_sdk-0.2.6.tar.gz", hash = "sha256:7db27cd86d1231fa614823ff416fcd2541b5565ad78ae950f31ae96d7af7c519", size = 80346, upload-time = "2025-09-04T01:51:11.262Z" }
602
+ sdist = { url = "https://files.pythonhosted.org/packages/23/d8/40e01190a73c564a4744e29a6c902f78d34d43dad9b652a363a92a67059c/langgraph_sdk-0.2.9.tar.gz", hash = "sha256:b3bd04c6be4fa382996cd2be8fbc1e7cc94857d2bc6b6f4599a7f2a245975303", size = 99802, upload-time = "2025-09-20T18:49:14.734Z" }
603
603
  wheels = [
604
- { url = "https://files.pythonhosted.org/packages/c6/d2/c5fac919601b27a0af5df0bde46e7f1361d5e04505e404b75bed45d21fc8/langgraph_sdk-0.2.6-py3-none-any.whl", hash = "sha256:477216b573b8177bbd849f4c754782a81279fbbd88bfadfeda44422d14b18b08", size = 54565, upload-time = "2025-09-04T01:51:10.044Z" },
604
+ { url = "https://files.pythonhosted.org/packages/66/05/b2d34e16638241e6f27a6946d28160d4b8b641383787646d41a3727e0896/langgraph_sdk-0.2.9-py3-none-any.whl", hash = "sha256:fbf302edadbf0fb343596f91c597794e936ef68eebc0d3e1d358b6f9f72a1429", size = 56752, upload-time = "2025-09-20T18:49:13.346Z" },
605
605
  ]
606
606
 
607
607
  [[package]]
608
608
  name = "langsmith"
609
- version = "0.4.28"
609
+ version = "0.4.30"
610
610
  source = { registry = "https://pypi.org/simple" }
611
611
  dependencies = [
612
612
  { name = "httpx" },
@@ -617,9 +617,9 @@ dependencies = [
617
617
  { name = "requests-toolbelt" },
618
618
  { name = "zstandard" },
619
619
  ]
620
- sdist = { url = "https://files.pythonhosted.org/packages/fd/70/a3e9824f7c4823f3ed3f89f024fa25887bb82b64ab4f565dffd02b1f27f9/langsmith-0.4.28.tar.gz", hash = "sha256:8734e6d3e16ce0085b5f7235633b0e14bc8e0c160b1c1d8ce2588f83a936e171", size = 956001, upload-time = "2025-09-15T16:59:46.095Z" }
620
+ sdist = { url = "https://files.pythonhosted.org/packages/fe/d5/4cc88f246ce615a518a715cd2bf40001d1678ad6805a3706a90570adca8f/langsmith-0.4.30.tar.gz", hash = "sha256:388fe1060aca6507be41f417c7d4168a92dffe27f28bb6ef8a1bfee4a59f3681", size = 958857, upload-time = "2025-09-22T19:05:14.156Z" }
621
621
  wheels = [
622
- { url = "https://files.pythonhosted.org/packages/2f/b1/cf3a4d37b7b2e9dd1f35a3d89246b0d5851aa1caff9cbf73872a106ef7f7/langsmith-0.4.28-py3-none-any.whl", hash = "sha256:0440968566d56d38d889afa202e1ff56a238e1493aea87ceb5c3c28d41d01144", size = 384724, upload-time = "2025-09-15T16:59:44.118Z" },
622
+ { url = "https://files.pythonhosted.org/packages/ae/d1/b2b2ea7b443c6b028aca209d2e653256912906900cc146e64c65201211b7/langsmith-0.4.30-py3-none-any.whl", hash = "sha256:110767eb83e6da2cc99cfc61958631b5c36624758b52e7af35ec5550ad846cb3", size = 386300, upload-time = "2025-09-22T19:05:11.819Z" },
623
623
  ]
624
624
 
625
625
  [[package]]
@@ -1058,28 +1058,28 @@ wheels = [
1058
1058
 
1059
1059
  [[package]]
1060
1060
  name = "ruff"
1061
- version = "0.13.0"
1062
- source = { registry = "https://pypi.org/simple" }
1063
- sdist = { url = "https://files.pythonhosted.org/packages/6e/1a/1f4b722862840295bcaba8c9e5261572347509548faaa99b2d57ee7bfe6a/ruff-0.13.0.tar.gz", hash = "sha256:5b4b1ee7eb35afae128ab94459b13b2baaed282b1fb0f472a73c82c996c8ae60", size = 5372863, upload-time = "2025-09-10T16:25:37.917Z" }
1064
- wheels = [
1065
- { url = "https://files.pythonhosted.org/packages/ac/fe/6f87b419dbe166fd30a991390221f14c5b68946f389ea07913e1719741e0/ruff-0.13.0-py3-none-linux_armv6l.whl", hash = "sha256:137f3d65d58ee828ae136a12d1dc33d992773d8f7644bc6b82714570f31b2004", size = 12187826, upload-time = "2025-09-10T16:24:39.5Z" },
1066
- { url = "https://files.pythonhosted.org/packages/e4/25/c92296b1fc36d2499e12b74a3fdb230f77af7bdf048fad7b0a62e94ed56a/ruff-0.13.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:21ae48151b66e71fd111b7d79f9ad358814ed58c339631450c66a4be33cc28b9", size = 12933428, upload-time = "2025-09-10T16:24:43.866Z" },
1067
- { url = "https://files.pythonhosted.org/packages/44/cf/40bc7221a949470307d9c35b4ef5810c294e6cfa3caafb57d882731a9f42/ruff-0.13.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:64de45f4ca5441209e41742d527944635a05a6e7c05798904f39c85bafa819e3", size = 12095543, upload-time = "2025-09-10T16:24:46.638Z" },
1068
- { url = "https://files.pythonhosted.org/packages/f1/03/8b5ff2a211efb68c63a1d03d157e924997ada87d01bebffbd13a0f3fcdeb/ruff-0.13.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b2c653ae9b9d46e0ef62fc6fbf5b979bda20a0b1d2b22f8f7eb0cde9f4963b8", size = 12312489, upload-time = "2025-09-10T16:24:49.556Z" },
1069
- { url = "https://files.pythonhosted.org/packages/37/fc/2336ef6d5e9c8d8ea8305c5f91e767d795cd4fc171a6d97ef38a5302dadc/ruff-0.13.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4cec632534332062bc9eb5884a267b689085a1afea9801bf94e3ba7498a2d207", size = 11991631, upload-time = "2025-09-10T16:24:53.439Z" },
1070
- { url = "https://files.pythonhosted.org/packages/39/7f/f6d574d100fca83d32637d7f5541bea2f5e473c40020bbc7fc4a4d5b7294/ruff-0.13.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dcd628101d9f7d122e120ac7c17e0a0f468b19bc925501dbe03c1cb7f5415b24", size = 13720602, upload-time = "2025-09-10T16:24:56.392Z" },
1071
- { url = "https://files.pythonhosted.org/packages/fd/c8/a8a5b81d8729b5d1f663348d11e2a9d65a7a9bd3c399763b1a51c72be1ce/ruff-0.13.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:afe37db8e1466acb173bb2a39ca92df00570e0fd7c94c72d87b51b21bb63efea", size = 14697751, upload-time = "2025-09-10T16:24:59.89Z" },
1072
- { url = "https://files.pythonhosted.org/packages/57/f5/183ec292272ce7ec5e882aea74937f7288e88ecb500198b832c24debc6d3/ruff-0.13.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f96a8d90bb258d7d3358b372905fe7333aaacf6c39e2408b9f8ba181f4b6ef2", size = 14095317, upload-time = "2025-09-10T16:25:03.025Z" },
1073
- { url = "https://files.pythonhosted.org/packages/9f/8d/7f9771c971724701af7926c14dab31754e7b303d127b0d3f01116faef456/ruff-0.13.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b5e3d883e4f924c5298e3f2ee0f3085819c14f68d1e5b6715597681433f153", size = 13144418, upload-time = "2025-09-10T16:25:06.272Z" },
1074
- { url = "https://files.pythonhosted.org/packages/a8/a6/7985ad1778e60922d4bef546688cd8a25822c58873e9ff30189cfe5dc4ab/ruff-0.13.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03447f3d18479df3d24917a92d768a89f873a7181a064858ea90a804a7538991", size = 13370843, upload-time = "2025-09-10T16:25:09.965Z" },
1075
- { url = "https://files.pythonhosted.org/packages/64/1c/bafdd5a7a05a50cc51d9f5711da704942d8dd62df3d8c70c311e98ce9f8a/ruff-0.13.0-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:fbc6b1934eb1c0033da427c805e27d164bb713f8e273a024a7e86176d7f462cf", size = 13321891, upload-time = "2025-09-10T16:25:12.969Z" },
1076
- { url = "https://files.pythonhosted.org/packages/bc/3e/7817f989cb9725ef7e8d2cee74186bf90555279e119de50c750c4b7a72fe/ruff-0.13.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a8ab6a3e03665d39d4a25ee199d207a488724f022db0e1fe4002968abdb8001b", size = 12119119, upload-time = "2025-09-10T16:25:16.621Z" },
1077
- { url = "https://files.pythonhosted.org/packages/58/07/9df080742e8d1080e60c426dce6e96a8faf9a371e2ce22eef662e3839c95/ruff-0.13.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d2a5c62f8ccc6dd2fe259917482de7275cecc86141ee10432727c4816235bc41", size = 11961594, upload-time = "2025-09-10T16:25:19.49Z" },
1078
- { url = "https://files.pythonhosted.org/packages/6a/f4/ae1185349197d26a2316840cb4d6c3fba61d4ac36ed728bf0228b222d71f/ruff-0.13.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:b7b85ca27aeeb1ab421bc787009831cffe6048faae08ad80867edab9f2760945", size = 12933377, upload-time = "2025-09-10T16:25:22.371Z" },
1079
- { url = "https://files.pythonhosted.org/packages/b6/39/e776c10a3b349fc8209a905bfb327831d7516f6058339a613a8d2aaecacd/ruff-0.13.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:79ea0c44a3032af768cabfd9616e44c24303af49d633b43e3a5096e009ebe823", size = 13418555, upload-time = "2025-09-10T16:25:25.681Z" },
1080
- { url = "https://files.pythonhosted.org/packages/46/09/dca8df3d48e8b3f4202bf20b1658898e74b6442ac835bfe2c1816d926697/ruff-0.13.0-py3-none-win32.whl", hash = "sha256:4e473e8f0e6a04e4113f2e1de12a5039579892329ecc49958424e5568ef4f768", size = 12141613, upload-time = "2025-09-10T16:25:28.664Z" },
1081
- { url = "https://files.pythonhosted.org/packages/61/21/0647eb71ed99b888ad50e44d8ec65d7148babc0e242d531a499a0bbcda5f/ruff-0.13.0-py3-none-win_amd64.whl", hash = "sha256:48e5c25c7a3713eea9ce755995767f4dcd1b0b9599b638b12946e892123d1efb", size = 13258250, upload-time = "2025-09-10T16:25:31.773Z" },
1082
- { url = "https://files.pythonhosted.org/packages/e1/a3/03216a6a86c706df54422612981fb0f9041dbb452c3401501d4a22b942c9/ruff-0.13.0-py3-none-win_arm64.whl", hash = "sha256:ab80525317b1e1d38614addec8ac954f1b3e662de9d59114ecbf771d00cf613e", size = 12312357, upload-time = "2025-09-10T16:25:35.595Z" },
1061
+ version = "0.13.1"
1062
+ source = { registry = "https://pypi.org/simple" }
1063
+ sdist = { url = "https://files.pythonhosted.org/packages/ab/33/c8e89216845615d14d2d42ba2bee404e7206a8db782f33400754f3799f05/ruff-0.13.1.tar.gz", hash = "sha256:88074c3849087f153d4bb22e92243ad4c1b366d7055f98726bc19aa08dc12d51", size = 5397987, upload-time = "2025-09-18T19:52:44.33Z" }
1064
+ wheels = [
1065
+ { url = "https://files.pythonhosted.org/packages/f3/41/ca37e340938f45cfb8557a97a5c347e718ef34702546b174e5300dbb1f28/ruff-0.13.1-py3-none-linux_armv6l.whl", hash = "sha256:b2abff595cc3cbfa55e509d89439b5a09a6ee3c252d92020bd2de240836cf45b", size = 12304308, upload-time = "2025-09-18T19:51:56.253Z" },
1066
+ { url = "https://files.pythonhosted.org/packages/ff/84/ba378ef4129415066c3e1c80d84e539a0d52feb250685091f874804f28af/ruff-0.13.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:4ee9f4249bf7f8bb3984c41bfaf6a658162cdb1b22e3103eabc7dd1dc5579334", size = 12937258, upload-time = "2025-09-18T19:52:00.184Z" },
1067
+ { url = "https://files.pythonhosted.org/packages/8d/b6/ec5e4559ae0ad955515c176910d6d7c93edcbc0ed1a3195a41179c58431d/ruff-0.13.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5c5da4af5f6418c07d75e6f3224e08147441f5d1eac2e6ce10dcce5e616a3bae", size = 12214554, upload-time = "2025-09-18T19:52:02.753Z" },
1068
+ { url = "https://files.pythonhosted.org/packages/70/d6/cb3e3b4f03b9b0c4d4d8f06126d34b3394f6b4d764912fe80a1300696ef6/ruff-0.13.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80524f84a01355a59a93cef98d804e2137639823bcee2931f5028e71134a954e", size = 12448181, upload-time = "2025-09-18T19:52:05.279Z" },
1069
+ { url = "https://files.pythonhosted.org/packages/d2/ea/bf60cb46d7ade706a246cd3fb99e4cfe854efa3dfbe530d049c684da24ff/ruff-0.13.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff7f5ce8d7988767dd46a148192a14d0f48d1baea733f055d9064875c7d50389", size = 12104599, upload-time = "2025-09-18T19:52:07.497Z" },
1070
+ { url = "https://files.pythonhosted.org/packages/2d/3e/05f72f4c3d3a69e65d55a13e1dd1ade76c106d8546e7e54501d31f1dc54a/ruff-0.13.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c55d84715061f8b05469cdc9a446aa6c7294cd4bd55e86a89e572dba14374f8c", size = 13791178, upload-time = "2025-09-18T19:52:10.189Z" },
1071
+ { url = "https://files.pythonhosted.org/packages/81/e7/01b1fc403dd45d6cfe600725270ecc6a8f8a48a55bc6521ad820ed3ceaf8/ruff-0.13.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:ac57fed932d90fa1624c946dc67a0a3388d65a7edc7d2d8e4ca7bddaa789b3b0", size = 14814474, upload-time = "2025-09-18T19:52:12.866Z" },
1072
+ { url = "https://files.pythonhosted.org/packages/fa/92/d9e183d4ed6185a8df2ce9faa3f22e80e95b5f88d9cc3d86a6d94331da3f/ruff-0.13.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c366a71d5b4f41f86a008694f7a0d75fe409ec298685ff72dc882f882d532e36", size = 14217531, upload-time = "2025-09-18T19:52:15.245Z" },
1073
+ { url = "https://files.pythonhosted.org/packages/3b/4a/6ddb1b11d60888be224d721e01bdd2d81faaf1720592858ab8bac3600466/ruff-0.13.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4ea9d1b5ad3e7a83ee8ebb1229c33e5fe771e833d6d3dcfca7b77d95b060d38", size = 13265267, upload-time = "2025-09-18T19:52:17.649Z" },
1074
+ { url = "https://files.pythonhosted.org/packages/81/98/3f1d18a8d9ea33ef2ad508f0417fcb182c99b23258ec5e53d15db8289809/ruff-0.13.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0f70202996055b555d3d74b626406476cc692f37b13bac8828acff058c9966a", size = 13243120, upload-time = "2025-09-18T19:52:20.332Z" },
1075
+ { url = "https://files.pythonhosted.org/packages/8d/86/b6ce62ce9c12765fa6c65078d1938d2490b2b1d9273d0de384952b43c490/ruff-0.13.1-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:f8cff7a105dad631085d9505b491db33848007d6b487c3c1979dd8d9b2963783", size = 13443084, upload-time = "2025-09-18T19:52:23.032Z" },
1076
+ { url = "https://files.pythonhosted.org/packages/a1/6e/af7943466a41338d04503fb5a81b2fd07251bd272f546622e5b1599a7976/ruff-0.13.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:9761e84255443316a258dd7dfbd9bfb59c756e52237ed42494917b2577697c6a", size = 12295105, upload-time = "2025-09-18T19:52:25.263Z" },
1077
+ { url = "https://files.pythonhosted.org/packages/3f/97/0249b9a24f0f3ebd12f007e81c87cec6d311de566885e9309fcbac5b24cc/ruff-0.13.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:3d376a88c3102ef228b102211ef4a6d13df330cb0f5ca56fdac04ccec2a99700", size = 12072284, upload-time = "2025-09-18T19:52:27.478Z" },
1078
+ { url = "https://files.pythonhosted.org/packages/f6/85/0b64693b2c99d62ae65236ef74508ba39c3febd01466ef7f354885e5050c/ruff-0.13.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:cbefd60082b517a82c6ec8836989775ac05f8991715d228b3c1d86ccc7df7dae", size = 12970314, upload-time = "2025-09-18T19:52:30.212Z" },
1079
+ { url = "https://files.pythonhosted.org/packages/96/fc/342e9f28179915d28b3747b7654f932ca472afbf7090fc0c4011e802f494/ruff-0.13.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:dd16b9a5a499fe73f3c2ef09a7885cb1d97058614d601809d37c422ed1525317", size = 13422360, upload-time = "2025-09-18T19:52:32.676Z" },
1080
+ { url = "https://files.pythonhosted.org/packages/37/54/6177a0dc10bce6f43e392a2192e6018755473283d0cf43cc7e6afc182aea/ruff-0.13.1-py3-none-win32.whl", hash = "sha256:55e9efa692d7cb18580279f1fbb525146adc401f40735edf0aaeabd93099f9a0", size = 12178448, upload-time = "2025-09-18T19:52:35.545Z" },
1081
+ { url = "https://files.pythonhosted.org/packages/64/51/c6a3a33d9938007b8bdc8ca852ecc8d810a407fb513ab08e34af12dc7c24/ruff-0.13.1-py3-none-win_amd64.whl", hash = "sha256:3a3fb595287ee556de947183489f636b9f76a72f0fa9c028bdcabf5bab2cc5e5", size = 13286458, upload-time = "2025-09-18T19:52:38.198Z" },
1082
+ { url = "https://files.pythonhosted.org/packages/fd/04/afc078a12cf68592345b1e2d6ecdff837d286bac023d7a22c54c7a698c5b/ruff-0.13.1-py3-none-win_arm64.whl", hash = "sha256:c0bae9ffd92d54e03c2bf266f466da0a65e145f298ee5b5846ed435f6a00518a", size = 12437893, upload-time = "2025-09-18T19:52:41.283Z" },
1083
1083
  ]
1084
1084
 
1085
1085
  [[package]]
@@ -1119,15 +1119,15 @@ wheels = [
1119
1119
 
1120
1120
  [[package]]
1121
1121
  name = "starlette"
1122
- version = "0.47.3"
1122
+ version = "0.48.0"
1123
1123
  source = { registry = "https://pypi.org/simple" }
1124
1124
  dependencies = [
1125
1125
  { name = "anyio" },
1126
1126
  { name = "typing-extensions", marker = "python_full_version < '3.13'" },
1127
1127
  ]
1128
- sdist = { url = "https://files.pythonhosted.org/packages/15/b9/cc3017f9a9c9b6e27c5106cc10cc7904653c3eec0729793aec10479dd669/starlette-0.47.3.tar.gz", hash = "sha256:6bc94f839cc176c4858894f1f8908f0ab79dfec1a6b8402f6da9be26ebea52e9", size = 2584144, upload-time = "2025-08-24T13:36:42.122Z" }
1128
+ sdist = { url = "https://files.pythonhosted.org/packages/a7/a5/d6f429d43394057b67a6b5bbe6eae2f77a6bf7459d961fdb224bf206eee6/starlette-0.48.0.tar.gz", hash = "sha256:7e8cee469a8ab2352911528110ce9088fdc6a37d9876926e73da7ce4aa4c7a46", size = 2652949, upload-time = "2025-09-13T08:41:05.699Z" }
1129
1129
  wheels = [
1130
- { url = "https://files.pythonhosted.org/packages/ce/fd/901cfa59aaa5b30a99e16876f11abe38b59a1a2c51ffb3d7142bb6089069/starlette-0.47.3-py3-none-any.whl", hash = "sha256:89c0778ca62a76b826101e7c709e70680a1699ca7da6b44d38eb0a7e61fe4b51", size = 72991, upload-time = "2025-08-24T13:36:40.887Z" },
1130
+ { url = "https://files.pythonhosted.org/packages/be/72/2db2f49247d0a18b4f1bb9a5a39a0162869acf235f3a96418363947b3d46/starlette-0.48.0-py3-none-any.whl", hash = "sha256:0764ca97b097582558ecb498132ed0c7d942f233f365b86ba37770e026510659", size = 73736, upload-time = "2025-09-13T08:41:03.869Z" },
1131
1131
  ]
1132
1132
 
1133
1133
  [[package]]
@@ -1189,15 +1189,15 @@ wheels = [
1189
1189
 
1190
1190
  [[package]]
1191
1191
  name = "uvicorn"
1192
- version = "0.35.0"
1192
+ version = "0.36.0"
1193
1193
  source = { registry = "https://pypi.org/simple" }
1194
1194
  dependencies = [
1195
1195
  { name = "click" },
1196
1196
  { name = "h11" },
1197
1197
  ]
1198
- sdist = { url = "https://files.pythonhosted.org/packages/5e/42/e0e305207bb88c6b8d3061399c6a961ffe5fbb7e2aa63c9234df7259e9cd/uvicorn-0.35.0.tar.gz", hash = "sha256:bc662f087f7cf2ce11a1d7fd70b90c9f98ef2e2831556dd078d131b96cc94a01", size = 78473, upload-time = "2025-06-28T16:15:46.058Z" }
1198
+ sdist = { url = "https://files.pythonhosted.org/packages/ef/5e/f0cd46063a02fd8515f0e880c37d2657845b7306c16ce6c4ffc44afd9036/uvicorn-0.36.0.tar.gz", hash = "sha256:527dc68d77819919d90a6b267be55f0e76704dca829d34aea9480be831a9b9d9", size = 80032, upload-time = "2025-09-20T01:07:14.418Z" }
1199
1199
  wheels = [
1200
- { url = "https://files.pythonhosted.org/packages/d2/e2/dc81b1bd1dcfe91735810265e9d26bc8ec5da45b4c0f6237e286819194c3/uvicorn-0.35.0-py3-none-any.whl", hash = "sha256:197535216b25ff9b785e29a0b79199f55222193d47f820816e7da751e9bc8d4a", size = 66406, upload-time = "2025-06-28T16:15:44.816Z" },
1200
+ { url = "https://files.pythonhosted.org/packages/96/06/5cc0542b47c0338c1cb676b348e24a1c29acabc81000bced518231dded6f/uvicorn-0.36.0-py3-none-any.whl", hash = "sha256:6bb4ba67f16024883af8adf13aba3a9919e415358604ce46780d3f9bdc36d731", size = 67675, upload-time = "2025-09-20T01:07:12.984Z" },
1201
1201
  ]
1202
1202
 
1203
1203
  [[package]]
@@ -1 +0,0 @@
1
- __version__ = "0.4.27"
File without changes
File without changes
File without changes