From 11c3ff052f34c1a2b06994f071d96eb287ec018d Mon Sep 17 00:00:00 2001 From: Sara Robinson Date: Mon, 27 Oct 2025 07:56:05 -0700 Subject: [PATCH] chore: GenAI SDK client - fix types import logic to correctly lazy load _evals_metric_loaders PiperOrigin-RevId: 824518772 --- tests/unit/architecture/test_vertexai_import.py | 9 +++++++++ vertexai/_genai/types/__init__.py | 16 ++++++++++++++-- vertexai/_genai/types/common.py | 12 ------------ 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/tests/unit/architecture/test_vertexai_import.py b/tests/unit/architecture/test_vertexai_import.py index 6a136e2c58..eb0ad2a16d 100644 --- a/tests/unit/architecture/test_vertexai_import.py +++ b/tests/unit/architecture/test_vertexai_import.py @@ -100,6 +100,15 @@ def test_vertexai_import(): assert "pandas" not in modules_after_genai_client_import assert "pydantic" in modules_after_genai_client_import + # The types module should not import _evals_metric_loaders until + # PrebuiltMetric or RubricMetric are accessed. + from vertexai._genai import types # noqa: F401 + + assert ( + "google.cloud.aiplatform.vertexai._genai._evals_metric_loaders" + not in sys.modules + ) + # Tests the evals module is lazy loaded. from vertexai._genai import evals as _ # noqa: F401,F811 diff --git a/vertexai/_genai/types/__init__.py b/vertexai/_genai/types/__init__.py index 714ad2634b..38a84daa66 100644 --- a/vertexai/_genai/types/__init__.py +++ b/vertexai/_genai/types/__init__.py @@ -16,6 +16,9 @@ # Code generated by the Google Gen AI SDK generator DO NOT EDIT. # flake8: noqa: F401 +import importlib +import typing + from . import agent_engines from . import evals from .common import _AppendAgentEngineSessionEventRequestParameters @@ -756,7 +759,6 @@ from .common import RubricGroup from .common import RubricGroupDict from .common import RubricGroupOrDict -from .common import RubricMetric from .common import RubricOrDict from .common import RubricVerdict from .common import RubricVerdictDict @@ -1813,7 +1815,6 @@ "PromptDataDict", "PromptDataOrDict", "LLMMetric", - "RubricMetric", "MetricPromptBuilder", "_CreateEvaluationItemParameters", "_CreateEvaluationRunParameters", @@ -1878,4 +1879,15 @@ "_UpdateDatasetParameters", "evals", "agent_engines", + "PrebuiltMetric", + "RubricMetric", ] + + +def __getattr__(name: str) -> typing.Any: + if name == "PrebuiltMetric" or name == "RubricMetric": + module = importlib.import_module(".._evals_metric_loaders", __package__) + prebuilt_metric_obj = getattr(module, name) + globals()[name] = prebuilt_metric_obj + return prebuilt_metric_obj + raise AttributeError(f"module '{__name__}' has no attribute '{name}'") diff --git a/vertexai/_genai/types/common.py b/vertexai/_genai/types/common.py index 9df0e52911..33a2e40f9f 100644 --- a/vertexai/_genai/types/common.py +++ b/vertexai/_genai/types/common.py @@ -16,7 +16,6 @@ # Code generated by the Google Gen AI SDK generator DO NOT EDIT. import datetime -import importlib import json import logging import os @@ -47,17 +46,6 @@ from typing_extensions import TypedDict from . import evals as evals_types -__all__ = ["PrebuiltMetric", "RubricMetric"] # noqa: F822 - - -def __getattr__(name: str) -> typing.Any: - if name == "PrebuiltMetric" or name == "RubricMetric": - module = importlib.import_module(".._evals_metric_loaders", __package__) - prebuilt_metric_obj = getattr(module, name) - globals()[name] = prebuilt_metric_obj - return prebuilt_metric_obj - raise AttributeError(f"module '{__name__}' has no attribute '{name}'") - def _camel_to_snake(camel_case_string: str) -> str: snake_case_string = re.sub(r"(?