From c17d7ee7315c9329cdfbbe088a9bd2956e5c03b3 Mon Sep 17 00:00:00 2001 From: shawn-yang-google Date: Tue, 13 May 2025 15:39:48 -0700 Subject: [PATCH] [vertexai|community|genai] chore: Change the client_library_version to gapic_version --- .../langchain_google_community/_utils.py | 1 + libs/community/tests/unit_tests/test_utils.py | 64 +++++++++++++++++++ libs/genai/langchain_google_genai/_common.py | 1 + libs/genai/tests/unit_tests/test_common.py | 64 +++++++++++++++++++ .../langchain_google_vertexai/_utils.py | 1 + libs/vertexai/tests/unit_tests/test_utils.py | 63 ++++++++++++++++++ 6 files changed, 194 insertions(+) diff --git a/libs/community/langchain_google_community/_utils.py b/libs/community/langchain_google_community/_utils.py index 4c30baa8..e67bce8d 100644 --- a/libs/community/langchain_google_community/_utils.py +++ b/libs/community/langchain_google_community/_utils.py @@ -58,6 +58,7 @@ def get_client_info(module: Optional[str] = None) -> "ClientInfo": client_library_version, user_agent = get_user_agent(module) return ClientInfo( client_library_version=client_library_version, + gapic_version=client_library_version, user_agent=user_agent, ) diff --git a/libs/community/tests/unit_tests/test_utils.py b/libs/community/tests/unit_tests/test_utils.py index e7c7c467..ec7dfb76 100644 --- a/libs/community/tests/unit_tests/test_utils.py +++ b/libs/community/tests/unit_tests/test_utils.py @@ -1,6 +1,9 @@ from unittest.mock import MagicMock, patch +from google.api_core.gapic_v1.client_info import ClientInfo + from langchain_google_community._utils import ( + get_client_info, get_user_agent, ) @@ -29,3 +32,64 @@ def test_get_user_agent_without_telemetry_env_variable( client_lib_version, user_agent_str = get_user_agent(module="test-module") assert client_lib_version == "1.2.3-test-module" assert user_agent_str == "langchain-google-community/1.2.3-test-module" + + +@patch("langchain_google_community._utils.os.environ.get") +@patch("langchain_google_community._utils.metadata.version") +def test_get_client_info_with_telemetry_env_variable( + mock_version: MagicMock, mock_environ_get: MagicMock +) -> None: + mock_version.return_value = "1.2.3" + mock_environ_get.return_value = True + client_info = get_client_info(module="test-module") + assert isinstance(client_info, ClientInfo) + assert client_info.client_library_version == "1.2.3-test-module+remote_reasoning_engine" + assert client_info.gapic_version == "1.2.3-test-module+remote_reasoning_engine" + assert client_info.user_agent == ( + "langchain-google-community/1.2.3-test-module+remote_reasoning_engine" + ) + + +@patch("langchain_google_community._utils.os.environ.get") +@patch("langchain_google_community._utils.metadata.version") +def test_get_client_info_without_telemetry_env_variable( + mock_version: MagicMock, mock_environ_get: MagicMock +) -> None: + mock_version.return_value = "1.2.3" + mock_environ_get.return_value = False + client_info = get_client_info(module="test-module") + assert isinstance(client_info, ClientInfo) + assert client_info.client_library_version == "1.2.3-test-module" + assert client_info.gapic_version == "1.2.3-test-module" + assert client_info.user_agent == "langchain-google-community/1.2.3-test-module" + + +@patch("langchain_google_community._utils.os.environ.get") +@patch("langchain_google_community._utils.metadata.version") +def test_get_client_info_no_module( + mock_version: MagicMock, mock_environ_get: MagicMock +) -> None: + mock_version.return_value = "1.2.3" + mock_environ_get.return_value = False + client_info = get_client_info() + assert isinstance(client_info, ClientInfo) + assert client_info.client_library_version == "1.2.3" + assert client_info.gapic_version == "1.2.3" + assert client_info.user_agent == "langchain-google-community/1.2.3" + + +@patch("langchain_google_community._utils.os.environ.get") +@patch("langchain_google_community._utils.metadata.PackageNotFoundError") +@patch("langchain_google_community._utils.metadata.version") +def test_get_client_info_package_not_found( + mock_version: MagicMock, + mock_package_not_found_error: MagicMock, + mock_environ_get: MagicMock, +) -> None: + mock_version.side_effect = mock_package_not_found_error + mock_environ_get.return_value = False + client_info = get_client_info(module="test-module") + assert isinstance(client_info, ClientInfo) + assert client_info.client_library_version == "0.0.0-test-module" + assert client_info.gapic_version == "0.0.0-test-module" + assert client_info.user_agent == "langchain-google-community/0.0.0-test-module" diff --git a/libs/genai/langchain_google_genai/_common.py b/libs/genai/langchain_google_genai/_common.py index 4a61f6a6..4ff6ebe1 100644 --- a/libs/genai/langchain_google_genai/_common.py +++ b/libs/genai/langchain_google_genai/_common.py @@ -149,6 +149,7 @@ def get_client_info(module: Optional[str] = None) -> "ClientInfo": client_library_version, user_agent = get_user_agent(module) return ClientInfo( client_library_version=client_library_version, + gapic_version=client_library_version, user_agent=user_agent, ) diff --git a/libs/genai/tests/unit_tests/test_common.py b/libs/genai/tests/unit_tests/test_common.py index 849ad144..c86c9530 100644 --- a/libs/genai/tests/unit_tests/test_common.py +++ b/libs/genai/tests/unit_tests/test_common.py @@ -1,6 +1,9 @@ from unittest.mock import MagicMock, patch +from google.api_core.gapic_v1.client_info import ClientInfo + from langchain_google_genai._common import ( + get_client_info, get_user_agent, ) @@ -29,3 +32,64 @@ def test_get_user_agent_without_telemetry_env_variable( client_lib_version, user_agent_str = get_user_agent(module="test-module") assert client_lib_version == "1.2.3-test-module" assert user_agent_str == "langchain-google-genai/1.2.3-test-module" + + +@patch("langchain_google_genai._common.os.environ.get") +@patch("langchain_google_genai._common.metadata.version") +def test_get_client_info_with_telemetry_env_variable( + mock_version: MagicMock, mock_environ_get: MagicMock +) -> None: + mock_version.return_value = "1.2.3" + mock_environ_get.return_value = True + client_info = get_client_info(module="test-module") + assert isinstance(client_info, ClientInfo) + assert client_info.client_library_version == "1.2.3-test-module+remote_reasoning_engine" + assert client_info.gapic_version == "1.2.3-test-module+remote_reasoning_engine" + assert client_info.user_agent == ( + "langchain-google-genai/1.2.3-test-module+remote_reasoning_engine" + ) + + +@patch("langchain_google_genai._common.os.environ.get") +@patch("langchain_google_genai._common.metadata.version") +def test_get_client_info_without_telemetry_env_variable( + mock_version: MagicMock, mock_environ_get: MagicMock +) -> None: + mock_version.return_value = "1.2.3" + mock_environ_get.return_value = False + client_info = get_client_info(module="test-module") + assert isinstance(client_info, ClientInfo) + assert client_info.client_library_version == "1.2.3-test-module" + assert client_info.gapic_version == "1.2.3-test-module" + assert client_info.user_agent == "langchain-google-genai/1.2.3-test-module" + + +@patch("langchain_google_genai._common.os.environ.get") +@patch("langchain_google_genai._common.metadata.version") +def test_get_client_info_no_module( + mock_version: MagicMock, mock_environ_get: MagicMock +) -> None: + mock_version.return_value = "1.2.3" + mock_environ_get.return_value = False + client_info = get_client_info() + assert isinstance(client_info, ClientInfo) + assert client_info.client_library_version == "1.2.3" + assert client_info.gapic_version == "1.2.3" + assert client_info.user_agent == "langchain-google-genai/1.2.3" + + +@patch("langchain_google_genai._common.os.environ.get") +@patch("langchain_google_genai._common.metadata.PackageNotFoundError") +@patch("langchain_google_genai._common.metadata.version") +def test_get_client_info_package_not_found( + mock_version: MagicMock, + mock_package_not_found_error: MagicMock, + mock_environ_get: MagicMock, +) -> None: + mock_version.side_effect = mock_package_not_found_error + mock_environ_get.return_value = False + client_info = get_client_info(module="test-module") + assert isinstance(client_info, ClientInfo) + assert client_info.client_library_version == "0.0.0-test-module" + assert client_info.gapic_version == "0.0.0-test-module" + assert client_info.user_agent == "langchain-google-genai/0.0.0-test-module" diff --git a/libs/vertexai/langchain_google_vertexai/_utils.py b/libs/vertexai/langchain_google_vertexai/_utils.py index 109e4b41..2fd5109d 100644 --- a/libs/vertexai/langchain_google_vertexai/_utils.py +++ b/libs/vertexai/langchain_google_vertexai/_utils.py @@ -116,6 +116,7 @@ def get_client_info(module: Optional[str] = None) -> "ClientInfo": client_library_version, user_agent = get_user_agent(module) return ClientInfo( client_library_version=client_library_version, + gapic_version=client_library_version, user_agent=user_agent, ) diff --git a/libs/vertexai/tests/unit_tests/test_utils.py b/libs/vertexai/tests/unit_tests/test_utils.py index eea3e731..b251eb87 100644 --- a/libs/vertexai/tests/unit_tests/test_utils.py +++ b/libs/vertexai/tests/unit_tests/test_utils.py @@ -3,11 +3,13 @@ import pytest from google.api_core.exceptions import ClientError, GoogleAPICallError, InvalidArgument +from google.api_core.gapic_v1.client_info import ClientInfo from langchain_google_vertexai._retry import create_base_retry_decorator from langchain_google_vertexai._utils import ( GoogleModelFamily, _get_def_key_from_schema_path, + get_client_info, get_user_agent, replace_defs_in_schema, ) @@ -210,3 +212,64 @@ def test_get_user_agent_without_telemetry_env_variable( client_lib_version, user_agent_str = get_user_agent(module="test-module") assert client_lib_version == "1.2.3-test-module" assert user_agent_str == "langchain-google-vertexai/1.2.3-test-module" + + +@patch("langchain_google_vertexai._utils.os.environ.get") +@patch("langchain_google_vertexai._utils.metadata.version") +def test_get_client_info_with_telemetry_env_variable( + mock_version: MagicMock, mock_environ_get: MagicMock +) -> None: + mock_version.return_value = "1.2.3" + mock_environ_get.return_value = True + client_info = get_client_info(module="test-module") + assert isinstance(client_info, ClientInfo) + assert client_info.client_library_version == "1.2.3-test-module+remote_reasoning_engine" + assert client_info.gapic_version == "1.2.3-test-module+remote_reasoning_engine" + assert client_info.user_agent == ( + "langchain-google-vertexai/1.2.3-test-module+remote_reasoning_engine" + ) + + +@patch("langchain_google_vertexai._utils.os.environ.get") +@patch("langchain_google_vertexai._utils.metadata.version") +def test_get_client_info_without_telemetry_env_variable( + mock_version: MagicMock, mock_environ_get: MagicMock +) -> None: + mock_version.return_value = "1.2.3" + mock_environ_get.return_value = False + client_info = get_client_info(module="test-module") + assert isinstance(client_info, ClientInfo) + assert client_info.client_library_version == "1.2.3-test-module" + assert client_info.gapic_version == "1.2.3-test-module" + assert client_info.user_agent == "langchain-google-vertexai/1.2.3-test-module" + + +@patch("langchain_google_vertexai._utils.os.environ.get") +@patch("langchain_google_vertexai._utils.metadata.version") +def test_get_client_info_no_module( + mock_version: MagicMock, mock_environ_get: MagicMock +) -> None: + mock_version.return_value = "1.2.3" + mock_environ_get.return_value = False + client_info = get_client_info() + assert isinstance(client_info, ClientInfo) + assert client_info.client_library_version == "1.2.3" + assert client_info.gapic_version == "1.2.3" + assert client_info.user_agent == "langchain-google-vertexai/1.2.3" + + +@patch("langchain_google_vertexai._utils.os.environ.get") +@patch("langchain_google_vertexai._utils.metadata.PackageNotFoundError") +@patch("langchain_google_vertexai._utils.metadata.version") +def test_get_client_info_package_not_found( + mock_version: MagicMock, + mock_package_not_found_error: MagicMock, + mock_environ_get: MagicMock, +) -> None: + mock_version.side_effect = mock_package_not_found_error + mock_environ_get.return_value = False + client_info = get_client_info(module="test-module") + assert isinstance(client_info, ClientInfo) + assert client_info.client_library_version == "0.0.0-test-module" + assert client_info.gapic_version == "0.0.0-test-module" + assert client_info.user_agent == "langchain-google-vertexai/0.0.0-test-module"