Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions google/genai/_gaos/_hooks/google_genai_auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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,
Expand Down
1 change: 1 addition & 0 deletions google/genai/_gaos/_hooks/sdkhooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
19 changes: 18 additions & 1 deletion google/genai/tests/interactions/test_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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"

Loading