langchain-quickjs 0.3.2__tar.gz → 0.3.3__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.
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/CHANGELOG.md +7 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/PKG-INFO +6 -6
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/langchain_quickjs/_prompt.py +2 -1
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/langchain_quickjs/_repl.py +3 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/langchain_quickjs/_subagent.py +6 -1
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/pyproject.toml +9 -9
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/smoke_tests/snapshots/quickjs_system_prompt_mixed_foreign_functions.md +2 -1
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/smoke_tests/snapshots/quickjs_system_prompt_mixed_foreign_functions_call.md +2 -1
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/smoke_tests/snapshots/quickjs_system_prompt_mixed_foreign_functions_turn.md +2 -1
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/smoke_tests/snapshots/quickjs_system_prompt_no_tools.md +2 -1
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/smoke_tests/snapshots/quickjs_system_prompt_no_tools_call.md +2 -1
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/smoke_tests/snapshots/quickjs_system_prompt_no_tools_turn.md +2 -1
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/smoke_tests/test_system_prompt.py +19 -14
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/test_prompt_modes.py +2 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/test_repl_middleware.py +72 -1
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/uv.lock +99 -90
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/.gitignore +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/LICENSE +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/Makefile +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/README.md +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/langchain_quickjs/__init__.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/langchain_quickjs/_format.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/langchain_quickjs/_ptc.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/langchain_quickjs/_snapshot.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/langchain_quickjs/middleware.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/langchain_quickjs/py.typed +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/__init__.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/_common.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/benchmarks/_common.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/benchmarks/test_quickjs_memory.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/benchmarks/test_quickjs_throughput.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/integration_tests/__init__.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/integration_tests/test_postgres.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/integration_tests/test_rlm.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/__init__.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/smoke_tests/__init__.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/smoke_tests/conftest.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/test_end_to_end.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/test_end_to_end_async.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/test_ptc.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/test_snapshot.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/test_snapshot_persistence.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/test_subagent_events.py +0 -0
- {langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/test_thread_affinity.py +0 -0
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
# Changelog
|
|
4
4
|
|
|
5
|
+
## [0.3.3](https://github.com/langchain-ai/deepagents/compare/langchain-quickjs==0.3.2...langchain-quickjs==0.3.3) (2026-07-16)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
* Propagate JS `task()` subagent interrupts ([#4401](https://github.com/langchain-ai/deepagents/issues/4401)) ([0b30e49](https://github.com/langchain-ai/deepagents/commit/0b30e494d59187de2e6e23db062abbf835a6d265))
|
|
10
|
+
* Correct `eval` await description ([#4371](https://github.com/langchain-ai/deepagents/issues/4371)) ([4ab860f](https://github.com/langchain-ai/deepagents/commit/4ab860f007832821bd303809d7c2c1d2c86a6528))
|
|
11
|
+
|
|
5
12
|
## [0.3.2](https://github.com/langchain-ai/deepagents/compare/langchain-quickjs==0.3.1...langchain-quickjs==0.3.2) (2026-06-25)
|
|
6
13
|
|
|
7
14
|
### Features
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: langchain-quickjs
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.3
|
|
4
4
|
Summary: JavaScript REPL middleware for deepagents
|
|
5
5
|
Project-URL: Homepage, https://github.com/langchain-ai/deepagents/tree/main/libs/partners/quickjs
|
|
6
6
|
Project-URL: Repository, https://github.com/langchain-ai/deepagents
|
|
@@ -17,11 +17,11 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.13
|
|
18
18
|
Requires-Python: <4.0,>=3.11
|
|
19
19
|
Requires-Dist: bsdiff4<2.0.0,>=1.2.6
|
|
20
|
-
Requires-Dist: deepagents<0.8.0,>=0.6.
|
|
21
|
-
Requires-Dist: langchain-core<2.0.0,>=1.4.
|
|
22
|
-
Requires-Dist: langchain<2.0.0,>=1.3.
|
|
23
|
-
Requires-Dist: langgraph<2.0.0,>=1.2.
|
|
24
|
-
Requires-Dist: quickjs-rs<0.3.0,>=0.2.
|
|
20
|
+
Requires-Dist: deepagents<0.8.0,>=0.6.12
|
|
21
|
+
Requires-Dist: langchain-core<2.0.0,>=1.4.9
|
|
22
|
+
Requires-Dist: langchain<2.0.0,>=1.3.14
|
|
23
|
+
Requires-Dist: langgraph<2.0.0,>=1.2.9
|
|
24
|
+
Requires-Dist: quickjs-rs<0.3.0,>=0.2.4
|
|
25
25
|
Description-Content-Type: text/markdown
|
|
26
26
|
|
|
27
27
|
# langchain-quickjs
|
|
@@ -364,7 +364,8 @@ def render_eval_tool_description(*, mode: Literal["thread", "turn", "call"]) ->
|
|
|
364
364
|
return (
|
|
365
365
|
"Execute JavaScript in a sandboxed REPL. "
|
|
366
366
|
f"{state_line} No filesystem, network, or real clock. "
|
|
367
|
-
"
|
|
367
|
+
"Top-level `await` is supported; a final-expression Promise resolves "
|
|
368
|
+
"before the call returns."
|
|
368
369
|
)
|
|
369
370
|
|
|
370
371
|
|
|
@@ -16,6 +16,7 @@ import uuid
|
|
|
16
16
|
from dataclasses import dataclass, field, replace
|
|
17
17
|
from typing import TYPE_CHECKING, Any
|
|
18
18
|
|
|
19
|
+
from langgraph.errors import GraphInterrupt
|
|
19
20
|
from quickjs_rs import (
|
|
20
21
|
UNDEFINED,
|
|
21
22
|
ConcurrentEvalError,
|
|
@@ -633,6 +634,8 @@ class _ThreadREPL:
|
|
|
633
634
|
payload,
|
|
634
635
|
state=state,
|
|
635
636
|
)
|
|
637
|
+
except GraphInterrupt:
|
|
638
|
+
raise
|
|
636
639
|
except Exception as e:
|
|
637
640
|
# Subagent dispatches are part of the eval language, not
|
|
638
641
|
# PTC calls. Surface their validation/runtime failures as
|
|
@@ -10,6 +10,7 @@ from dataclasses import replace
|
|
|
10
10
|
from typing import TYPE_CHECKING, Any, Final, Literal, NotRequired, TypedDict
|
|
11
11
|
|
|
12
12
|
from langchain.agents.structured_output import AutoStrategy
|
|
13
|
+
from langgraph.errors import GraphInterrupt
|
|
13
14
|
|
|
14
15
|
from langchain_quickjs._format import coerce_tool_output_for_ptc
|
|
15
16
|
|
|
@@ -239,8 +240,12 @@ async def call_subagent_task_tool(
|
|
|
239
240
|
"description": description,
|
|
240
241
|
"subagent_type": subagent_type,
|
|
241
242
|
"runtime": runtime,
|
|
242
|
-
}
|
|
243
|
+
},
|
|
244
|
+
config=getattr(runtime, "config", None),
|
|
245
|
+
tool_call_id=subagent_id,
|
|
243
246
|
)
|
|
247
|
+
except GraphInterrupt:
|
|
248
|
+
raise
|
|
244
249
|
except Exception as e:
|
|
245
250
|
error_event: SubagentErrorEvent = {
|
|
246
251
|
"type": SUBAGENT_STREAM_EVENT_TYPE,
|
|
@@ -18,16 +18,16 @@ classifiers = [
|
|
|
18
18
|
"Programming Language :: Python :: 3.13",
|
|
19
19
|
]
|
|
20
20
|
|
|
21
|
-
version = "0.3.
|
|
21
|
+
version = "0.3.3"
|
|
22
22
|
requires-python = ">=3.11,<4.0"
|
|
23
23
|
keywords = ["deepagents", "langchain", "langgraph", "repl", "javascript", "quickjs", "middleware"]
|
|
24
24
|
|
|
25
25
|
dependencies = [
|
|
26
|
-
"deepagents>=0.6.
|
|
27
|
-
"quickjs-rs>=0.2.
|
|
28
|
-
"langchain>=1.3.
|
|
29
|
-
"langchain-core>=1.4.
|
|
30
|
-
"langgraph>=1.2.
|
|
26
|
+
"deepagents>=0.6.12,<0.8.0",
|
|
27
|
+
"quickjs-rs>=0.2.4,<0.3.0",
|
|
28
|
+
"langchain>=1.3.14,<2.0.0",
|
|
29
|
+
"langchain-core>=1.4.9,<2.0.0",
|
|
30
|
+
"langgraph>=1.2.9,<2.0.0",
|
|
31
31
|
"bsdiff4>=1.2.6,<2.0.0",
|
|
32
32
|
]
|
|
33
33
|
|
|
@@ -43,7 +43,7 @@ Documentation = "https://github.com/langchain-ai/deepagents/tree/main/libs/partn
|
|
|
43
43
|
test = [
|
|
44
44
|
"langgraph-checkpoint-postgres>=3.1.0,<4.0.0",
|
|
45
45
|
"psycopg[binary]>=3.3.4,<4.0.0",
|
|
46
|
-
"pytest>=9.
|
|
46
|
+
"pytest>=9.1.1,<10.0.0",
|
|
47
47
|
"pytest-benchmark",
|
|
48
48
|
"pytest-codspeed>=5.0.3,<6.0.0",
|
|
49
49
|
"pytest-cov",
|
|
@@ -52,9 +52,9 @@ test = [
|
|
|
52
52
|
"pytest-timeout>=2.4.0,<3.0.0",
|
|
53
53
|
"pytest-asyncio>=1.4.0",
|
|
54
54
|
"pytest-watcher>=0.6.3,<1.0.0",
|
|
55
|
-
"ruff>=0.15.
|
|
55
|
+
"ruff>=0.15.20,<0.16.0",
|
|
56
56
|
"testcontainers[postgres]>=4.14.2,<5.0.0",
|
|
57
|
-
"ty>=0.0.
|
|
57
|
+
"ty>=0.0.54,<1.0.0",
|
|
58
58
|
"twine",
|
|
59
59
|
"build",
|
|
60
60
|
]
|
|
@@ -66,7 +66,7 @@ When you finish all work, write your final answer in the message AFTER your last
|
|
|
66
66
|
- Read files before editing — understand existing content before making changes
|
|
67
67
|
- Mimic existing style, naming conventions, and patterns
|
|
68
68
|
|
|
69
|
-
## Filesystem Tools `ls`, `read_file`, `write_file`, `edit_file`, `glob`, `grep`
|
|
69
|
+
## Filesystem Tools `ls`, `read_file`, `write_file`, `edit_file`, `delete`, `glob`, `grep`
|
|
70
70
|
|
|
71
71
|
You have access to a filesystem which you can interact with using these tools.
|
|
72
72
|
All file paths must start with a /. Follow the tool docs for the available tools, and use pagination (offset/limit) when reading large files.
|
|
@@ -75,6 +75,7 @@ All file paths must start with a /. Follow the tool docs for the available tools
|
|
|
75
75
|
- read_file: read a file from the filesystem
|
|
76
76
|
- write_file: write to a file in the filesystem
|
|
77
77
|
- edit_file: edit a file in the filesystem
|
|
78
|
+
- delete: delete a file or directory (recursively) from the filesystem
|
|
78
79
|
- glob: find files matching a pattern (e.g., "**/*.py")
|
|
79
80
|
- grep: search for text within files
|
|
80
81
|
|
|
@@ -66,7 +66,7 @@ When you finish all work, write your final answer in the message AFTER your last
|
|
|
66
66
|
- Read files before editing — understand existing content before making changes
|
|
67
67
|
- Mimic existing style, naming conventions, and patterns
|
|
68
68
|
|
|
69
|
-
## Filesystem Tools `ls`, `read_file`, `write_file`, `edit_file`, `glob`, `grep`
|
|
69
|
+
## Filesystem Tools `ls`, `read_file`, `write_file`, `edit_file`, `delete`, `glob`, `grep`
|
|
70
70
|
|
|
71
71
|
You have access to a filesystem which you can interact with using these tools.
|
|
72
72
|
All file paths must start with a /. Follow the tool docs for the available tools, and use pagination (offset/limit) when reading large files.
|
|
@@ -75,6 +75,7 @@ All file paths must start with a /. Follow the tool docs for the available tools
|
|
|
75
75
|
- read_file: read a file from the filesystem
|
|
76
76
|
- write_file: write to a file in the filesystem
|
|
77
77
|
- edit_file: edit a file in the filesystem
|
|
78
|
+
- delete: delete a file or directory (recursively) from the filesystem
|
|
78
79
|
- glob: find files matching a pattern (e.g., "**/*.py")
|
|
79
80
|
- grep: search for text within files
|
|
80
81
|
|
|
@@ -66,7 +66,7 @@ When you finish all work, write your final answer in the message AFTER your last
|
|
|
66
66
|
- Read files before editing — understand existing content before making changes
|
|
67
67
|
- Mimic existing style, naming conventions, and patterns
|
|
68
68
|
|
|
69
|
-
## Filesystem Tools `ls`, `read_file`, `write_file`, `edit_file`, `glob`, `grep`
|
|
69
|
+
## Filesystem Tools `ls`, `read_file`, `write_file`, `edit_file`, `delete`, `glob`, `grep`
|
|
70
70
|
|
|
71
71
|
You have access to a filesystem which you can interact with using these tools.
|
|
72
72
|
All file paths must start with a /. Follow the tool docs for the available tools, and use pagination (offset/limit) when reading large files.
|
|
@@ -75,6 +75,7 @@ All file paths must start with a /. Follow the tool docs for the available tools
|
|
|
75
75
|
- read_file: read a file from the filesystem
|
|
76
76
|
- write_file: write to a file in the filesystem
|
|
77
77
|
- edit_file: edit a file in the filesystem
|
|
78
|
+
- delete: delete a file or directory (recursively) from the filesystem
|
|
78
79
|
- glob: find files matching a pattern (e.g., "**/*.py")
|
|
79
80
|
- grep: search for text within files
|
|
80
81
|
|
|
@@ -66,7 +66,7 @@ When you finish all work, write your final answer in the message AFTER your last
|
|
|
66
66
|
- Read files before editing — understand existing content before making changes
|
|
67
67
|
- Mimic existing style, naming conventions, and patterns
|
|
68
68
|
|
|
69
|
-
## Filesystem Tools `ls`, `read_file`, `write_file`, `edit_file`, `glob`, `grep`
|
|
69
|
+
## Filesystem Tools `ls`, `read_file`, `write_file`, `edit_file`, `delete`, `glob`, `grep`
|
|
70
70
|
|
|
71
71
|
You have access to a filesystem which you can interact with using these tools.
|
|
72
72
|
All file paths must start with a /. Follow the tool docs for the available tools, and use pagination (offset/limit) when reading large files.
|
|
@@ -75,6 +75,7 @@ All file paths must start with a /. Follow the tool docs for the available tools
|
|
|
75
75
|
- read_file: read a file from the filesystem
|
|
76
76
|
- write_file: write to a file in the filesystem
|
|
77
77
|
- edit_file: edit a file in the filesystem
|
|
78
|
+
- delete: delete a file or directory (recursively) from the filesystem
|
|
78
79
|
- glob: find files matching a pattern (e.g., "**/*.py")
|
|
79
80
|
- grep: search for text within files
|
|
80
81
|
|
|
@@ -66,7 +66,7 @@ When you finish all work, write your final answer in the message AFTER your last
|
|
|
66
66
|
- Read files before editing — understand existing content before making changes
|
|
67
67
|
- Mimic existing style, naming conventions, and patterns
|
|
68
68
|
|
|
69
|
-
## Filesystem Tools `ls`, `read_file`, `write_file`, `edit_file`, `glob`, `grep`
|
|
69
|
+
## Filesystem Tools `ls`, `read_file`, `write_file`, `edit_file`, `delete`, `glob`, `grep`
|
|
70
70
|
|
|
71
71
|
You have access to a filesystem which you can interact with using these tools.
|
|
72
72
|
All file paths must start with a /. Follow the tool docs for the available tools, and use pagination (offset/limit) when reading large files.
|
|
@@ -75,6 +75,7 @@ All file paths must start with a /. Follow the tool docs for the available tools
|
|
|
75
75
|
- read_file: read a file from the filesystem
|
|
76
76
|
- write_file: write to a file in the filesystem
|
|
77
77
|
- edit_file: edit a file in the filesystem
|
|
78
|
+
- delete: delete a file or directory (recursively) from the filesystem
|
|
78
79
|
- glob: find files matching a pattern (e.g., "**/*.py")
|
|
79
80
|
- grep: search for text within files
|
|
80
81
|
|
|
@@ -66,7 +66,7 @@ When you finish all work, write your final answer in the message AFTER your last
|
|
|
66
66
|
- Read files before editing — understand existing content before making changes
|
|
67
67
|
- Mimic existing style, naming conventions, and patterns
|
|
68
68
|
|
|
69
|
-
## Filesystem Tools `ls`, `read_file`, `write_file`, `edit_file`, `glob`, `grep`
|
|
69
|
+
## Filesystem Tools `ls`, `read_file`, `write_file`, `edit_file`, `delete`, `glob`, `grep`
|
|
70
70
|
|
|
71
71
|
You have access to a filesystem which you can interact with using these tools.
|
|
72
72
|
All file paths must start with a /. Follow the tool docs for the available tools, and use pagination (offset/limit) when reading large files.
|
|
@@ -75,6 +75,7 @@ All file paths must start with a /. Follow the tool docs for the available tools
|
|
|
75
75
|
- read_file: read a file from the filesystem
|
|
76
76
|
- write_file: write to a file in the filesystem
|
|
77
77
|
- edit_file: edit a file in the filesystem
|
|
78
|
+
- delete: delete a file or directory (recursively) from the filesystem
|
|
78
79
|
- glob: find files matching a pattern (e.g., "**/*.py")
|
|
79
80
|
- grep: search for text within files
|
|
80
81
|
|
|
@@ -1,6 +1,23 @@
|
|
|
1
|
+
"""Snapshot smoke tests for the quickjs system prompt.
|
|
2
|
+
|
|
3
|
+
These tests render the system prompt that `CodeInterpreterMiddleware` injects
|
|
4
|
+
into a `create_deep_agent` agent and compare it against committed snapshots in
|
|
5
|
+
`snapshots/`. Their purpose is to catch *drift in the deepagents SDK* that
|
|
6
|
+
silently changes the prompt the quickjs middleware composes — wording the
|
|
7
|
+
middleware does not own but depends on (e.g. the built-in `write_todos`
|
|
8
|
+
prompt, tool-listing format, or harness scaffolding).
|
|
9
|
+
|
|
10
|
+
Because the quickjs partner can be untouched while the SDK changes, CI runs
|
|
11
|
+
this file as a dedicated `test-quickjs-sdk-smoke` job (see `ci.yml`) whenever
|
|
12
|
+
the SDK changes but quickjs does not — the full quickjs suite would otherwise
|
|
13
|
+
not run and the drift would land unnoticed.
|
|
14
|
+
|
|
15
|
+
Run `pytest ... --update-snapshots` to regenerate the snapshots after an
|
|
16
|
+
intentional prompt change.
|
|
17
|
+
"""
|
|
18
|
+
|
|
1
19
|
from __future__ import annotations
|
|
2
20
|
|
|
3
|
-
import re
|
|
4
21
|
from collections.abc import (
|
|
5
22
|
Iterator, # noqa: TC003 — pydantic resolves field annotations at runtime
|
|
6
23
|
)
|
|
@@ -114,18 +131,6 @@ def _system_message_as_text(message: SystemMessage) -> str:
|
|
|
114
131
|
)
|
|
115
132
|
|
|
116
133
|
|
|
117
|
-
# Insert a blank line after a `##` heading when the next line is non-blank.
|
|
118
|
-
# The released `langchain==1.3.0` `WRITE_TODOS_SYSTEM_PROMPT` is missing this
|
|
119
|
-
# blank line; the fix is on `langchain` `main` and will land in the next
|
|
120
|
-
# release. Drop this normalization once we pin a `langchain` version that
|
|
121
|
-
# includes it.
|
|
122
|
-
_HEADING_NO_BLANK = re.compile(r"(?m)^(#+ [^\n]*)\n(?=[^\n])")
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
def _normalize_heading_blanks(text: str) -> str:
|
|
126
|
-
return _HEADING_NO_BLANK.sub(r"\1\n\n", text)
|
|
127
|
-
|
|
128
|
-
|
|
129
134
|
def _assert_snapshot(
|
|
130
135
|
snapshot_path: Path, actual: str, *, update_snapshots: bool
|
|
131
136
|
) -> None:
|
|
@@ -137,7 +142,7 @@ def _assert_snapshot(
|
|
|
137
142
|
raise AssertionError(msg)
|
|
138
143
|
|
|
139
144
|
expected = snapshot_path.read_text(encoding="utf-8")
|
|
140
|
-
assert
|
|
145
|
+
assert actual == expected
|
|
141
146
|
|
|
142
147
|
|
|
143
148
|
def _invoke_for_snapshot(agent: object, payload: dict[str, Any]) -> None:
|
|
@@ -89,4 +89,6 @@ def test_render_eval_tool_description_mode_specific(
|
|
|
89
89
|
) -> None:
|
|
90
90
|
description = render_eval_tool_description(mode=mode)
|
|
91
91
|
assert expected_fragment in description
|
|
92
|
+
assert "Top-level `await` is supported" in description
|
|
93
|
+
assert "will not resolve" not in description
|
|
92
94
|
assert description.startswith("Execute JavaScript in a sandboxed REPL.")
|
{langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/test_repl_middleware.py
RENAMED
|
@@ -4,7 +4,7 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
import asyncio
|
|
6
6
|
import threading
|
|
7
|
-
from typing import TYPE_CHECKING, Any
|
|
7
|
+
from typing import TYPE_CHECKING, Any, cast
|
|
8
8
|
from unittest.mock import MagicMock, patch
|
|
9
9
|
|
|
10
10
|
import pytest
|
|
@@ -22,6 +22,8 @@ from langchain_core.language_models.fake_chat_models import GenericFakeChatModel
|
|
|
22
22
|
from langchain_core.messages import AIMessage, SystemMessage
|
|
23
23
|
from langchain_core.runnables import RunnableLambda
|
|
24
24
|
from langchain_core.tools import BaseTool, StructuredTool
|
|
25
|
+
from langgraph.errors import GraphInterrupt
|
|
26
|
+
from langgraph.types import Interrupt
|
|
25
27
|
from pydantic import BaseModel, Field
|
|
26
28
|
from quickjs_rs import Runtime, ThreadWorker
|
|
27
29
|
|
|
@@ -31,6 +33,7 @@ from langchain_quickjs._repl import _clear_exception_references, _Registry, _Thr
|
|
|
31
33
|
from langchain_quickjs._subagent import (
|
|
32
34
|
_ensure_schema_title,
|
|
33
35
|
_runtime_with_response_format,
|
|
36
|
+
call_subagent_task_tool,
|
|
34
37
|
)
|
|
35
38
|
|
|
36
39
|
if TYPE_CHECKING:
|
|
@@ -872,6 +875,74 @@ def _subagent_runtime(
|
|
|
872
875
|
return _subagent_runtime_from_task_tool(_task_tool_for_runnable(runnable))
|
|
873
876
|
|
|
874
877
|
|
|
878
|
+
async def test_call_subagent_task_tool_forwards_config_and_tool_call_id() -> None:
|
|
879
|
+
calls: list[dict[str, Any]] = []
|
|
880
|
+
|
|
881
|
+
class _TaskTool:
|
|
882
|
+
name = "task"
|
|
883
|
+
|
|
884
|
+
async def arun(
|
|
885
|
+
self,
|
|
886
|
+
tool_input: dict[str, Any],
|
|
887
|
+
*,
|
|
888
|
+
config: dict[str, Any] | None = None,
|
|
889
|
+
tool_call_id: str | None = None,
|
|
890
|
+
) -> str:
|
|
891
|
+
calls.append(
|
|
892
|
+
{
|
|
893
|
+
"tool_input": tool_input,
|
|
894
|
+
"config": config,
|
|
895
|
+
"tool_call_id": tool_call_id,
|
|
896
|
+
}
|
|
897
|
+
)
|
|
898
|
+
return "ok"
|
|
899
|
+
|
|
900
|
+
runtime = ToolRuntime(
|
|
901
|
+
state={},
|
|
902
|
+
context={},
|
|
903
|
+
config={"configurable": {"thread_id": "parent-thread"}},
|
|
904
|
+
stream_writer=lambda _chunk: None,
|
|
905
|
+
tools=[],
|
|
906
|
+
tool_call_id="outer_eval_call",
|
|
907
|
+
store=None,
|
|
908
|
+
)
|
|
909
|
+
|
|
910
|
+
result = await call_subagent_task_tool(
|
|
911
|
+
cast("BaseTool", _TaskTool()),
|
|
912
|
+
description="work",
|
|
913
|
+
subagent_type="worker",
|
|
914
|
+
response_schema=None,
|
|
915
|
+
runtime=runtime,
|
|
916
|
+
)
|
|
917
|
+
|
|
918
|
+
assert result == "ok"
|
|
919
|
+
assert calls
|
|
920
|
+
assert calls[0]["config"] == runtime.config
|
|
921
|
+
assert calls[0]["tool_call_id"].startswith("ptc_task_")
|
|
922
|
+
assert calls[0]["tool_input"]["runtime"].tool_call_id == calls[0]["tool_call_id"]
|
|
923
|
+
|
|
924
|
+
|
|
925
|
+
async def test_async_task_global_propagates_graph_interrupt(repl: _ThreadREPL) -> None:
|
|
926
|
+
interrupt = GraphInterrupt([Interrupt(value={"action_requests": []})])
|
|
927
|
+
|
|
928
|
+
async def _async(state: dict[str, Any], config: Any) -> dict[str, Any]:
|
|
929
|
+
del state, config
|
|
930
|
+
raise interrupt
|
|
931
|
+
|
|
932
|
+
runnable = RunnableLambda(
|
|
933
|
+
lambda state, config: {"messages": [AIMessage(content="sync")]},
|
|
934
|
+
afunc=_async,
|
|
935
|
+
)
|
|
936
|
+
|
|
937
|
+
with pytest.raises(GraphInterrupt) as exc_info:
|
|
938
|
+
await repl.eval_async(
|
|
939
|
+
"await task({description: 'work', subagentType: 'worker'})",
|
|
940
|
+
outer_runtime=_subagent_runtime(runnable),
|
|
941
|
+
)
|
|
942
|
+
|
|
943
|
+
assert exc_info.value is interrupt
|
|
944
|
+
|
|
945
|
+
|
|
875
946
|
def test_runtime_with_response_format_uses_configurable() -> None:
|
|
876
947
|
runtime = _subagent_runtime(
|
|
877
948
|
RunnableLambda(lambda _state, _config: {"messages": [AIMessage(content="ok")]})
|
|
@@ -467,7 +467,7 @@ wheels = [
|
|
|
467
467
|
|
|
468
468
|
[[package]]
|
|
469
469
|
name = "deepagents"
|
|
470
|
-
version = "0.6.
|
|
470
|
+
version = "0.6.12"
|
|
471
471
|
source = { editable = "../../deepagents" }
|
|
472
472
|
dependencies = [
|
|
473
473
|
{ name = "langchain" },
|
|
@@ -480,21 +480,26 @@ dependencies = [
|
|
|
480
480
|
|
|
481
481
|
[package.metadata]
|
|
482
482
|
requires-dist = [
|
|
483
|
-
{ name = "
|
|
484
|
-
{ name = "langchain
|
|
485
|
-
{ name = "langchain-
|
|
486
|
-
{ name = "langchain-
|
|
487
|
-
{ name = "langchain-
|
|
488
|
-
{ name = "
|
|
483
|
+
{ name = "av", marker = "extra == 'video'", specifier = ">=17.0.0,<18.0.0" },
|
|
484
|
+
{ name = "langchain", specifier = ">=1.3.12,<2.0.0" },
|
|
485
|
+
{ name = "langchain-anthropic", specifier = ">=1.4.8,<2.0.0" },
|
|
486
|
+
{ name = "langchain-aws", marker = "extra == 'aws'", specifier = ">=1.6.2,<2.0.0" },
|
|
487
|
+
{ name = "langchain-core", specifier = ">=1.4.9,<2.0.0" },
|
|
488
|
+
{ name = "langchain-google-genai", specifier = ">=4.2.7,<5.0.0" },
|
|
489
|
+
{ name = "langchain-quickjs", marker = "extra == 'quickjs'", specifier = ">=0.3.2" },
|
|
490
|
+
{ name = "langsmith", specifier = ">=0.9.3" },
|
|
491
|
+
{ name = "pillow", marker = "extra == 'video'", specifier = ">=10.0.0,<13.0.0" },
|
|
489
492
|
{ name = "wcmatch", specifier = ">=10.1" },
|
|
490
493
|
]
|
|
491
|
-
provides-extras = ["quickjs"]
|
|
494
|
+
provides-extras = ["aws", "quickjs", "video"]
|
|
492
495
|
|
|
493
496
|
[package.metadata.requires-dev]
|
|
494
497
|
test = [
|
|
498
|
+
{ name = "av", specifier = ">=17.0.0,<18.0.0" },
|
|
495
499
|
{ name = "build" },
|
|
496
500
|
{ name = "langchain-openai" },
|
|
497
501
|
{ name = "langchain-tests", specifier = ">=1.1.9" },
|
|
502
|
+
{ name = "pillow", specifier = ">=10.0.0,<13.0.0" },
|
|
498
503
|
{ name = "pytest" },
|
|
499
504
|
{ name = "pytest-asyncio", specifier = ">=1.4.0" },
|
|
500
505
|
{ name = "pytest-benchmark" },
|
|
@@ -504,9 +509,9 @@ test = [
|
|
|
504
509
|
{ name = "pytest-timeout", specifier = ">=2.4.0,<3.0.0" },
|
|
505
510
|
{ name = "pytest-watcher", specifier = ">=0.6.3,<1.0.0" },
|
|
506
511
|
{ name = "pytest-xdist" },
|
|
507
|
-
{ name = "ruff", specifier = ">=0.15.
|
|
512
|
+
{ name = "ruff", specifier = ">=0.15.20,<0.16.0" },
|
|
508
513
|
{ name = "twine" },
|
|
509
|
-
{ name = "ty", specifier = ">=0.0.
|
|
514
|
+
{ name = "ty", specifier = ">=0.0.54,<1.0.0" },
|
|
510
515
|
]
|
|
511
516
|
|
|
512
517
|
[[package]]
|
|
@@ -862,35 +867,35 @@ wheels = [
|
|
|
862
867
|
|
|
863
868
|
[[package]]
|
|
864
869
|
name = "langchain"
|
|
865
|
-
version = "1.3.
|
|
870
|
+
version = "1.3.14"
|
|
866
871
|
source = { registry = "https://pypi.org/simple" }
|
|
867
872
|
dependencies = [
|
|
868
873
|
{ name = "langchain-core" },
|
|
869
874
|
{ name = "langgraph" },
|
|
870
875
|
{ name = "pydantic" },
|
|
871
876
|
]
|
|
872
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
877
|
+
sdist = { url = "https://files.pythonhosted.org/packages/29/68/a6dbad9c22df4087a0f9e79ddd46226c442b30128bfeee538d5889492a73/langchain-1.3.14.tar.gz", hash = "sha256:1b6696c72ba3bbbce54d745e0180742c9f6ece8bbc59ed5a46c3e20b9a435929", size = 645181, upload-time = "2026-07-16T13:28:18.29Z" }
|
|
873
878
|
wheels = [
|
|
874
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
879
|
+
{ url = "https://files.pythonhosted.org/packages/a9/ec/0f942e78a621f8e3162ff1ed24284f469aaf51fb4607ee5831c626f2b2bc/langchain-1.3.14-py3-none-any.whl", hash = "sha256:4d10dbe91005952cddd56d0dc77aa108964da6bae90ab20063653957e901f782", size = 139560, upload-time = "2026-07-16T13:28:16.498Z" },
|
|
875
880
|
]
|
|
876
881
|
|
|
877
882
|
[[package]]
|
|
878
883
|
name = "langchain-anthropic"
|
|
879
|
-
version = "1.4.
|
|
884
|
+
version = "1.4.8"
|
|
880
885
|
source = { registry = "https://pypi.org/simple" }
|
|
881
886
|
dependencies = [
|
|
882
887
|
{ name = "anthropic" },
|
|
883
888
|
{ name = "langchain-core" },
|
|
884
889
|
{ name = "pydantic" },
|
|
885
890
|
]
|
|
886
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
891
|
+
sdist = { url = "https://files.pythonhosted.org/packages/98/22/40ab129b08329ca295b391aa1d48267692b42594757084c6918e22b655ac/langchain_anthropic-1.4.8.tar.gz", hash = "sha256:c76891b2044d56105ff13c106ed12650637b53bd598a4bdf15b4796eefa2a4ec", size = 708524, upload-time = "2026-06-26T21:28:46.916Z" }
|
|
887
892
|
wheels = [
|
|
888
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
893
|
+
{ url = "https://files.pythonhosted.org/packages/b7/14/746235c4da89d9bc6a608c5f489f628e03feb8f697195c146e452c8f23c8/langchain_anthropic-1.4.8-py3-none-any.whl", hash = "sha256:778e9301b6fd517824f76ec1776975ce8add97a1f6a36c50ae3c2f4b03a66f7f", size = 52366, upload-time = "2026-06-26T21:28:45.535Z" },
|
|
889
894
|
]
|
|
890
895
|
|
|
891
896
|
[[package]]
|
|
892
897
|
name = "langchain-core"
|
|
893
|
-
version = "1.4.
|
|
898
|
+
version = "1.4.9"
|
|
894
899
|
source = { registry = "https://pypi.org/simple" }
|
|
895
900
|
dependencies = [
|
|
896
901
|
{ name = "jsonpatch" },
|
|
@@ -903,14 +908,14 @@ dependencies = [
|
|
|
903
908
|
{ name = "typing-extensions" },
|
|
904
909
|
{ name = "uuid-utils" },
|
|
905
910
|
]
|
|
906
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
911
|
+
sdist = { url = "https://files.pythonhosted.org/packages/2a/b9/e937d0a90b26540bff07e7a7c64349f3b29c2dcc36257cd1cd3fdce17f2a/langchain_core-1.4.9.tar.gz", hash = "sha256:f8078901145bed0466755277500a5a22822a7b628808c4c0a28d4fc88895fcf2", size = 967294, upload-time = "2026-07-08T20:06:54.191Z" }
|
|
907
912
|
wheels = [
|
|
908
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
913
|
+
{ url = "https://files.pythonhosted.org/packages/84/70/ade2fada52772798ef815b6352b59e71b116aa0c32c3aef5be3dc2cbed12/langchain_core-1.4.9-py3-none-any.whl", hash = "sha256:28e3909e2a10cc81504952d795ac0a9e014c0018121ef89d48dd396fa09ec624", size = 558293, upload-time = "2026-07-08T20:06:52.382Z" },
|
|
909
914
|
]
|
|
910
915
|
|
|
911
916
|
[[package]]
|
|
912
917
|
name = "langchain-google-genai"
|
|
913
|
-
version = "4.2.
|
|
918
|
+
version = "4.2.7"
|
|
914
919
|
source = { registry = "https://pypi.org/simple" }
|
|
915
920
|
dependencies = [
|
|
916
921
|
{ name = "filetype" },
|
|
@@ -918,26 +923,26 @@ dependencies = [
|
|
|
918
923
|
{ name = "langchain-core" },
|
|
919
924
|
{ name = "pydantic" },
|
|
920
925
|
]
|
|
921
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
926
|
+
sdist = { url = "https://files.pythonhosted.org/packages/1d/0c/bc60dabc362ca7c6ffe8c4bcc2f724c7e566b43eb230cee51419f88f784c/langchain_google_genai-4.2.7.tar.gz", hash = "sha256:03b1463ffe4d42435f43c7870467f2215f684bb46400d2543435d10157c80ac7", size = 281605, upload-time = "2026-07-06T13:51:58.724Z" }
|
|
922
927
|
wheels = [
|
|
923
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
928
|
+
{ url = "https://files.pythonhosted.org/packages/b2/f9/d73d1e712591723aaddb7a7b1e94978cd2320c29acfe0d26b6169a2f26f0/langchain_google_genai-4.2.7-py3-none-any.whl", hash = "sha256:0d9c388d0e6c629718fca6abb19c6fdca728a9a7873d0324c1ec821288b5b571", size = 70702, upload-time = "2026-07-06T13:51:57.499Z" },
|
|
924
929
|
]
|
|
925
930
|
|
|
926
931
|
[[package]]
|
|
927
932
|
name = "langchain-protocol"
|
|
928
|
-
version = "0.0.
|
|
933
|
+
version = "0.0.18"
|
|
929
934
|
source = { registry = "https://pypi.org/simple" }
|
|
930
935
|
dependencies = [
|
|
931
936
|
{ name = "typing-extensions" },
|
|
932
937
|
]
|
|
933
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
938
|
+
sdist = { url = "https://files.pythonhosted.org/packages/d2/59/b5959aea96faa9146e2e49a7a22882b3528c62efafe9a6a95beab30c2305/langchain_protocol-0.0.18.tar.gz", hash = "sha256:ec3e11782f1ed0c9db38e5a9ed01b0e7a0d3fba406faa8aef6594b73c56a63e6", size = 6150, upload-time = "2026-06-18T17:08:26.959Z" }
|
|
934
939
|
wheels = [
|
|
935
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
940
|
+
{ url = "https://files.pythonhosted.org/packages/99/2e/d82db9eec13ad0f72e7aaad5c4bc730ab111934fdc83c85523206eb9b0a0/langchain_protocol-0.0.18-py3-none-any.whl", hash = "sha256:70b53a86fbf9cedc863555effe44da192ab02d556ddbf2cf95b8873adcf41b5a", size = 7221, upload-time = "2026-06-18T17:08:25.996Z" },
|
|
936
941
|
]
|
|
937
942
|
|
|
938
943
|
[[package]]
|
|
939
944
|
name = "langchain-quickjs"
|
|
940
|
-
version = "0.3.
|
|
945
|
+
version = "0.3.3"
|
|
941
946
|
source = { editable = "." }
|
|
942
947
|
dependencies = [
|
|
943
948
|
{ name = "bsdiff4" },
|
|
@@ -972,10 +977,10 @@ test = [
|
|
|
972
977
|
requires-dist = [
|
|
973
978
|
{ name = "bsdiff4", specifier = ">=1.2.6,<2.0.0" },
|
|
974
979
|
{ name = "deepagents", editable = "../../deepagents" },
|
|
975
|
-
{ name = "langchain", specifier = ">=1.3.
|
|
976
|
-
{ name = "langchain-core", specifier = ">=1.4.
|
|
977
|
-
{ name = "langgraph", specifier = ">=1.2.
|
|
978
|
-
{ name = "quickjs-rs", specifier = ">=0.2.
|
|
980
|
+
{ name = "langchain", specifier = ">=1.3.14,<2.0.0" },
|
|
981
|
+
{ name = "langchain-core", specifier = ">=1.4.9,<2.0.0" },
|
|
982
|
+
{ name = "langgraph", specifier = ">=1.2.9,<2.0.0" },
|
|
983
|
+
{ name = "quickjs-rs", specifier = ">=0.2.4,<0.3.0" },
|
|
979
984
|
]
|
|
980
985
|
|
|
981
986
|
[package.metadata.requires-dev]
|
|
@@ -983,7 +988,7 @@ test = [
|
|
|
983
988
|
{ name = "build" },
|
|
984
989
|
{ name = "langgraph-checkpoint-postgres", specifier = ">=3.1.0,<4.0.0" },
|
|
985
990
|
{ name = "psycopg", extras = ["binary"], specifier = ">=3.3.4,<4.0.0" },
|
|
986
|
-
{ name = "pytest", specifier = ">=9.
|
|
991
|
+
{ name = "pytest", specifier = ">=9.1.1,<10.0.0" },
|
|
987
992
|
{ name = "pytest-asyncio", specifier = ">=1.4.0" },
|
|
988
993
|
{ name = "pytest-benchmark" },
|
|
989
994
|
{ name = "pytest-codspeed", specifier = ">=5.0.3,<6.0.0" },
|
|
@@ -992,15 +997,15 @@ test = [
|
|
|
992
997
|
{ name = "pytest-timeout", specifier = ">=2.4.0,<3.0.0" },
|
|
993
998
|
{ name = "pytest-watcher", specifier = ">=0.6.3,<1.0.0" },
|
|
994
999
|
{ name = "pytest-xdist" },
|
|
995
|
-
{ name = "ruff", specifier = ">=0.15.
|
|
1000
|
+
{ name = "ruff", specifier = ">=0.15.20,<0.16.0" },
|
|
996
1001
|
{ name = "testcontainers", extras = ["postgres"], specifier = ">=4.14.2,<5.0.0" },
|
|
997
1002
|
{ name = "twine" },
|
|
998
|
-
{ name = "ty", specifier = ">=0.0.
|
|
1003
|
+
{ name = "ty", specifier = ">=0.0.54,<1.0.0" },
|
|
999
1004
|
]
|
|
1000
1005
|
|
|
1001
1006
|
[[package]]
|
|
1002
1007
|
name = "langgraph"
|
|
1003
|
-
version = "1.2.
|
|
1008
|
+
version = "1.2.9"
|
|
1004
1009
|
source = { registry = "https://pypi.org/simple" }
|
|
1005
1010
|
dependencies = [
|
|
1006
1011
|
{ name = "langchain-core" },
|
|
@@ -1010,22 +1015,22 @@ dependencies = [
|
|
|
1010
1015
|
{ name = "pydantic" },
|
|
1011
1016
|
{ name = "xxhash" },
|
|
1012
1017
|
]
|
|
1013
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1018
|
+
sdist = { url = "https://files.pythonhosted.org/packages/41/4b/0d1130e26b41a99dcc88353bbe7162a1f255c4db746bd94024268e6af27b/langgraph-1.2.9.tar.gz", hash = "sha256:385f87bc1802c35af7e0aa479278ecba8582d103515eb48256cb2ddcd42d0bd4", size = 722869, upload-time = "2026-07-10T01:30:14.985Z" }
|
|
1014
1019
|
wheels = [
|
|
1015
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1020
|
+
{ url = "https://files.pythonhosted.org/packages/41/16/0b8dc48823f1326f3e0c8012a3c07a40da6f194299e2ec080df236287baf/langgraph-1.2.9-py3-none-any.whl", hash = "sha256:c2d98ad94333937922ba04148641c1da2bfe45b5b8e55d7b6dcb0bb2df809e76", size = 247473, upload-time = "2026-07-10T01:30:13.733Z" },
|
|
1016
1021
|
]
|
|
1017
1022
|
|
|
1018
1023
|
[[package]]
|
|
1019
1024
|
name = "langgraph-checkpoint"
|
|
1020
|
-
version = "4.1.
|
|
1025
|
+
version = "4.1.1"
|
|
1021
1026
|
source = { registry = "https://pypi.org/simple" }
|
|
1022
1027
|
dependencies = [
|
|
1023
1028
|
{ name = "langchain-core" },
|
|
1024
1029
|
{ name = "ormsgpack" },
|
|
1025
1030
|
]
|
|
1026
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1031
|
+
sdist = { url = "https://files.pythonhosted.org/packages/83/47/886af6f886f0bff2273164a45f008694e48a96ff3cd25ff0228f2aa9480e/langgraph_checkpoint-4.1.1.tar.gz", hash = "sha256:6c2bdb530c91f91d7d9c1bd100925d0fc4f498d418c17f3587d1526279482a25", size = 184020, upload-time = "2026-05-22T16:57:38.503Z" }
|
|
1027
1032
|
wheels = [
|
|
1028
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1033
|
+
{ url = "https://files.pythonhosted.org/packages/bd/b4/71425e3e38be92611300b9cc5e46a5bf98ab23f5ea8a75b73d02a2f1413c/langgraph_checkpoint-4.1.1-py3-none-any.whl", hash = "sha256:25d29144b082827218e7bc3f1e9b0566a4bb007895cd6cc26f66a8428739f56e", size = 56212, upload-time = "2026-05-22T16:57:37.203Z" },
|
|
1029
1034
|
]
|
|
1030
1035
|
|
|
1031
1036
|
[[package]]
|
|
@@ -1074,23 +1079,27 @@ wheels = [
|
|
|
1074
1079
|
|
|
1075
1080
|
[[package]]
|
|
1076
1081
|
name = "langsmith"
|
|
1077
|
-
version = "0.9.
|
|
1082
|
+
version = "0.9.3"
|
|
1078
1083
|
source = { registry = "https://pypi.org/simple" }
|
|
1079
1084
|
dependencies = [
|
|
1085
|
+
{ name = "anyio" },
|
|
1086
|
+
{ name = "distro" },
|
|
1080
1087
|
{ name = "httpx" },
|
|
1081
1088
|
{ name = "orjson", marker = "platform_python_implementation != 'PyPy'" },
|
|
1082
1089
|
{ name = "packaging" },
|
|
1083
1090
|
{ name = "pydantic" },
|
|
1084
1091
|
{ name = "requests" },
|
|
1085
1092
|
{ name = "requests-toolbelt" },
|
|
1093
|
+
{ name = "sniffio" },
|
|
1094
|
+
{ name = "typing-extensions" },
|
|
1086
1095
|
{ name = "uuid-utils" },
|
|
1087
1096
|
{ name = "websockets" },
|
|
1088
1097
|
{ name = "xxhash" },
|
|
1089
1098
|
{ name = "zstandard" },
|
|
1090
1099
|
]
|
|
1091
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1100
|
+
sdist = { url = "https://files.pythonhosted.org/packages/7e/b7/43f80940a758ceb48714ccc10c7acb9564be4f0d4786e8ed5d46deb0be39/langsmith-0.9.3.tar.gz", hash = "sha256:868a007b3ecda002914b21212a953c77fcb1d71a8a09a94562c3b57941d3df3a", size = 4577380, upload-time = "2026-06-26T15:56:30.45Z" }
|
|
1092
1101
|
wheels = [
|
|
1093
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1102
|
+
{ url = "https://files.pythonhosted.org/packages/9e/fb/dc9f70b5581371fba7b01ba0704fe859bfcd12c4dad82b42ec12bd4160b1/langsmith-0.9.3-py3-none-any.whl", hash = "sha256:aac85686868a7e61d77858b880230e510583c61ea48ac0a197e6ceff64ffb22b", size = 619927, upload-time = "2026-06-26T15:56:28.301Z" },
|
|
1094
1103
|
]
|
|
1095
1104
|
|
|
1096
1105
|
[[package]]
|
|
@@ -1548,7 +1557,7 @@ wheels = [
|
|
|
1548
1557
|
|
|
1549
1558
|
[[package]]
|
|
1550
1559
|
name = "pytest"
|
|
1551
|
-
version = "9.
|
|
1560
|
+
version = "9.1.1"
|
|
1552
1561
|
source = { registry = "https://pypi.org/simple" }
|
|
1553
1562
|
dependencies = [
|
|
1554
1563
|
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
|
@@ -1557,9 +1566,9 @@ dependencies = [
|
|
|
1557
1566
|
{ name = "pluggy" },
|
|
1558
1567
|
{ name = "pygments" },
|
|
1559
1568
|
]
|
|
1560
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1569
|
+
sdist = { url = "https://files.pythonhosted.org/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313", size = 1636369, upload-time = "2026-06-19T10:58:32.857Z" }
|
|
1561
1570
|
wheels = [
|
|
1562
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1571
|
+
{ url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" },
|
|
1563
1572
|
]
|
|
1564
1573
|
|
|
1565
1574
|
[[package]]
|
|
@@ -1779,14 +1788,14 @@ wheels = [
|
|
|
1779
1788
|
|
|
1780
1789
|
[[package]]
|
|
1781
1790
|
name = "quickjs-rs"
|
|
1782
|
-
version = "0.2.
|
|
1791
|
+
version = "0.2.4"
|
|
1783
1792
|
source = { registry = "https://pypi.org/simple" }
|
|
1784
1793
|
dependencies = [
|
|
1785
1794
|
{ name = "wasmtime" },
|
|
1786
1795
|
]
|
|
1787
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1796
|
+
sdist = { url = "https://files.pythonhosted.org/packages/61/34/1b63bc3db8d950139618d1d38eff5648e5aaa53b2982da5ec121fcf72c63/quickjs_rs-0.2.4.tar.gz", hash = "sha256:7226d18bfa05d97fd629348b7d71512dab4da12bfbe29bdd50486bfc10858cc9", size = 829056, upload-time = "2026-06-24T19:42:21.6Z" }
|
|
1788
1797
|
wheels = [
|
|
1789
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1798
|
+
{ url = "https://files.pythonhosted.org/packages/9d/5f/38a30bdfc4fd0a369f1cfe394ea51fbb43a7e492ffe4006f212d24ab05c5/quickjs_rs-0.2.4-py3-none-any.whl", hash = "sha256:3b497b712c4e94401d5617a4c5808b290e2d6bac8e147b315e880306145ae734", size = 799749, upload-time = "2026-06-24T19:42:19.707Z" },
|
|
1790
1799
|
]
|
|
1791
1800
|
|
|
1792
1801
|
[[package]]
|
|
@@ -1854,27 +1863,27 @@ wheels = [
|
|
|
1854
1863
|
|
|
1855
1864
|
[[package]]
|
|
1856
1865
|
name = "ruff"
|
|
1857
|
-
version = "0.15.
|
|
1858
|
-
source = { registry = "https://pypi.org/simple" }
|
|
1859
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1860
|
-
wheels = [
|
|
1861
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1862
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1863
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1864
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1865
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1866
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1867
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1868
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1869
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1870
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1871
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1872
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1873
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1874
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1875
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1876
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1877
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1866
|
+
version = "0.15.20"
|
|
1867
|
+
source = { registry = "https://pypi.org/simple" }
|
|
1868
|
+
sdist = { url = "https://files.pythonhosted.org/packages/43/dc/35b341fc554ba02f217fc10da57d1a75168cfbcf75b0ef2202176d4c4f2d/ruff-0.15.20.tar.gz", hash = "sha256:1416eb04349192646b54de98f146c4f59afe37d0decfc02c3cbbf396f3a28566", size = 4755489, upload-time = "2026-06-25T17:20:37.578Z" }
|
|
1869
|
+
wheels = [
|
|
1870
|
+
{ url = "https://files.pythonhosted.org/packages/94/d9/2d5014f0253ba541d2061d9fa7193f48e941c8b21bb88a7ff9bbe0bd0596/ruff-0.15.20-py3-none-linux_armv6l.whl", hash = "sha256:00e188c53e499c3c1637f73c91dcf2fb56d576cab76ce1be50a27c4e80e37078", size = 10839665, upload-time = "2026-06-25T17:19:44.702Z" },
|
|
1871
|
+
{ url = "https://files.pythonhosted.org/packages/c6/d3/ac1798ba64f670698867fcfc591d50e7e421bef137db564858f619a30fcf/ruff-0.15.20-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9ebd1fd9b9c95fc0bd7b2761aebec1f030013d2e193a2901b224af68fe47251b", size = 11208649, upload-time = "2026-06-25T17:19:48.787Z" },
|
|
1872
|
+
{ url = "https://files.pythonhosted.org/packages/47/47/d3ac899991202095dfcf3d5176be4272642be3cf981a2f1a30f72a2afb95/ruff-0.15.20-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c5b16cdd67ca108185cd36dce98c576350c03b1660a751de725fb049193a0632", size = 10622638, upload-time = "2026-06-25T17:19:51.354Z" },
|
|
1873
|
+
{ url = "https://files.pythonhosted.org/packages/33/13/4e043fe30aa94d4ff5213a9881fc296d12960f5971b234a5263fdc225312/ruff-0.15.20-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3413bb3c3d2ca6a8208f1f4809cd2dca3c6de6d0b491c0e70847672bde6e6efd", size = 10984227, upload-time = "2026-06-25T17:19:54.044Z" },
|
|
1874
|
+
{ url = "https://files.pythonhosted.org/packages/76/e6/92e7bf40388bc5800073b96564f56264f7e48bfd1a498f5ced6ae6d5a769/ruff-0.15.20-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd7ec42b3bb3da066488db093308a69c4ac5ee6d2af333a86ba6e2eb2e7dd44b", size = 10622882, upload-time = "2026-06-25T17:19:57.037Z" },
|
|
1875
|
+
{ url = "https://files.pythonhosted.org/packages/13/7a/43460be3f24495a3aa46d4b16873e2c4941b3b5f0b00cf88c03b7b94b339/ruff-0.15.20-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1a36ad0eb77fba9aabfb69ede54de6f376d04ac18ebea022847046d340a8267", size = 11474808, upload-time = "2026-06-25T17:20:00.357Z" },
|
|
1876
|
+
{ url = "https://files.pythonhosted.org/packages/27/a0/f37077884873221c6b33b4ab49eb18f9f88e54a16a25a5bca59bef46dd66/ruff-0.15.20-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6df3b1e4610432f0386dba04d853b5f08cbbc903410c6fcc02f620f05aff53c", size = 12293094, upload-time = "2026-06-25T17:20:03.446Z" },
|
|
1877
|
+
{ url = "https://files.pythonhosted.org/packages/a6/74/165545b60256a9704c21ac0ec4a0d07933b320812f9584836c9f4aca4292/ruff-0.15.20-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e89f198a1ea6ef0d727c1cf16088bc91a6cb0ab947dedc966715691647186eae", size = 11526176, upload-time = "2026-06-25T17:20:06.301Z" },
|
|
1878
|
+
{ url = "https://files.pythonhosted.org/packages/86/b1/a976a136d40ade83ce743578399865f57001003a409acadc0ecbb3051082/ruff-0.15.20-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309809086c2acb67624950a3c8133e80f32d0d3e27106c0cd60ff26657c9f24b", size = 11520767, upload-time = "2026-06-25T17:20:09.191Z" },
|
|
1879
|
+
{ url = "https://files.pythonhosted.org/packages/19/0f/f032696cb01c9b54c0263fa393474d7758f1cdc021a01b04e3cbc2500999/ruff-0.15.20-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:2d2374caa2f2c2f9e2b7da0a50802cfb8b79f55a9b5e49379f564544fbf56487", size = 11500132, upload-time = "2026-06-25T17:20:13.602Z" },
|
|
1880
|
+
{ url = "https://files.pythonhosted.org/packages/4b/f4/51b1a14bc69e8c224b15dab9cce8e99b425e0455d462caa2b3c9be2b6a8e/ruff-0.15.20-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a1ed17b65293e0c2f22fc387bc13198a5de94bf4429589b0ff6946b0feaf21a3", size = 10943828, upload-time = "2026-06-25T17:20:16.635Z" },
|
|
1881
|
+
{ url = "https://files.pythonhosted.org/packages/71/4b/fe267640783cd02bf6c5cc290b1df1051be2ec294c678b5c15fe19e52343/ruff-0.15.20-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:f701305e66b38ea6c91882490eb73459796808e4c6362a1b765255e0cdcd4053", size = 10645418, upload-time = "2026-06-25T17:20:19.4Z" },
|
|
1882
|
+
{ url = "https://files.pythonhosted.org/packages/b0/c0/a65aa4ec2f5e87a1df32dc3ec1fede434fe3dfd5cbcf3b503cafc676ab54/ruff-0.15.20-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5b9c0c367ad8e5d0d5b5b8537864c469a0a0e55417aadfbeca41fa61333be9f4", size = 11211770, upload-time = "2026-06-25T17:20:22.033Z" },
|
|
1883
|
+
{ url = "https://files.pythonhosted.org/packages/5a/a4/0caa331d954ae2723d729d351c989cb4ca8b6077d5c6c2cb6de75e98c041/ruff-0.15.20-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:01cc00dd58f0df339d0e902219dd53990ea99996a0344e5d9cc8d45d5307e460", size = 11618698, upload-time = "2026-06-25T17:20:25.259Z" },
|
|
1884
|
+
{ url = "https://files.pythonhosted.org/packages/10/9b/5f14927848d2fd4aa891fd88d883788c5a7baba561c7874732364045708c/ruff-0.15.20-py3-none-win32.whl", hash = "sha256:ed65ef510e43a137207e0f01cfcf998aeddb1aeeda5c9d35023e910284d7cf21", size = 10857322, upload-time = "2026-06-25T17:20:28.612Z" },
|
|
1885
|
+
{ url = "https://files.pythonhosted.org/packages/fa/f0/fe47c501f9dea92a26d788ff98bb5d92ed4cb4c88792c5c88af6b697dc8e/ruff-0.15.20-py3-none-win_amd64.whl", hash = "sha256:a525c81c70fb0380344dd1d8745d8cc1c890b7fc94a58d5a07bd8eb9557b8415", size = 11993274, upload-time = "2026-06-25T17:20:31.871Z" },
|
|
1886
|
+
{ url = "https://files.pythonhosted.org/packages/d7/2b/9555445e1201d92b3195f45cdb153a0b68f24e0a4273f6e3d5ab46e212bb/ruff-0.15.20-py3-none-win_arm64.whl", hash = "sha256:2f5b2a6d614e8700388806a14996c40fab2c47b819ef57d790a34878858ed9ca", size = 11343498, upload-time = "2026-06-25T17:20:35.03Z" },
|
|
1878
1887
|
]
|
|
1879
1888
|
|
|
1880
1889
|
[[package]]
|
|
@@ -2000,27 +2009,27 @@ wheels = [
|
|
|
2000
2009
|
|
|
2001
2010
|
[[package]]
|
|
2002
2011
|
name = "ty"
|
|
2003
|
-
version = "0.0.
|
|
2004
|
-
source = { registry = "https://pypi.org/simple" }
|
|
2005
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
2006
|
-
wheels = [
|
|
2007
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2008
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2009
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2010
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2011
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2012
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2013
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2014
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2015
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2016
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2017
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2018
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2019
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2020
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2021
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2022
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2023
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2012
|
+
version = "0.0.54"
|
|
2013
|
+
source = { registry = "https://pypi.org/simple" }
|
|
2014
|
+
sdist = { url = "https://files.pythonhosted.org/packages/ae/c6/2ea90406d82cf82b0a68725130da2cc9de161bfa883c7dee4f0d94dbf3ce/ty-0.0.54.tar.gz", hash = "sha256:b6b3cfe174f27744413c898b2488ca52ea76070637095de131698e506b455055", size = 6009000, upload-time = "2026-06-25T17:53:17.098Z" }
|
|
2015
|
+
wheels = [
|
|
2016
|
+
{ url = "https://files.pythonhosted.org/packages/b8/26/a83e688e108a29a8630d7075bae47b72614cfa275c88b3166575ca0a8af0/ty-0.0.54-py3-none-linux_armv6l.whl", hash = "sha256:0365ea133d6b028952c22e6412a00da9739bc3b538df3c0a61972bf64d8558f1", size = 11616164, upload-time = "2026-06-25T17:52:29.174Z" },
|
|
2017
|
+
{ url = "https://files.pythonhosted.org/packages/85/89/9f3374f9eef0267aed5efbd5544e47cfa6affc94236d929e878a780cf7d7/ty-0.0.54-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:0de0cf48918609a3996cc2a4e18e8028fc4d2446bb82df822e9737f53bb9afee", size = 11351250, upload-time = "2026-06-25T17:52:32.181Z" },
|
|
2018
|
+
{ url = "https://files.pythonhosted.org/packages/28/11/e0e3f542a6de0e0dd5f503215527f8d9fc141426bd52dbe98fce927ff831/ty-0.0.54-py3-none-macosx_11_0_arm64.whl", hash = "sha256:57c7c6c1fcd2aa29cd40117142c0d45a2b0e6c42817ef58ea8dcb5f59d6ea802", size = 10872162, upload-time = "2026-06-25T17:52:35.206Z" },
|
|
2019
|
+
{ url = "https://files.pythonhosted.org/packages/3a/b0/fa369840f1ccd391971f693a8f86c445eb1a0fad61a6e0e773f0871a7a6f/ty-0.0.54-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc179be5a070c5dc7785a5e108eece2ab216978a91f91e11661308749a6c28ee", size = 11419826, upload-time = "2026-06-25T17:52:37.942Z" },
|
|
2020
|
+
{ url = "https://files.pythonhosted.org/packages/62/5f/8fbf9b7147cf08cc96cc9f84b9699ae7c7a0a1eb0a4c3d912261351b1cbb/ty-0.0.54-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5a0a764e2261f9292adf14bbc91b9d7ef7ee7c00b8f3d9f2563f19ae3605109b", size = 11411732, upload-time = "2026-06-25T17:52:41.124Z" },
|
|
2021
|
+
{ url = "https://files.pythonhosted.org/packages/8a/ce/53aa78828f98ce396d5cc0f0878d990c0d70f6bf7704105232399315952f/ty-0.0.54-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2259e1a1f744a5f20f079dcc4061c1464001c75f255aaca7316e422f8f5e5e09", size = 12039318, upload-time = "2026-06-25T17:52:43.981Z" },
|
|
2022
|
+
{ url = "https://files.pythonhosted.org/packages/9e/05/5654d4d20376a73cd2e9df8178515c466ff9b2bda15748ee5810c955a265/ty-0.0.54-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8674617617399d4fdd568b3e3a8f87a913df525c80691d732b0744b571b341c8", size = 12625562, upload-time = "2026-06-25T17:52:46.578Z" },
|
|
2023
|
+
{ url = "https://files.pythonhosted.org/packages/37/f7/982be4abde816c821c6aeaba133dc34b5346eebbb29dadbf77b8ee46dad9/ty-0.0.54-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e949f7bbfa80a9fa00968924028aa673a505faa234b0b9d1241b7d34373eae14", size = 12175175, upload-time = "2026-06-25T17:52:49.176Z" },
|
|
2024
|
+
{ url = "https://files.pythonhosted.org/packages/6a/8b/371fa3d121a1d9c8806a997ec5aa7b6a91912044d936594e6cf04d197471/ty-0.0.54-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a0ce5af9eefe636888377d8ab8ea817239ed96de64fede62c4e5331ae16db5c", size = 11945921, upload-time = "2026-06-25T17:52:51.983Z" },
|
|
2025
|
+
{ url = "https://files.pythonhosted.org/packages/dd/76/cab1ff8f6029b657b3fed59add1a2f188df6af26b6d649a6c789139dd88d/ty-0.0.54-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:ad329d1942e23ee428948e673b2a50249f27e164220075b0a2ef8169029c8423", size = 12269965, upload-time = "2026-06-25T17:52:54.697Z" },
|
|
2026
|
+
{ url = "https://files.pythonhosted.org/packages/31/2f/c14b36cacacf7cc5ae40c862c34c07fadeba85cb93fd8f328cdac2029270/ty-0.0.54-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:6e43124e6ac4cb9702d99facb28c6b2f2574c8a4b8f59eae2632eef4962e3439", size = 11370742, upload-time = "2026-06-25T17:52:57.233Z" },
|
|
2027
|
+
{ url = "https://files.pythonhosted.org/packages/db/1b/9e55bb273d3ea8efe165a73e34ae92220593e4dbfe665b8283be9d3eadea/ty-0.0.54-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:994ede70fc1b6f0efc29d0f1fc0d819630bed1d2610eac2e9dabb2840f3f3bf9", size = 11432346, upload-time = "2026-06-25T17:52:59.898Z" },
|
|
2028
|
+
{ url = "https://files.pythonhosted.org/packages/db/16/402e8d2b1ab1020a25774f22ec0ba4378617758197278c1ddbc093b64854/ty-0.0.54-py3-none-musllinux_1_2_i686.whl", hash = "sha256:b1d048df26abb433acc5b3bcef214167c7dc9e3341f8f200a3c59702516a0ed0", size = 11707341, upload-time = "2026-06-25T17:53:02.678Z" },
|
|
2029
|
+
{ url = "https://files.pythonhosted.org/packages/3b/ca/220599403e1dc864109402c88e22e8793108ec3be41576cd044772023d94/ty-0.0.54-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:651e90094d41c4add3d616e0f2c1c881c6700a2ae3ac191c023c665050ff2cdc", size = 12053427, upload-time = "2026-06-25T17:53:05.983Z" },
|
|
2030
|
+
{ url = "https://files.pythonhosted.org/packages/fc/a9/f08df843e3d4422184a847829eb103c49a6118eed7024969a1a706de1c5e/ty-0.0.54-py3-none-win32.whl", hash = "sha256:7e876c9b5130afc6b6e46035a2eecca9b563b78249030296e1089922428d5415", size = 11044018, upload-time = "2026-06-25T17:53:09.582Z" },
|
|
2031
|
+
{ url = "https://files.pythonhosted.org/packages/4c/26/230719333d79fae599e3c2da5ac35e36786cdd6c4b4f2a5d5450ce171dc7/ty-0.0.54-py3-none-win_amd64.whl", hash = "sha256:f478476f3222807b4d92f15c5298a8c242f2ed17c724da75f4a8c6b522b4f29a", size = 12107765, upload-time = "2026-06-25T17:53:12.2Z" },
|
|
2032
|
+
{ url = "https://files.pythonhosted.org/packages/28/68/b5fcb35ceebffab3e8898bd25e51d0bb77a0c43c50b7a8e3fae56125e4f5/ty-0.0.54-py3-none-win_arm64.whl", hash = "sha256:01ab9eb8c0802d35ae73fa08e4e037963250ee5ee6aa7ed8c8b994e5495db5ef", size = 11498510, upload-time = "2026-06-25T17:53:14.693Z" },
|
|
2024
2033
|
]
|
|
2025
2034
|
|
|
2026
2035
|
[[package]]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/benchmarks/test_quickjs_throughput.py
RENAMED
|
File without changes
|
|
File without changes
|
{langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/integration_tests/test_postgres.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/smoke_tests/__init__.py
RENAMED
|
File without changes
|
{langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/smoke_tests/conftest.py
RENAMED
|
File without changes
|
|
File without changes
|
{langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/test_end_to_end_async.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/test_snapshot_persistence.py
RENAMED
|
File without changes
|
{langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/test_subagent_events.py
RENAMED
|
File without changes
|
{langchain_quickjs-0.3.2 → langchain_quickjs-0.3.3}/tests/unit_tests/test_thread_affinity.py
RENAMED
|
File without changes
|