Skip to content

Commit b965f92

Browse files
committed
req updates
1 parent ba3d0f0 commit b965f92

File tree

6 files changed

+93
-18
lines changed

6 files changed

+93
-18
lines changed

README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,20 @@ A Python library that monkey patches LLM client libraries to send all prompts an
1515
[pypi](https://pypi.org/project/osmosis-wrap/)
1616

1717
```bash
18+
# Basic installation with minimal dependencies
1819
pip install osmosis-wrap
20+
21+
# Install with specific provider support
22+
pip install "osmosis-wrap[openai]" # Only OpenAI support
23+
pip install "osmosis-wrap[anthropic]" # Only Anthropic support
24+
25+
# Install with LangChain support
26+
pip install "osmosis-wrap[langchain]" # Base LangChain support
27+
pip install "osmosis-wrap[langchain-openai]" # LangChain + OpenAI support
28+
pip install "osmosis-wrap[langchain-anthropic]" # LangChain + Anthropic support
29+
30+
# Install with all dependencies
31+
pip install "osmosis-wrap[all]"
1932
```
2033

2134
Or install from source:

osmosis_wrap/__init__.py

Lines changed: 64 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,12 @@
1212

1313
# Use lazy imports to avoid importing modules during setup
1414
def _import_modules():
15-
global utils, logger, reconfigure_logger, anthropic, openai, langchain
15+
global utils, logger, reconfigure_logger
1616
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
1818

1919
from . import utils
2020
from .logger import logger, reconfigure_logger
21-
from .adapters import anthropic, openai
2221

2322
# Re-export configuration flags for easy access
2423
enabled = utils.enabled
@@ -29,19 +28,47 @@ def _import_modules():
2928
# Re-export initialization function
3029
init = utils.init
3130

32-
# Export adapter functions
33-
wrap_anthropic = anthropic.wrap_anthropic
34-
wrap_openai = openai.wrap_openai
35-
3631
# Export disable and enable functions
3732
disable_hoover = utils.disable_hoover
3833
enable_hoover = utils.enable_hoover
3934

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.")
4370

44-
# Conditionally load and apply LangChain wrapper
71+
# Lazily set up LangChain wrapper if available
4572
try:
4673
from .adapters import langchain
4774
wrap_langchain = langchain.wrap_langchain
@@ -51,9 +78,34 @@ def _import_modules():
5178
except Exception as e:
5279
logger.warning(f"Failed to wrap LangChain: {str(e)}")
5380
except ImportError:
54-
# LangChain not installed or not compatible
5581
def wrap_langchain():
5682
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.")
57109

58110
# Initialize the module on first import, but not during installation
59111
import sys

osmosis_wrap/adapters/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
Adapters package for Osmosis Wrap
33
44
This package contains various adapters for different LLM providers.
5+
Each adapter is conditionally imported based on installed dependencies.
56
"""
67

7-
__all__ = ['anthropic', 'openai', 'langchain', 'langchain_anthropic', 'langchain_openai']
8+
# Don't include adapters in __all__ as they're imported conditionally
9+
__all__ = []

osmosis_wrap/consts.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Extract package metadata
22
package_name = "osmosis-wrap"
3-
package_version = "0.1.0"
3+
package_version = "0.1.1"
44

55
indent = 2 # Number of spaces to use for indentation in pretty print
66
hoover_api_url = "https://ftgrv77m9f.execute-api.us-west-2.amazonaws.com/prod"

pyproject.toml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "osmosis-wrap"
7-
version = "0.1.0"
7+
version = "0.1.1"
88
description = "Monkey patches LLM client libraries to print all prompts and responses"
99
readme = "README.md"
1010
authors = [
@@ -30,4 +30,12 @@ Issues = "https://github.com/Gulp-AI/osmosis-wrap/issues"
3030
anthropic = ["anthropic>=0.5.0"]
3131
openai = ["openai>=0.27.0"]
3232
langchain = ["langchain>=0.0.200"]
33-
all = ["anthropic>=0.5.0", "openai>=0.27.0", "langchain>=0.0.200"]
33+
langchain-openai = ["langchain>=0.0.200", "langchain-openai>=0.0.200", "openai>=0.27.0"]
34+
langchain-anthropic = ["langchain>=0.0.200", "langchain-anthropic>=0.0.200", "anthropic>=0.5.0"]
35+
all = [
36+
"anthropic>=0.5.0",
37+
"openai>=0.27.0",
38+
"langchain>=0.0.200",
39+
"langchain-openai>=0.0.200",
40+
"langchain-anthropic>=0.0.200"
41+
]

requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ python-dotenv>=0.19.0
33
requests>=2.25.0
44

55
# LLM provider clients - install the ones you need
6-
anthropic>=0.5.0 # For Claude API
7-
openai>=0.27.0 # For OpenAI API
6+
anthropic>=0.49.0 # For Claude API
7+
openai>=1.27.0 # For OpenAI API
88
langchain>=0.0.200 # For LangChain integration
99
langchain-openai>=0.0.200 # For LangChain OpenAI integration
1010
langchain-anthropic>=0.0.200 # For LangChain Anthropic integration

0 commit comments

Comments
 (0)