langgraph-runtime-inmem 0.22.0__tar.gz → 0.23.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.22.0 → langgraph_runtime_inmem-0.23.0}/.gitignore +4 -1
- {langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/PKG-INFO +1 -1
- {langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/langgraph_runtime_inmem/__init__.py +1 -1
- langgraph_runtime_inmem-0.23.0/langgraph_runtime_inmem/_persistence.py +58 -0
- {langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/langgraph_runtime_inmem/checkpoint.py +37 -11
- {langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/langgraph_runtime_inmem/database.py +5 -0
- {langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/langgraph_runtime_inmem/lifespan.py +5 -0
- {langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/langgraph_runtime_inmem/ops.py +86 -42
- {langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/langgraph_runtime_inmem/store.py +4 -0
- {langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/uv.lock +121 -120
- {langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/Makefile +0 -0
- {langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/README.md +0 -0
- {langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/langgraph_runtime_inmem/inmem_stream.py +0 -0
- {langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/langgraph_runtime_inmem/metrics.py +0 -0
- {langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/langgraph_runtime_inmem/queue.py +0 -0
- {langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/langgraph_runtime_inmem/retry.py +0 -0
- {langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/langgraph_runtime_inmem/routes.py +0 -0
- {langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/pyproject.toml +0 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"""Periodic flushing for all PersistentDict stores."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import functools
|
|
6
|
+
import logging
|
|
7
|
+
import threading
|
|
8
|
+
import weakref
|
|
9
|
+
|
|
10
|
+
from langgraph.checkpoint.memory import PersistentDict
|
|
11
|
+
|
|
12
|
+
logger = logging.getLogger(__name__)
|
|
13
|
+
|
|
14
|
+
_stores: dict[str, weakref.ref[PersistentDict]] = {}
|
|
15
|
+
_flush_thread: tuple[threading.Event, threading.Thread] | None = None
|
|
16
|
+
_flush_interval: int = 10
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def register_persistent_dict(d: PersistentDict) -> None:
|
|
20
|
+
"""Register a PersistentDict for periodic flushing."""
|
|
21
|
+
global _flush_thread
|
|
22
|
+
_stores[d.filename] = weakref.ref(d)
|
|
23
|
+
if _flush_thread is None:
|
|
24
|
+
logger.info("Starting dev persistence flush loop")
|
|
25
|
+
stop_event = threading.Event()
|
|
26
|
+
_flush_thread = (
|
|
27
|
+
stop_event,
|
|
28
|
+
threading.Thread(
|
|
29
|
+
target=functools.partial(_flush_loop, stop_event), daemon=True
|
|
30
|
+
),
|
|
31
|
+
)
|
|
32
|
+
_flush_thread[1].start()
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def stop_flush_loop() -> None:
|
|
36
|
+
"""Stop the background flush thread."""
|
|
37
|
+
global _flush_thread
|
|
38
|
+
if _flush_thread is not None:
|
|
39
|
+
logger.info("Stopping dev persistence flush loop")
|
|
40
|
+
_flush_thread[0].set()
|
|
41
|
+
_flush_thread[1].join()
|
|
42
|
+
_flush_thread = None
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def _flush_loop(stop_event: threading.Event) -> None:
|
|
46
|
+
drop = set()
|
|
47
|
+
while not stop_event.wait(timeout=_flush_interval):
|
|
48
|
+
keys = list(_stores.keys())
|
|
49
|
+
for store_key in keys:
|
|
50
|
+
if store := _stores[store_key]():
|
|
51
|
+
store.sync()
|
|
52
|
+
else:
|
|
53
|
+
drop.add(store_key)
|
|
54
|
+
if drop:
|
|
55
|
+
for store_key in drop:
|
|
56
|
+
del _stores[store_key]
|
|
57
|
+
drop.clear()
|
|
58
|
+
logger.info("dev persistence flush loop exiting")
|
|
@@ -4,10 +4,21 @@ import logging
|
|
|
4
4
|
import os
|
|
5
5
|
import typing
|
|
6
6
|
import uuid
|
|
7
|
-
from collections
|
|
7
|
+
from collections import defaultdict
|
|
8
|
+
from collections.abc import AsyncIterator, Callable
|
|
8
9
|
from typing import Any
|
|
9
10
|
|
|
10
|
-
from langgraph.checkpoint.memory import
|
|
11
|
+
from langgraph.checkpoint.memory import (
|
|
12
|
+
InMemorySaver as InMemorySaverBase,
|
|
13
|
+
)
|
|
14
|
+
from langgraph.checkpoint.memory import (
|
|
15
|
+
PersistentDict,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
from langgraph_runtime_inmem._persistence import (
|
|
19
|
+
register_persistent_dict,
|
|
20
|
+
stop_flush_loop,
|
|
21
|
+
)
|
|
11
22
|
|
|
12
23
|
if typing.TYPE_CHECKING:
|
|
13
24
|
from langchain_core.runnables import RunnableConfig
|
|
@@ -37,13 +48,15 @@ DISABLE_FILE_PERSISTENCE = (
|
|
|
37
48
|
)
|
|
38
49
|
|
|
39
50
|
|
|
40
|
-
class InMemorySaver(
|
|
51
|
+
class InMemorySaver(InMemorySaverBase):
|
|
41
52
|
def __init__(
|
|
42
53
|
self,
|
|
43
54
|
*,
|
|
44
55
|
serde: SerializerProtocol | None = None,
|
|
56
|
+
__persistence_hook__: Callable[[PersistentDict], None] | None = None,
|
|
45
57
|
) -> None:
|
|
46
58
|
self.filename = os.path.join(".langgraph_api", ".langgraph_checkpoint.")
|
|
59
|
+
self.latest_iter: AsyncIterator[CheckpointTuple] | None = None
|
|
47
60
|
i = 0
|
|
48
61
|
|
|
49
62
|
def factory(*args):
|
|
@@ -54,6 +67,8 @@ class InMemorySaver(MemorySaver):
|
|
|
54
67
|
os.mkdir(".langgraph_api")
|
|
55
68
|
thisfname = self.filename + str(i) + ".pckl"
|
|
56
69
|
d = PersistentDict(*args, filename=thisfname)
|
|
70
|
+
if __persistence_hook__:
|
|
71
|
+
__persistence_hook__(d)
|
|
57
72
|
|
|
58
73
|
try:
|
|
59
74
|
d.load()
|
|
@@ -84,7 +99,7 @@ class InMemorySaver(MemorySaver):
|
|
|
84
99
|
|
|
85
100
|
super().__init__(
|
|
86
101
|
serde=serde if serde is not None else Serializer(),
|
|
87
|
-
factory=factory if not DISABLE_FILE_PERSISTENCE else
|
|
102
|
+
factory=factory if not DISABLE_FILE_PERSISTENCE else defaultdict,
|
|
88
103
|
)
|
|
89
104
|
|
|
90
105
|
def put(
|
|
@@ -147,12 +162,10 @@ class InMemorySaver(MemorySaver):
|
|
|
147
162
|
|
|
148
163
|
if not api_config.LANGGRAPH_ENCRYPTION:
|
|
149
164
|
return data
|
|
150
|
-
from langgraph_api.
|
|
151
|
-
from langgraph_api.encryption import
|
|
165
|
+
from langgraph_api.encryption import get_encryption
|
|
166
|
+
from langgraph_api.encryption.middleware import decrypt_json_if_needed
|
|
152
167
|
|
|
153
|
-
result = await decrypt_json_if_needed(
|
|
154
|
-
data, get_encryption_instance(), "checkpoint"
|
|
155
|
-
)
|
|
168
|
+
result = await decrypt_json_if_needed(data, get_encryption(), "checkpoint")
|
|
156
169
|
if result is None:
|
|
157
170
|
raise ValueError("decrypt_json_if_needed returned None for non-None input")
|
|
158
171
|
return result
|
|
@@ -199,6 +212,15 @@ class InMemorySaver(MemorySaver):
|
|
|
199
212
|
pending_writes=tuple_.pending_writes,
|
|
200
213
|
)
|
|
201
214
|
|
|
215
|
+
async def __aexit__(self, exc_type, exc_val, exc_tb):
|
|
216
|
+
stop_flush_loop()
|
|
217
|
+
await super().__aexit__(exc_type, exc_val, exc_tb)
|
|
218
|
+
|
|
219
|
+
async def aget_iter(self, config: RunnableConfig) -> AsyncIterator[CheckpointTuple]:
|
|
220
|
+
tup = await self.aget_tuple(config)
|
|
221
|
+
if tup is not None:
|
|
222
|
+
yield tup
|
|
223
|
+
|
|
202
224
|
|
|
203
225
|
MEMORY = None
|
|
204
226
|
|
|
@@ -206,12 +228,16 @@ MEMORY = None
|
|
|
206
228
|
def Checkpointer(*args, unpack_hook=None, **kwargs):
|
|
207
229
|
global MEMORY
|
|
208
230
|
if MEMORY is None:
|
|
209
|
-
MEMORY = InMemorySaver(
|
|
231
|
+
MEMORY = InMemorySaver(
|
|
232
|
+
__persistence_hook__=register_persistent_dict,
|
|
233
|
+
)
|
|
210
234
|
if unpack_hook is not None:
|
|
211
235
|
from langgraph_api.serde import Serializer
|
|
212
236
|
|
|
213
237
|
saver = InMemorySaver(
|
|
214
|
-
serde=Serializer(__unpack_ext_hook__=unpack_hook),
|
|
238
|
+
serde=Serializer(__unpack_ext_hook__=unpack_hook),
|
|
239
|
+
__persistence_hook__=register_persistent_dict,
|
|
240
|
+
**kwargs,
|
|
215
241
|
)
|
|
216
242
|
saver.writes = MEMORY.writes
|
|
217
243
|
saver.blobs = MEMORY.blobs
|
|
@@ -13,6 +13,7 @@ from langgraph.checkpoint.memory import PersistentDict
|
|
|
13
13
|
from typing_extensions import TypedDict
|
|
14
14
|
|
|
15
15
|
from langgraph_runtime_inmem import store
|
|
16
|
+
from langgraph_runtime_inmem._persistence import register_persistent_dict
|
|
16
17
|
from langgraph_runtime_inmem.inmem_stream import start_stream, stop_stream
|
|
17
18
|
|
|
18
19
|
if TYPE_CHECKING:
|
|
@@ -114,6 +115,10 @@ class InMemoryRetryCounter:
|
|
|
114
115
|
GLOBAL_RETRY_COUNTER = InMemoryRetryCounter()
|
|
115
116
|
GLOBAL_STORE = GlobalStore(filename=OPS_FILENAME)
|
|
116
117
|
|
|
118
|
+
# Register for periodic flushing
|
|
119
|
+
register_persistent_dict(GLOBAL_STORE)
|
|
120
|
+
register_persistent_dict(GLOBAL_RETRY_COUNTER._counters)
|
|
121
|
+
|
|
117
122
|
|
|
118
123
|
class InMemConnectionProto:
|
|
119
124
|
def __init__(self):
|
|
@@ -30,6 +30,9 @@ async def lifespan(
|
|
|
30
30
|
):
|
|
31
31
|
import langgraph_api.config as config
|
|
32
32
|
from langgraph_api import __version__, feature_flags, graph, thread_ttl
|
|
33
|
+
from langgraph_api import (
|
|
34
|
+
_checkpointer as api_checkpointer,
|
|
35
|
+
)
|
|
33
36
|
from langgraph_api import store as api_store
|
|
34
37
|
from langgraph_api.asyncio import SimpleTaskGroup, set_event_loop
|
|
35
38
|
from langgraph_api.http import start_http_client, stop_http_client
|
|
@@ -54,6 +57,7 @@ async def lifespan(
|
|
|
54
57
|
|
|
55
58
|
await start_http_client()
|
|
56
59
|
await start_pool()
|
|
60
|
+
await api_checkpointer.start_checkpointer()
|
|
57
61
|
await start_ui_bundler()
|
|
58
62
|
|
|
59
63
|
async def _log_graph_load_failure(err: graph.GraphLoadError) -> None:
|
|
@@ -119,6 +123,7 @@ async def lifespan(
|
|
|
119
123
|
pass
|
|
120
124
|
finally:
|
|
121
125
|
await api_store.exit_store()
|
|
126
|
+
await api_checkpointer.exit_checkpointer()
|
|
122
127
|
await stop_ui_bundler()
|
|
123
128
|
await graph.stop_remote_graphs()
|
|
124
129
|
await stop_http_client()
|
{langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/langgraph_runtime_inmem/ops.py
RENAMED
|
@@ -10,7 +10,7 @@ import typing
|
|
|
10
10
|
import uuid
|
|
11
11
|
from collections import defaultdict
|
|
12
12
|
from collections.abc import AsyncIterator, Sequence
|
|
13
|
-
from contextlib import asynccontextmanager
|
|
13
|
+
from contextlib import AsyncExitStack, asynccontextmanager
|
|
14
14
|
from datetime import UTC, datetime, timedelta
|
|
15
15
|
from typing import Any, Literal, cast
|
|
16
16
|
from uuid import UUID, uuid4
|
|
@@ -150,6 +150,8 @@ class Assistants(Authenticated):
|
|
|
150
150
|
select: list[AssistantSelectField] | None = None,
|
|
151
151
|
ctx: Auth.types.BaseAuthContext | None = None,
|
|
152
152
|
) -> tuple[AsyncIterator[Assistant], int]:
|
|
153
|
+
from langgraph_api.graph import assert_graph_exists
|
|
154
|
+
|
|
153
155
|
metadata = metadata if metadata is not None else {}
|
|
154
156
|
filters = await Assistants.handle_event(
|
|
155
157
|
ctx,
|
|
@@ -159,6 +161,9 @@ class Assistants(Authenticated):
|
|
|
159
161
|
),
|
|
160
162
|
)
|
|
161
163
|
|
|
164
|
+
if graph_id is not None:
|
|
165
|
+
assert_graph_exists(graph_id)
|
|
166
|
+
|
|
162
167
|
# Get all assistants and filter them
|
|
163
168
|
assistants = conn.store["assistants"]
|
|
164
169
|
filtered_assistants = [
|
|
@@ -250,7 +255,7 @@ class Assistants(Authenticated):
|
|
|
250
255
|
description: str | None = None,
|
|
251
256
|
) -> AsyncIterator[Assistant]:
|
|
252
257
|
"""Insert an assistant."""
|
|
253
|
-
from langgraph_api.graph import
|
|
258
|
+
from langgraph_api.graph import assert_graph_exists
|
|
254
259
|
|
|
255
260
|
assistant_id = _ensure_uuid(assistant_id)
|
|
256
261
|
metadata = metadata if metadata is not None else {}
|
|
@@ -273,8 +278,7 @@ class Assistants(Authenticated):
|
|
|
273
278
|
detail="Cannot specify both configurable and context. Prefer setting context alone. Context was introduced in LangGraph 0.6.0 and is the long term planned replacement for configurable.",
|
|
274
279
|
)
|
|
275
280
|
|
|
276
|
-
|
|
277
|
-
raise HTTPException(status_code=404, detail=f"Graph {graph_id} not found")
|
|
281
|
+
assert_graph_exists(graph_id)
|
|
278
282
|
|
|
279
283
|
# Keep config and context up to date with one another
|
|
280
284
|
if config.get("configurable"):
|
|
@@ -365,6 +369,8 @@ class Assistants(Authenticated):
|
|
|
365
369
|
Returns:
|
|
366
370
|
return the updated assistant model.
|
|
367
371
|
"""
|
|
372
|
+
from langgraph_api.graph import assert_graph_exists
|
|
373
|
+
|
|
368
374
|
assistant_id = _ensure_uuid(assistant_id)
|
|
369
375
|
metadata = metadata if metadata is not None else {}
|
|
370
376
|
config = config if config is not None else {}
|
|
@@ -387,6 +393,9 @@ class Assistants(Authenticated):
|
|
|
387
393
|
detail="Cannot specify both configurable and context. Prefer setting context alone. Context was introduced in LangGraph 0.6.0 and is the long term planned replacement for configurable.",
|
|
388
394
|
)
|
|
389
395
|
|
|
396
|
+
if graph_id is not None:
|
|
397
|
+
assert_graph_exists(graph_id)
|
|
398
|
+
|
|
390
399
|
# Keep config and context up to date with one another
|
|
391
400
|
if config.get("configurable"):
|
|
392
401
|
context = config["configurable"]
|
|
@@ -462,55 +471,85 @@ class Assistants(Authenticated):
|
|
|
462
471
|
|
|
463
472
|
@staticmethod
|
|
464
473
|
async def delete(
|
|
465
|
-
conn: InMemConnectionProto,
|
|
474
|
+
conn: InMemConnectionProto | None,
|
|
466
475
|
assistant_id: UUID,
|
|
467
476
|
ctx: Auth.types.BaseAuthContext | None = None,
|
|
477
|
+
*,
|
|
478
|
+
delete_threads: bool = False,
|
|
468
479
|
) -> AsyncIterator[UUID]:
|
|
469
480
|
"""Delete an assistant by ID."""
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
"delete",
|
|
474
|
-
Auth.types.AssistantsDelete(
|
|
475
|
-
assistant_id=assistant_id,
|
|
476
|
-
),
|
|
477
|
-
)
|
|
478
|
-
assistant = next(
|
|
479
|
-
(a for a in conn.store["assistants"] if a["assistant_id"] == assistant_id),
|
|
480
|
-
None,
|
|
481
|
-
)
|
|
481
|
+
async with AsyncExitStack() as stack:
|
|
482
|
+
if conn is None:
|
|
483
|
+
conn = await stack.enter_async_context(connect())
|
|
482
484
|
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
485
|
+
assistant_id = _ensure_uuid(assistant_id)
|
|
486
|
+
filters = await Assistants.handle_event(
|
|
487
|
+
ctx,
|
|
488
|
+
"delete",
|
|
489
|
+
Auth.types.AssistantsDelete(
|
|
490
|
+
assistant_id=assistant_id,
|
|
491
|
+
),
|
|
486
492
|
)
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
493
|
+
assistant = next(
|
|
494
|
+
(
|
|
495
|
+
a
|
|
496
|
+
for a in conn.store["assistants"]
|
|
497
|
+
if a["assistant_id"] == assistant_id
|
|
498
|
+
),
|
|
499
|
+
None,
|
|
490
500
|
)
|
|
491
501
|
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
502
|
+
if not assistant:
|
|
503
|
+
raise HTTPException(
|
|
504
|
+
status_code=404,
|
|
505
|
+
detail=f"Assistant with ID {assistant_id} not found",
|
|
506
|
+
)
|
|
507
|
+
elif filters and not _check_filter_match(assistant["metadata"], filters):
|
|
508
|
+
raise HTTPException(
|
|
509
|
+
status_code=404,
|
|
510
|
+
detail=f"Assistant with ID {assistant_id} not found",
|
|
511
|
+
)
|
|
499
512
|
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
513
|
+
if delete_threads:
|
|
514
|
+
threads_to_delete = [
|
|
515
|
+
t["thread_id"]
|
|
516
|
+
for t in conn.store["threads"]
|
|
517
|
+
if t.get("metadata", {}).get("assistant_id") == str(assistant_id)
|
|
518
|
+
]
|
|
519
|
+
for thread_id in threads_to_delete:
|
|
520
|
+
try:
|
|
521
|
+
async for _ in await Threads.delete(conn, thread_id, ctx=ctx):
|
|
522
|
+
pass
|
|
523
|
+
except HTTPException:
|
|
524
|
+
await logger.awarning(
|
|
525
|
+
"Skipping thread deletion during cascade delete (user lacks permission)",
|
|
526
|
+
thread_id=thread_id,
|
|
527
|
+
assistant_id=assistant_id,
|
|
528
|
+
)
|
|
509
529
|
|
|
510
|
-
|
|
511
|
-
|
|
530
|
+
# 3. Cancel in-flight runs AFTER auth validation
|
|
531
|
+
await Runs.cancel(
|
|
532
|
+
conn,
|
|
533
|
+
assistant_id=assistant_id,
|
|
534
|
+
action="interrupt",
|
|
535
|
+
ctx=ctx,
|
|
536
|
+
)
|
|
512
537
|
|
|
513
|
-
|
|
538
|
+
# 4. Delete assistant
|
|
539
|
+
conn.store["assistants"] = [
|
|
540
|
+
a for a in conn.store["assistants"] if a["assistant_id"] != assistant_id
|
|
541
|
+
]
|
|
542
|
+
# Cascade delete assistant versions
|
|
543
|
+
conn.store["assistant_versions"] = [
|
|
544
|
+
v
|
|
545
|
+
for v in conn.store["assistant_versions"]
|
|
546
|
+
if v["assistant_id"] != assistant_id
|
|
547
|
+
]
|
|
548
|
+
|
|
549
|
+
async def _yield_deleted():
|
|
550
|
+
yield assistant_id
|
|
551
|
+
|
|
552
|
+
return _yield_deleted()
|
|
514
553
|
|
|
515
554
|
@staticmethod
|
|
516
555
|
async def set_latest(
|
|
@@ -632,6 +671,8 @@ class Assistants(Authenticated):
|
|
|
632
671
|
ctx: Auth.types.BaseAuthContext | None = None,
|
|
633
672
|
) -> int:
|
|
634
673
|
"""Get count of assistants."""
|
|
674
|
+
from langgraph_api.graph import assert_graph_exists
|
|
675
|
+
|
|
635
676
|
metadata = metadata if metadata is not None else {}
|
|
636
677
|
filters = await Assistants.handle_event(
|
|
637
678
|
ctx,
|
|
@@ -641,6 +682,9 @@ class Assistants(Authenticated):
|
|
|
641
682
|
),
|
|
642
683
|
)
|
|
643
684
|
|
|
685
|
+
if graph_id is not None:
|
|
686
|
+
assert_graph_exists(graph_id)
|
|
687
|
+
|
|
644
688
|
count = 0
|
|
645
689
|
for assistant in conn.store["assistants"]:
|
|
646
690
|
if (
|
{langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/langgraph_runtime_inmem/store.py
RENAMED
|
@@ -10,6 +10,8 @@ from langgraph.store.base import BaseStore, Op, Result
|
|
|
10
10
|
from langgraph.store.base.batch import AsyncBatchedBaseStore
|
|
11
11
|
from langgraph.store.memory import InMemoryStore
|
|
12
12
|
|
|
13
|
+
from langgraph_runtime_inmem._persistence import register_persistent_dict
|
|
14
|
+
|
|
13
15
|
_STORE_CONFIG = None
|
|
14
16
|
DISABLE_FILE_PERSISTENCE = (
|
|
15
17
|
os.getenv("LANGGRAPH_DISABLE_FILE_PERSISTENCE", "false").lower() == "true"
|
|
@@ -24,6 +26,8 @@ class DiskBackedInMemStore(InMemoryStore):
|
|
|
24
26
|
self._vectors = PersistentDict(
|
|
25
27
|
lambda: defaultdict(dict), filename=_VECTOR_FILE
|
|
26
28
|
)
|
|
29
|
+
register_persistent_dict(self._data)
|
|
30
|
+
register_persistent_dict(self._vectors)
|
|
27
31
|
else:
|
|
28
32
|
self._data = InMemoryStore._data
|
|
29
33
|
self._vectors = InMemoryStore._vectors
|
|
@@ -13,15 +13,15 @@ wheels = [
|
|
|
13
13
|
|
|
14
14
|
[[package]]
|
|
15
15
|
name = "anyio"
|
|
16
|
-
version = "4.12.
|
|
16
|
+
version = "4.12.1"
|
|
17
17
|
source = { registry = "https://pypi.org/simple" }
|
|
18
18
|
dependencies = [
|
|
19
19
|
{ name = "idna" },
|
|
20
20
|
{ name = "typing-extensions", marker = "python_full_version < '3.13'" },
|
|
21
21
|
]
|
|
22
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
22
|
+
sdist = { url = "https://files.pythonhosted.org/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703", size = 228685, upload-time = "2026-01-06T11:45:21.246Z" }
|
|
23
23
|
wheels = [
|
|
24
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
24
|
+
{ url = "https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c", size = 113592, upload-time = "2026-01-06T11:45:19.497Z" },
|
|
25
25
|
]
|
|
26
26
|
|
|
27
27
|
[[package]]
|
|
@@ -223,7 +223,7 @@ wheels = [
|
|
|
223
223
|
|
|
224
224
|
[[package]]
|
|
225
225
|
name = "langchain-core"
|
|
226
|
-
version = "1.2.
|
|
226
|
+
version = "1.2.7"
|
|
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/a2/0e/664d8d81b3493e09cbab72448d2f9d693d1fa5aa2bcc488602203a9b6da0/langchain_core-1.2.7.tar.gz", hash = "sha256:e1460639f96c352b4a41c375f25aeb8d16ffc1769499fb1c20503aad59305ced", size = 837039, upload-time = "2026-01-09T17:44:25.505Z" }
|
|
239
239
|
wheels = [
|
|
240
|
-
{ url = "https://files.pythonhosted.org/packages/6f/
|
|
240
|
+
{ url = "https://files.pythonhosted.org/packages/6e/6f/34a9fba14d191a67f7e2ee3dbce3e9b86d2fa7310e2c7f2c713583481bd2/langchain_core-1.2.7-py3-none-any.whl", hash = "sha256:452f4fef7a3d883357b22600788d37e3d8854ef29da345b7ac7099f33c31828b", size = 490232, upload-time = "2026-01-09T17:44:24.236Z" },
|
|
241
241
|
]
|
|
242
242
|
|
|
243
243
|
[[package]]
|
|
244
244
|
name = "langgraph"
|
|
245
|
-
version = "1.0.
|
|
245
|
+
version = "1.0.6"
|
|
246
246
|
source = { registry = "https://pypi.org/simple" }
|
|
247
247
|
dependencies = [
|
|
248
248
|
{ name = "langchain-core" },
|
|
@@ -252,22 +252,22 @@ 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/c2/9c/dac99ab1732e9fb2d3b673482ac28f02bee222c0319a3b8f8f73d90727e6/langgraph-1.0.6.tar.gz", hash = "sha256:dd8e754c76d34a07485308d7117221acf63990e7de8f46ddf5fe256b0a22e6c5", size = 495092, upload-time = "2026-01-12T20:33:30.778Z" }
|
|
256
256
|
wheels = [
|
|
257
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
257
|
+
{ url = "https://files.pythonhosted.org/packages/10/45/9960747781416bed4e531ed0c6b2f2c739bc7b5397d8e92155463735a40e/langgraph-1.0.6-py3-none-any.whl", hash = "sha256:bcfce190974519c72e29f6e5b17f0023914fd6f936bfab8894083215b271eb89", size = 157356, upload-time = "2026-01-12T20:33:29.191Z" },
|
|
258
258
|
]
|
|
259
259
|
|
|
260
260
|
[[package]]
|
|
261
261
|
name = "langgraph-checkpoint"
|
|
262
|
-
version = "
|
|
262
|
+
version = "4.0.0"
|
|
263
263
|
source = { registry = "https://pypi.org/simple" }
|
|
264
264
|
dependencies = [
|
|
265
265
|
{ name = "langchain-core" },
|
|
266
266
|
{ name = "ormsgpack" },
|
|
267
267
|
]
|
|
268
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
268
|
+
sdist = { url = "https://files.pythonhosted.org/packages/98/76/55a18c59dedf39688d72c4b06af73a5e3ea0d1a01bc867b88fbf0659f203/langgraph_checkpoint-4.0.0.tar.gz", hash = "sha256:814d1bd050fac029476558d8e68d87bce9009a0262d04a2c14b918255954a624", size = 137320, upload-time = "2026-01-12T20:30:26.38Z" }
|
|
269
269
|
wheels = [
|
|
270
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
270
|
+
{ url = "https://files.pythonhosted.org/packages/4a/de/ddd53b7032e623f3c7bcdab2b44e8bf635e468f62e10e5ff1946f62c9356/langgraph_checkpoint-4.0.0-py3-none-any.whl", hash = "sha256:3fa9b2635a7c5ac28b338f631abf6a030c3b508b7b9ce17c22611513b589c784", size = 46329, upload-time = "2026-01-12T20:30:25.2Z" },
|
|
271
271
|
]
|
|
272
272
|
|
|
273
273
|
[[package]]
|
|
@@ -285,15 +285,15 @@ wheels = [
|
|
|
285
285
|
|
|
286
286
|
[[package]]
|
|
287
287
|
name = "langgraph-prebuilt"
|
|
288
|
-
version = "1.0.
|
|
288
|
+
version = "1.0.6"
|
|
289
289
|
source = { registry = "https://pypi.org/simple" }
|
|
290
290
|
dependencies = [
|
|
291
291
|
{ name = "langchain-core" },
|
|
292
292
|
{ name = "langgraph-checkpoint" },
|
|
293
293
|
]
|
|
294
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
294
|
+
sdist = { url = "https://files.pythonhosted.org/packages/3c/f5/8c75dace0d729561dce2966e630c5e312193df7e5df41a7e10cd7378c3a7/langgraph_prebuilt-1.0.6.tar.gz", hash = "sha256:c5f6cf0f5a0ac47643d2e26ae6faa38cb28885ecde67911190df9e30c4f72361", size = 162623, upload-time = "2026-01-12T20:31:28.425Z" }
|
|
295
295
|
wheels = [
|
|
296
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
296
|
+
{ url = "https://files.pythonhosted.org/packages/26/6c/4045822b0630cfc0f8624c4499ceaf90644142143c063a8dc385a7424fc3/langgraph_prebuilt-1.0.6-py3-none-any.whl", hash = "sha256:9fdc35048ff4ac985a55bd2a019a86d45b8184551504aff6780d096c678b39ae", size = 35322, upload-time = "2026-01-12T20:31:27.161Z" },
|
|
297
297
|
]
|
|
298
298
|
|
|
299
299
|
[[package]]
|
|
@@ -342,20 +342,20 @@ dev = [
|
|
|
342
342
|
|
|
343
343
|
[[package]]
|
|
344
344
|
name = "langgraph-sdk"
|
|
345
|
-
version = "0.3.
|
|
345
|
+
version = "0.3.3"
|
|
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/c3/0f/ed0634c222eed48a31ba48eab6881f94ad690d65e44fe7ca838240a260c1/langgraph_sdk-0.3.3.tar.gz", hash = "sha256:c34c3dce3b6848755eb61f0c94369d1ba04aceeb1b76015db1ea7362c544fb26", size = 130589, upload-time = "2026-01-13T00:30:43.894Z" }
|
|
352
352
|
wheels = [
|
|
353
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
353
|
+
{ url = "https://files.pythonhosted.org/packages/6e/be/4ad511bacfdd854afb12974f407cb30010dceb982dc20c55491867b34526/langgraph_sdk-0.3.3-py3-none-any.whl", hash = "sha256:a52ebaf09d91143e55378bb2d0b033ed98f57f48c9ad35c8f81493b88705fc7b", size = 67021, upload-time = "2026-01-13T00:30:42.264Z" },
|
|
354
354
|
]
|
|
355
355
|
|
|
356
356
|
[[package]]
|
|
357
357
|
name = "langsmith"
|
|
358
|
-
version = "0.6.
|
|
358
|
+
version = "0.6.4"
|
|
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/e7/85/9c7933052a997da1b85bc5c774f3865e9b1da1c8d71541ea133178b13229/langsmith-0.6.4.tar.gz", hash = "sha256:36f7223a01c218079fbb17da5e536ebbaf5c1468c028abe070aa3ae59bc99ec8", size = 919964, upload-time = "2026-01-15T20:02:28.873Z" }
|
|
371
371
|
wheels = [
|
|
372
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
372
|
+
{ url = "https://files.pythonhosted.org/packages/66/0f/09a6637a7ba777eb307b7c80852d9ee26438e2bdafbad6fcc849ff9d9192/langsmith-0.6.4-py3-none-any.whl", hash = "sha256:ac4835860160be371042c7adbba3cb267bcf8d96a5ea976c33a8a4acad6c5486", size = 283503, upload-time = "2026-01-15T20:02:26.662Z" },
|
|
373
373
|
]
|
|
374
374
|
|
|
375
375
|
[[package]]
|
|
@@ -516,49 +516,50 @@ wheels = [
|
|
|
516
516
|
|
|
517
517
|
[[package]]
|
|
518
518
|
name = "ormsgpack"
|
|
519
|
-
version = "1.12.
|
|
519
|
+
version = "1.12.2"
|
|
520
520
|
source = { registry = "https://pypi.org/simple" }
|
|
521
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
521
|
+
sdist = { url = "https://files.pythonhosted.org/packages/12/0c/f1761e21486942ab9bb6feaebc610fa074f7c5e496e6962dea5873348077/ormsgpack-1.12.2.tar.gz", hash = "sha256:944a2233640273bee67521795a73cf1e959538e0dfb7ac635505010455e53b33", size = 39031, upload-time = "2026-01-18T20:55:28.023Z" }
|
|
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/
|
|
560
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
561
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
523
|
+
{ url = "https://files.pythonhosted.org/packages/4b/08/8b68f24b18e69d92238aa8f258218e6dfeacf4381d9d07ab8df303f524a9/ormsgpack-1.12.2-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:bd5f4bf04c37888e864f08e740c5a573c4017f6fd6e99fa944c5c935fabf2dd9", size = 378266, upload-time = "2026-01-18T20:55:59.876Z" },
|
|
524
|
+
{ url = "https://files.pythonhosted.org/packages/0d/24/29fc13044ecb7c153523ae0a1972269fcd613650d1fa1a9cec1044c6b666/ormsgpack-1.12.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34d5b28b3570e9fed9a5a76528fc7230c3c76333bc214798958e58e9b79cc18a", size = 203035, upload-time = "2026-01-18T20:55:30.59Z" },
|
|
525
|
+
{ url = "https://files.pythonhosted.org/packages/ad/c2/00169fb25dd8f9213f5e8a549dfb73e4d592009ebc85fbbcd3e1dcac575b/ormsgpack-1.12.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3708693412c28f3538fb5a65da93787b6bbab3484f6bc6e935bfb77a62400ae5", size = 210539, upload-time = "2026-01-18T20:55:48.569Z" },
|
|
526
|
+
{ url = "https://files.pythonhosted.org/packages/1b/33/543627f323ff3c73091f51d6a20db28a1a33531af30873ea90c5ac95a9b5/ormsgpack-1.12.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43013a3f3e2e902e1d05e72c0f1aeb5bedbb8e09240b51e26792a3c89267e181", size = 212401, upload-time = "2026-01-18T20:56:10.101Z" },
|
|
527
|
+
{ url = "https://files.pythonhosted.org/packages/e8/5d/f70e2c3da414f46186659d24745483757bcc9adccb481a6eb93e2b729301/ormsgpack-1.12.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7c8b1667a72cbba74f0ae7ecf3105a5e01304620ed14528b2cb4320679d2869b", size = 387082, upload-time = "2026-01-18T20:56:12.047Z" },
|
|
528
|
+
{ url = "https://files.pythonhosted.org/packages/c0/d6/06e8dc920c7903e051f30934d874d4afccc9bb1c09dcaf0bc03a7de4b343/ormsgpack-1.12.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:df6961442140193e517303d0b5d7bc2e20e69a879c2d774316125350c4a76b92", size = 482346, upload-time = "2026-01-18T20:56:05.152Z" },
|
|
529
|
+
{ url = "https://files.pythonhosted.org/packages/66/c4/f337ac0905eed9c393ef990c54565cd33644918e0a8031fe48c098c71dbf/ormsgpack-1.12.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c6a4c34ddef109647c769d69be65fa1de7a6022b02ad45546a69b3216573eb4a", size = 425181, upload-time = "2026-01-18T20:55:37.83Z" },
|
|
530
|
+
{ url = "https://files.pythonhosted.org/packages/78/29/6d5758fabef3babdf4bbbc453738cc7de9cd3334e4c38dd5737e27b85653/ormsgpack-1.12.2-cp311-cp311-win_amd64.whl", hash = "sha256:73670ed0375ecc303858e3613f407628dd1fca18fe6ac57b7b7ce66cc7bb006c", size = 117182, upload-time = "2026-01-18T20:55:31.472Z" },
|
|
531
|
+
{ url = "https://files.pythonhosted.org/packages/c4/57/17a15549233c37e7fd054c48fe9207492e06b026dbd872b826a0b5f833b6/ormsgpack-1.12.2-cp311-cp311-win_arm64.whl", hash = "sha256:c2be829954434e33601ae5da328cccce3266b098927ca7a30246a0baec2ce7bd", size = 111464, upload-time = "2026-01-18T20:55:38.811Z" },
|
|
532
|
+
{ url = "https://files.pythonhosted.org/packages/4c/36/16c4b1921c308a92cef3bf6663226ae283395aa0ff6e154f925c32e91ff5/ormsgpack-1.12.2-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:7a29d09b64b9694b588ff2f80e9826bdceb3a2b91523c5beae1fab27d5c940e7", size = 378618, upload-time = "2026-01-18T20:55:50.835Z" },
|
|
533
|
+
{ url = "https://files.pythonhosted.org/packages/c0/68/468de634079615abf66ed13bb5c34ff71da237213f29294363beeeca5306/ormsgpack-1.12.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b39e629fd2e1c5b2f46f99778450b59454d1f901bc507963168985e79f09c5d", size = 203186, upload-time = "2026-01-18T20:56:11.163Z" },
|
|
534
|
+
{ url = "https://files.pythonhosted.org/packages/73/a9/d756e01961442688b7939bacd87ce13bfad7d26ce24f910f6028178b2cc8/ormsgpack-1.12.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:958dcb270d30a7cb633a45ee62b9444433fa571a752d2ca484efdac07480876e", size = 210738, upload-time = "2026-01-18T20:56:09.181Z" },
|
|
535
|
+
{ url = "https://files.pythonhosted.org/packages/7b/ba/795b1036888542c9113269a3f5690ab53dd2258c6fb17676ac4bd44fcf94/ormsgpack-1.12.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58d379d72b6c5e964851c77cfedfb386e474adee4fd39791c2c5d9efb53505cc", size = 212569, upload-time = "2026-01-18T20:56:06.135Z" },
|
|
536
|
+
{ url = "https://files.pythonhosted.org/packages/6c/aa/bff73c57497b9e0cba8837c7e4bcab584b1a6dbc91a5dd5526784a5030c8/ormsgpack-1.12.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8463a3fc5f09832e67bdb0e2fda6d518dc4281b133166146a67f54c08496442e", size = 387166, upload-time = "2026-01-18T20:55:36.738Z" },
|
|
537
|
+
{ url = "https://files.pythonhosted.org/packages/d3/cf/f8283cba44bcb7b14f97b6274d449db276b3a86589bdb363169b51bc12de/ormsgpack-1.12.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:eddffb77eff0bad4e67547d67a130604e7e2dfbb7b0cde0796045be4090f35c6", size = 482498, upload-time = "2026-01-18T20:55:29.626Z" },
|
|
538
|
+
{ url = "https://files.pythonhosted.org/packages/05/be/71e37b852d723dfcbe952ad04178c030df60d6b78eba26bfd14c9a40575e/ormsgpack-1.12.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fcd55e5f6ba0dbce624942adf9f152062135f991a0126064889f68eb850de0dd", size = 425518, upload-time = "2026-01-18T20:55:49.556Z" },
|
|
539
|
+
{ url = "https://files.pythonhosted.org/packages/7a/0c/9803aa883d18c7ef197213cd2cbf73ba76472a11fe100fb7dab2884edf48/ormsgpack-1.12.2-cp312-cp312-win_amd64.whl", hash = "sha256:d024b40828f1dde5654faebd0d824f9cc29ad46891f626272dd5bfd7af2333a4", size = 117462, upload-time = "2026-01-18T20:55:47.726Z" },
|
|
540
|
+
{ url = "https://files.pythonhosted.org/packages/c8/9e/029e898298b2cc662f10d7a15652a53e3b525b1e7f07e21fef8536a09bb8/ormsgpack-1.12.2-cp312-cp312-win_arm64.whl", hash = "sha256:da538c542bac7d1c8f3f2a937863dba36f013108ce63e55745941dda4b75dbb6", size = 111559, upload-time = "2026-01-18T20:55:54.273Z" },
|
|
541
|
+
{ url = "https://files.pythonhosted.org/packages/eb/29/bb0eba3288c0449efbb013e9c6f58aea79cf5cb9ee1921f8865f04c1a9d7/ormsgpack-1.12.2-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:5ea60cb5f210b1cfbad8c002948d73447508e629ec375acb82910e3efa8ff355", size = 378661, upload-time = "2026-01-18T20:55:57.765Z" },
|
|
542
|
+
{ url = "https://files.pythonhosted.org/packages/6e/31/5efa31346affdac489acade2926989e019e8ca98129658a183e3add7af5e/ormsgpack-1.12.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3601f19afdbea273ed70b06495e5794606a8b690a568d6c996a90d7255e51c1", size = 203194, upload-time = "2026-01-18T20:56:08.252Z" },
|
|
543
|
+
{ url = "https://files.pythonhosted.org/packages/eb/56/d0087278beef833187e0167f8527235ebe6f6ffc2a143e9de12a98b1ce87/ormsgpack-1.12.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:29a9f17a3dac6054c0dce7925e0f4995c727f7c41859adf9b5572180f640d172", size = 210778, upload-time = "2026-01-18T20:55:17.694Z" },
|
|
544
|
+
{ url = "https://files.pythonhosted.org/packages/1c/a2/072343e1413d9443e5a252a8eb591c2d5b1bffbe5e7bfc78c069361b92eb/ormsgpack-1.12.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39c1bd2092880e413902910388be8715f70b9f15f20779d44e673033a6146f2d", size = 212592, upload-time = "2026-01-18T20:55:32.747Z" },
|
|
545
|
+
{ url = "https://files.pythonhosted.org/packages/a2/8b/a0da3b98a91d41187a63b02dda14267eefc2a74fcb43cc2701066cf1510e/ormsgpack-1.12.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:50b7249244382209877deedeee838aef1542f3d0fc28b8fe71ca9d7e1896a0d7", size = 387164, upload-time = "2026-01-18T20:55:40.853Z" },
|
|
546
|
+
{ url = "https://files.pythonhosted.org/packages/19/bb/6d226bc4cf9fc20d8eb1d976d027a3f7c3491e8f08289a2e76abe96a65f3/ormsgpack-1.12.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:5af04800d844451cf102a59c74a841324868d3f1625c296a06cc655c542a6685", size = 482516, upload-time = "2026-01-18T20:55:42.033Z" },
|
|
547
|
+
{ url = "https://files.pythonhosted.org/packages/fb/f1/bb2c7223398543dedb3dbf8bb93aaa737b387de61c5feaad6f908841b782/ormsgpack-1.12.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:cec70477d4371cd524534cd16472d8b9cc187e0e3043a8790545a9a9b296c258", size = 425539, upload-time = "2026-01-18T20:55:24.727Z" },
|
|
548
|
+
{ url = "https://files.pythonhosted.org/packages/7b/e8/0fb45f57a2ada1fed374f7494c8cd55e2f88ccd0ab0a669aa3468716bf5f/ormsgpack-1.12.2-cp313-cp313-win_amd64.whl", hash = "sha256:21f4276caca5c03a818041d637e4019bc84f9d6ca8baa5ea03e5cc8bf56140e9", size = 117459, upload-time = "2026-01-18T20:55:56.876Z" },
|
|
549
|
+
{ url = "https://files.pythonhosted.org/packages/7a/d4/0cfeea1e960d550a131001a7f38a5132c7ae3ebde4c82af1f364ccc5d904/ormsgpack-1.12.2-cp313-cp313-win_arm64.whl", hash = "sha256:baca4b6773d20a82e36d6fd25f341064244f9f86a13dead95dd7d7f996f51709", size = 111577, upload-time = "2026-01-18T20:55:43.605Z" },
|
|
550
|
+
{ url = "https://files.pythonhosted.org/packages/94/16/24d18851334be09c25e87f74307c84950f18c324a4d3c0b41dabdbf19c29/ormsgpack-1.12.2-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:bc68dd5915f4acf66ff2010ee47c8906dc1cf07399b16f4089f8c71733f6e36c", size = 378717, upload-time = "2026-01-18T20:55:26.164Z" },
|
|
551
|
+
{ url = "https://files.pythonhosted.org/packages/b5/a2/88b9b56f83adae8032ac6a6fa7f080c65b3baf9b6b64fd3d37bd202991d4/ormsgpack-1.12.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46d084427b4132553940070ad95107266656cb646ea9da4975f85cb1a6676553", size = 203183, upload-time = "2026-01-18T20:55:18.815Z" },
|
|
552
|
+
{ url = "https://files.pythonhosted.org/packages/a9/80/43e4555963bf602e5bdc79cbc8debd8b6d5456c00d2504df9775e74b450b/ormsgpack-1.12.2-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c010da16235806cf1d7bc4c96bf286bfa91c686853395a299b3ddb49499a3e13", size = 210814, upload-time = "2026-01-18T20:55:33.973Z" },
|
|
553
|
+
{ url = "https://files.pythonhosted.org/packages/78/e1/7cfbf28de8bca6efe7e525b329c31277d1b64ce08dcba723971c241a9d60/ormsgpack-1.12.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18867233df592c997154ff942a6503df274b5ac1765215bceba7a231bea2745d", size = 212634, upload-time = "2026-01-18T20:55:28.634Z" },
|
|
554
|
+
{ url = "https://files.pythonhosted.org/packages/95/f8/30ae5716e88d792a4e879debee195653c26ddd3964c968594ddef0a3cc7e/ormsgpack-1.12.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b009049086ddc6b8f80c76b3955df1aa22a5fbd7673c525cd63bf91f23122ede", size = 387139, upload-time = "2026-01-18T20:56:02.013Z" },
|
|
555
|
+
{ url = "https://files.pythonhosted.org/packages/dc/81/aee5b18a3e3a0e52f718b37ab4b8af6fae0d9d6a65103036a90c2a8ffb5d/ormsgpack-1.12.2-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:1dcc17d92b6390d4f18f937cf0b99054824a7815818012ddca925d6e01c2e49e", size = 482578, upload-time = "2026-01-18T20:55:35.117Z" },
|
|
556
|
+
{ url = "https://files.pythonhosted.org/packages/bd/17/71c9ba472d5d45f7546317f467a5fc941929cd68fb32796ca3d13dcbaec2/ormsgpack-1.12.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:f04b5e896d510b07c0ad733d7fce2d44b260c5e6c402d272128f8941984e4285", size = 425539, upload-time = "2026-01-18T20:56:04.009Z" },
|
|
557
|
+
{ url = "https://files.pythonhosted.org/packages/2e/a6/ac99cd7fe77e822fed5250ff4b86fa66dd4238937dd178d2299f10b69816/ormsgpack-1.12.2-cp314-cp314-win_amd64.whl", hash = "sha256:ae3aba7eed4ca7cb79fd3436eddd29140f17ea254b91604aa1eb19bfcedb990f", size = 117493, upload-time = "2026-01-18T20:56:07.343Z" },
|
|
558
|
+
{ url = "https://files.pythonhosted.org/packages/3a/67/339872846a1ae4592535385a1c1f93614138566d7af094200c9c3b45d1e5/ormsgpack-1.12.2-cp314-cp314-win_arm64.whl", hash = "sha256:118576ea6006893aea811b17429bfc561b4778fad393f5f538c84af70b01260c", size = 111579, upload-time = "2026-01-18T20:55:21.161Z" },
|
|
559
|
+
{ url = "https://files.pythonhosted.org/packages/49/c2/6feb972dc87285ad381749d3882d8aecbde9f6ecf908dd717d33d66df095/ormsgpack-1.12.2-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:7121b3d355d3858781dc40dafe25a32ff8a8242b9d80c692fd548a4b1f7fd3c8", size = 378721, upload-time = "2026-01-18T20:55:52.12Z" },
|
|
560
|
+
{ url = "https://files.pythonhosted.org/packages/a3/9a/900a6b9b413e0f8a471cf07830f9cf65939af039a362204b36bd5b581d8b/ormsgpack-1.12.2-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ee766d2e78251b7a63daf1cddfac36a73562d3ddef68cacfb41b2af64698033", size = 203170, upload-time = "2026-01-18T20:55:44.469Z" },
|
|
561
|
+
{ url = "https://files.pythonhosted.org/packages/87/4c/27a95466354606b256f24fad464d7c97ab62bce6cc529dd4673e1179b8fb/ormsgpack-1.12.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:292410a7d23de9b40444636b9b8f1e4e4b814af7f1ef476e44887e52a123f09d", size = 212816, upload-time = "2026-01-18T20:55:23.501Z" },
|
|
562
|
+
{ url = "https://files.pythonhosted.org/packages/73/cd/29cee6007bddf7a834e6cd6f536754c0535fcb939d384f0f37a38b1cddb8/ormsgpack-1.12.2-cp314-cp314t-win_amd64.whl", hash = "sha256:837dd316584485b72ef451d08dd3e96c4a11d12e4963aedb40e08f89685d8ec2", size = 117232, upload-time = "2026-01-18T20:55:45.448Z" },
|
|
562
563
|
]
|
|
563
564
|
|
|
564
565
|
[[package]]
|
|
@@ -754,14 +755,14 @@ wheels = [
|
|
|
754
755
|
|
|
755
756
|
[[package]]
|
|
756
757
|
name = "pytest-watcher"
|
|
757
|
-
version = "0.6.
|
|
758
|
+
version = "0.6.3"
|
|
758
759
|
source = { registry = "https://pypi.org/simple" }
|
|
759
760
|
dependencies = [
|
|
760
761
|
{ name = "watchdog" },
|
|
761
762
|
]
|
|
762
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
763
|
+
sdist = { url = "https://files.pythonhosted.org/packages/e6/d2/80606077b7fa8784417687f494ff801d7ab817d9a17fc94305811d5919bb/pytest_watcher-0.6.3.tar.gz", hash = "sha256:842dc904264df0ad2d5264153a66bb452fccfa46598cd6e0a5ef1d19afed9b13", size = 601878, upload-time = "2026-01-10T23:28:18.805Z" }
|
|
763
764
|
wheels = [
|
|
764
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
765
|
+
{ url = "https://files.pythonhosted.org/packages/fc/3f/172d73600ad2771774cda108efb813fc724fc345e5240a81a1085f1ade5d/pytest_watcher-0.6.3-py3-none-any.whl", hash = "sha256:83e7748c933087e8276edb6078663e6afa9926434b4fd8b85cf6b32b1d5bec89", size = 12431, upload-time = "2026-01-10T23:28:17.64Z" },
|
|
765
766
|
]
|
|
766
767
|
|
|
767
768
|
[[package]]
|
|
@@ -848,54 +849,54 @@ wheels = [
|
|
|
848
849
|
|
|
849
850
|
[[package]]
|
|
850
851
|
name = "ruff"
|
|
851
|
-
version = "0.14.
|
|
852
|
+
version = "0.14.13"
|
|
852
853
|
source = { registry = "https://pypi.org/simple" }
|
|
853
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
854
|
+
sdist = { url = "https://files.pythonhosted.org/packages/50/0a/1914efb7903174b381ee2ffeebb4253e729de57f114e63595114c8ca451f/ruff-0.14.13.tar.gz", hash = "sha256:83cd6c0763190784b99650a20fec7633c59f6ebe41c5cc9d45ee42749563ad47", size = 6059504, upload-time = "2026-01-15T20:15:16.918Z" }
|
|
854
855
|
wheels = [
|
|
855
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
856
|
-
{ url = "https://files.pythonhosted.org/packages/df/
|
|
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/
|
|
856
|
+
{ url = "https://files.pythonhosted.org/packages/c3/ae/0deefbc65ca74b0ab1fd3917f94dc3b398233346a74b8bbb0a916a1a6bf6/ruff-0.14.13-py3-none-linux_armv6l.whl", hash = "sha256:76f62c62cd37c276cb03a275b198c7c15bd1d60c989f944db08a8c1c2dbec18b", size = 13062418, upload-time = "2026-01-15T20:14:50.779Z" },
|
|
857
|
+
{ url = "https://files.pythonhosted.org/packages/47/df/5916604faa530a97a3c154c62a81cb6b735c0cb05d1e26d5ad0f0c8ac48a/ruff-0.14.13-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:914a8023ece0528d5cc33f5a684f5f38199bbb566a04815c2c211d8f40b5d0ed", size = 13442344, upload-time = "2026-01-15T20:15:07.94Z" },
|
|
858
|
+
{ url = "https://files.pythonhosted.org/packages/4c/f3/e0e694dd69163c3a1671e102aa574a50357536f18a33375050334d5cd517/ruff-0.14.13-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d24899478c35ebfa730597a4a775d430ad0d5631b8647a3ab368c29b7e7bd063", size = 12354720, upload-time = "2026-01-15T20:15:09.854Z" },
|
|
859
|
+
{ url = "https://files.pythonhosted.org/packages/c3/e8/67f5fcbbaee25e8fc3b56cc33e9892eca7ffe09f773c8e5907757a7e3bdb/ruff-0.14.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9aaf3870f14d925bbaf18b8a2347ee0ae7d95a2e490e4d4aea6813ed15ebc80e", size = 12774493, upload-time = "2026-01-15T20:15:20.908Z" },
|
|
860
|
+
{ url = "https://files.pythonhosted.org/packages/6b/ce/d2e9cb510870b52a9565d885c0d7668cc050e30fa2c8ac3fb1fda15c083d/ruff-0.14.13-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac5b7f63dd3b27cc811850f5ffd8fff845b00ad70e60b043aabf8d6ecc304e09", size = 12815174, upload-time = "2026-01-15T20:15:05.74Z" },
|
|
861
|
+
{ url = "https://files.pythonhosted.org/packages/88/00/c38e5da58beebcf4fa32d0ddd993b63dfacefd02ab7922614231330845bf/ruff-0.14.13-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78d2b1097750d90ba82ce4ba676e85230a0ed694178ca5e61aa9b459970b3eb9", size = 13680909, upload-time = "2026-01-15T20:15:14.537Z" },
|
|
862
|
+
{ url = "https://files.pythonhosted.org/packages/61/61/cd37c9dd5bd0a3099ba79b2a5899ad417d8f3b04038810b0501a80814fd7/ruff-0.14.13-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:7d0bf87705acbbcb8d4c24b2d77fbb73d40210a95c3903b443cd9e30824a5032", size = 15144215, upload-time = "2026-01-15T20:15:22.886Z" },
|
|
863
|
+
{ url = "https://files.pythonhosted.org/packages/56/8a/85502d7edbf98c2df7b8876f316c0157359165e16cdf98507c65c8d07d3d/ruff-0.14.13-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3eb5da8e2c9e9f13431032fdcbe7681de9ceda5835efee3269417c13f1fed5c", size = 14706067, upload-time = "2026-01-15T20:14:48.271Z" },
|
|
864
|
+
{ url = "https://files.pythonhosted.org/packages/7e/2f/de0df127feb2ee8c1e54354dc1179b4a23798f0866019528c938ba439aca/ruff-0.14.13-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:642442b42957093811cd8d2140dfadd19c7417030a7a68cf8d51fcdd5f217427", size = 14133916, upload-time = "2026-01-15T20:14:57.357Z" },
|
|
865
|
+
{ url = "https://files.pythonhosted.org/packages/0d/77/9b99686bb9fe07a757c82f6f95e555c7a47801a9305576a9c67e0a31d280/ruff-0.14.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4acdf009f32b46f6e8864af19cbf6841eaaed8638e65c8dac845aea0d703c841", size = 13859207, upload-time = "2026-01-15T20:14:55.111Z" },
|
|
866
|
+
{ url = "https://files.pythonhosted.org/packages/7d/46/2bdcb34a87a179a4d23022d818c1c236cb40e477faf0d7c9afb6813e5876/ruff-0.14.13-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:591a7f68860ea4e003917d19b5c4f5ac39ff558f162dc753a2c5de897fd5502c", size = 14043686, upload-time = "2026-01-15T20:14:52.841Z" },
|
|
867
|
+
{ url = "https://files.pythonhosted.org/packages/1a/a9/5c6a4f56a0512c691cf143371bcf60505ed0f0860f24a85da8bd123b2bf1/ruff-0.14.13-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:774c77e841cc6e046fc3e91623ce0903d1cd07e3a36b1a9fe79b81dab3de506b", size = 12663837, upload-time = "2026-01-15T20:15:18.921Z" },
|
|
868
|
+
{ url = "https://files.pythonhosted.org/packages/fe/bb/b920016ece7651fa7fcd335d9d199306665486694d4361547ccb19394c44/ruff-0.14.13-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:61f4e40077a1248436772bb6512db5fc4457fe4c49e7a94ea7c5088655dd21ae", size = 12805867, upload-time = "2026-01-15T20:14:59.272Z" },
|
|
869
|
+
{ url = "https://files.pythonhosted.org/packages/7d/b3/0bd909851e5696cd21e32a8fc25727e5f58f1934b3596975503e6e85415c/ruff-0.14.13-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6d02f1428357fae9e98ac7aa94b7e966fd24151088510d32cf6f902d6c09235e", size = 13208528, upload-time = "2026-01-15T20:15:03.732Z" },
|
|
870
|
+
{ url = "https://files.pythonhosted.org/packages/3b/3b/e2d94cb613f6bbd5155a75cbe072813756363eba46a3f2177a1fcd0cd670/ruff-0.14.13-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e399341472ce15237be0c0ae5fbceca4b04cd9bebab1a2b2c979e015455d8f0c", size = 13929242, upload-time = "2026-01-15T20:15:11.918Z" },
|
|
871
|
+
{ url = "https://files.pythonhosted.org/packages/6a/c5/abd840d4132fd51a12f594934af5eba1d5d27298a6f5b5d6c3be45301caf/ruff-0.14.13-py3-none-win32.whl", hash = "sha256:ef720f529aec113968b45dfdb838ac8934e519711da53a0456038a0efecbd680", size = 12919024, upload-time = "2026-01-15T20:14:43.647Z" },
|
|
872
|
+
{ url = "https://files.pythonhosted.org/packages/c2/55/6384b0b8ce731b6e2ade2b5449bf07c0e4c31e8a2e68ea65b3bafadcecc5/ruff-0.14.13-py3-none-win_amd64.whl", hash = "sha256:6070bd026e409734b9257e03e3ef18c6e1a216f0435c6751d7a8ec69cb59abef", size = 14097887, upload-time = "2026-01-15T20:15:01.48Z" },
|
|
873
|
+
{ url = "https://files.pythonhosted.org/packages/4d/e1/7348090988095e4e39560cfc2f7555b1b2a7357deba19167b600fdf5215d/ruff-0.14.13-py3-none-win_arm64.whl", hash = "sha256:7ab819e14f1ad9fe39f246cfcc435880ef7a9390d81a2b6ac7e01039083dd247", size = 13080224, upload-time = "2026-01-15T20:14:45.853Z" },
|
|
873
874
|
]
|
|
874
875
|
|
|
875
876
|
[[package]]
|
|
876
877
|
name = "sse-starlette"
|
|
877
|
-
version = "3.
|
|
878
|
+
version = "3.2.0"
|
|
878
879
|
source = { registry = "https://pypi.org/simple" }
|
|
879
880
|
dependencies = [
|
|
880
881
|
{ name = "anyio" },
|
|
881
882
|
{ name = "starlette" },
|
|
882
883
|
]
|
|
883
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
884
|
+
sdist = { url = "https://files.pythonhosted.org/packages/8b/8d/00d280c03ffd39aaee0e86ec81e2d3b9253036a0f93f51d10503adef0e65/sse_starlette-3.2.0.tar.gz", hash = "sha256:8127594edfb51abe44eac9c49e59b0b01f1039d0c7461c6fd91d4e03b70da422", size = 27253, upload-time = "2026-01-17T13:11:05.62Z" }
|
|
884
885
|
wheels = [
|
|
885
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
886
|
+
{ url = "https://files.pythonhosted.org/packages/96/7f/832f015020844a8b8f7a9cbc103dd76ba8e3875004c41e08440ea3a2b41a/sse_starlette-3.2.0-py3-none-any.whl", hash = "sha256:5876954bd51920fc2cd51baee47a080eb88a37b5b784e615abb0b283f801cdbf", size = 12763, upload-time = "2026-01-17T13:11:03.775Z" },
|
|
886
887
|
]
|
|
887
888
|
|
|
888
889
|
[[package]]
|
|
889
890
|
name = "starlette"
|
|
890
|
-
version = "0.
|
|
891
|
+
version = "0.52.1"
|
|
891
892
|
source = { registry = "https://pypi.org/simple" }
|
|
892
893
|
dependencies = [
|
|
893
894
|
{ name = "anyio" },
|
|
894
895
|
{ name = "typing-extensions", marker = "python_full_version < '3.13'" },
|
|
895
896
|
]
|
|
896
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
897
|
+
sdist = { url = "https://files.pythonhosted.org/packages/c4/68/79977123bb7be889ad680d79a40f339082c1978b5cfcf62c2d8d196873ac/starlette-0.52.1.tar.gz", hash = "sha256:834edd1b0a23167694292e94f597773bc3f89f362be6effee198165a35d62933", size = 2653702, upload-time = "2026-01-18T13:34:11.062Z" }
|
|
897
898
|
wheels = [
|
|
898
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
899
|
+
{ url = "https://files.pythonhosted.org/packages/81/0d/13d1d239a25cbfb19e740db83143e95c772a1fe10202dda4b76792b114dd/starlette-0.52.1-py3-none-any.whl", hash = "sha256:0029d43eb3d273bc4f83a08720b4912ea4b071087a3b48db01b7c839f7954d74", size = 74272, upload-time = "2026-01-18T13:34:09.188Z" },
|
|
899
900
|
]
|
|
900
901
|
|
|
901
902
|
[[package]]
|
|
@@ -939,40 +940,40 @@ wheels = [
|
|
|
939
940
|
|
|
940
941
|
[[package]]
|
|
941
942
|
name = "urllib3"
|
|
942
|
-
version = "2.6.
|
|
943
|
+
version = "2.6.3"
|
|
943
944
|
source = { registry = "https://pypi.org/simple" }
|
|
944
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
945
|
+
sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" }
|
|
945
946
|
wheels = [
|
|
946
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
947
|
+
{ url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" },
|
|
947
948
|
]
|
|
948
949
|
|
|
949
950
|
[[package]]
|
|
950
951
|
name = "uuid-utils"
|
|
951
|
-
version = "0.
|
|
952
|
+
version = "0.14.0"
|
|
952
953
|
source = { registry = "https://pypi.org/simple" }
|
|
953
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
954
|
+
sdist = { url = "https://files.pythonhosted.org/packages/57/7c/3a926e847516e67bc6838634f2e54e24381105b4e80f9338dc35cca0086b/uuid_utils-0.14.0.tar.gz", hash = "sha256:fc5bac21e9933ea6c590433c11aa54aaca599f690c08069e364eb13a12f670b4", size = 22072, upload-time = "2026-01-20T20:37:15.729Z" }
|
|
954
955
|
wheels = [
|
|
955
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
956
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
957
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
958
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
959
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
960
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
961
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
962
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
963
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
964
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
965
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
966
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
967
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
968
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
969
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
970
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
971
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
972
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
973
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
974
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
975
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
956
|
+
{ url = "https://files.pythonhosted.org/packages/a7/42/42d003f4a99ddc901eef2fd41acb3694163835e037fb6dde79ad68a72342/uuid_utils-0.14.0-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:f6695c0bed8b18a904321e115afe73b34444bc8451d0ce3244a1ec3b84deb0e5", size = 601786, upload-time = "2026-01-20T20:37:09.843Z" },
|
|
957
|
+
{ url = "https://files.pythonhosted.org/packages/96/e6/775dfb91f74b18f7207e3201eb31ee666d286579990dc69dd50db2d92813/uuid_utils-0.14.0-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:4f0a730bbf2d8bb2c11b93e1005e91769f2f533fa1125ed1f00fd15b6fcc732b", size = 303943, upload-time = "2026-01-20T20:37:18.767Z" },
|
|
958
|
+
{ url = "https://files.pythonhosted.org/packages/17/82/ea5f5e85560b08a1f30cdc65f75e76494dc7aba9773f679e7eaa27370229/uuid_utils-0.14.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40ce3fd1a4fdedae618fc3edc8faf91897012469169d600133470f49fd699ed3", size = 340467, upload-time = "2026-01-20T20:37:11.794Z" },
|
|
959
|
+
{ url = "https://files.pythonhosted.org/packages/ca/33/54b06415767f4569882e99b6470c6c8eeb97422686a6d432464f9967fd91/uuid_utils-0.14.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:09ae4a98416a440e78f7d9543d11b11cae4bab538b7ed94ec5da5221481748f2", size = 346333, upload-time = "2026-01-20T20:37:12.818Z" },
|
|
960
|
+
{ url = "https://files.pythonhosted.org/packages/cb/10/a6bce636b8f95e65dc84bf4a58ce8205b8e0a2a300a38cdbc83a3f763d27/uuid_utils-0.14.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:971e8c26b90d8ae727e7f2ac3ee23e265971d448b3672882f2eb44828b2b8c3e", size = 470859, upload-time = "2026-01-20T20:37:01.512Z" },
|
|
961
|
+
{ url = "https://files.pythonhosted.org/packages/8a/27/84121c51ea72f013f0e03d0886bcdfa96b31c9b83c98300a7bd5cc4fa191/uuid_utils-0.14.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5cde1fa82804a8f9d2907b7aec2009d440062c63f04abbdb825fce717a5e860", size = 341988, upload-time = "2026-01-20T20:37:22.881Z" },
|
|
962
|
+
{ url = "https://files.pythonhosted.org/packages/90/a4/01c1c7af5e6a44f20b40183e8dac37d6ed83e7dc9e8df85370a15959b804/uuid_utils-0.14.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c7343862a2359e0bd48a7f3dfb5105877a1728677818bb694d9f40703264a2db", size = 365784, upload-time = "2026-01-20T20:37:10.808Z" },
|
|
963
|
+
{ url = "https://files.pythonhosted.org/packages/04/f0/65ee43ec617b8b6b1bf2a5aecd56a069a08cca3d9340c1de86024331bde3/uuid_utils-0.14.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c51e4818fdb08ccec12dc7083a01f49507b4608770a0ab22368001685d59381b", size = 523750, upload-time = "2026-01-20T20:37:06.152Z" },
|
|
964
|
+
{ url = "https://files.pythonhosted.org/packages/95/d3/6bf503e3f135a5dfe705a65e6f89f19bccd55ac3fb16cb5d3ec5ba5388b8/uuid_utils-0.14.0-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:181bbcccb6f93d80a8504b5bd47b311a1c31395139596edbc47b154b0685b533", size = 615818, upload-time = "2026-01-20T20:37:21.816Z" },
|
|
965
|
+
{ url = "https://files.pythonhosted.org/packages/df/6c/99937dd78d07f73bba831c8dc9469dfe4696539eba2fc269ae1b92752f9e/uuid_utils-0.14.0-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:5c8ae96101c3524ba8dbf762b6f05e9e9d896544786c503a727c5bf5cb9af1a7", size = 580831, upload-time = "2026-01-20T20:37:19.691Z" },
|
|
966
|
+
{ url = "https://files.pythonhosted.org/packages/44/fa/bbc9e2c25abd09a293b9b097a0d8fc16acd6a92854f0ec080f1ea7ad8bb3/uuid_utils-0.14.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:00ac3c6edfdaff7e1eed041f4800ae09a3361287be780d7610a90fdcde9befdc", size = 546333, upload-time = "2026-01-20T20:37:03.117Z" },
|
|
967
|
+
{ url = "https://files.pythonhosted.org/packages/e7/9b/e5e99b324b1b5f0c62882230455786df0bc66f67eff3b452447e703f45d2/uuid_utils-0.14.0-cp39-abi3-win32.whl", hash = "sha256:ec2fd80adf8e0e6589d40699e6f6df94c93edcc16dd999be0438dd007c77b151", size = 177319, upload-time = "2026-01-20T20:37:04.208Z" },
|
|
968
|
+
{ url = "https://files.pythonhosted.org/packages/d3/28/2c7d417ea483b6ff7820c948678fdf2ac98899dc7e43bb15852faa95acaf/uuid_utils-0.14.0-cp39-abi3-win_amd64.whl", hash = "sha256:efe881eb43a5504fad922644cb93d725fd8a6a6d949bd5a4b4b7d1a1587c7fd1", size = 182566, upload-time = "2026-01-20T20:37:16.868Z" },
|
|
969
|
+
{ url = "https://files.pythonhosted.org/packages/b8/86/49e4bdda28e962fbd7266684171ee29b3d92019116971d58783e51770745/uuid_utils-0.14.0-cp39-abi3-win_arm64.whl", hash = "sha256:32b372b8fd4ebd44d3a219e093fe981af4afdeda2994ee7db208ab065cfcd080", size = 182809, upload-time = "2026-01-20T20:37:05.139Z" },
|
|
970
|
+
{ url = "https://files.pythonhosted.org/packages/f1/03/1f1146e32e94d1f260dfabc81e1649102083303fb4ad549775c943425d9a/uuid_utils-0.14.0-pp311-pypy311_pp73-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:762e8d67992ac4d2454e24a141a1c82142b5bde10409818c62adbe9924ebc86d", size = 587430, upload-time = "2026-01-20T20:37:24.998Z" },
|
|
971
|
+
{ url = "https://files.pythonhosted.org/packages/87/ba/d5a7469362594d885fd9219fe9e851efbe65101d3ef1ef25ea321d7ce841/uuid_utils-0.14.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:40be5bf0b13aa849d9062abc86c198be6a25ff35316ce0b89fc25f3bac6d525e", size = 298106, upload-time = "2026-01-20T20:37:23.896Z" },
|
|
972
|
+
{ url = "https://files.pythonhosted.org/packages/8a/11/3dafb2a5502586f59fd49e93f5802cd5face82921b3a0f3abb5f357cb879/uuid_utils-0.14.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:191a90a6f3940d1b7322b6e6cceff4dd533c943659e0a15f788674407856a515", size = 333423, upload-time = "2026-01-20T20:37:17.828Z" },
|
|
973
|
+
{ url = "https://files.pythonhosted.org/packages/7c/f2/c8987663f0cdcf4d717a36d85b5db2a5589df0a4e129aa10f16f4380ef48/uuid_utils-0.14.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4aa4525f4ad82f9d9c842f9a3703f1539c1808affbaec07bb1b842f6b8b96aa5", size = 338659, upload-time = "2026-01-20T20:37:14.286Z" },
|
|
974
|
+
{ url = "https://files.pythonhosted.org/packages/d1/c8/929d81665d83f0b2ffaecb8e66c3091a50f62c7cb5b65e678bd75a96684e/uuid_utils-0.14.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdbd82ff20147461caefc375551595ecf77ebb384e46267f128aca45a0f2cdfc", size = 467029, upload-time = "2026-01-20T20:37:08.277Z" },
|
|
975
|
+
{ url = "https://files.pythonhosted.org/packages/8e/a0/27d7daa1bfed7163f4ccaf52d7d2f4ad7bb1002a85b45077938b91ee584f/uuid_utils-0.14.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eff57e8a5d540006ce73cf0841a643d445afe78ba12e75ac53a95ca2924a56be", size = 333298, upload-time = "2026-01-20T20:37:07.271Z" },
|
|
976
|
+
{ url = "https://files.pythonhosted.org/packages/63/d4/acad86ce012b42ce18a12f31ee2aa3cbeeb98664f865f05f68c882945913/uuid_utils-0.14.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3fd9112ca96978361201e669729784f26c71fecc9c13a7f8a07162c31bd4d1e2", size = 359217, upload-time = "2026-01-20T20:36:59.687Z" },
|
|
976
977
|
]
|
|
977
978
|
|
|
978
979
|
[[package]]
|
|
@@ -1004,14 +1005,14 @@ wheels = [
|
|
|
1004
1005
|
|
|
1005
1006
|
[[package]]
|
|
1006
1007
|
name = "werkzeug"
|
|
1007
|
-
version = "3.1.
|
|
1008
|
+
version = "3.1.5"
|
|
1008
1009
|
source = { registry = "https://pypi.org/simple" }
|
|
1009
1010
|
dependencies = [
|
|
1010
1011
|
{ name = "markupsafe" },
|
|
1011
1012
|
]
|
|
1012
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1013
|
+
sdist = { url = "https://files.pythonhosted.org/packages/5a/70/1469ef1d3542ae7c2c7b72bd5e3a4e6ee69d7978fa8a3af05a38eca5becf/werkzeug-3.1.5.tar.gz", hash = "sha256:6a548b0e88955dd07ccb25539d7d0cc97417ee9e179677d22c7041c8f078ce67", size = 864754, upload-time = "2026-01-08T17:49:23.247Z" }
|
|
1013
1014
|
wheels = [
|
|
1014
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1015
|
+
{ url = "https://files.pythonhosted.org/packages/ad/e4/8d97cca767bcc1be76d16fb76951608305561c6e056811587f36cb1316a8/werkzeug-3.1.5-py3-none-any.whl", hash = "sha256:5111e36e91086ece91f93268bb39b4a35c1e6f1feac762c9c822ded0a4e322dc", size = 225025, upload-time = "2026-01-08T17:49:21.859Z" },
|
|
1015
1016
|
]
|
|
1016
1017
|
|
|
1017
1018
|
[[package]]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/langgraph_runtime_inmem/metrics.py
RENAMED
|
File without changes
|
{langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/langgraph_runtime_inmem/queue.py
RENAMED
|
File without changes
|
{langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/langgraph_runtime_inmem/retry.py
RENAMED
|
File without changes
|
{langgraph_runtime_inmem-0.22.0 → langgraph_runtime_inmem-0.23.0}/langgraph_runtime_inmem/routes.py
RENAMED
|
File without changes
|
|
File without changes
|