Remove old checkpoint test fixtures (#4814)

This commit is contained in:
Nuno Campos
2025-05-28 14:03:12 -07:00
committed by GitHub
12 changed files with 7817 additions and 8411 deletions
+4 -1
View File
@@ -2,7 +2,10 @@
"permissions": {
"allow": [
"Bash(rg:*)",
"Bash(python:*)"
"Bash(python:*)",
"Bash(grep:*)",
"Bash(sed:*)",
"Bash(awk:*)"
],
"deny": []
}
@@ -422,7 +422,7 @@
'''
# ---
# name: test_start_branch_then[memory]
# name: test_start_branch_then[memory-in_memory]
'''
---
config:
@@ -569,76 +569,6 @@
'''
# ---
# name: test_in_one_fan_out_state_graph_waiting_edge_custom_state_class_pydantic1[memory]
'''
graph TD;
__start__ --> rewrite_query;
analyzer_one --> retriever_one;
retriever_one --> qa;
retriever_two --> qa;
rewrite_query --> analyzer_one;
rewrite_query -.-> retriever_two;
qa --> __end__;
'''
# ---
# name: test_in_one_fan_out_state_graph_waiting_edge_custom_state_class_pydantic1[memory].1
dict({
'definitions': dict({
'InnerObject': dict({
'properties': dict({
'yo': dict({
'title': 'Yo',
'type': 'integer',
}),
}),
'required': list([
'yo',
]),
'title': 'InnerObject',
'type': 'object',
}),
}),
'properties': dict({
'inner': dict({
'$ref': '#/definitions/InnerObject',
}),
'query': dict({
'title': 'Query',
'type': 'string',
}),
}),
'required': list([
'query',
'inner',
]),
'title': 'Input',
'type': 'object',
})
# ---
# name: test_in_one_fan_out_state_graph_waiting_edge_custom_state_class_pydantic1[memory].2
dict({
'properties': dict({
'answer': dict({
'title': 'Answer',
'type': 'string',
}),
'docs': dict({
'items': dict({
'type': 'string',
}),
'title': 'Docs',
'type': 'array',
}),
}),
'required': list([
'answer',
'docs',
]),
'title': 'Output',
'type': 'object',
})
# ---
# name: test_in_one_fan_out_state_graph_waiting_edge_custom_state_class_pydantic2[memory]
'''
graph TD;
-96
View File
@@ -1,11 +1,7 @@
from collections.abc import AsyncIterator, Iterator
from contextlib import asynccontextmanager
from typing import Optional
from uuid import UUID
import pytest
from langchain_core import __version__ as core_version
from packaging import version
from pytest_mock import MockerFixture
from langgraph.cache.base import BaseCache
@@ -35,14 +31,6 @@ from tests.conftest_store import (
_store_postgres_pool,
)
pytest.register_assert_rewrite("tests.memory_assert")
# TODO: fix this once core is released
IS_LANGCHAIN_CORE_030_OR_GREATER = version.parse(core_version) >= version.parse(
"0.3.0.dev0"
)
SHOULD_CHECK_SNAPSHOTS = IS_LANGCHAIN_CORE_030_OR_GREATER
@pytest.fixture
def anyio_backend():
@@ -62,73 +50,6 @@ def checkpoint_during(request: pytest.FixtureRequest) -> bool:
return request.param
# --- start of deprecated fixtures ---
@pytest.fixture(scope="function")
def checkpointer_memory():
with _checkpointer_memory() as checkpointer:
yield checkpointer
@pytest.fixture(scope="function")
def checkpointer_sqlite():
with _checkpointer_sqlite() as checkpointer:
yield checkpointer
@pytest.fixture(scope="function")
def checkpointer_sqlite_aes():
with _checkpointer_sqlite_aes() as checkpointer:
yield checkpointer
@pytest.fixture(scope="function")
def checkpointer_postgres():
with _checkpointer_postgres() as checkpointer:
yield checkpointer
@pytest.fixture(scope="function")
def checkpointer_postgres_pipe():
with _checkpointer_postgres_pipe() as checkpointer:
yield checkpointer
@pytest.fixture(scope="function")
def checkpointer_postgres_pool():
with _checkpointer_postgres_pool() as checkpointer:
yield checkpointer
@asynccontextmanager
async def awith_checkpointer(
checkpointer_name: Optional[str],
) -> AsyncIterator[BaseCheckpointSaver]:
if checkpointer_name is None:
yield None
elif checkpointer_name == "memory":
with _checkpointer_memory() as checkpointer:
yield checkpointer
elif checkpointer_name == "sqlite_aio":
async with _checkpointer_sqlite_aio() as checkpointer:
yield checkpointer
elif checkpointer_name == "postgres_aio":
async with _checkpointer_postgres_aio() as checkpointer:
yield checkpointer
elif checkpointer_name == "postgres_aio_pipe":
async with _checkpointer_postgres_aio_pipe() as checkpointer:
yield checkpointer
elif checkpointer_name == "postgres_aio_pool":
async with _checkpointer_postgres_aio_pool() as checkpointer:
yield checkpointer
else:
raise NotImplementedError(f"Unknown checkpointer: {checkpointer_name}")
# --- end of deprecated fixtures ---
@pytest.fixture(scope="function", params=["sqlite", "memory"])
def cache(request: pytest.FixtureRequest) -> Iterator[BaseCache]:
if request.param == "sqlite":
@@ -255,20 +176,3 @@ async def async_checkpointer(
yield checkpointer
else:
raise NotImplementedError(f"Unknown checkpointer: {checkpointer_name}")
ALL_CHECKPOINTERS_SYNC = [
"memory",
"sqlite",
"sqlite_aes",
"postgres",
"postgres_pipe",
"postgres_pool",
]
ALL_CHECKPOINTERS_ASYNC = [
"memory",
"sqlite_aio",
"postgres_aio",
"postgres_aio_pipe",
"postgres_aio_pool",
]
@@ -11,7 +11,10 @@ from langgraph.checkpoint.postgres.aio import AsyncPostgresSaver
from langgraph.checkpoint.serde.encrypted import EncryptedSerializer
from langgraph.checkpoint.sqlite import SqliteSaver
from langgraph.checkpoint.sqlite.aio import AsyncSqliteSaver
from tests.memory_assert import MemorySaverAssertImmutable
pytest.register_assert_rewrite("tests.memory_assert")
from tests.memory_assert import MemorySaverAssertImmutable # noqa: E402
DEFAULT_POSTGRES_URI = "postgres://postgres:postgres@localhost:5442/"
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-7
View File
@@ -2,8 +2,6 @@ from collections.abc import AsyncIterator, Iterator
from uuid import UUID
import pytest
from langchain_core import __version__ as core_version
from packaging import version
from pytest_mock import MockerFixture
from langgraph.checkpoint.base import BaseCheckpointSaver
@@ -31,11 +29,6 @@ from tests.conftest_store import (
pytest.register_assert_rewrite("tests.memory_assert")
# TODO: fix this once core is released
IS_LANGCHAIN_CORE_030_OR_GREATER = version.parse(core_version) >= version.parse(
"0.3.0.dev0"
)
@pytest.fixture
def anyio_backend():
-17
View File
@@ -55,7 +55,6 @@ from langgraph.store.memory import InMemoryStore
from langgraph.types import Command, Interrupt, interrupt
from langgraph.utils.config import get_stream_writer
from tests.any_str import AnyStr
from tests.conftest import IS_LANGCHAIN_CORE_030_OR_GREATER
from tests.messages import _AnyIdHumanMessage, _AnyIdToolMessage
from tests.model import FakeToolCallingModel
@@ -456,10 +455,6 @@ def test__infer_handled_types() -> None:
_infer_handled_types(handler)
@pytest.mark.skipif(
not IS_LANGCHAIN_CORE_030_OR_GREATER,
reason="Pydantic v1 is required for this test to pass in langchain-core < 0.3",
)
@pytest.mark.parametrize("version", REACT_TOOL_CALL_VERSIONS)
def test_react_agent_with_structured_response(version: str) -> None:
class WeatherResponse(BaseModel):
@@ -496,10 +491,6 @@ class CustomStatePydantic(AgentStatePydantic):
user_name: Optional[str] = None
@pytest.mark.skipif(
not IS_LANGCHAIN_CORE_030_OR_GREATER,
reason="Langchain core 0.3.0 or greater is required",
)
@pytest.mark.parametrize("version", REACT_TOOL_CALL_VERSIONS)
@pytest.mark.parametrize("state_schema", [CustomState, CustomStatePydantic])
def test_react_agent_update_state(
@@ -565,10 +556,6 @@ def test_react_agent_update_state(
assert tool_message.name == "get_user_name"
@pytest.mark.skipif(
not IS_LANGCHAIN_CORE_030_OR_GREATER,
reason="Langchain core 0.3.0 or greater is required",
)
@pytest.mark.parametrize("version", REACT_TOOL_CALL_VERSIONS)
def test_react_agent_parallel_tool_calls(
sync_checkpointer: BaseCheckpointSaver, version: str
@@ -832,10 +819,6 @@ def test_create_react_agent_inject_vars(
assert result["foo"] == 2
@pytest.mark.skipif(
not IS_LANGCHAIN_CORE_030_OR_GREATER,
reason="Langchain core 0.3.0 or greater is required",
)
def test_tool_node_inject_store() -> None:
store = InMemoryStore()
namespace = ("test",)
-9
View File
@@ -18,7 +18,6 @@ from langgraph.errors import NodeInterrupt
from langgraph.prebuilt import ToolNode
from langgraph.prebuilt.tool_node import TOOL_CALL_ERROR_TEMPLATE
from langgraph.types import Command, Send
from tests.conftest import IS_LANGCHAIN_CORE_030_OR_GREATER
pytestmark = pytest.mark.anyio
@@ -492,10 +491,6 @@ def test_tool_node_node_interrupt():
assert exc_info.value == "foo"
@pytest.mark.skipif(
not IS_LANGCHAIN_CORE_030_OR_GREATER,
reason="Langchain core 0.3.0 or greater is required",
)
@pytest.mark.parametrize("input_type", ["dict", "tool_calls"])
async def test_tool_node_command(input_type: str):
from langchain_core.tools.base import InjectedToolCallId
@@ -797,10 +792,6 @@ async def test_tool_node_command(input_type: str):
) == [Command(update={"messages": []}, graph=Command.PARENT)]
@pytest.mark.skipif(
not IS_LANGCHAIN_CORE_030_OR_GREATER,
reason="Langchain core 0.3.0 or greater is required",
)
async def test_tool_node_command_list_input():
from langchain_core.tools.base import InjectedToolCallId