diff --git a/instrumentation-genai/opentelemetry-instrumentation-anthropic/CHANGELOG.md b/instrumentation-genai/opentelemetry-instrumentation-anthropic/CHANGELOG.md index dfa9e01631..3d19ceddd1 100644 --- a/instrumentation-genai/opentelemetry-instrumentation-anthropic/CHANGELOG.md +++ b/instrumentation-genai/opentelemetry-instrumentation-anthropic/CHANGELOG.md @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +- Fix compatibility with wrapt 2.x by using positional arguments in `wrap_function_wrapper()` calls + ([#4445](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/4445)) + ### Added - Add async Anthropic message stream wrappers and manager wrappers, with wrapper diff --git a/instrumentation-genai/opentelemetry-instrumentation-anthropic/src/opentelemetry/instrumentation/anthropic/__init__.py b/instrumentation-genai/opentelemetry-instrumentation-anthropic/src/opentelemetry/instrumentation/anthropic/__init__.py index f5286438a4..7195dc7787 100644 --- a/instrumentation-genai/opentelemetry-instrumentation-anthropic/src/opentelemetry/instrumentation/anthropic/__init__.py +++ b/instrumentation-genai/opentelemetry-instrumentation-anthropic/src/opentelemetry/instrumentation/anthropic/__init__.py @@ -101,9 +101,9 @@ def _instrument(self, **kwargs: Any) -> None: # Patch Messages.create wrap_function_wrapper( - module="anthropic.resources.messages", - name="Messages.create", - wrapper=messages_create(handler), + "anthropic.resources.messages", + "Messages.create", + messages_create(handler), ) def _uninstrument(self, **kwargs: Any) -> None: diff --git a/instrumentation-genai/opentelemetry-instrumentation-anthropic/tests/requirements.latest.txt b/instrumentation-genai/opentelemetry-instrumentation-anthropic/tests/requirements.latest.txt index 25ef51c65b..81612d3aa0 100644 --- a/instrumentation-genai/opentelemetry-instrumentation-anthropic/tests/requirements.latest.txt +++ b/instrumentation-genai/opentelemetry-instrumentation-anthropic/tests/requirements.latest.txt @@ -40,7 +40,7 @@ anthropic pytest==7.4.4 pytest-vcr==1.0.2 pytest-asyncio==0.21.0 -wrapt==1.16.0 +wrapt==2.1.2 # test with the latest version of opentelemetry-api, sdk, and semantic conventions -e opentelemetry-instrumentation diff --git a/instrumentation-genai/opentelemetry-instrumentation-langchain/CHANGELOG.md b/instrumentation-genai/opentelemetry-instrumentation-langchain/CHANGELOG.md index 3db24e484e..767dfcc7ed 100644 --- a/instrumentation-genai/opentelemetry-instrumentation-langchain/CHANGELOG.md +++ b/instrumentation-genai/opentelemetry-instrumentation-langchain/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +- Fix compatibility with wrapt 2.x by using positional arguments in `wrap_function_wrapper()` calls + ([#4445](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/4445)) - Added span support for genAI langchain llm invocation. ([#3665](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3665)) - Added support to call genai utils handler for langchain LLM invocations. diff --git a/instrumentation-genai/opentelemetry-instrumentation-langchain/src/opentelemetry/instrumentation/langchain/__init__.py b/instrumentation-genai/opentelemetry-instrumentation-langchain/src/opentelemetry/instrumentation/langchain/__init__.py index acb9a9bf7d..ca1139f821 100644 --- a/instrumentation-genai/opentelemetry-instrumentation-langchain/src/opentelemetry/instrumentation/langchain/__init__.py +++ b/instrumentation-genai/opentelemetry-instrumentation-langchain/src/opentelemetry/instrumentation/langchain/__init__.py @@ -83,9 +83,9 @@ def _instrument(self, **kwargs: Any): ) wrap_function_wrapper( - module="langchain_core.callbacks", - name="BaseCallbackManager.__init__", - wrapper=_BaseCallbackManagerInitWrapper(otel_callback_handler), + "langchain_core.callbacks", + "BaseCallbackManager.__init__", + _BaseCallbackManagerInitWrapper(otel_callback_handler), ) def _uninstrument(self, **kwargs: Any): diff --git a/instrumentation-genai/opentelemetry-instrumentation-openai-v2/CHANGELOG.md b/instrumentation-genai/opentelemetry-instrumentation-openai-v2/CHANGELOG.md index 6fc545df24..e06dea899d 100644 --- a/instrumentation-genai/opentelemetry-instrumentation-openai-v2/CHANGELOG.md +++ b/instrumentation-genai/opentelemetry-instrumentation-openai-v2/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +- Fix compatibility with wrapt 2.x by using positional arguments in `wrap_function_wrapper()` calls + ([#4445](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/4445)) - Fix `ChoiceBuffer` crash on streaming tool-call deltas with `arguments=None` ([#4350](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/4350)) - Fix `StreamWrapper` missing `.headers` and other attributes when using `with_raw_response` streaming diff --git a/instrumentation-genai/opentelemetry-instrumentation-openai-v2/src/opentelemetry/instrumentation/openai_v2/__init__.py b/instrumentation-genai/opentelemetry-instrumentation-openai-v2/src/opentelemetry/instrumentation/openai_v2/__init__.py index e959083751..f001812def 100644 --- a/instrumentation-genai/opentelemetry-instrumentation-openai-v2/src/opentelemetry/instrumentation/openai_v2/__init__.py +++ b/instrumentation-genai/opentelemetry-instrumentation-openai-v2/src/opentelemetry/instrumentation/openai_v2/__init__.py @@ -119,9 +119,9 @@ def _instrument(self, **kwargs): ) wrap_function_wrapper( - module="openai.resources.chat.completions", - name="Completions.create", - wrapper=( + "openai.resources.chat.completions", + "Completions.create", + ( chat_completions_create_v_new(handler, content_mode) if latest_experimental_enabled else chat_completions_create_v_old( @@ -131,9 +131,9 @@ def _instrument(self, **kwargs): ) wrap_function_wrapper( - module="openai.resources.chat.completions", - name="AsyncCompletions.create", - wrapper=( + "openai.resources.chat.completions", + "AsyncCompletions.create", + ( async_chat_completions_create_v_new(handler, content_mode) if latest_experimental_enabled else async_chat_completions_create_v_old( @@ -144,17 +144,17 @@ def _instrument(self, **kwargs): # Add instrumentation for the embeddings API wrap_function_wrapper( - module="openai.resources.embeddings", - name="Embeddings.create", - wrapper=embeddings_create( + "openai.resources.embeddings", + "Embeddings.create", + embeddings_create( tracer, instruments, latest_experimental_enabled ), ) wrap_function_wrapper( - module="openai.resources.embeddings", - name="AsyncEmbeddings.create", - wrapper=async_embeddings_create( + "openai.resources.embeddings", + "AsyncEmbeddings.create", + async_embeddings_create( tracer, instruments, latest_experimental_enabled ), ) diff --git a/instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests/requirements.latest.txt b/instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests/requirements.latest.txt index af8a712d21..6ed0658634 100644 --- a/instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests/requirements.latest.txt +++ b/instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests/requirements.latest.txt @@ -41,13 +41,13 @@ pydantic==2.12.5 httpx==0.27.2 # older jiter is required for PyPy < 3.11 jiter==0.11.1 -Deprecated==1.2.14 +Deprecated==1.3.1 importlib-metadata==6.11.0 packaging==24.0 pytest==7.4.4 pytest-vcr==1.0.2 pytest-asyncio==0.21.0 -wrapt==1.16.0 +wrapt==2.1.2 # test with the latest version of opentelemetry-api, sdk, and semantic conventions -e opentelemetry-instrumentation diff --git a/instrumentation-genai/opentelemetry-instrumentation-vertexai/CHANGELOG.md b/instrumentation-genai/opentelemetry-instrumentation-vertexai/CHANGELOG.md index 3559905f04..f4e0e707a1 100644 --- a/instrumentation-genai/opentelemetry-instrumentation-vertexai/CHANGELOG.md +++ b/instrumentation-genai/opentelemetry-instrumentation-vertexai/CHANGELOG.md @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +- Fix compatibility with wrapt 2.x by using positional arguments in `wrap_function_wrapper()` calls + ([#4445](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/4445)) + ## Version 2.2b0 (2025-12-19) - Fix overwritten log attributes in vertexai instrumentation ([#3925](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3925)) diff --git a/instrumentation-genai/opentelemetry-instrumentation-vertexai/src/opentelemetry/instrumentation/vertexai/__init__.py b/instrumentation-genai/opentelemetry-instrumentation-vertexai/src/opentelemetry/instrumentation/vertexai/__init__.py index 24d9d46af4..59f992a051 100644 --- a/instrumentation-genai/opentelemetry-instrumentation-vertexai/src/opentelemetry/instrumentation/vertexai/__init__.py +++ b/instrumentation-genai/opentelemetry-instrumentation-vertexai/src/opentelemetry/instrumentation/vertexai/__init__.py @@ -163,8 +163,8 @@ def _instrument(self, **kwargs: Any): ): wrap_function_wrapper( client_class, - name=method_name, - wrapper=wrapper, + method_name, + wrapper, ) self._methods_to_unwrap.append((client_class, method_name)) diff --git a/instrumentation-genai/opentelemetry-instrumentation-vertexai/tests/requirements.latest.txt b/instrumentation-genai/opentelemetry-instrumentation-vertexai/tests/requirements.latest.txt index a818affa54..34bc57d988 100644 --- a/instrumentation-genai/opentelemetry-instrumentation-vertexai/tests/requirements.latest.txt +++ b/instrumentation-genai/opentelemetry-instrumentation-vertexai/tests/requirements.latest.txt @@ -41,7 +41,7 @@ asgiref==3.8.1 cachetools==5.5.0 certifi==2024.8.30 charset-normalizer==3.4.0 -Deprecated==1.2.15 +Deprecated==1.3.1 docstring_parser==0.16 exceptiongroup==1.2.2 google-api-core[grpc, async_rest]==2.23.0 @@ -81,7 +81,7 @@ tomli==2.2.1 typing_extensions==4.14.1 urllib3==1.26.20 vcrpy==6.0.2 -wrapt==1.17.0 +wrapt==2.1.2 yarl==1.15.2 zipp==3.20.2 grpcio>=1.75.1 ; python_version >= "3.14"