Compare commits

...

5 Commits

Author SHA1 Message Date
Sydney Runkle
ea0f748122 boom 2026-03-03 14:39:26 -08:00
Sydney Runkle
d7bbc0ae90 boom 2026-03-03 14:38:53 -08:00
Sydney Runkle
c52c5d5bf0 simplified diff 2026-03-03 14:27:45 -08:00
Sydney Runkle
6aa74a76b7 poc/diff-for-v2 2026-03-03 14:16:28 -08:00
Sydney Runkle
1587713786 poc/diff-for-v2 2026-03-03 14:16:23 -08:00
5 changed files with 36 additions and 37 deletions

View File

@@ -25,7 +25,7 @@ version = "1.2.10"
requires-python = ">=3.10.0,<4.0.0"
dependencies = [
"langchain-core>=1.2.10,<2.0.0",
"langgraph>=1.0.8,<1.1.0",
"langgraph>=1.0.8,<2.0.0",
"pydantic>=2.7.4,<3.0.0",
]
@@ -100,6 +100,7 @@ langchain-tests = { path = "../standard-tests", editable = true }
langchain-text-splitters = { path = "../text-splitters", editable = true }
langchain-openai = { path = "../partners/openai", editable = true }
langchain-anthropic = { path = "../partners/anthropic", editable = true }
langgraph = { git = "https://github.com/langchain-ai/langgraph.git", branch = "sr/1.1-v2-default", subdirectory = "libs/langgraph" }
[tool.ruff]
line-length = 100

View File

@@ -94,7 +94,8 @@ def test_create_agent_invoke(
)
thread1 = {"configurable": {"thread_id": "1"}}
assert agent_one.invoke({"messages": ["hello"]}, thread1) == {
result = agent_one.invoke({"messages": ["hello"]}, thread1)
assert result.value == {
"messages": [
_AnyIdHumanMessage(content="hello"),
AIMessage(
@@ -195,7 +196,8 @@ def test_create_agent_jump(
assert agent_one.get_graph().draw_mermaid() == snapshot
thread1 = {"configurable": {"thread_id": "1"}}
assert agent_one.invoke({"messages": []}, thread1) == {"messages": []}
result = agent_one.invoke({"messages": []}, thread1)
assert result.value == {"messages": []}
assert calls == ["NoopSeven.before_model", "NoopEight.before_model"]
@@ -693,7 +695,7 @@ async def test_create_agent_async_jump() -> None:
result = await agent.ainvoke({"messages": []})
assert result == {"messages": []}
assert result.value == {"messages": []}
assert calls == ["AsyncMiddlewareOne.abefore_model", "AsyncMiddlewareTwo.abefore_model"]

View File

@@ -630,8 +630,8 @@ class TestComposition:
result = agent.invoke({"messages": [HumanMessage("Hi")]})
assert result.get("structured_response") == {"key": "value"}
messages = result["messages"]
assert result.value.get("structured_response") == {"key": "value"}
messages = result.value["messages"]
assert len(messages) == 2
assert messages[1].content == "Hello"

View File

@@ -114,10 +114,12 @@ def test_lc_agent_name_in_stream_metadata() -> None:
)
metadata_with_agent_name = []
for _chunk, metadata in agent.stream(
for event in agent.stream(
{"messages": [HumanMessage("Hello")]},
stream_mode="messages",
):
assert event["type"] == "messages"
_chunk, metadata = event["data"]
if "lc_agent_name" in metadata:
metadata_with_agent_name.append(metadata["lc_agent_name"])
@@ -132,10 +134,12 @@ def test_lc_agent_name_not_in_stream_metadata_when_name_not_provided() -> None:
model=FakeToolCallingModel(tool_calls=tool_calls),
)
for _chunk, metadata in agent.stream(
for event in agent.stream(
{"messages": [HumanMessage("Hello")]},
stream_mode="messages",
):
assert event["type"] == "messages"
_chunk, metadata = event["data"]
assert "lc_agent_name" not in metadata
@@ -150,10 +154,12 @@ def test_lc_agent_name_in_stream_metadata_multiple_iterations() -> None:
)
metadata_with_agent_name = []
for _chunk, metadata in agent.stream(
for event in agent.stream(
{"messages": [HumanMessage("Call a tool")]},
stream_mode="messages",
):
assert event["type"] == "messages"
_chunk, metadata = event["data"]
if "lc_agent_name" in metadata:
metadata_with_agent_name.append(metadata["lc_agent_name"])
@@ -171,10 +177,12 @@ async def test_lc_agent_name_in_astream_metadata() -> None:
)
metadata_with_agent_name = []
async for _chunk, metadata in agent.astream(
async for event in agent.astream(
{"messages": [HumanMessage("Hello async")]},
stream_mode="messages",
):
assert event["type"] == "messages"
_chunk, metadata = event["data"]
if "lc_agent_name" in metadata:
metadata_with_agent_name.append(metadata["lc_agent_name"])
@@ -189,10 +197,12 @@ async def test_lc_agent_name_not_in_astream_metadata_when_name_not_provided() ->
model=FakeToolCallingModel(tool_calls=tool_calls),
)
async for _chunk, metadata in agent.astream(
async for event in agent.astream(
{"messages": [HumanMessage("Hello async")]},
stream_mode="messages",
):
assert event["type"] == "messages"
_chunk, metadata = event["data"]
assert "lc_agent_name" not in metadata
@@ -207,10 +217,12 @@ async def test_lc_agent_name_in_astream_metadata_multiple_iterations() -> None:
)
metadata_with_agent_name = []
async for _chunk, metadata in agent.astream(
async for event in agent.astream(
{"messages": [HumanMessage("Call tool async")]},
stream_mode="messages",
):
assert event["type"] == "messages"
_chunk, metadata = event["data"]
if "lc_agent_name" in metadata:
metadata_with_agent_name.append(metadata["lc_agent_name"])

View File

@@ -1983,7 +1983,7 @@ requires-dist = [
{ name = "langchain-perplexity", marker = "extra == 'perplexity'" },
{ name = "langchain-together", marker = "extra == 'together'" },
{ name = "langchain-xai", marker = "extra == 'xai'" },
{ name = "langgraph", specifier = ">=1.0.8,<1.1.0" },
{ name = "langgraph", git = "https://github.com/langchain-ai/langgraph.git?subdirectory=libs%2Flanggraph&branch=sr%2F1.1-v2-default" },
{ name = "pydantic", specifier = ">=2.7.4,<3.0.0" },
]
provides-extras = ["community", "anthropic", "openai", "azure-ai", "google-vertexai", "google-genai", "fireworks", "ollama", "together", "mistralai", "huggingface", "groq", "aws", "deepseek", "xai", "perplexity"]
@@ -2151,7 +2151,7 @@ wheels = [
[[package]]
name = "langchain-core"
version = "1.2.16"
version = "1.2.17"
source = { editable = "../core" }
dependencies = [
{ name = "jsonpatch" },
@@ -2535,8 +2535,8 @@ wheels = [
[[package]]
name = "langgraph"
version = "1.0.10"
source = { registry = "https://pypi.org/simple" }
version = "1.0.10rc1"
source = { git = "https://github.com/langchain-ai/langgraph.git?subdirectory=libs%2Flanggraph&branch=sr%2F1.1-v2-default#33289349a938ee0d6a8d3d5f01db989d43fc28d7" }
dependencies = [
{ name = "langchain-core" },
{ name = "langgraph-checkpoint" },
@@ -2545,49 +2545,33 @@ dependencies = [
{ name = "pydantic" },
{ name = "xxhash" },
]
sdist = { url = "https://files.pythonhosted.org/packages/55/92/14df6fefba28c10caf1cb05aa5b8c7bf005838fe32a86d903b6c7cc4018d/langgraph-1.0.10.tar.gz", hash = "sha256:73bd10ee14a8020f31ef07e9cd4c1a70c35cc07b9c2b9cd637509a10d9d51e29", size = 511644, upload-time = "2026-02-27T21:04:38.743Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/5d/60/260e0c04620a37ba8916b712766c341cc5fc685dabc6948c899494bbc2ae/langgraph-1.0.10-py3-none-any.whl", hash = "sha256:7c298bef4f6ea292fcf9824d6088fe41a6727e2904ad6066f240c4095af12247", size = 160920, upload-time = "2026-02-27T21:04:35.932Z" },
]
[[package]]
name = "langgraph-checkpoint"
version = "4.0.0"
source = { registry = "https://pypi.org/simple" }
version = "4.0.1rc4"
source = { git = "https://github.com/langchain-ai/langgraph.git?subdirectory=libs%2Fcheckpoint&branch=sr%2F1.1-v2-default#33289349a938ee0d6a8d3d5f01db989d43fc28d7" }
dependencies = [
{ name = "langchain-core" },
{ name = "ormsgpack" },
]
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" }
wheels = [
{ 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" },
]
[[package]]
name = "langgraph-prebuilt"
version = "1.0.8"
source = { registry = "https://pypi.org/simple" }
source = { git = "https://github.com/langchain-ai/langgraph.git?subdirectory=libs%2Fprebuilt&branch=sr%2F1.1-v2-default#33289349a938ee0d6a8d3d5f01db989d43fc28d7" }
dependencies = [
{ name = "langchain-core" },
{ name = "langgraph-checkpoint" },
]
sdist = { url = "https://files.pythonhosted.org/packages/0d/06/dd61a5c2dce009d1b03b1d56f2a85b3127659fdddf5b3be5d8f1d60820fb/langgraph_prebuilt-1.0.8.tar.gz", hash = "sha256:0cd3cf5473ced8a6cd687cc5294e08d3de57529d8dd14fdc6ae4899549efcf69", size = 164442, upload-time = "2026-02-19T18:14:39.083Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/dc/41/ec966424ad3f2ed3996d24079d3342c8cd6c0bd0653c12b2a917a685ec6c/langgraph_prebuilt-1.0.8-py3-none-any.whl", hash = "sha256:d16a731e591ba4470f3e313a319c7eee7dbc40895bcf15c821f985a3522a7ce0", size = 35648, upload-time = "2026-02-19T18:14:37.611Z" },
]
[[package]]
name = "langgraph-sdk"
version = "0.3.3"
source = { registry = "https://pypi.org/simple" }
version = "0.3.9"
source = { git = "https://github.com/langchain-ai/langgraph.git?subdirectory=libs%2Fsdk-py&branch=sr%2F1.1-v2-default#33289349a938ee0d6a8d3d5f01db989d43fc28d7" }
dependencies = [
{ name = "httpx" },
{ name = "orjson" },
]
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" }
wheels = [
{ 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" },
]
[[package]]
name = "langsmith"