diff --git a/libs/langchain/langchain/prompts/__init__.py b/libs/langchain/langchain/prompts/__init__.py index 8de4b06a4a4..d02b98a19e3 100644 --- a/libs/langchain/langchain/prompts/__init__.py +++ b/libs/langchain/langchain/prompts/__init__.py @@ -27,9 +27,8 @@ from multiple components. Prompt classes and functions make constructing ChatPromptValue """ # noqa: E501 -from langchain_community.example_selectors.ngram_overlap import ( - NGramOverlapExampleSelector, -) +from typing import TYPE_CHECKING, Any + from langchain_core.example_selectors import ( LengthBasedExampleSelector, MaxMarginalRelevanceExampleSelector, @@ -53,8 +52,29 @@ from langchain_core.prompts import ( load_prompt, ) +from langchain._api import create_importer from langchain.prompts.prompt import Prompt +if TYPE_CHECKING: + from langchain_community.example_selectors.ngram_overlap import ( + NGramOverlapExampleSelector, + ) + +# Create a way to dynamically look up deprecated imports. +# Used to consolidate logic for raising deprecation warnings and +# handling optional imports. +MODULE_LOOKUP = { + "NGramOverlapExampleSelector": "langchain_community.example_selectors.ngram_overlap" +} + +_import_attribute = create_importer(__file__, module_lookup=MODULE_LOOKUP) + + +def __getattr__(name: str) -> Any: + """Look up attributes dynamically.""" + return _import_attribute(name) + + __all__ = [ "AIMessagePromptTemplate", "BaseChatPromptTemplate", diff --git a/libs/langchain/langchain/prompts/example_selector/__init__.py b/libs/langchain/langchain/prompts/example_selector/__init__.py index 5b04ca453fe..87e23e87a0e 100644 --- a/libs/langchain/langchain/prompts/example_selector/__init__.py +++ b/libs/langchain/langchain/prompts/example_selector/__init__.py @@ -1,7 +1,6 @@ """Logic for selecting examples to include in prompts.""" -from langchain_community.example_selectors.ngram_overlap import ( - NGramOverlapExampleSelector, -) +from typing import TYPE_CHECKING, Any + from langchain_core.example_selectors.length_based import ( LengthBasedExampleSelector, ) @@ -10,6 +9,28 @@ from langchain_core.example_selectors.semantic_similarity import ( SemanticSimilarityExampleSelector, ) +from langchain._api import create_importer + +if TYPE_CHECKING: + from langchain_community.example_selectors.ngram_overlap import ( + NGramOverlapExampleSelector, + ) + +# Create a way to dynamically look up deprecated imports. +# Used to consolidate logic for raising deprecation warnings and +# handling optional imports. +DEPRECATED_LOOKUPS = { + "NGramOverlapExampleSelector": "langchain_community.example_selectors.ngram_overlap" +} + +_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUPS) + + +def __getattr__(name: str) -> Any: + """Look up attributes dynamically.""" + return _import_attribute(name) + + __all__ = [ "LengthBasedExampleSelector", "MaxMarginalRelevanceExampleSelector", diff --git a/libs/langchain/langchain/prompts/example_selector/ngram_overlap.py b/libs/langchain/langchain/prompts/example_selector/ngram_overlap.py index db1be277e46..ae2e14179ec 100644 --- a/libs/langchain/langchain/prompts/example_selector/ngram_overlap.py +++ b/libs/langchain/langchain/prompts/example_selector/ngram_overlap.py @@ -1,7 +1,30 @@ -from langchain_community.example_selectors.ngram_overlap import ( - NGramOverlapExampleSelector, - ngram_overlap_score, -) +from typing import TYPE_CHECKING, Any + +from langchain._api import create_importer + +if TYPE_CHECKING: + from langchain_community.example_selectors.ngram_overlap import ( + NGramOverlapExampleSelector, + ngram_overlap_score, + ) + +# Create a way to dynamically look up deprecated imports. +# Used to consolidate logic for raising deprecation warnings and +# handling optional imports. +MODULE_LOOKUP = { + "NGramOverlapExampleSelector": ( + "langchain_community.example_selectors.ngram_overlap" + ), + "ngram_overlap_score": "langchain_community.example_selectors.ngram_overlap", +} + +_import_attribute = create_importer(__file__, deprecated_lookups=MODULE_LOOKUP) + + +def __getattr__(name: str) -> Any: + """Look up attributes dynamically.""" + return _import_attribute(name) + __all__ = [ "NGramOverlapExampleSelector",