12
12
13
13
# Use lazy imports to avoid importing modules during setup
14
14
def _import_modules ():
15
- global utils , logger , reconfigure_logger , anthropic , openai , langchain
15
+ global utils , logger , reconfigure_logger
16
16
global enabled , use_stderr , pretty_print , print_messages
17
- global init , wrap_anthropic , wrap_openai , disable_hoover , enable_hoover , wrap_langchain
17
+ global init , disable_hoover , enable_hoover
18
18
19
19
from . import utils
20
20
from .logger import logger , reconfigure_logger
21
- from .adapters import anthropic , openai
22
21
23
22
# Re-export configuration flags for easy access
24
23
enabled = utils .enabled
@@ -29,19 +28,47 @@ def _import_modules():
29
28
# Re-export initialization function
30
29
init = utils .init
31
30
32
- # Export adapter functions
33
- wrap_anthropic = anthropic .wrap_anthropic
34
- wrap_openai = openai .wrap_openai
35
-
36
31
# Export disable and enable functions
37
32
disable_hoover = utils .disable_hoover
38
33
enable_hoover = utils .enable_hoover
39
34
40
- # Automatically apply patches when the module is imported
41
- wrap_anthropic ()
42
- wrap_openai ()
35
+ # Initialize wrappers as None
36
+ global wrap_anthropic , wrap_openai , wrap_langchain
37
+ global wrap_langchain_openai , wrap_langchain_anthropic
38
+
39
+ wrap_anthropic = None
40
+ wrap_openai = None
41
+ wrap_langchain = None
42
+ wrap_langchain_openai = None
43
+ wrap_langchain_anthropic = None
44
+
45
+ # Lazily set up anthropic wrapper if available
46
+ try :
47
+ from .adapters import anthropic
48
+ wrap_anthropic = anthropic .wrap_anthropic
49
+ # Apply the wrapper, but don't fail if it doesn't work
50
+ try :
51
+ wrap_anthropic ()
52
+ except Exception as e :
53
+ logger .warning (f"Failed to wrap Anthropic: { str (e )} " )
54
+ except ImportError :
55
+ def wrap_anthropic ():
56
+ logger .warning ("Anthropic support not available. Install Anthropic to use this feature." )
57
+
58
+ # Lazily set up OpenAI wrapper if available
59
+ try :
60
+ from .adapters import openai
61
+ wrap_openai = openai .wrap_openai
62
+ # Apply the wrapper, but don't fail if it doesn't work
63
+ try :
64
+ wrap_openai ()
65
+ except Exception as e :
66
+ logger .warning (f"Failed to wrap OpenAI: { str (e )} " )
67
+ except ImportError :
68
+ def wrap_openai ():
69
+ logger .warning ("OpenAI support not available. Install OpenAI to use this feature." )
43
70
44
- # Conditionally load and apply LangChain wrapper
71
+ # Lazily set up LangChain wrapper if available
45
72
try :
46
73
from .adapters import langchain
47
74
wrap_langchain = langchain .wrap_langchain
@@ -51,9 +78,34 @@ def _import_modules():
51
78
except Exception as e :
52
79
logger .warning (f"Failed to wrap LangChain: { str (e )} " )
53
80
except ImportError :
54
- # LangChain not installed or not compatible
55
81
def wrap_langchain ():
56
82
logger .warning ("LangChain support not available. Install LangChain to use this feature." )
83
+
84
+ # Lazily set up LangChain-OpenAI wrapper if available
85
+ try :
86
+ from .adapters import langchain_openai
87
+ wrap_langchain_openai = langchain_openai .wrap_langchain_openai
88
+ # Apply the wrapper, but don't fail if it doesn't work
89
+ try :
90
+ wrap_langchain_openai ()
91
+ except Exception as e :
92
+ logger .warning (f"Failed to wrap LangChain-OpenAI: { str (e )} " )
93
+ except ImportError :
94
+ def wrap_langchain_openai ():
95
+ logger .warning ("LangChain-OpenAI support not available. Install LangChain and OpenAI to use this feature." )
96
+
97
+ # Lazily set up LangChain-Anthropic wrapper if available
98
+ try :
99
+ from .adapters import langchain_anthropic
100
+ wrap_langchain_anthropic = langchain_anthropic .wrap_langchain_anthropic
101
+ # Apply the wrapper, but don't fail if it doesn't work
102
+ try :
103
+ wrap_langchain_anthropic ()
104
+ except Exception as e :
105
+ logger .warning (f"Failed to wrap LangChain-Anthropic: { str (e )} " )
106
+ except ImportError :
107
+ def wrap_langchain_anthropic ():
108
+ logger .warning ("LangChain-Anthropic support not available. Install LangChain and Anthropic to use this feature." )
57
109
58
110
# Initialize the module on first import, but not during installation
59
111
import sys
0 commit comments