diff --git a/google/genai/_gaos/_hooks/google_genai_auth.py b/google/genai/_gaos/_hooks/google_genai_auth.py index 7ec30b9d8..fba57d60c 100644 --- a/google/genai/_gaos/_hooks/google_genai_auth.py +++ b/google/genai/_gaos/_hooks/google_genai_auth.py @@ -24,7 +24,8 @@ import httpx from .. import types, utils -from .types import BeforeRequestContext, BeforeRequestHook +from ..sdkconfiguration import SDKConfiguration +from .types import BeforeRequestContext, BeforeRequestHook, SDKInitHook GOOGLE_GENAI_API_REVISION = "2026-05-20" @@ -57,9 +58,14 @@ def consume(self) -> None: self._pending_access_token = None -class GoogleGenAIAuthHook(BeforeRequestHook): +class GoogleGenAIAuthHook(SDKInitHook, BeforeRequestHook): """Applies Google GenAI headers and custom auth before sending requests.""" + def sdk_init(self, config: SDKConfiguration) -> SDKConfiguration: + if config.globals.api_version is None: + config.globals.api_version = "v1beta" + return config + def before_request( self, hook_ctx: BeforeRequestContext, diff --git a/google/genai/_gaos/_hooks/sdkhooks.py b/google/genai/_gaos/_hooks/sdkhooks.py index 5dc2b7bc3..32854e369 100644 --- a/google/genai/_gaos/_hooks/sdkhooks.py +++ b/google/genai/_gaos/_hooks/sdkhooks.py @@ -45,6 +45,7 @@ def __init__(self) -> None: self.after_error_hooks: List[AfterErrorHook] = [] self.after_parse_error_hooks: List[AfterParseErrorHook] = [] init_hooks(self) + self.register_sdk_init_hook(GoogleGenAIAuthHook()) self.register_before_request_hook(GoogleGenAIAuthHook()) self.register_after_error_hook(cast(AfterErrorHook, CompatErrorHook())) self.register_after_parse_error_hook( diff --git a/google/genai/tests/interactions/test_integration.py b/google/genai/tests/interactions/test_integration.py index 22edf727c..cee40e778 100644 --- a/google/genai/tests/interactions/test_integration.py +++ b/google/genai/tests/interactions/test_integration.py @@ -153,7 +153,6 @@ async def test_async_client_genai_default_timeout(): assert async_sdk_client.timeout != httpx.Timeout(5.0) - @pytest.mark.filterwarnings("error") def test_unrecognized_model_serialization(): from ..._gaos.types.interactions.createmodelinteraction import CreateModelInteraction @@ -340,3 +339,21 @@ def test_output_text_across_steps(steps, expected): wrapped = gaos_google_genai._add_output_properties_if_interaction(payload) # pylint: disable=protected-access assert wrapped["output_text"] == expected + + +def test_sdk_init_hook_defaults_and_preserves_api_version(): + """Tests SDKInitHook default and explicit api_version behavior.""" + from ..._gaos import sdk as gaos_sdk # pylint: disable=g-import-not-at-top + + default_sync = gaos_sdk.GenAI() + assert default_sync.sdk_configuration.globals.api_version == "v1beta" + + explicit_sync = gaos_sdk.GenAI(api_version="v1alpha") + assert explicit_sync.sdk_configuration.globals.api_version == "v1alpha" + + default_async = gaos_sdk.AsyncGenAI() + assert default_async.sdk_configuration.globals.api_version == "v1beta" + + explicit_async = gaos_sdk.AsyncGenAI(api_version="v1alpha") + assert explicit_async.sdk_configuration.globals.api_version == "v1alpha" +