langgraph-api 0.0.47__tar.gz → 0.0.48__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.

Potentially problematic release.


This version of langgraph-api might be problematic. Click here for more details.

Files changed (104) hide show
  1. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/PKG-INFO +1 -1
  2. langgraph_api-0.0.48/langgraph_api/__init__.py +1 -0
  3. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/middleware/http_logger.py +19 -16
  4. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_storage/ops.py +6 -9
  5. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/pyproject.toml +1 -1
  6. langgraph_api-0.0.47/langgraph_api/__init__.py +0 -1
  7. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/LICENSE +0 -0
  8. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/README.md +0 -0
  9. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/api/__init__.py +0 -0
  10. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/api/assistants.py +0 -0
  11. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/api/mcp.py +0 -0
  12. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/api/meta.py +0 -0
  13. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/api/openapi.py +0 -0
  14. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/api/runs.py +0 -0
  15. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/api/store.py +0 -0
  16. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/api/threads.py +0 -0
  17. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/api/ui.py +0 -0
  18. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/asyncio.py +0 -0
  19. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/auth/__init__.py +0 -0
  20. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/auth/custom.py +0 -0
  21. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/auth/langsmith/__init__.py +0 -0
  22. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/auth/langsmith/backend.py +0 -0
  23. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/auth/langsmith/client.py +0 -0
  24. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/auth/middleware.py +0 -0
  25. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/auth/noop.py +0 -0
  26. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/auth/studio_user.py +0 -0
  27. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/cli.py +0 -0
  28. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/command.py +0 -0
  29. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/config.py +0 -0
  30. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/cron_scheduler.py +0 -0
  31. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/errors.py +0 -0
  32. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/graph.py +0 -0
  33. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/http.py +0 -0
  34. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/.gitignore +0 -0
  35. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/base.py +0 -0
  36. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/build.mts +0 -0
  37. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/client.mts +0 -0
  38. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/errors.py +0 -0
  39. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/global.d.ts +0 -0
  40. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/package.json +0 -0
  41. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/remote.py +0 -0
  42. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/schema.py +0 -0
  43. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/src/graph.mts +0 -0
  44. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/src/hooks.mjs +0 -0
  45. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/src/parser/parser.mts +0 -0
  46. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/src/parser/parser.worker.mjs +0 -0
  47. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/src/schema/types.mts +0 -0
  48. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/src/schema/types.template.mts +0 -0
  49. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/src/utils/importMap.mts +0 -0
  50. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
  51. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/src/utils/serde.mts +0 -0
  52. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/sse.py +0 -0
  53. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/api.test.mts +0 -0
  54. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/compose-postgres.yml +0 -0
  55. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/.gitignore +0 -0
  56. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/agent.css +0 -0
  57. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/agent.mts +0 -0
  58. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/agent.ui.tsx +0 -0
  59. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/command.mts +0 -0
  60. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/delay.mts +0 -0
  61. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/dynamic.mts +0 -0
  62. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/error.mts +0 -0
  63. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/langgraph.json +0 -0
  64. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/nested.mts +0 -0
  65. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/package.json +0 -0
  66. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/weather.mts +0 -0
  67. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/yarn.lock +0 -0
  68. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/parser.test.mts +0 -0
  69. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/utils.mts +0 -0
  70. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/ui.py +0 -0
  71. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/yarn.lock +0 -0
  72. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/lifespan.py +0 -0
  73. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/logging.py +0 -0
  74. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/metadata.py +0 -0
  75. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/middleware/__init__.py +0 -0
  76. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/middleware/private_network.py +0 -0
  77. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/models/__init__.py +0 -0
  78. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/models/run.py +0 -0
  79. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/patch.py +0 -0
  80. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/queue_entrypoint.py +0 -0
  81. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/route.py +0 -0
  82. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/schema.py +0 -0
  83. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/serde.py +0 -0
  84. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/server.py +0 -0
  85. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/sse.py +0 -0
  86. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/state.py +0 -0
  87. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/stream.py +0 -0
  88. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/thread_ttl.py +0 -0
  89. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/utils.py +0 -0
  90. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/validation.py +0 -0
  91. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/webhook.py +0 -0
  92. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/worker.py +0 -0
  93. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_license/__init__.py +0 -0
  94. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_license/middleware.py +0 -0
  95. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_license/validation.py +0 -0
  96. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_storage/__init__.py +0 -0
  97. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_storage/checkpoint.py +0 -0
  98. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_storage/database.py +0 -0
  99. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_storage/inmem_stream.py +0 -0
  100. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_storage/queue.py +0 -0
  101. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_storage/retry.py +0 -0
  102. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_storage/store.py +0 -0
  103. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/logging.json +0 -0
  104. {langgraph_api-0.0.47 → langgraph_api-0.0.48}/openapi.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: langgraph-api
3
- Version: 0.0.47
3
+ Version: 0.0.48
4
4
  Summary:
5
5
  License: Elastic-2.0
6
6
  Author: Nuno Campos
@@ -0,0 +1 @@
1
+ __version__ = "0.0.46"
@@ -5,7 +5,6 @@ import structlog
5
5
  from starlette.requests import ClientDisconnect
6
6
  from starlette.types import Message, Receive, Scope, Send
7
7
 
8
- from langgraph_api.asyncio import create_task
9
8
  from langgraph_api.logging import LOG_JSON
10
9
 
11
10
  asgi = structlog.stdlib.get_logger("asgi")
@@ -21,6 +20,12 @@ class AccessLoggerMiddleware:
21
20
  ) -> None:
22
21
  self.app = app
23
22
  self.logger = logger
23
+ if hasattr(logger, "isEnabledFor"):
24
+ self.debug_enabled = self.logger.isEnabledFor(logging.DEBUG)
25
+ elif hasattr(logger, "is_enabled_for"):
26
+ self.debug_enabled = self.logger.is_enabled_for(logging.DEBUG)
27
+ else:
28
+ self.debug_enabled = False
24
29
 
25
30
  async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
26
31
  if scope["type"] != "http" or (LOG_JSON and scope.get("path") in PATHS_IGNORE):
@@ -29,7 +34,7 @@ class AccessLoggerMiddleware:
29
34
  loop = asyncio.get_event_loop()
30
35
  info = {"response": {}}
31
36
 
32
- if self.logger.isEnabledFor(logging.DEBUG):
37
+ if self.debug_enabled:
33
38
 
34
39
  async def inner_receive() -> Message:
35
40
  message = await receive()
@@ -61,20 +66,18 @@ class AccessLoggerMiddleware:
61
66
  finally:
62
67
  info["end_time"] = loop.time()
63
68
  latency = int((info["end_time"] - info["start_time"]) * 1_000)
64
- create_task(
65
- self.logger.ainfo(
66
- f"{scope.get('method')} {scope.get('path')} {info['response'].get('status')} {latency}ms",
67
- method=scope.get("method"),
68
- path=scope.get("path"),
69
- status=info["response"].get("status"),
70
- latency_ms=latency,
71
- route=scope.get("route"),
72
- path_params=scope.get("path_params"),
73
- query_string=scope.get("query_string").decode(),
74
- proto=scope.get("http_version"),
75
- req_header=_headers_to_dict(scope.get("headers")),
76
- res_header=_headers_to_dict(info["response"].get("headers")),
77
- )
69
+ self.logger.info(
70
+ f"{scope.get('method')} {scope.get('path')} {info['response'].get('status')} {latency}ms",
71
+ method=scope.get("method"),
72
+ path=scope.get("path"),
73
+ status=info["response"].get("status"),
74
+ latency_ms=latency,
75
+ route=scope.get("route"),
76
+ path_params=scope.get("path_params"),
77
+ query_string=scope.get("query_string").decode(),
78
+ proto=scope.get("http_version"),
79
+ req_header=_headers_to_dict(scope.get("headers")),
80
+ res_header=_headers_to_dict(info["response"].get("headers")),
78
81
  )
79
82
 
80
83
 
@@ -4,7 +4,6 @@ import asyncio
4
4
  import base64
5
5
  import copy
6
6
  import json
7
- import logging
8
7
  import uuid
9
8
  from collections import defaultdict
10
9
  from collections.abc import AsyncIterator, Sequence
@@ -1915,7 +1914,6 @@ class Runs(Authenticated):
1915
1914
  ctx: Auth.types.BaseAuthContext | None = None,
1916
1915
  ) -> AsyncIterator[tuple[bytes, bytes]]:
1917
1916
  """Stream the run output."""
1918
- log = logger.isEnabledFor(logging.DEBUG)
1919
1917
  queue = (
1920
1918
  stream_mode
1921
1919
  if isinstance(stream_mode, asyncio.Queue)
@@ -1954,13 +1952,12 @@ class Runs(Authenticated):
1954
1952
  else:
1955
1953
  # Extract mode from topic
1956
1954
  yield topic[len_prefix:], data
1957
- if log:
1958
- await logger.adebug(
1959
- "Streamed run event",
1960
- run_id=str(run_id),
1961
- stream_mode=topic[len_prefix:],
1962
- data=data,
1963
- )
1955
+ logger.debug(
1956
+ "Streamed run event",
1957
+ run_id=str(run_id),
1958
+ stream_mode=topic[len_prefix:],
1959
+ data=data,
1960
+ )
1964
1961
  except TimeoutError:
1965
1962
  # Check if the run is still pending
1966
1963
  run_iter = await Runs.get(
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "langgraph-api"
3
- version = "0.0.47"
3
+ version = "0.0.48"
4
4
  description = ""
5
5
  authors = [
6
6
  "Nuno Campos <nuno@langchain.dev>",
@@ -1 +0,0 @@
1
- __version__ = "0.0.47"
File without changes
File without changes