in google/generativeai/client.py [0:0]
def make_client(self, name):
if name == "file":
cls = FileServiceClient
elif name == "file_async":
cls = FileServiceAsyncClient
elif name.endswith("_async"):
name = name.split("_")[0]
cls = getattr(glm, name.title() + "ServiceAsyncClient")
else:
cls = getattr(glm, name.title() + "ServiceClient")
# Attempt to configure using defaults.
if not self.client_config:
configure()
try:
with patch_colab_gce_credentials():
client = cls(**self.client_config)
except ga_exceptions.DefaultCredentialsError as e:
e.args = (
"\n No API_KEY or ADC found. Please either:\n"
" - Set the `GOOGLE_API_KEY` environment variable.\n"
" - Manually pass the key with `genai.configure(api_key=my_api_key)`.\n"
" - Or set up Application Default Credentials, see https://ai.google.dev/gemini-api/docs/oauth for more information.",
)
raise e
if not self.default_metadata:
return client
def keep(name, f):
if name.startswith("_"):
return False
if not callable(f):
return False
if "metadata" not in inspect.signature(f).parameters.keys():
return False
return True
def add_default_metadata_wrapper(f):
def call(*args, metadata=(), **kwargs):
metadata = list(metadata) + list(self.default_metadata)
return f(*args, **kwargs, metadata=metadata)
return call
for name, value in inspect.getmembers(cls):
if not keep(name, value):
continue
f = getattr(client, name)
f = add_default_metadata_wrapper(f)
setattr(client, name, f)
return client