From d640605694874e94168c90b6fa08c413b87ccea1 Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Wed, 1 May 2024 09:34:44 -0400 Subject: [PATCH] langchain[patch]: Migrate chat loaders to optional community imports (#21089) Migrate chat loaders to optional community imports --- .../langchain/langchain/chat_loaders/gmail.py | 26 +++++++++++--- .../langchain/chat_loaders/imessage.py | 24 +++++++++++-- .../langchain/chat_loaders/langsmith.py | 34 +++++++++++++++--- .../langchain/langchain/chat_loaders/slack.py | 24 +++++++++++-- .../langchain/chat_loaders/telegram.py | 24 +++++++++++-- .../langchain/langchain/chat_loaders/utils.py | 35 +++++++++++++++---- .../langchain/chat_loaders/whatsapp.py | 24 +++++++++++-- 7 files changed, 168 insertions(+), 23 deletions(-) diff --git a/libs/langchain/langchain/chat_loaders/gmail.py b/libs/langchain/langchain/chat_loaders/gmail.py index 56828e7ad2e..337da76e192 100644 --- a/libs/langchain/langchain/chat_loaders/gmail.py +++ b/libs/langchain/langchain/chat_loaders/gmail.py @@ -1,5 +1,23 @@ -from langchain_community.chat_loaders.gmail import ( - GMailLoader, -) +from typing import TYPE_CHECKING, Any -__all__ = ["GMailLoader"] +from langchain._api import create_importer + +if TYPE_CHECKING: + from langchain_community.chat_loaders.gmail import GMailLoader + +# Create a way to dynamically look up deprecated imports. +# Used to consolidate logic for raising deprecation warnings and +# handling optional imports. +DEPRECATED_LOOKUP = {"GMailLoader": "langchain_community.chat_loaders.gmail"} + +_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP) + + +def __getattr__(name: str) -> Any: + """Look up attributes dynamically.""" + return _import_attribute(name) + + +__all__ = [ + "GMailLoader", +] diff --git a/libs/langchain/langchain/chat_loaders/imessage.py b/libs/langchain/langchain/chat_loaders/imessage.py index efae0b51c4c..742313e96b6 100644 --- a/libs/langchain/langchain/chat_loaders/imessage.py +++ b/libs/langchain/langchain/chat_loaders/imessage.py @@ -1,3 +1,23 @@ -from langchain_community.chat_loaders.imessage import IMessageChatLoader +from typing import TYPE_CHECKING, Any -__all__ = ["IMessageChatLoader"] +from langchain._api import create_importer + +if TYPE_CHECKING: + from langchain_community.chat_loaders.imessage import IMessageChatLoader + +# Create a way to dynamically look up deprecated imports. +# Used to consolidate logic for raising deprecation warnings and +# handling optional imports. +DEPRECATED_LOOKUP = {"IMessageChatLoader": "langchain_community.chat_loaders.imessage"} + +_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP) + + +def __getattr__(name: str) -> Any: + """Look up attributes dynamically.""" + return _import_attribute(name) + + +__all__ = [ + "IMessageChatLoader", +] diff --git a/libs/langchain/langchain/chat_loaders/langsmith.py b/libs/langchain/langchain/chat_loaders/langsmith.py index 6d57f12bb73..aa90fd429fd 100644 --- a/libs/langchain/langchain/chat_loaders/langsmith.py +++ b/libs/langchain/langchain/chat_loaders/langsmith.py @@ -1,6 +1,30 @@ -from langchain_community.chat_loaders.langsmith import ( - LangSmithDatasetChatLoader, - LangSmithRunChatLoader, -) +from typing import TYPE_CHECKING, Any -__all__ = ["LangSmithRunChatLoader", "LangSmithDatasetChatLoader"] +from langchain._api import create_importer + +if TYPE_CHECKING: + from langchain_community.chat_loaders.langsmith import ( + LangSmithDatasetChatLoader, + LangSmithRunChatLoader, + ) + +# Create a way to dynamically look up deprecated imports. +# Used to consolidate logic for raising deprecation warnings and +# handling optional imports. +DEPRECATED_LOOKUP = { + "LangSmithRunChatLoader": "langchain_community.chat_loaders.langsmith", + "LangSmithDatasetChatLoader": "langchain_community.chat_loaders.langsmith", +} + +_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP) + + +def __getattr__(name: str) -> Any: + """Look up attributes dynamically.""" + return _import_attribute(name) + + +__all__ = [ + "LangSmithRunChatLoader", + "LangSmithDatasetChatLoader", +] diff --git a/libs/langchain/langchain/chat_loaders/slack.py b/libs/langchain/langchain/chat_loaders/slack.py index 023dd329832..0523c4629cf 100644 --- a/libs/langchain/langchain/chat_loaders/slack.py +++ b/libs/langchain/langchain/chat_loaders/slack.py @@ -1,3 +1,23 @@ -from langchain_community.chat_loaders.slack import SlackChatLoader +from typing import TYPE_CHECKING, Any -__all__ = ["SlackChatLoader"] +from langchain._api import create_importer + +if TYPE_CHECKING: + from langchain_community.chat_loaders.slack import SlackChatLoader + +# Create a way to dynamically look up deprecated imports. +# Used to consolidate logic for raising deprecation warnings and +# handling optional imports. +DEPRECATED_LOOKUP = {"SlackChatLoader": "langchain_community.chat_loaders.slack"} + +_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP) + + +def __getattr__(name: str) -> Any: + """Look up attributes dynamically.""" + return _import_attribute(name) + + +__all__ = [ + "SlackChatLoader", +] diff --git a/libs/langchain/langchain/chat_loaders/telegram.py b/libs/langchain/langchain/chat_loaders/telegram.py index c39b6772f08..01c1cc74b35 100644 --- a/libs/langchain/langchain/chat_loaders/telegram.py +++ b/libs/langchain/langchain/chat_loaders/telegram.py @@ -1,3 +1,23 @@ -from langchain_community.chat_loaders.telegram import TelegramChatLoader +from typing import TYPE_CHECKING, Any -__all__ = ["TelegramChatLoader"] +from langchain._api import create_importer + +if TYPE_CHECKING: + from langchain_community.chat_loaders.telegram import TelegramChatLoader + +# Create a way to dynamically look up deprecated imports. +# Used to consolidate logic for raising deprecation warnings and +# handling optional imports. +DEPRECATED_LOOKUP = {"TelegramChatLoader": "langchain_community.chat_loaders.telegram"} + +_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP) + + +def __getattr__(name: str) -> Any: + """Look up attributes dynamically.""" + return _import_attribute(name) + + +__all__ = [ + "TelegramChatLoader", +] diff --git a/libs/langchain/langchain/chat_loaders/utils.py b/libs/langchain/langchain/chat_loaders/utils.py index 629858f2867..04570354f22 100644 --- a/libs/langchain/langchain/chat_loaders/utils.py +++ b/libs/langchain/langchain/chat_loaders/utils.py @@ -1,9 +1,32 @@ -from langchain_community.chat_loaders.utils import ( - map_ai_messages, - map_ai_messages_in_session, - merge_chat_runs, - merge_chat_runs_in_session, -) +from typing import TYPE_CHECKING, Any + +from langchain._api import create_importer + +if TYPE_CHECKING: + from langchain_community.chat_loaders.utils import ( + map_ai_messages, + map_ai_messages_in_session, + merge_chat_runs, + merge_chat_runs_in_session, + ) + +# Create a way to dynamically look up deprecated imports. +# Used to consolidate logic for raising deprecation warnings and +# handling optional imports. +DEPRECATED_LOOKUP = { + "merge_chat_runs_in_session": "langchain_community.chat_loaders.utils", + "merge_chat_runs": "langchain_community.chat_loaders.utils", + "map_ai_messages_in_session": "langchain_community.chat_loaders.utils", + "map_ai_messages": "langchain_community.chat_loaders.utils", +} + +_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP) + + +def __getattr__(name: str) -> Any: + """Look up attributes dynamically.""" + return _import_attribute(name) + __all__ = [ "merge_chat_runs_in_session", diff --git a/libs/langchain/langchain/chat_loaders/whatsapp.py b/libs/langchain/langchain/chat_loaders/whatsapp.py index 176629bc7fc..eef57fd16ba 100644 --- a/libs/langchain/langchain/chat_loaders/whatsapp.py +++ b/libs/langchain/langchain/chat_loaders/whatsapp.py @@ -1,3 +1,23 @@ -from langchain_community.chat_loaders.whatsapp import WhatsAppChatLoader +from typing import TYPE_CHECKING, Any -__all__ = ["WhatsAppChatLoader"] +from langchain._api import create_importer + +if TYPE_CHECKING: + from langchain_community.chat_loaders.whatsapp import WhatsAppChatLoader + +# Create a way to dynamically look up deprecated imports. +# Used to consolidate logic for raising deprecation warnings and +# handling optional imports. +DEPRECATED_LOOKUP = {"WhatsAppChatLoader": "langchain_community.chat_loaders.whatsapp"} + +_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP) + + +def __getattr__(name: str) -> Any: + """Look up attributes dynamically.""" + return _import_attribute(name) + + +__all__ = [ + "WhatsAppChatLoader", +]