langgraph-runtime-inmem 0.20.0__tar.gz → 0.21.0__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.
- {langgraph_runtime_inmem-0.20.0 → langgraph_runtime_inmem-0.21.0}/PKG-INFO +2 -2
- {langgraph_runtime_inmem-0.20.0 → langgraph_runtime_inmem-0.21.0}/langgraph_runtime_inmem/__init__.py +1 -1
- {langgraph_runtime_inmem-0.20.0 → langgraph_runtime_inmem-0.21.0}/langgraph_runtime_inmem/checkpoint.py +60 -0
- {langgraph_runtime_inmem-0.20.0 → langgraph_runtime_inmem-0.21.0}/langgraph_runtime_inmem/ops.py +121 -18
- {langgraph_runtime_inmem-0.20.0 → langgraph_runtime_inmem-0.21.0}/pyproject.toml +1 -1
- {langgraph_runtime_inmem-0.20.0 → langgraph_runtime_inmem-0.21.0}/uv.lock +90 -89
- {langgraph_runtime_inmem-0.20.0 → langgraph_runtime_inmem-0.21.0}/.gitignore +0 -0
- {langgraph_runtime_inmem-0.20.0 → langgraph_runtime_inmem-0.21.0}/Makefile +0 -0
- {langgraph_runtime_inmem-0.20.0 → langgraph_runtime_inmem-0.21.0}/README.md +0 -0
- {langgraph_runtime_inmem-0.20.0 → langgraph_runtime_inmem-0.21.0}/langgraph_runtime_inmem/database.py +0 -0
- {langgraph_runtime_inmem-0.20.0 → langgraph_runtime_inmem-0.21.0}/langgraph_runtime_inmem/inmem_stream.py +0 -0
- {langgraph_runtime_inmem-0.20.0 → langgraph_runtime_inmem-0.21.0}/langgraph_runtime_inmem/lifespan.py +0 -0
- {langgraph_runtime_inmem-0.20.0 → langgraph_runtime_inmem-0.21.0}/langgraph_runtime_inmem/metrics.py +0 -0
- {langgraph_runtime_inmem-0.20.0 → langgraph_runtime_inmem-0.21.0}/langgraph_runtime_inmem/queue.py +0 -0
- {langgraph_runtime_inmem-0.20.0 → langgraph_runtime_inmem-0.21.0}/langgraph_runtime_inmem/retry.py +0 -0
- {langgraph_runtime_inmem-0.20.0 → langgraph_runtime_inmem-0.21.0}/langgraph_runtime_inmem/store.py +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: langgraph-runtime-inmem
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.21.0
|
|
4
4
|
Summary: Inmem implementation for the LangGraph API server.
|
|
5
5
|
Author-email: Will Fu-Hinthorn <will@langchain.dev>
|
|
6
6
|
License: Elastic-2.0
|
|
7
7
|
Requires-Python: >=3.11.0
|
|
8
8
|
Requires-Dist: blockbuster<2.0.0,>=1.5.24
|
|
9
|
-
Requires-Dist: langgraph-checkpoint<
|
|
9
|
+
Requires-Dist: langgraph-checkpoint<5,>=3
|
|
10
10
|
Requires-Dist: langgraph<2,>=0.4.10
|
|
11
11
|
Requires-Dist: sse-starlette>=2
|
|
12
12
|
Requires-Dist: starlette>=0.37
|
|
@@ -4,6 +4,8 @@ import logging
|
|
|
4
4
|
import os
|
|
5
5
|
import typing
|
|
6
6
|
import uuid
|
|
7
|
+
from collections.abc import AsyncIterator
|
|
8
|
+
from typing import Any
|
|
7
9
|
|
|
8
10
|
from langgraph.checkpoint.memory import MemorySaver, PersistentDict
|
|
9
11
|
|
|
@@ -116,6 +118,64 @@ class InMemorySaver(MemorySaver):
|
|
|
116
118
|
if os.path.exists(file_path):
|
|
117
119
|
os.remove(file_path)
|
|
118
120
|
|
|
121
|
+
async def _decrypt_json(self, data: dict[str, Any]) -> dict[str, Any]:
|
|
122
|
+
"""Decrypt a dict if custom encryption is configured."""
|
|
123
|
+
from langgraph_api import config as api_config
|
|
124
|
+
|
|
125
|
+
if not api_config.LANGGRAPH_ENCRYPTION:
|
|
126
|
+
return data
|
|
127
|
+
from langgraph_api.api.encryption_middleware import decrypt_json_if_needed
|
|
128
|
+
from langgraph_api.encryption import get_encryption_instance
|
|
129
|
+
|
|
130
|
+
result = await decrypt_json_if_needed(
|
|
131
|
+
data, get_encryption_instance(), "checkpoint"
|
|
132
|
+
)
|
|
133
|
+
if result is None:
|
|
134
|
+
raise ValueError("decrypt_json_if_needed returned None for non-None input")
|
|
135
|
+
return result
|
|
136
|
+
|
|
137
|
+
async def aget_tuple(self, config: RunnableConfig) -> CheckpointTuple | None:
|
|
138
|
+
"""Get checkpoint tuple with decrypted metadata."""
|
|
139
|
+
tuple_ = self.get_tuple(config)
|
|
140
|
+
if tuple_ is None:
|
|
141
|
+
return None
|
|
142
|
+
|
|
143
|
+
# Decrypt metadata if encryption is enabled
|
|
144
|
+
decrypted_metadata = await self._decrypt_json(tuple_.metadata)
|
|
145
|
+
|
|
146
|
+
from langgraph.checkpoint.base import CheckpointTuple as CPTuple
|
|
147
|
+
|
|
148
|
+
return CPTuple(
|
|
149
|
+
config=tuple_.config,
|
|
150
|
+
checkpoint=tuple_.checkpoint,
|
|
151
|
+
metadata=decrypted_metadata,
|
|
152
|
+
parent_config=tuple_.parent_config,
|
|
153
|
+
pending_writes=tuple_.pending_writes,
|
|
154
|
+
)
|
|
155
|
+
|
|
156
|
+
async def alist(
|
|
157
|
+
self,
|
|
158
|
+
config: RunnableConfig | None,
|
|
159
|
+
*,
|
|
160
|
+
filter: dict[str, Any] | None = None,
|
|
161
|
+
before: RunnableConfig | None = None,
|
|
162
|
+
limit: int | None = None,
|
|
163
|
+
) -> AsyncIterator[CheckpointTuple]:
|
|
164
|
+
"""List checkpoints with decrypted metadata."""
|
|
165
|
+
from langgraph.checkpoint.base import CheckpointTuple as CPTuple
|
|
166
|
+
|
|
167
|
+
for tuple_ in self.list(config, filter=filter, before=before, limit=limit):
|
|
168
|
+
# Decrypt metadata if encryption is enabled
|
|
169
|
+
decrypted_metadata = await self._decrypt_json(tuple_.metadata)
|
|
170
|
+
|
|
171
|
+
yield CPTuple(
|
|
172
|
+
config=tuple_.config,
|
|
173
|
+
checkpoint=tuple_.checkpoint,
|
|
174
|
+
metadata=decrypted_metadata,
|
|
175
|
+
parent_config=tuple_.parent_config,
|
|
176
|
+
pending_writes=tuple_.pending_writes,
|
|
177
|
+
)
|
|
178
|
+
|
|
119
179
|
|
|
120
180
|
MEMORY = None
|
|
121
181
|
|
{langgraph_runtime_inmem-0.20.0 → langgraph_runtime_inmem-0.21.0}/langgraph_runtime_inmem/ops.py
RENAMED
|
@@ -489,24 +489,23 @@ class Assistants(Authenticated):
|
|
|
489
489
|
status_code=404, detail=f"Assistant with ID {assistant_id} not found"
|
|
490
490
|
)
|
|
491
491
|
|
|
492
|
+
# Cancel all in-flight runs for this assistant before deletion
|
|
493
|
+
await Runs.cancel(
|
|
494
|
+
conn,
|
|
495
|
+
assistant_id=assistant_id,
|
|
496
|
+
action="interrupt",
|
|
497
|
+
ctx=ctx,
|
|
498
|
+
)
|
|
499
|
+
|
|
492
500
|
conn.store["assistants"] = [
|
|
493
501
|
a for a in conn.store["assistants"] if a["assistant_id"] != assistant_id
|
|
494
502
|
]
|
|
495
|
-
# Cascade delete assistant versions
|
|
503
|
+
# Cascade delete assistant versions
|
|
496
504
|
conn.store["assistant_versions"] = [
|
|
497
505
|
v
|
|
498
506
|
for v in conn.store["assistant_versions"]
|
|
499
507
|
if v["assistant_id"] != assistant_id
|
|
500
508
|
]
|
|
501
|
-
retained = []
|
|
502
|
-
for run in conn.store["runs"]:
|
|
503
|
-
if run["assistant_id"] == assistant_id:
|
|
504
|
-
res = await Runs.delete(
|
|
505
|
-
conn, run["run_id"], thread_id=run["thread_id"], ctx=ctx
|
|
506
|
-
)
|
|
507
|
-
await anext(res)
|
|
508
|
-
else:
|
|
509
|
-
retained.append(run)
|
|
510
509
|
|
|
511
510
|
async def _yield_deleted():
|
|
512
511
|
yield assistant_id
|
|
@@ -883,8 +882,16 @@ class Threads(Authenticated):
|
|
|
883
882
|
conn: InMemConnectionProto,
|
|
884
883
|
thread_id: UUID,
|
|
885
884
|
ctx: Auth.types.BaseAuthContext | None = None,
|
|
885
|
+
include_ttl: bool = False,
|
|
886
886
|
) -> AsyncIterator[Thread]:
|
|
887
|
-
"""Get a thread by ID.
|
|
887
|
+
"""Get a thread by ID.
|
|
888
|
+
|
|
889
|
+
Args:
|
|
890
|
+
conn: In-memory connection
|
|
891
|
+
thread_id: Thread ID
|
|
892
|
+
ctx: Auth context
|
|
893
|
+
include_ttl: Not supported in inmem - parameter ignored.
|
|
894
|
+
"""
|
|
888
895
|
matching_thread = await Threads._get(conn, thread_id, ctx)
|
|
889
896
|
|
|
890
897
|
if not matching_thread:
|
|
@@ -1222,6 +1229,48 @@ class Threads(Authenticated):
|
|
|
1222
1229
|
|
|
1223
1230
|
return empty_iterator()
|
|
1224
1231
|
|
|
1232
|
+
@staticmethod
|
|
1233
|
+
async def prune(
|
|
1234
|
+
thread_ids: Sequence[str] | Sequence[UUID],
|
|
1235
|
+
strategy: Literal["delete", "keep_latest"] = "delete",
|
|
1236
|
+
batch_size: int = 100,
|
|
1237
|
+
ctx: Auth.types.BaseAuthContext | None = None,
|
|
1238
|
+
) -> int:
|
|
1239
|
+
"""Prune threads by ID (inmem implementation).
|
|
1240
|
+
|
|
1241
|
+
Args:
|
|
1242
|
+
thread_ids: List of thread IDs to prune
|
|
1243
|
+
strategy: Prune strategy ("delete" supported, "keep_latest" not supported)
|
|
1244
|
+
batch_size: Not used in inmem implementation
|
|
1245
|
+
ctx: Auth context for permission checks
|
|
1246
|
+
|
|
1247
|
+
Returns:
|
|
1248
|
+
Number of threads successfully pruned
|
|
1249
|
+
"""
|
|
1250
|
+
if not thread_ids:
|
|
1251
|
+
return 0
|
|
1252
|
+
|
|
1253
|
+
if strategy == "keep_latest":
|
|
1254
|
+
raise HTTPException(
|
|
1255
|
+
status_code=422,
|
|
1256
|
+
detail="keep_latest strategy is not supported in in-memory runtime",
|
|
1257
|
+
)
|
|
1258
|
+
|
|
1259
|
+
pruned = 0
|
|
1260
|
+
async with connect() as conn:
|
|
1261
|
+
for tid in thread_ids:
|
|
1262
|
+
try:
|
|
1263
|
+
tid_uuid = _ensure_uuid(tid)
|
|
1264
|
+
iter_result = await Threads.delete(conn, tid_uuid, ctx)
|
|
1265
|
+
# Consume the iterator to ensure deletion
|
|
1266
|
+
async for _ in iter_result:
|
|
1267
|
+
pruned += 1
|
|
1268
|
+
except HTTPException:
|
|
1269
|
+
# Thread not found or no permission - skip silently
|
|
1270
|
+
pass
|
|
1271
|
+
|
|
1272
|
+
return pruned
|
|
1273
|
+
|
|
1225
1274
|
@staticmethod
|
|
1226
1275
|
async def _delete_with_run(
|
|
1227
1276
|
conn: InMemConnectionProto,
|
|
@@ -1981,6 +2030,7 @@ class Runs(Authenticated):
|
|
|
1981
2030
|
"n_pending": 0,
|
|
1982
2031
|
"pending_runs_wait_time_max_secs": None,
|
|
1983
2032
|
"pending_runs_wait_time_med_secs": None,
|
|
2033
|
+
"pending_unblocked_runs_wait_time_max_secs": None,
|
|
1984
2034
|
"n_running": 0,
|
|
1985
2035
|
}
|
|
1986
2036
|
|
|
@@ -2005,11 +2055,34 @@ class Runs(Authenticated):
|
|
|
2005
2055
|
else:
|
|
2006
2056
|
med_pending_wait = None
|
|
2007
2057
|
|
|
2058
|
+
# Calculate max wait time for unblocked runs (runs not blocked by another run on the same thread)
|
|
2059
|
+
pending_unblocked_waits: list[float] = []
|
|
2060
|
+
for run in pending_runs:
|
|
2061
|
+
thread_id = run.get("thread_id")
|
|
2062
|
+
# Check if there's a running run on the same thread
|
|
2063
|
+
has_running_on_thread = any(
|
|
2064
|
+
r.get("thread_id") == thread_id and r.get("status") == "running"
|
|
2065
|
+
for r in conn.store["runs"]
|
|
2066
|
+
)
|
|
2067
|
+
if not has_running_on_thread:
|
|
2068
|
+
created_at = run.get("created_at")
|
|
2069
|
+
if not isinstance(created_at, datetime):
|
|
2070
|
+
continue
|
|
2071
|
+
if created_at.tzinfo is None:
|
|
2072
|
+
created_at = created_at.replace(tzinfo=UTC)
|
|
2073
|
+
if created_at < now:
|
|
2074
|
+
pending_unblocked_waits.append((now - created_at).total_seconds())
|
|
2075
|
+
|
|
2076
|
+
max_unblocked_wait = (
|
|
2077
|
+
max(pending_unblocked_waits) if pending_unblocked_waits else None
|
|
2078
|
+
)
|
|
2079
|
+
|
|
2008
2080
|
return {
|
|
2009
2081
|
"n_pending": len(pending_runs),
|
|
2010
2082
|
"n_running": len(running_runs),
|
|
2011
2083
|
"pending_runs_wait_time_max_secs": max_pending_wait,
|
|
2012
2084
|
"pending_runs_wait_time_med_secs": med_pending_wait,
|
|
2085
|
+
"pending_unblocked_runs_wait_time_max_secs": max_unblocked_wait,
|
|
2013
2086
|
}
|
|
2014
2087
|
|
|
2015
2088
|
@staticmethod
|
|
@@ -2410,12 +2483,14 @@ class Runs(Authenticated):
|
|
|
2410
2483
|
action: Literal["interrupt", "rollback"] = "interrupt",
|
|
2411
2484
|
thread_id: UUID | None = None,
|
|
2412
2485
|
status: Literal["pending", "running", "all"] | None = None,
|
|
2486
|
+
assistant_id: UUID | None = None,
|
|
2413
2487
|
ctx: Auth.types.BaseAuthContext | None = None,
|
|
2414
2488
|
) -> None:
|
|
2415
2489
|
"""
|
|
2416
2490
|
Cancel runs in memory. Must provide either:
|
|
2417
2491
|
1) thread_id + run_ids, or
|
|
2418
|
-
2) status in {"pending", "running", "all"}
|
|
2492
|
+
2) status in {"pending", "running", "all"}, or
|
|
2493
|
+
3) assistant_id (cancels all in-flight runs for that assistant).
|
|
2419
2494
|
|
|
2420
2495
|
Steps:
|
|
2421
2496
|
- Validate arguments (one usage pattern or the other).
|
|
@@ -2426,10 +2501,18 @@ class Runs(Authenticated):
|
|
|
2426
2501
|
* If 'pending', set to 'interrupted' or delete (if action='rollback' and not actively queued).
|
|
2427
2502
|
* If 'running', the worker will pick up the message.
|
|
2428
2503
|
* Otherwise, log a warning for non-cancelable states.
|
|
2429
|
-
- 404 if no runs are found or authorized.
|
|
2504
|
+
- 404 if no runs are found or authorized (unless assistant_id is provided).
|
|
2430
2505
|
"""
|
|
2431
2506
|
# 1. Validate arguments
|
|
2432
|
-
if
|
|
2507
|
+
if assistant_id is not None:
|
|
2508
|
+
# If assistant_id is set, user must NOT specify other filters
|
|
2509
|
+
if thread_id is not None or run_ids is not None or status is not None:
|
|
2510
|
+
raise HTTPException(
|
|
2511
|
+
status_code=422,
|
|
2512
|
+
detail="Cannot specify 'thread_id', 'run_ids', or 'status' when using 'assistant_id'",
|
|
2513
|
+
)
|
|
2514
|
+
assistant_id = _ensure_uuid(assistant_id)
|
|
2515
|
+
elif status is not None:
|
|
2433
2516
|
# If status is set, user must NOT specify thread_id or run_ids
|
|
2434
2517
|
if thread_id is not None or run_ids is not None:
|
|
2435
2518
|
raise HTTPException(
|
|
@@ -2441,7 +2524,7 @@ class Runs(Authenticated):
|
|
|
2441
2524
|
if thread_id is None or run_ids is None:
|
|
2442
2525
|
raise HTTPException(
|
|
2443
2526
|
status_code=422,
|
|
2444
|
-
detail="Must provide either a status or both 'thread_id' and 'run_ids'",
|
|
2527
|
+
detail="Must provide either a status, an assistant_id, or both 'thread_id' and 'run_ids'",
|
|
2445
2528
|
)
|
|
2446
2529
|
|
|
2447
2530
|
# Convert and normalize inputs
|
|
@@ -2476,7 +2559,12 @@ class Runs(Authenticated):
|
|
|
2476
2559
|
"""
|
|
2477
2560
|
Check whether a run in `conn.store["runs"]` meets the selection criteria.
|
|
2478
2561
|
"""
|
|
2479
|
-
if
|
|
2562
|
+
if assistant_id is not None:
|
|
2563
|
+
return r["assistant_id"] == assistant_id and r["status"] in (
|
|
2564
|
+
"pending",
|
|
2565
|
+
"running",
|
|
2566
|
+
)
|
|
2567
|
+
elif status_list:
|
|
2480
2568
|
return r["status"] in status_list
|
|
2481
2569
|
else:
|
|
2482
2570
|
return r["thread_id"] == thread_id and r["run_id"] in run_ids # type: ignore
|
|
@@ -2497,6 +2585,9 @@ class Runs(Authenticated):
|
|
|
2497
2585
|
# on thread. If your filters also apply to runs, you might do more checks here.
|
|
2498
2586
|
|
|
2499
2587
|
if not candidate_runs:
|
|
2588
|
+
# When cancelling by assistant_id, it's valid to have no runs
|
|
2589
|
+
if assistant_id is not None:
|
|
2590
|
+
return
|
|
2500
2591
|
raise HTTPException(status_code=404, detail="No runs found to cancel.")
|
|
2501
2592
|
|
|
2502
2593
|
stream_manager = get_stream_manager()
|
|
@@ -2545,6 +2636,9 @@ class Runs(Authenticated):
|
|
|
2545
2636
|
)
|
|
2546
2637
|
|
|
2547
2638
|
if not cancelable_runs:
|
|
2639
|
+
# When cancelling by assistant_id, it's valid to have no cancelable runs
|
|
2640
|
+
if assistant_id is not None:
|
|
2641
|
+
return
|
|
2548
2642
|
raise HTTPException(
|
|
2549
2643
|
status_code=404,
|
|
2550
2644
|
detail="No matching runs to cancel. Please verify the thread ID and run IDs are correct, and the runs haven't been deleted or completed.",
|
|
@@ -2671,7 +2765,10 @@ class Runs(Authenticated):
|
|
|
2671
2765
|
await Runs.Stream.check_run_stream_auth(run_id, thread_id, ctx)
|
|
2672
2766
|
except HTTPException as e:
|
|
2673
2767
|
raise WrappedHTTPException(e) from None
|
|
2674
|
-
|
|
2768
|
+
run_iter = await Runs.get(
|
|
2769
|
+
conn, run_id, thread_id=thread_id, ctx=ctx
|
|
2770
|
+
)
|
|
2771
|
+
run = await anext(run_iter, None)
|
|
2675
2772
|
|
|
2676
2773
|
for message in get_stream_manager().restore_messages(
|
|
2677
2774
|
run_id, thread_id, last_event_id
|
|
@@ -2727,7 +2824,13 @@ class Runs(Authenticated):
|
|
|
2727
2824
|
and mode.startswith("messages")
|
|
2728
2825
|
)
|
|
2729
2826
|
):
|
|
2730
|
-
|
|
2827
|
+
# We only return a stream ID if the run is resumable
|
|
2828
|
+
stream_id = (
|
|
2829
|
+
id
|
|
2830
|
+
if run.get("kwargs", {}).get("resumable")
|
|
2831
|
+
else None
|
|
2832
|
+
)
|
|
2833
|
+
yield mode.encode(), payload, stream_id
|
|
2731
2834
|
logger.debug(
|
|
2732
2835
|
"Streamed run event",
|
|
2733
2836
|
run_id=str(run_id),
|
|
@@ -38,11 +38,11 @@ wheels = [
|
|
|
38
38
|
|
|
39
39
|
[[package]]
|
|
40
40
|
name = "certifi"
|
|
41
|
-
version = "
|
|
41
|
+
version = "2026.1.4"
|
|
42
42
|
source = { registry = "https://pypi.org/simple" }
|
|
43
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
43
|
+
sdist = { url = "https://files.pythonhosted.org/packages/e0/2d/a891ca51311197f6ad14a7ef42e2399f36cf2f9bd44752b3dc4eab60fdc5/certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120", size = 154268, upload-time = "2026-01-04T02:42:41.825Z" }
|
|
44
44
|
wheels = [
|
|
45
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
45
|
+
{ url = "https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c", size = 152900, upload-time = "2026-01-04T02:42:40.15Z" },
|
|
46
46
|
]
|
|
47
47
|
|
|
48
48
|
[[package]]
|
|
@@ -223,7 +223,7 @@ wheels = [
|
|
|
223
223
|
|
|
224
224
|
[[package]]
|
|
225
225
|
name = "langchain-core"
|
|
226
|
-
version = "1.
|
|
226
|
+
version = "1.2.6"
|
|
227
227
|
source = { registry = "https://pypi.org/simple" }
|
|
228
228
|
dependencies = [
|
|
229
229
|
{ name = "jsonpatch" },
|
|
@@ -235,14 +235,14 @@ dependencies = [
|
|
|
235
235
|
{ name = "typing-extensions" },
|
|
236
236
|
{ name = "uuid-utils" },
|
|
237
237
|
]
|
|
238
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
238
|
+
sdist = { url = "https://files.pythonhosted.org/packages/b9/ce/ba5ed5ea6df22965b2893c2ed28ebb456204962723d408904c4acfa5e942/langchain_core-1.2.6.tar.gz", hash = "sha256:b4e7841dd7f8690375aa07c54739178dc2c635147d475e0c2955bf82a1afa498", size = 833343, upload-time = "2026-01-02T21:35:44.749Z" }
|
|
239
239
|
wheels = [
|
|
240
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
240
|
+
{ url = "https://files.pythonhosted.org/packages/6f/40/0655892c245d8fbe6bca6d673ab5927e5c3ab7be143de40b52289a0663bc/langchain_core-1.2.6-py3-none-any.whl", hash = "sha256:aa6ed954b4b1f4504937fe75fdf674317027e9a91ba7a97558b0de3dc8004e34", size = 489096, upload-time = "2026-01-02T21:35:43.391Z" },
|
|
241
241
|
]
|
|
242
242
|
|
|
243
243
|
[[package]]
|
|
244
244
|
name = "langgraph"
|
|
245
|
-
version = "1.0.
|
|
245
|
+
version = "1.0.5"
|
|
246
246
|
source = { registry = "https://pypi.org/simple" }
|
|
247
247
|
dependencies = [
|
|
248
248
|
{ name = "langchain-core" },
|
|
@@ -252,9 +252,9 @@ dependencies = [
|
|
|
252
252
|
{ name = "pydantic" },
|
|
253
253
|
{ name = "xxhash" },
|
|
254
254
|
]
|
|
255
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
255
|
+
sdist = { url = "https://files.pythonhosted.org/packages/7d/47/28f4d4d33d88f69de26f7a54065961ac0c662cec2479b36a2db081ef5cb6/langgraph-1.0.5.tar.gz", hash = "sha256:7f6ae59622386b60fe9fa0ad4c53f42016b668455ed604329e7dc7904adbf3f8", size = 493969, upload-time = "2025-12-12T23:05:48.224Z" }
|
|
256
256
|
wheels = [
|
|
257
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
257
|
+
{ url = "https://files.pythonhosted.org/packages/23/1b/e318ee76e42d28f515d87356ac5bd7a7acc8bad3b8f54ee377bef62e1cbf/langgraph-1.0.5-py3-none-any.whl", hash = "sha256:b4cfd173dca3c389735b47228ad8b295e6f7b3df779aba3a1e0c23871f81281e", size = 157056, upload-time = "2025-12-12T23:05:46.499Z" },
|
|
258
258
|
]
|
|
259
259
|
|
|
260
260
|
[[package]]
|
|
@@ -272,15 +272,15 @@ wheels = [
|
|
|
272
272
|
|
|
273
273
|
[[package]]
|
|
274
274
|
name = "langgraph-cli"
|
|
275
|
-
version = "0.4.
|
|
275
|
+
version = "0.4.11"
|
|
276
276
|
source = { registry = "https://pypi.org/simple" }
|
|
277
277
|
dependencies = [
|
|
278
278
|
{ name = "click" },
|
|
279
279
|
{ name = "langgraph-sdk" },
|
|
280
280
|
]
|
|
281
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
281
|
+
sdist = { url = "https://files.pythonhosted.org/packages/94/2a/b5d51df0db49bf5dc8860f6f66605ff2f44da664d645b6287ceb24223df4/langgraph_cli-0.4.11.tar.gz", hash = "sha256:c38c531510ace1c2d90f8a15f4bb5b874ca9d07c0564cbda7590730da2b0dff3", size = 837429, upload-time = "2025-12-17T14:13:12.889Z" }
|
|
282
282
|
wheels = [
|
|
283
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
283
|
+
{ url = "https://files.pythonhosted.org/packages/1c/ac/fd0af9c89638e4d99db8d00b6c6fe1a60f27d9d61b0bbe1d4d5300a74b18/langgraph_cli-0.4.11-py3-none-any.whl", hash = "sha256:807cd6e8c5d4fd7160bd44be67f3b5621cb34ec309658072f75852b639b41ca0", size = 41163, upload-time = "2025-12-17T14:13:12.026Z" },
|
|
284
284
|
]
|
|
285
285
|
|
|
286
286
|
[[package]]
|
|
@@ -323,7 +323,7 @@ dev = [
|
|
|
323
323
|
requires-dist = [
|
|
324
324
|
{ name = "blockbuster", specifier = ">=1.5.24,<2.0.0" },
|
|
325
325
|
{ name = "langgraph", specifier = ">=0.4.10,<2" },
|
|
326
|
-
{ name = "langgraph-checkpoint", specifier = ">=3,<
|
|
326
|
+
{ name = "langgraph-checkpoint", specifier = ">=3,<5" },
|
|
327
327
|
{ name = "sse-starlette", specifier = ">=2" },
|
|
328
328
|
{ name = "starlette", specifier = ">=0.37" },
|
|
329
329
|
{ name = "structlog", specifier = ">23" },
|
|
@@ -342,20 +342,20 @@ dev = [
|
|
|
342
342
|
|
|
343
343
|
[[package]]
|
|
344
344
|
name = "langgraph-sdk"
|
|
345
|
-
version = "0.
|
|
345
|
+
version = "0.3.1"
|
|
346
346
|
source = { registry = "https://pypi.org/simple" }
|
|
347
347
|
dependencies = [
|
|
348
348
|
{ name = "httpx" },
|
|
349
349
|
{ name = "orjson" },
|
|
350
350
|
]
|
|
351
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
351
|
+
sdist = { url = "https://files.pythonhosted.org/packages/a9/d3/b6be0b0aba2a53a8920a2b0b4328a83121ec03eea9952e576d06a4182f6f/langgraph_sdk-0.3.1.tar.gz", hash = "sha256:f6dadfd2444eeff3e01405a9005c95fb3a028d4bd954ebec80ea6150084f92bb", size = 130312, upload-time = "2025-12-18T22:11:47.42Z" }
|
|
352
352
|
wheels = [
|
|
353
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
353
|
+
{ url = "https://files.pythonhosted.org/packages/ab/fe/0c1c9c01a154eba62b20b02fabe811fd94a2b810061ae9e4d8462b8cf85a/langgraph_sdk-0.3.1-py3-none-any.whl", hash = "sha256:0b856923bfd20bf3441ce9d03bef488aa333fb610e972618799a9d584436acad", size = 66517, upload-time = "2025-12-18T22:11:46.625Z" },
|
|
354
354
|
]
|
|
355
355
|
|
|
356
356
|
[[package]]
|
|
357
357
|
name = "langsmith"
|
|
358
|
-
version = "0.
|
|
358
|
+
version = "0.6.0"
|
|
359
359
|
source = { registry = "https://pypi.org/simple" }
|
|
360
360
|
dependencies = [
|
|
361
361
|
{ name = "httpx" },
|
|
@@ -367,9 +367,9 @@ dependencies = [
|
|
|
367
367
|
{ name = "uuid-utils" },
|
|
368
368
|
{ name = "zstandard" },
|
|
369
369
|
]
|
|
370
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
370
|
+
sdist = { url = "https://files.pythonhosted.org/packages/5f/48/fb62df712cfd77804999f3bc08e3cba33ecb81064dd2973dd67cd68eaf93/langsmith-0.6.0.tar.gz", hash = "sha256:b60f1785aed4dac5e01f24db01aa18fa1af258bad4531e045e739438daa3f8c2", size = 883012, upload-time = "2026-01-02T18:42:13.721Z" }
|
|
371
371
|
wheels = [
|
|
372
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
372
|
+
{ url = "https://files.pythonhosted.org/packages/10/c6/322df2c18ab462712c968415fb31779ed3e1fd1976357fd78f31f51b2632/langsmith-0.6.0-py3-none-any.whl", hash = "sha256:f7570175aed705b1f4c4dae724c07980a737b8b565252444d11394dda9931e8c", size = 283280, upload-time = "2026-01-02T18:42:11.966Z" },
|
|
373
373
|
]
|
|
374
374
|
|
|
375
375
|
[[package]]
|
|
@@ -516,49 +516,49 @@ wheels = [
|
|
|
516
516
|
|
|
517
517
|
[[package]]
|
|
518
518
|
name = "ormsgpack"
|
|
519
|
-
version = "1.12.
|
|
519
|
+
version = "1.12.1"
|
|
520
520
|
source = { registry = "https://pypi.org/simple" }
|
|
521
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
521
|
+
sdist = { url = "https://files.pythonhosted.org/packages/fe/96/34c40d621996c2f377a18decbd3c59f031dde73c3ba47d1e1e8f29a05aaa/ormsgpack-1.12.1.tar.gz", hash = "sha256:a3877fde1e4f27a39f92681a0aab6385af3a41d0c25375d33590ae20410ea2ac", size = 39476, upload-time = "2025-12-14T07:57:43.248Z" }
|
|
522
522
|
wheels = [
|
|
523
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
524
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
525
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
526
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
527
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
528
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
529
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
530
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
531
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
532
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
533
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
534
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
535
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
536
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
537
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
538
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
539
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
540
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
541
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
542
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
543
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
544
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
545
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
546
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
547
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
548
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
549
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
550
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
551
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
552
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
553
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
554
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
555
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
556
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
557
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
558
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
559
|
-
{ url = "https://files.pythonhosted.org/packages/b3/
|
|
560
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
561
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
523
|
+
{ url = "https://files.pythonhosted.org/packages/57/e2/f5b89365c8dc8025c27d31316038f1c103758ddbf87dc0fa8e3f78f66907/ormsgpack-1.12.1-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:4038f59ae0e19dac5e5d9aae4ec17ff84a79e046342ee73ccdecf3547ecf0d34", size = 376180, upload-time = "2025-12-14T07:56:56.521Z" },
|
|
524
|
+
{ url = "https://files.pythonhosted.org/packages/ca/87/3f694e06f5e32c6d65066f53b4a025282a5072b6b336c17560b00e04606d/ormsgpack-1.12.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16c63b0c5a3eec467e4bb33a14dabba076b7d934dff62898297b5c0b5f7c3cb3", size = 202338, upload-time = "2025-12-14T07:56:57.585Z" },
|
|
525
|
+
{ url = "https://files.pythonhosted.org/packages/e5/f5/6d95d7b7c11f97a92522082fc7e5d1ab34537929f1e13f4c369f392f19d0/ormsgpack-1.12.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:74fd6a8e037eb310dda865298e8d122540af00fe5658ec18b97a1d34f4012e4d", size = 210720, upload-time = "2025-12-14T07:56:58.968Z" },
|
|
526
|
+
{ url = "https://files.pythonhosted.org/packages/2b/9d/9a49a2686f8b7165dcb2342b8554951263c30c0f0825f1fcc2d56e736a6b/ormsgpack-1.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58ad60308e233dd824a1859eabb5fe092e123e885eafa4ad5789322329c80fb5", size = 211264, upload-time = "2025-12-14T07:57:00.099Z" },
|
|
527
|
+
{ url = "https://files.pythonhosted.org/packages/02/31/2fdc36eaeca2182900b96fc7b19755f293283fe681750e3d295733d62f0e/ormsgpack-1.12.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:35127464c941c1219acbe1a220e48d55e7933373d12257202f4042f7044b4c90", size = 386081, upload-time = "2025-12-14T07:57:01.177Z" },
|
|
528
|
+
{ url = "https://files.pythonhosted.org/packages/f0/65/0a765432f08ae26b4013c6a9aed97be17a9ef85f1600948a474b518e27dd/ormsgpack-1.12.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:c48d1c50794692d1e6e3f8c3bb65f5c3acfaae9347e506484a65d60b3d91fb50", size = 479572, upload-time = "2025-12-14T07:57:02.738Z" },
|
|
529
|
+
{ url = "https://files.pythonhosted.org/packages/4e/4f/f2f15ebef786ad71cea420bf8692448fbddf04d1bf3feaa68bd5ee3172e6/ormsgpack-1.12.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b512b2ad6feaaefdc26e05431ed2843e42483041e354e167c53401afaa83d919", size = 387862, upload-time = "2025-12-14T07:57:03.842Z" },
|
|
530
|
+
{ url = "https://files.pythonhosted.org/packages/15/eb/86fbef1d605fa91ecef077f93f9d0e34fc39b23475dfe3ffb92f6c8db28d/ormsgpack-1.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:93f30db95e101a9616323bfc50807ad00e7f6197cea2216d2d24af42afc77d88", size = 115900, upload-time = "2025-12-14T07:57:05.137Z" },
|
|
531
|
+
{ url = "https://files.pythonhosted.org/packages/5b/67/7ba1a46e6a6e263fc42a4fafc24afc1ab21a66116553cad670426f0bd9ef/ormsgpack-1.12.1-cp311-cp311-win_arm64.whl", hash = "sha256:d75b5fa14f6abffce2c392ee03b4731199d8a964c81ee8645c4c79af0e80fd50", size = 109868, upload-time = "2025-12-14T07:57:06.834Z" },
|
|
532
|
+
{ url = "https://files.pythonhosted.org/packages/17/fe/ab9167ca037406b5703add24049cf3e18021a3b16133ea20615b1f160ea4/ormsgpack-1.12.1-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:4d7fb0e1b6fbc701d75269f7405a4f79230a6ce0063fb1092e4f6577e312f86d", size = 376725, upload-time = "2025-12-14T07:57:07.894Z" },
|
|
533
|
+
{ url = "https://files.pythonhosted.org/packages/c7/ea/2820e65f506894c459b840d1091ae6e327fde3d5a3f3b002a11a1b9bdf7d/ormsgpack-1.12.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:43a9353e2db5b024c91a47d864ef15eaa62d81824cfc7740fed4cef7db738694", size = 202466, upload-time = "2025-12-14T07:57:09.049Z" },
|
|
534
|
+
{ url = "https://files.pythonhosted.org/packages/45/8b/def01c13339c5bbec2ee1469ef53e7fadd66c8d775df974ee4def1572515/ormsgpack-1.12.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fc8fe866b7706fc25af0adf1f600bc06ece5b15ca44e34641327198b821e5c3c", size = 210748, upload-time = "2025-12-14T07:57:10.074Z" },
|
|
535
|
+
{ url = "https://files.pythonhosted.org/packages/5d/d2/bf350c92f7f067dd9484499705f2d8366d8d9008a670e3d1d0add1908f85/ormsgpack-1.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:813755b5f598a78242042e05dfd1ada4e769e94b98c9ab82554550f97ff4d641", size = 211510, upload-time = "2025-12-14T07:57:11.165Z" },
|
|
536
|
+
{ url = "https://files.pythonhosted.org/packages/74/92/9d689bcb95304a6da26c4d59439c350940c25d1b35f146d402ccc6344c51/ormsgpack-1.12.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8eea2a13536fae45d78f93f2cc846c9765c7160c85f19cfefecc20873c137cdd", size = 386237, upload-time = "2025-12-14T07:57:12.306Z" },
|
|
537
|
+
{ url = "https://files.pythonhosted.org/packages/17/fe/bd3107547f8b6129265dd957f40b9cd547d2445db2292aacb13335a7ea89/ormsgpack-1.12.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:7a02ebda1a863cbc604740e76faca8eee1add322db2dcbe6cf32669fffdff65c", size = 479589, upload-time = "2025-12-14T07:57:13.475Z" },
|
|
538
|
+
{ url = "https://files.pythonhosted.org/packages/c1/7c/e8e5cc9edb967d44f6f85e9ebdad440b59af3fae00b137a4327dc5aed9bb/ormsgpack-1.12.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3c0bd63897c439931cdf29348e5e6e8c330d529830e848d10767615c0f3d1b82", size = 388077, upload-time = "2025-12-14T07:57:14.551Z" },
|
|
539
|
+
{ url = "https://files.pythonhosted.org/packages/35/6b/5031797e43b58506f28a8760b26dc23f2620fb4f2200c4c1b3045603e67e/ormsgpack-1.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:362f2e812f8d7035dc25a009171e09d7cc97cb30d3c9e75a16aeae00ca3c1dcf", size = 116190, upload-time = "2025-12-14T07:57:15.575Z" },
|
|
540
|
+
{ url = "https://files.pythonhosted.org/packages/1e/fd/9f43ea6425e383a6b2dbfafebb06fd60e8d68c700ef715adfbcdb499f75d/ormsgpack-1.12.1-cp312-cp312-win_arm64.whl", hash = "sha256:6190281e381db2ed0045052208f47a995ccf61eed48f1215ae3cce3fbccd59c5", size = 109990, upload-time = "2025-12-14T07:57:16.419Z" },
|
|
541
|
+
{ url = "https://files.pythonhosted.org/packages/11/42/f110dfe7cf23a52a82e23eb23d9a6a76ae495447d474686dfa758f3d71d6/ormsgpack-1.12.1-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:9663d6b3ecc917c063d61a99169ce196a80f3852e541ae404206836749459279", size = 376746, upload-time = "2025-12-14T07:57:17.699Z" },
|
|
542
|
+
{ url = "https://files.pythonhosted.org/packages/11/76/b386e508a8ae207daec240201a81adb26467bf99b163560724e86bd9ff33/ormsgpack-1.12.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32e85cfbaf01a94a92520e7fe7851cfcfe21a5698299c28ab86194895f9b9233", size = 202489, upload-time = "2025-12-14T07:57:18.807Z" },
|
|
543
|
+
{ url = "https://files.pythonhosted.org/packages/ea/0e/5db7a63f387149024572daa3d9512fe8fb14bf4efa0722d6d491bed280e7/ormsgpack-1.12.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dabfd2c24b59c7c69870a5ecee480dfae914a42a0c2e7c9d971cf531e2ba471a", size = 210757, upload-time = "2025-12-14T07:57:19.893Z" },
|
|
544
|
+
{ url = "https://files.pythonhosted.org/packages/64/79/3a9899e57cb57430bd766fc1b4c9ad410cb2ba6070bc8cf6301e7d385768/ormsgpack-1.12.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51bbf2b64afeded34ccd8e25402e4bca038757913931fa0d693078d75563f6f9", size = 211518, upload-time = "2025-12-14T07:57:20.972Z" },
|
|
545
|
+
{ url = "https://files.pythonhosted.org/packages/d7/cd/4f41710ae9fe50d7fcbe476793b3c487746d0e1cc194cc0fee42ff6d989b/ormsgpack-1.12.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9959a71dde1bd0ced84af17facc06a8afada495a34e9cb1bad8e9b20d4c59cef", size = 386251, upload-time = "2025-12-14T07:57:22.099Z" },
|
|
546
|
+
{ url = "https://files.pythonhosted.org/packages/bf/54/ba0c97d6231b1f01daafaa520c8cce1e1b7fceaae6fdc1c763925874a7de/ormsgpack-1.12.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:e9be0e3b62d758f21f5b20e0e06b3a240ec546c4a327bf771f5825462aa74714", size = 479607, upload-time = "2025-12-14T07:57:23.525Z" },
|
|
547
|
+
{ url = "https://files.pythonhosted.org/packages/18/75/19a9a97a462776d525baf41cfb7072734528775f0a3d5fbfab3aa7756b9b/ormsgpack-1.12.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a29d49ab7fdd77ea787818e60cb4ef491708105b9c4c9b0f919201625eb036b5", size = 388062, upload-time = "2025-12-14T07:57:24.616Z" },
|
|
548
|
+
{ url = "https://files.pythonhosted.org/packages/a8/6a/ec26e3f44e9632ecd2f43638b7b37b500eaea5d79cab984ad0b94be14f82/ormsgpack-1.12.1-cp313-cp313-win_amd64.whl", hash = "sha256:c418390b47a1d367e803f6c187f77e4d67c7ae07ba962e3a4a019001f4b0291a", size = 116195, upload-time = "2025-12-14T07:57:25.626Z" },
|
|
549
|
+
{ url = "https://files.pythonhosted.org/packages/7d/64/bfa5f4a34d0f15c6aba1b73e73f7441a66d635bd03249d334a4796b7a924/ormsgpack-1.12.1-cp313-cp313-win_arm64.whl", hash = "sha256:cfa22c91cffc10a7fbd43729baff2de7d9c28cef2509085a704168ae31f02568", size = 109986, upload-time = "2025-12-14T07:57:26.569Z" },
|
|
550
|
+
{ url = "https://files.pythonhosted.org/packages/87/0e/78e5697164e3223b9b216c13e99f1acbc1ee9833490d68842b13da8ba883/ormsgpack-1.12.1-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:b93c91efb1a70751a1902a5b43b27bd8fd38e0ca0365cf2cde2716423c15c3a6", size = 376758, upload-time = "2025-12-14T07:57:27.641Z" },
|
|
551
|
+
{ url = "https://files.pythonhosted.org/packages/2c/0e/3a3cbb64703263d7bbaed7effa3ce78cb9add360a60aa7c544d7df28b641/ormsgpack-1.12.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cf0ea0389167b5fa8d2933dd3f33e887ec4ba68f89c25214d7eec4afd746d22", size = 202487, upload-time = "2025-12-14T07:57:29.051Z" },
|
|
552
|
+
{ url = "https://files.pythonhosted.org/packages/d7/2c/807ebe2b77995599bbb1dec8c3f450d5d7dddee14ce3e1e71dc60e2e2a74/ormsgpack-1.12.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f4c29af837f35af3375070689e781161e7cf019eb2f7cd641734ae45cd001c0d", size = 210853, upload-time = "2025-12-14T07:57:30.508Z" },
|
|
553
|
+
{ url = "https://files.pythonhosted.org/packages/25/57/2cdfc354e3ad8e847628f511f4d238799d90e9e090941e50b9d5ba955ae2/ormsgpack-1.12.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:336fc65aa0fe65896a3dabaae31e332a0a98b4a00ad7b0afde21a7505fd23ff3", size = 211545, upload-time = "2025-12-14T07:57:31.585Z" },
|
|
554
|
+
{ url = "https://files.pythonhosted.org/packages/76/1d/c6fda560e4a8ff865b3aec8a86f7c95ab53f4532193a6ae4ab9db35f85aa/ormsgpack-1.12.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:940f60aabfefe71dd6b82cb33f4ff10b2e7f5fcfa5f103cdb0a23b6aae4c713c", size = 386333, upload-time = "2025-12-14T07:57:32.957Z" },
|
|
555
|
+
{ url = "https://files.pythonhosted.org/packages/fc/3e/715081b36fceb8b497c68b87d384e1cc6d9c9c130ce3b435634d3d785b86/ormsgpack-1.12.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:596ad9e1b6d4c95595c54aaf49b1392609ca68f562ce06f4f74a5bc4053bcda4", size = 479701, upload-time = "2025-12-14T07:57:34.686Z" },
|
|
556
|
+
{ url = "https://files.pythonhosted.org/packages/6d/cf/01ad04def42b3970fc1a302c07f4b46339edf62ef9650247097260471f40/ormsgpack-1.12.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:575210e8fcbc7b0375026ba040a5eef223e9f66a4453d9623fc23282ae09c3c8", size = 388148, upload-time = "2025-12-14T07:57:35.771Z" },
|
|
557
|
+
{ url = "https://files.pythonhosted.org/packages/15/91/1fff2fc2b5943c740028f339154e7103c8f2edf1a881d9fbba2ce11c3b1d/ormsgpack-1.12.1-cp314-cp314-win_amd64.whl", hash = "sha256:647daa3718572280893456be44c60aea6690b7f2edc54c55648ee66e8f06550f", size = 116201, upload-time = "2025-12-14T07:57:36.763Z" },
|
|
558
|
+
{ url = "https://files.pythonhosted.org/packages/ed/66/142b542aed3f96002c7d1c33507ca6e1e0d0a42b9253ab27ef7ed5793bd9/ormsgpack-1.12.1-cp314-cp314-win_arm64.whl", hash = "sha256:a8b3ab762a6deaf1b6490ab46dda0c51528cf8037e0246c40875c6fe9e37b699", size = 110029, upload-time = "2025-12-14T07:57:37.703Z" },
|
|
559
|
+
{ url = "https://files.pythonhosted.org/packages/38/b3/ef4494438c90359e1547eaed3c5ec46e2c431d59a3de2af4e70ebd594c49/ormsgpack-1.12.1-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:12087214e436c1f6c28491949571abea759a63111908c4f7266586d78144d7a8", size = 376777, upload-time = "2025-12-14T07:57:38.795Z" },
|
|
560
|
+
{ url = "https://files.pythonhosted.org/packages/05/a0/1149a7163f8b0dfbc64bf9099b6f16d102ad3b03bcc11afee198d751da2d/ormsgpack-1.12.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e6d54c14cf86ef13f10ccade94d1e7de146aa9b17d371e18b16e95f329393b7", size = 202490, upload-time = "2025-12-14T07:57:40.168Z" },
|
|
561
|
+
{ url = "https://files.pythonhosted.org/packages/68/82/f2ec5e758d6a7106645cca9bb7137d98bce5d363789fa94075be6572057c/ormsgpack-1.12.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f3584d07882b7ea2a1a589f795a3af97fe4c2932b739408e6d1d9d286cad862", size = 211733, upload-time = "2025-12-14T07:57:42.253Z" },
|
|
562
562
|
]
|
|
563
563
|
|
|
564
564
|
[[package]]
|
|
@@ -754,14 +754,14 @@ wheels = [
|
|
|
754
754
|
|
|
755
755
|
[[package]]
|
|
756
756
|
name = "pytest-watcher"
|
|
757
|
-
version = "0.
|
|
757
|
+
version = "0.6.2"
|
|
758
758
|
source = { registry = "https://pypi.org/simple" }
|
|
759
759
|
dependencies = [
|
|
760
760
|
{ name = "watchdog" },
|
|
761
761
|
]
|
|
762
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
762
|
+
sdist = { url = "https://files.pythonhosted.org/packages/14/e9/1d8fbe021f75b7f74a544b27bf893da44b2fe84199e2215fb648525b8f58/pytest_watcher-0.6.2.tar.gz", hash = "sha256:41f1fd244ee210d9399c57107692680ca02e519e3218be57d9b1c7a194dc87b1", size = 600866, upload-time = "2025-12-28T15:33:59.443Z" }
|
|
763
763
|
wheels = [
|
|
764
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
764
|
+
{ url = "https://files.pythonhosted.org/packages/c4/3b/fd2bedafb1f4140b00230a4f46c50cebd65661b12f31d8201d24c9487564/pytest_watcher-0.6.2-py3-none-any.whl", hash = "sha256:c8cdf38db7b61f28a6657cf84ffbe856330e6fe619055000f27e87b8dc083c30", size = 11566, upload-time = "2025-12-28T15:33:58.257Z" },
|
|
765
765
|
]
|
|
766
766
|
|
|
767
767
|
[[package]]
|
|
@@ -848,40 +848,41 @@ wheels = [
|
|
|
848
848
|
|
|
849
849
|
[[package]]
|
|
850
850
|
name = "ruff"
|
|
851
|
-
version = "0.14.
|
|
851
|
+
version = "0.14.10"
|
|
852
852
|
source = { registry = "https://pypi.org/simple" }
|
|
853
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
853
|
+
sdist = { url = "https://files.pythonhosted.org/packages/57/08/52232a877978dd8f9cf2aeddce3e611b40a63287dfca29b6b8da791f5e8d/ruff-0.14.10.tar.gz", hash = "sha256:9a2e830f075d1a42cd28420d7809ace390832a490ed0966fe373ba288e77aaf4", size = 5859763, upload-time = "2025-12-18T19:28:57.98Z" }
|
|
854
854
|
wheels = [
|
|
855
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
856
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
857
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
858
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
859
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
860
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
861
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
862
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
863
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
864
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
865
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
866
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
867
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
868
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
869
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
870
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
871
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
872
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
855
|
+
{ url = "https://files.pythonhosted.org/packages/60/01/933704d69f3f05ee16ef11406b78881733c186fe14b6a46b05cfcaf6d3b2/ruff-0.14.10-py3-none-linux_armv6l.whl", hash = "sha256:7a3ce585f2ade3e1f29ec1b92df13e3da262178df8c8bdf876f48fa0e8316c49", size = 13527080, upload-time = "2025-12-18T19:29:25.642Z" },
|
|
856
|
+
{ url = "https://files.pythonhosted.org/packages/df/58/a0349197a7dfa603ffb7f5b0470391efa79ddc327c1e29c4851e85b09cc5/ruff-0.14.10-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:674f9be9372907f7257c51f1d4fc902cb7cf014b9980152b802794317941f08f", size = 13797320, upload-time = "2025-12-18T19:29:02.571Z" },
|
|
857
|
+
{ url = "https://files.pythonhosted.org/packages/7b/82/36be59f00a6082e38c23536df4e71cdbc6af8d7c707eade97fcad5c98235/ruff-0.14.10-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d85713d522348837ef9df8efca33ccb8bd6fcfc86a2cde3ccb4bc9d28a18003d", size = 12918434, upload-time = "2025-12-18T19:28:51.202Z" },
|
|
858
|
+
{ url = "https://files.pythonhosted.org/packages/a6/00/45c62a7f7e34da92a25804f813ebe05c88aa9e0c25e5cb5a7d23dd7450e3/ruff-0.14.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6987ebe0501ae4f4308d7d24e2d0fe3d7a98430f5adfd0f1fead050a740a3a77", size = 13371961, upload-time = "2025-12-18T19:29:04.991Z" },
|
|
859
|
+
{ url = "https://files.pythonhosted.org/packages/40/31/a5906d60f0405f7e57045a70f2d57084a93ca7425f22e1d66904769d1628/ruff-0.14.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16a01dfb7b9e4eee556fbfd5392806b1b8550c9b4a9f6acd3dbe6812b193c70a", size = 13275629, upload-time = "2025-12-18T19:29:21.381Z" },
|
|
860
|
+
{ url = "https://files.pythonhosted.org/packages/3e/60/61c0087df21894cf9d928dc04bcd4fb10e8b2e8dca7b1a276ba2155b2002/ruff-0.14.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7165d31a925b7a294465fa81be8c12a0e9b60fb02bf177e79067c867e71f8b1f", size = 14029234, upload-time = "2025-12-18T19:29:00.132Z" },
|
|
861
|
+
{ url = "https://files.pythonhosted.org/packages/44/84/77d911bee3b92348b6e5dab5a0c898d87084ea03ac5dc708f46d88407def/ruff-0.14.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c561695675b972effb0c0a45db233f2c816ff3da8dcfbe7dfc7eed625f218935", size = 15449890, upload-time = "2025-12-18T19:28:53.573Z" },
|
|
862
|
+
{ url = "https://files.pythonhosted.org/packages/e9/36/480206eaefa24a7ec321582dda580443a8f0671fdbf6b1c80e9c3e93a16a/ruff-0.14.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4bb98fcbbc61725968893682fd4df8966a34611239c9fd07a1f6a07e7103d08e", size = 15123172, upload-time = "2025-12-18T19:29:23.453Z" },
|
|
863
|
+
{ url = "https://files.pythonhosted.org/packages/5c/38/68e414156015ba80cef5473d57919d27dfb62ec804b96180bafdeaf0e090/ruff-0.14.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f24b47993a9d8cb858429e97bdf8544c78029f09b520af615c1d261bf827001d", size = 14460260, upload-time = "2025-12-18T19:29:27.808Z" },
|
|
864
|
+
{ url = "https://files.pythonhosted.org/packages/b3/19/9e050c0dca8aba824d67cc0db69fb459c28d8cd3f6855b1405b3f29cc91d/ruff-0.14.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59aabd2e2c4fd614d2862e7939c34a532c04f1084476d6833dddef4afab87e9f", size = 14229978, upload-time = "2025-12-18T19:29:11.32Z" },
|
|
865
|
+
{ url = "https://files.pythonhosted.org/packages/51/eb/e8dd1dd6e05b9e695aa9dd420f4577debdd0f87a5ff2fedda33c09e9be8c/ruff-0.14.10-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:213db2b2e44be8625002dbea33bb9c60c66ea2c07c084a00d55732689d697a7f", size = 14338036, upload-time = "2025-12-18T19:29:09.184Z" },
|
|
866
|
+
{ url = "https://files.pythonhosted.org/packages/6a/12/f3e3a505db7c19303b70af370d137795fcfec136d670d5de5391e295c134/ruff-0.14.10-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:b914c40ab64865a17a9a5b67911d14df72346a634527240039eb3bd650e5979d", size = 13264051, upload-time = "2025-12-18T19:29:13.431Z" },
|
|
867
|
+
{ url = "https://files.pythonhosted.org/packages/08/64/8c3a47eaccfef8ac20e0484e68e0772013eb85802f8a9f7603ca751eb166/ruff-0.14.10-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:1484983559f026788e3a5c07c81ef7d1e97c1c78ed03041a18f75df104c45405", size = 13283998, upload-time = "2025-12-18T19:29:06.994Z" },
|
|
868
|
+
{ url = "https://files.pythonhosted.org/packages/12/84/534a5506f4074e5cc0529e5cd96cfc01bb480e460c7edf5af70d2bcae55e/ruff-0.14.10-py3-none-musllinux_1_2_i686.whl", hash = "sha256:c70427132db492d25f982fffc8d6c7535cc2fd2c83fc8888f05caaa248521e60", size = 13601891, upload-time = "2025-12-18T19:28:55.811Z" },
|
|
869
|
+
{ url = "https://files.pythonhosted.org/packages/0d/1e/14c916087d8598917dbad9b2921d340f7884824ad6e9c55de948a93b106d/ruff-0.14.10-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5bcf45b681e9f1ee6445d317ce1fa9d6cba9a6049542d1c3d5b5958986be8830", size = 14336660, upload-time = "2025-12-18T19:29:16.531Z" },
|
|
870
|
+
{ url = "https://files.pythonhosted.org/packages/f2/1c/d7b67ab43f30013b47c12b42d1acd354c195351a3f7a1d67f59e54227ede/ruff-0.14.10-py3-none-win32.whl", hash = "sha256:104c49fc7ab73f3f3a758039adea978869a918f31b73280db175b43a2d9b51d6", size = 13196187, upload-time = "2025-12-18T19:29:19.006Z" },
|
|
871
|
+
{ url = "https://files.pythonhosted.org/packages/fb/9c/896c862e13886fae2af961bef3e6312db9ebc6adc2b156fe95e615dee8c1/ruff-0.14.10-py3-none-win_amd64.whl", hash = "sha256:466297bd73638c6bdf06485683e812db1c00c7ac96d4ddd0294a338c62fdc154", size = 14661283, upload-time = "2025-12-18T19:29:30.16Z" },
|
|
872
|
+
{ url = "https://files.pythonhosted.org/packages/74/31/b0e29d572670dca3674eeee78e418f20bdf97fa8aa9ea71380885e175ca0/ruff-0.14.10-py3-none-win_arm64.whl", hash = "sha256:e51d046cf6dda98a4633b8a8a771451107413b0f07183b2bef03f075599e44e6", size = 13729839, upload-time = "2025-12-18T19:28:48.636Z" },
|
|
873
873
|
]
|
|
874
874
|
|
|
875
875
|
[[package]]
|
|
876
876
|
name = "sse-starlette"
|
|
877
|
-
version = "3.
|
|
877
|
+
version = "3.1.2"
|
|
878
878
|
source = { registry = "https://pypi.org/simple" }
|
|
879
879
|
dependencies = [
|
|
880
880
|
{ name = "anyio" },
|
|
881
|
+
{ name = "starlette" },
|
|
881
882
|
]
|
|
882
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
883
|
+
sdist = { url = "https://files.pythonhosted.org/packages/da/34/f5df66cb383efdbf4f2db23cabb27f51b1dcb737efaf8a558f6f1d195134/sse_starlette-3.1.2.tar.gz", hash = "sha256:55eff034207a83a0eb86de9a68099bd0157838f0b8b999a1b742005c71e33618", size = 26303, upload-time = "2025-12-31T08:02:20.023Z" }
|
|
883
884
|
wheels = [
|
|
884
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
885
|
+
{ url = "https://files.pythonhosted.org/packages/b7/95/8c4b76eec9ae574474e5d2997557cebf764bcd3586458956c30631ae08f4/sse_starlette-3.1.2-py3-none-any.whl", hash = "sha256:cd800dd349f4521b317b9391d3796fa97b71748a4da9b9e00aafab32dda375c8", size = 12484, upload-time = "2025-12-31T08:02:18.894Z" },
|
|
885
886
|
]
|
|
886
887
|
|
|
887
888
|
[[package]]
|
|
@@ -938,11 +939,11 @@ wheels = [
|
|
|
938
939
|
|
|
939
940
|
[[package]]
|
|
940
941
|
name = "urllib3"
|
|
941
|
-
version = "2.6.
|
|
942
|
+
version = "2.6.2"
|
|
942
943
|
source = { registry = "https://pypi.org/simple" }
|
|
943
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
944
|
+
sdist = { url = "https://files.pythonhosted.org/packages/1e/24/a2a2ed9addd907787d7aa0355ba36a6cadf1768b934c652ea78acbd59dcd/urllib3-2.6.2.tar.gz", hash = "sha256:016f9c98bb7e98085cb2b4b17b87d2c702975664e4f060c6532e64d1c1a5e797", size = 432930, upload-time = "2025-12-11T15:56:40.252Z" }
|
|
944
945
|
wheels = [
|
|
945
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
946
|
+
{ url = "https://files.pythonhosted.org/packages/6d/b9/4095b668ea3678bf6a0af005527f39de12fb026516fb3df17495a733b7f8/urllib3-2.6.2-py3-none-any.whl", hash = "sha256:ec21cddfe7724fc7cb4ba4bea7aa8e2ef36f607a4bab81aa6ce42a13dc3f03dd", size = 131182, upload-time = "2025-12-11T15:56:38.584Z" },
|
|
946
947
|
]
|
|
947
948
|
|
|
948
949
|
[[package]]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_runtime_inmem-0.20.0 → langgraph_runtime_inmem-0.21.0}/langgraph_runtime_inmem/metrics.py
RENAMED
|
File without changes
|
{langgraph_runtime_inmem-0.20.0 → langgraph_runtime_inmem-0.21.0}/langgraph_runtime_inmem/queue.py
RENAMED
|
File without changes
|
{langgraph_runtime_inmem-0.20.0 → langgraph_runtime_inmem-0.21.0}/langgraph_runtime_inmem/retry.py
RENAMED
|
File without changes
|
{langgraph_runtime_inmem-0.20.0 → langgraph_runtime_inmem-0.21.0}/langgraph_runtime_inmem/store.py
RENAMED
|
File without changes
|