Skip to content

Commit

Permalink
langchain[patch]: Migrate callbacks module to use optional imports fo…
Browse files Browse the repository at this point in the history
…r community (#21086)
  • Loading branch information
eyurtsev committed Apr 30, 2024
1 parent 8a62fb0 commit aec13a6
Show file tree
Hide file tree
Showing 28 changed files with 800 additions and 157 deletions.
90 changes: 73 additions & 17 deletions libs/langchain/langchain/callbacks/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,8 @@
BaseCallbackHandler --> <name>CallbackHandler # Example: AimCallbackHandler
"""
import warnings
from typing import Any
from typing import TYPE_CHECKING, Any

from langchain_core._api import LangChainDeprecationWarning
from langchain_core.callbacks import (
FileCallbackHandler,
StdOutCallbackHandler,
Expand All @@ -22,28 +20,86 @@
)
from langchain_core.tracers.langchain import LangChainTracer

from langchain._api import create_importer
from langchain.callbacks.streaming_aiter import AsyncIteratorCallbackHandler
from langchain.callbacks.streaming_stdout_final_only import (
FinalStreamingStdOutCallbackHandler,
)
from langchain.utils.interactive_env import is_interactive_env

if TYPE_CHECKING:
from langchain_community.callbacks.aim_callback import AimCallbackHandler
from langchain_community.callbacks.argilla_callback import ArgillaCallbackHandler
from langchain_community.callbacks.arize_callback import ArizeCallbackHandler
from langchain_community.callbacks.arthur_callback import ArthurCallbackHandler
from langchain_community.callbacks.clearml_callback import ClearMLCallbackHandler
from langchain_community.callbacks.comet_ml_callback import CometCallbackHandler
from langchain_community.callbacks.context_callback import ContextCallbackHandler
from langchain_community.callbacks.flyte_callback import FlyteCallbackHandler
from langchain_community.callbacks.human import HumanApprovalCallbackHandler
from langchain_community.callbacks.infino_callback import InfinoCallbackHandler
from langchain_community.callbacks.labelstudio_callback import (
LabelStudioCallbackHandler,
)
from langchain_community.callbacks.llmonitor_callback import (
LLMonitorCallbackHandler,
)
from langchain_community.callbacks.manager import (
get_openai_callback,
wandb_tracing_enabled,
)
from langchain_community.callbacks.mlflow_callback import MlflowCallbackHandler
from langchain_community.callbacks.openai_info import OpenAICallbackHandler
from langchain_community.callbacks.promptlayer_callback import (
PromptLayerCallbackHandler,
)
from langchain_community.callbacks.sagemaker_callback import (
SageMakerCallbackHandler,
)
from langchain_community.callbacks.streamlit import StreamlitCallbackHandler
from langchain_community.callbacks.streamlit.streamlit_callback_handler import (
LLMThoughtLabeler,
)
from langchain_community.callbacks.trubrics_callback import TrubricsCallbackHandler
from langchain_community.callbacks.wandb_callback import WandbCallbackHandler
from langchain_community.callbacks.whylabs_callback import WhyLabsCallbackHandler

def __getattr__(name: str) -> Any:
from langchain_community import callbacks
# Create a way to dynamically look up deprecated imports.
# Used to consolidate logic for raising deprecation warnings and
# handling optional imports.
DEPRECATED_LOOKUP = {
"AimCallbackHandler": "langchain_community.callbacks.aim_callback",
"ArgillaCallbackHandler": "langchain_community.callbacks.argilla_callback",
"ArizeCallbackHandler": "langchain_community.callbacks.arize_callback",
"PromptLayerCallbackHandler": "langchain_community.callbacks.promptlayer_callback",
"ArthurCallbackHandler": "langchain_community.callbacks.arthur_callback",
"ClearMLCallbackHandler": "langchain_community.callbacks.clearml_callback",
"CometCallbackHandler": "langchain_community.callbacks.comet_ml_callback",
"ContextCallbackHandler": "langchain_community.callbacks.context_callback",
"HumanApprovalCallbackHandler": "langchain_community.callbacks.human",
"InfinoCallbackHandler": "langchain_community.callbacks.infino_callback",
"MlflowCallbackHandler": "langchain_community.callbacks.mlflow_callback",
"LLMonitorCallbackHandler": "langchain_community.callbacks.llmonitor_callback",
"OpenAICallbackHandler": "langchain_community.callbacks.openai_info",
"LLMThoughtLabeler": (
"langchain_community.callbacks.streamlit.streamlit_callback_handler"
),
"StreamlitCallbackHandler": "langchain_community.callbacks.streamlit",
"WandbCallbackHandler": "langchain_community.callbacks.wandb_callback",
"WhyLabsCallbackHandler": "langchain_community.callbacks.whylabs_callback",
"get_openai_callback": "langchain_community.callbacks.manager",
"wandb_tracing_enabled": "langchain_community.callbacks.manager",
"FlyteCallbackHandler": "langchain_community.callbacks.flyte_callback",
"SageMakerCallbackHandler": "langchain_community.callbacks.sagemaker_callback",
"LabelStudioCallbackHandler": "langchain_community.callbacks.labelstudio_callback",
"TrubricsCallbackHandler": "langchain_community.callbacks.trubrics_callback",
}

_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)

# If not in interactive env, raise warning.
if not is_interactive_env():
warnings.warn(
"Importing this callback from langchain is deprecated. Importing it from "
"langchain will no longer be supported as of langchain==0.2.0. "
"Please import from langchain-community instead:\n\n"
f"`from langchain_community.callbacks import {name}`.\n\n"
"To install langchain-community run `pip install -U langchain-community`.",
category=LangChainDeprecationWarning,
)

return getattr(callbacks, name)
def __getattr__(name: str) -> Any:
"""Look up attributes dynamically."""
return _import_attribute(name)


__all__ = [
Expand Down
38 changes: 32 additions & 6 deletions libs/langchain/langchain/callbacks/aim_callback.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,33 @@
from langchain_community.callbacks.aim_callback import (
AimCallbackHandler,
BaseMetadataCallbackHandler,
import_aim,
)
from typing import TYPE_CHECKING, Any

__all__ = ["import_aim", "BaseMetadataCallbackHandler", "AimCallbackHandler"]
from langchain._api import create_importer

if TYPE_CHECKING:
from langchain_community.callbacks.aim_callback import (
AimCallbackHandler,
BaseMetadataCallbackHandler,
import_aim,
)

# Create a way to dynamically look up deprecated imports.
# Used to consolidate logic for raising deprecation warnings and
# handling optional imports.
DEPRECATED_LOOKUP = {
"import_aim": "langchain_community.callbacks.aim_callback",
"BaseMetadataCallbackHandler": "langchain_community.callbacks.aim_callback",
"AimCallbackHandler": "langchain_community.callbacks.aim_callback",
}

_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)


def __getattr__(name: str) -> Any:
"""Look up attributes dynamically."""
return _import_attribute(name)


__all__ = [
"import_aim",
"BaseMetadataCallbackHandler",
"AimCallbackHandler",
]
26 changes: 24 additions & 2 deletions libs/langchain/langchain/callbacks/argilla_callback.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,25 @@
from langchain_community.callbacks.argilla_callback import ArgillaCallbackHandler
from typing import TYPE_CHECKING, Any

__all__ = ["ArgillaCallbackHandler"]
from langchain._api import create_importer

if TYPE_CHECKING:
from langchain_community.callbacks.argilla_callback import ArgillaCallbackHandler

# Create a way to dynamically look up deprecated imports.
# Used to consolidate logic for raising deprecation warnings and
# handling optional imports.
DEPRECATED_LOOKUP = {
"ArgillaCallbackHandler": "langchain_community.callbacks.argilla_callback"
}

_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)


def __getattr__(name: str) -> Any:
"""Look up attributes dynamically."""
return _import_attribute(name)


__all__ = [
"ArgillaCallbackHandler",
]
26 changes: 24 additions & 2 deletions libs/langchain/langchain/callbacks/arize_callback.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,25 @@
from langchain_community.callbacks.arize_callback import ArizeCallbackHandler
from typing import TYPE_CHECKING, Any

__all__ = ["ArizeCallbackHandler"]
from langchain._api import create_importer

if TYPE_CHECKING:
from langchain_community.callbacks.arize_callback import ArizeCallbackHandler

# Create a way to dynamically look up deprecated imports.
# Used to consolidate logic for raising deprecation warnings and
# handling optional imports.
DEPRECATED_LOOKUP = {
"ArizeCallbackHandler": "langchain_community.callbacks.arize_callback"
}

_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)


def __getattr__(name: str) -> Any:
"""Look up attributes dynamically."""
return _import_attribute(name)


__all__ = [
"ArizeCallbackHandler",
]
24 changes: 21 additions & 3 deletions libs/langchain/langchain/callbacks/arthur_callback.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,24 @@
from langchain_community.callbacks.arthur_callback import (
ArthurCallbackHandler,
)
from typing import TYPE_CHECKING, Any

from langchain._api import create_importer

if TYPE_CHECKING:
from langchain_community.callbacks.arthur_callback import ArthurCallbackHandler

# Create a way to dynamically look up deprecated imports.
# Used to consolidate logic for raising deprecation warnings and
# handling optional imports.
DEPRECATED_LOOKUP = {
"ArthurCallbackHandler": "langchain_community.callbacks.arthur_callback"
}

_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)


def __getattr__(name: str) -> Any:
"""Look up attributes dynamically."""
return _import_attribute(name)


__all__ = [
"ArthurCallbackHandler",
Expand Down
28 changes: 24 additions & 4 deletions libs/langchain/langchain/callbacks/clearml_callback.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
from langchain_community.callbacks.clearml_callback import (
ClearMLCallbackHandler,
)
from typing import TYPE_CHECKING, Any

__all__ = ["ClearMLCallbackHandler"]
from langchain._api import create_importer

if TYPE_CHECKING:
from langchain_community.callbacks.clearml_callback import ClearMLCallbackHandler

# Create a way to dynamically look up deprecated imports.
# Used to consolidate logic for raising deprecation warnings and
# handling optional imports.
DEPRECATED_LOOKUP = {
"ClearMLCallbackHandler": "langchain_community.callbacks.clearml_callback"
}

_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)


def __getattr__(name: str) -> Any:
"""Look up attributes dynamically."""
return _import_attribute(name)


__all__ = [
"ClearMLCallbackHandler",
]
24 changes: 21 additions & 3 deletions libs/langchain/langchain/callbacks/comet_ml_callback.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,24 @@
from langchain_community.callbacks.comet_ml_callback import (
CometCallbackHandler,
)
from typing import TYPE_CHECKING, Any

from langchain._api import create_importer

if TYPE_CHECKING:
from langchain_community.callbacks.comet_ml_callback import CometCallbackHandler

# Create a way to dynamically look up deprecated imports.
# Used to consolidate logic for raising deprecation warnings and
# handling optional imports.
DEPRECATED_LOOKUP = {
"CometCallbackHandler": "langchain_community.callbacks.comet_ml_callback"
}

_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)


def __getattr__(name: str) -> Any:
"""Look up attributes dynamically."""
return _import_attribute(name)


__all__ = [
"CometCallbackHandler",
Expand Down
26 changes: 24 additions & 2 deletions libs/langchain/langchain/callbacks/confident_callback.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,25 @@
from langchain_community.callbacks.confident_callback import DeepEvalCallbackHandler
from typing import TYPE_CHECKING, Any

__all__ = ["DeepEvalCallbackHandler"]
from langchain._api import create_importer

if TYPE_CHECKING:
from langchain_community.callbacks.confident_callback import DeepEvalCallbackHandler

# Create a way to dynamically look up deprecated imports.
# Used to consolidate logic for raising deprecation warnings and
# handling optional imports.
DEPRECATED_LOOKUP = {
"DeepEvalCallbackHandler": "langchain_community.callbacks.confident_callback"
}

_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)


def __getattr__(name: str) -> Any:
"""Look up attributes dynamically."""
return _import_attribute(name)


__all__ = [
"DeepEvalCallbackHandler",
]
28 changes: 24 additions & 4 deletions libs/langchain/langchain/callbacks/context_callback.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
from langchain_community.callbacks.context_callback import (
ContextCallbackHandler,
)
from typing import TYPE_CHECKING, Any

__all__ = ["ContextCallbackHandler"]
from langchain._api import create_importer

if TYPE_CHECKING:
from langchain_community.callbacks.context_callback import ContextCallbackHandler

# Create a way to dynamically look up deprecated imports.
# Used to consolidate logic for raising deprecation warnings and
# handling optional imports.
DEPRECATED_LOOKUP = {
"ContextCallbackHandler": "langchain_community.callbacks.context_callback"
}

_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)


def __getattr__(name: str) -> Any:
"""Look up attributes dynamically."""
return _import_attribute(name)


__all__ = [
"ContextCallbackHandler",
]
28 changes: 24 additions & 4 deletions libs/langchain/langchain/callbacks/flyte_callback.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
from langchain_community.callbacks.flyte_callback import (
FlyteCallbackHandler,
)
from typing import TYPE_CHECKING, Any

__all__ = ["FlyteCallbackHandler"]
from langchain._api import create_importer

if TYPE_CHECKING:
from langchain_community.callbacks.flyte_callback import FlyteCallbackHandler

# Create a way to dynamically look up deprecated imports.
# Used to consolidate logic for raising deprecation warnings and
# handling optional imports.
DEPRECATED_LOOKUP = {
"FlyteCallbackHandler": "langchain_community.callbacks.flyte_callback"
}

_import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)


def __getattr__(name: str) -> Any:
"""Look up attributes dynamically."""
return _import_attribute(name)


__all__ = [
"FlyteCallbackHandler",
]

0 comments on commit aec13a6

Please sign in to comment.