From f76d50d8dcc4d28d41894ba0eb491022b9a7eb05 Mon Sep 17 00:00:00 2001 From: William FH <13333726+hinthornw@users.noreply.github.com> Date: Sun, 6 Aug 2023 14:04:49 -0700 Subject: [PATCH] fix exception inconsistencies (#8812) (#8839) Merge #8812 with main to fix unrelated test failure Co-authored-by: shibuiwilliam --- .../langchain/langchain/document_loaders/obs_directory.py | 2 +- libs/langchain/langchain/document_loaders/obs_file.py | 2 +- .../langchain/langchain/document_loaders/parsers/audio.py | 6 +++--- libs/langchain/langchain/document_loaders/parsers/pdf.py | 4 ++-- libs/langchain/langchain/embeddings/openai.py | 8 +++++++- .../langchain/evaluation/string_distance/base.py | 1 + .../langchain/memory/chat_message_histories/cosmos_db.py | 3 +++ .../langchain/prompts/example_selector/ngram_overlap.py | 5 +++-- 8 files changed, 21 insertions(+), 10 deletions(-) diff --git a/libs/langchain/langchain/document_loaders/obs_directory.py b/libs/langchain/langchain/document_loaders/obs_directory.py index 4c81c5ff11..ba30d6a578 100644 --- a/libs/langchain/langchain/document_loaders/obs_directory.py +++ b/libs/langchain/langchain/document_loaders/obs_directory.py @@ -43,7 +43,7 @@ class OBSDirectoryLoader(BaseLoader): try: from obs import ObsClient except ImportError: - raise ValueError( + raise ImportError( "Could not import esdk-obs-python python package. " "Please install it with `pip install esdk-obs-python`." ) diff --git a/libs/langchain/langchain/document_loaders/obs_file.py b/libs/langchain/langchain/document_loaders/obs_file.py index 0e5cdabcdd..b366f4e0e4 100644 --- a/libs/langchain/langchain/document_loaders/obs_file.py +++ b/libs/langchain/langchain/document_loaders/obs_file.py @@ -67,7 +67,7 @@ class OBSFileLoader(BaseLoader): try: from obs import ObsClient except ImportError: - raise ValueError( + raise ImportError( "Could not import esdk-obs-python python package. " "Please install it with `pip install esdk-obs-python`." ) diff --git a/libs/langchain/langchain/document_loaders/parsers/audio.py b/libs/langchain/langchain/document_loaders/parsers/audio.py index 9ca4eff8d5..787bf7a279 100644 --- a/libs/langchain/langchain/document_loaders/parsers/audio.py +++ b/libs/langchain/langchain/document_loaders/parsers/audio.py @@ -149,14 +149,14 @@ class OpenAIWhisperParserLocal(BaseBlobParser): try: from pydub import AudioSegment except ImportError: - raise ValueError( - "pydub package not found, please install it with " "`pip install pydub`" + raise ImportError( + "pydub package not found, please install it with `pip install pydub`" ) try: import librosa except ImportError: - raise ValueError( + raise ImportError( "librosa package not found, please install it with " "`pip install librosa`" ) diff --git a/libs/langchain/langchain/document_loaders/parsers/pdf.py b/libs/langchain/langchain/document_loaders/parsers/pdf.py index 8298253f6c..dde96eb8fb 100644 --- a/libs/langchain/langchain/document_loaders/parsers/pdf.py +++ b/libs/langchain/langchain/document_loaders/parsers/pdf.py @@ -183,7 +183,7 @@ class AmazonTextractPDFParser(BaseBlobParser): else: self.textract_features = [] except ImportError: - raise ModuleNotFoundError( + raise ImportError( "Could not import amazon-textract-caller python package. " "Please install it with `pip install amazon-textract-caller`." ) @@ -194,7 +194,7 @@ class AmazonTextractPDFParser(BaseBlobParser): self.boto3_textract_client = boto3.client("textract") except ImportError: - raise ModuleNotFoundError( + raise ImportError( "Could not import boto3 python package. " "Please install it with `pip install boto3`." ) diff --git a/libs/langchain/langchain/embeddings/openai.py b/libs/langchain/langchain/embeddings/openai.py index 53fb30d16c..038b8bfde8 100644 --- a/libs/langchain/langchain/embeddings/openai.py +++ b/libs/langchain/langchain/embeddings/openai.py @@ -295,7 +295,13 @@ class OpenAIEmbeddings(BaseModel, Embeddings): if self.openai_api_type in ("azure", "azure_ad", "azuread"): openai_args["engine"] = self.deployment if self.openai_proxy: - import openai + try: + import openai + except ImportError: + raise ImportError( + "Could not import openai python package. " + "Please install it with `pip install openai`." + ) openai.proxy = { "http": self.openai_proxy, diff --git a/libs/langchain/langchain/evaluation/string_distance/base.py b/libs/langchain/langchain/evaluation/string_distance/base.py index 1ec836bd8a..57e195d8d1 100644 --- a/libs/langchain/langchain/evaluation/string_distance/base.py +++ b/libs/langchain/langchain/evaluation/string_distance/base.py @@ -30,6 +30,7 @@ def _load_rapidfuzz() -> Any: except ImportError: raise ImportError( "Please install the rapidfuzz library to use the FuzzyMatchStringEvaluator." + "Please install it with `pip install rapidfuzz`." ) return rapidfuzz.distance diff --git a/libs/langchain/langchain/memory/chat_message_histories/cosmos_db.py b/libs/langchain/langchain/memory/chat_message_histories/cosmos_db.py index 819599e351..ccf6546d03 100644 --- a/libs/langchain/langchain/memory/chat_message_histories/cosmos_db.py +++ b/libs/langchain/langchain/memory/chat_message_histories/cosmos_db.py @@ -66,6 +66,7 @@ class CosmosDBChatMessageHistory(BaseChatMessageHistory): except ImportError as exc: raise ImportError( "You must install the azure-cosmos package to use the CosmosDBChatMessageHistory." # noqa: E501 + "Please install it with `pip install azure-cosmos`." ) from exc if self.credential: self._client = CosmosClient( @@ -94,6 +95,7 @@ class CosmosDBChatMessageHistory(BaseChatMessageHistory): except ImportError as exc: raise ImportError( "You must install the azure-cosmos package to use the CosmosDBChatMessageHistory." # noqa: E501 + "Please install it with `pip install azure-cosmos`." ) from exc database = self._client.create_database_if_not_exists(self.cosmos_database) self._container = database.create_container_if_not_exists( @@ -130,6 +132,7 @@ class CosmosDBChatMessageHistory(BaseChatMessageHistory): except ImportError as exc: raise ImportError( "You must install the azure-cosmos package to use the CosmosDBChatMessageHistory." # noqa: E501 + "Please install it with `pip install azure-cosmos`." ) from exc try: item = self._container.read_item( diff --git a/libs/langchain/langchain/prompts/example_selector/ngram_overlap.py b/libs/langchain/langchain/prompts/example_selector/ngram_overlap.py index cfe198d251..9dd68f00a7 100644 --- a/libs/langchain/langchain/prompts/example_selector/ngram_overlap.py +++ b/libs/langchain/langchain/prompts/example_selector/ngram_overlap.py @@ -72,8 +72,9 @@ class NGramOverlapExampleSelector(BaseExampleSelector, BaseModel): sentence_bleu, ) except ImportError as e: - raise ValueError( - "Not all the correct dependencies for this ExampleSelect exist" + raise ImportError( + "Not all the correct dependencies for this ExampleSelect exist." + "Please install nltk with `pip install nltk`." ) from e return values