Skip to content

Commit 947a5b5

Browse files
committed
INTPYTHON-828 - Make Langchain-MongoDB compatible with LangChain >= 1.0
1 parent 2178db1 commit 947a5b5

File tree

10 files changed

+373
-104
lines changed

10 files changed

+373
-104
lines changed

libs/langchain-mongodb/langchain_mongodb/retrievers/parent_document.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,15 @@
33
from typing import Any, List, Optional
44

55
import pymongo
6-
from langchain.retrievers.parent_document_retriever import ParentDocumentRetriever
6+
7+
try:
8+
from langchain.retrievers.parent_document_retriever import ( # type: ignore[import-not-found]
9+
ParentDocumentRetriever,
10+
)
11+
except ImportError:
12+
from langchain_classic.retrievers.parent_document_retriever import ( # type: ignore[import-not-found]
13+
ParentDocumentRetriever,
14+
)
715
from langchain_core.callbacks import (
816
AsyncCallbackManagerForRetrieverRun,
917
CallbackManagerForRetrieverRun,

libs/langchain-mongodb/langchain_mongodb/retrievers/self_querying.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,21 @@
11
from typing import Any, Dict, Sequence, Tuple, Union
22

3-
from langchain.chains.query_constructor.schema import AttributeInfo
4-
from langchain.retrievers.self_query.base import SelfQueryRetriever
3+
try:
4+
from langchain.chains.query_constructor.schema import ( # type: ignore[import-not-found]
5+
AttributeInfo,
6+
)
7+
except ImportError:
8+
from langchain_classic.chains.query_constructor.schema import ( # type: ignore[import-not-found]
9+
AttributeInfo,
10+
)
11+
try:
12+
from langchain.retrievers.self_query.base import ( # type: ignore[import-not-found]
13+
SelfQueryRetriever,
14+
)
15+
except ImportError:
16+
from langchain_classic.retrievers.self_query.base import ( # type: ignore[import-not-found]
17+
SelfQueryRetriever,
18+
)
519
from langchain_core.language_models import BaseLanguageModel
620
from langchain_core.runnables import Runnable
721
from langchain_core.structured_query import (

libs/langchain-mongodb/pyproject.toml

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,21 @@ description = "An integration package connecting MongoDB and LangChain"
1010
readme = "README.md"
1111
requires-python = ">=3.10"
1212
dependencies = [
13-
"langchain-core>=0.3,<1.0",
14-
"langchain>=0.3,<1.0",
13+
"langchain-core>=1.0",
14+
"langchain>=1.0",
15+
"langchain-classic>=1.0",
1516
"pymongo>=4.6.1",
16-
"langchain-text-splitters>=0.3,<1.0",
17+
"langchain-text-splitters>=1.0",
1718
"numpy>=1.26",
1819
"lark<2.0.0,>=1.1.9",
1920
]
2021

2122
[dependency-groups]
2223
dev = [
2324
"freezegun>=1.2.2",
24-
"langchain>=0.3.14,<1.0",
25-
"langchain-core>=0.3.29,<1.0",
26-
"langchain-text-splitters>=0.3.5,<1.0",
25+
"langchain>=1.0",
26+
"langchain-core>=1.0",
27+
"langchain-text-splitters>=1.0",
2728
"pytest-mock>=3.10.0",
2829
"pytest>=7.3.0",
2930
"syrupy>=4.0.2",
@@ -33,13 +34,13 @@ dev = [
3334
"pre-commit>=4.0",
3435
"mypy>=1.10",
3536
"simsimd>=6.5.0",
36-
"langchain-ollama>=0.2.2,<1.0",
37-
"langchain-openai>=0.2.14,<1.0",
38-
"langchain-community>=0.3.27,<1.0",
37+
"langchain-ollama>=1.0",
38+
"langchain-openai>=1.0",
39+
"langchain-community>=0.3.27",
3940
"pypdf>=5.0.1",
4041
"langgraph>=0.2.72",
4142
"flaky>=3.8.1",
42-
"langchain-tests==0.3.22,<1.0",
43+
"langchain-tests==0.3.22",
4344
"pip>=25.0.1",
4445
"typing-extensions>=4.12.2",
4546
]

libs/langchain-mongodb/tests/integration_tests/test_agent_toolkit.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,15 @@
55
import requests
66
from flaky import flaky # type:ignore[import-untyped]
77
from langchain_openai import AzureChatOpenAI, ChatOpenAI
8-
from langgraph.prebuilt import create_react_agent
8+
9+
try:
10+
from langgraph.prebuilt import create_react_agent as create_agent
11+
12+
_HAVE_V1 = False
13+
except ImportError:
14+
from langchain.agents import create_agent # type: ignore[assignment]
15+
16+
_HAVE_V1 = True
917
from pymongo import MongoClient
1018

1119
from langchain_mongodb.agent_toolkit import (
@@ -64,7 +72,10 @@ def test_toolkit_response(db):
6472
prompt = MONGODB_AGENT_SYSTEM_PROMPT.format(top_k=5)
6573

6674
test_query = "Which country's customers spent the most?"
67-
agent = create_react_agent(llm, toolkit.get_tools(), prompt=prompt)
75+
if _HAVE_V1:
76+
agent = create_agent(llm, toolkit.get_tools(), system_prompt=prompt)
77+
else:
78+
agent = create_agent(llm, toolkit.get_tools(), prompt=prompt)
6879
agent.step_timeout = 60
6980
events = agent.stream(
7081
{"messages": [("user", test_query)]},

libs/langchain-mongodb/tests/integration_tests/test_chat_message_histories.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
import json
22
import warnings
33

4-
from langchain.memory import ConversationBufferMemory # type: ignore[import-not-found]
4+
try:
5+
from langchain.memory import ( # type: ignore[import-not-found]
6+
ConversationBufferMemory,
7+
)
8+
except ImportError:
9+
from langchain_classic.memory import ( # type: ignore[import-not-found]
10+
ConversationBufferMemory,
11+
)
512
from langchain_core.messages import message_to_dict
613

714
from langchain_mongodb.chat_message_histories import MongoDBChatMessageHistory

libs/langchain-mongodb/tests/integration_tests/test_retriever_selfquerying.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,21 @@
44
from typing import Generator, Sequence, Union
55

66
import pytest
7-
from langchain.chains.query_constructor.schema import AttributeInfo
8-
from langchain.retrievers.self_query.base import SelfQueryRetriever
7+
8+
try:
9+
from langchain.chains.query_constructor.schema import ( # type: ignore[import-not-found]
10+
AttributeInfo,
11+
)
12+
from langchain.retrievers.self_query.base import ( # type: ignore[import-not-found]
13+
SelfQueryRetriever,
14+
)
15+
except ImportError:
16+
from langchain_classic.chains.query_constructor.schema import ( # type: ignore[import-not-found]
17+
AttributeInfo,
18+
)
19+
from langchain_classic.retrievers.self_query.base import ( # type: ignore[import-not-found]
20+
SelfQueryRetriever,
21+
)
922
from langchain_core.documents import Document
1023
from langchain_openai import AzureChatOpenAI, ChatOpenAI
1124
from langchain_openai.chat_models.base import BaseChatOpenAI

libs/langchain-mongodb/tests/unit_tests/test_chat_message_histories.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,15 @@
33

44
import mongomock
55
import pytest
6-
from langchain.memory import ConversationBufferMemory # type: ignore[import-not-found]
6+
7+
try:
8+
from langchain.memory import ( # type: ignore[import-not-found]
9+
ConversationBufferMemory,
10+
)
11+
except ImportError:
12+
from langchain_classic.memory import ( # type: ignore[import-not-found]
13+
ConversationBufferMemory,
14+
)
715
from langchain_core.messages import message_to_dict
816
from pytest_mock import MockerFixture
917

0 commit comments

Comments
 (0)