google-genai 1.44.0__py3-none-any.whl → 1.45.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- google/genai/_api_client.py +1 -0
- google/genai/_common.py +1 -3
- google/genai/_replay_api_client.py +8 -3
- google/genai/types.py +131 -16
- google/genai/version.py +1 -1
- {google_genai-1.44.0.dist-info → google_genai-1.45.0.dist-info}/METADATA +21 -1
- {google_genai-1.44.0.dist-info → google_genai-1.45.0.dist-info}/RECORD +10 -10
- {google_genai-1.44.0.dist-info → google_genai-1.45.0.dist-info}/WHEEL +0 -0
- {google_genai-1.44.0.dist-info → google_genai-1.45.0.dist-info}/licenses/LICENSE +0 -0
- {google_genai-1.44.0.dist-info → google_genai-1.45.0.dist-info}/top_level.txt +0 -0
google/genai/_api_client.py
CHANGED
|
@@ -692,6 +692,7 @@ class BaseApiClient:
|
|
|
692
692
|
client_args, async_client_args = self._ensure_httpx_ssl_ctx(
|
|
693
693
|
self._http_options
|
|
694
694
|
)
|
|
695
|
+
self._async_httpx_client_args = async_client_args
|
|
695
696
|
self._httpx_client = SyncHttpxClient(**client_args)
|
|
696
697
|
self._async_httpx_client = AsyncHttpxClient(**async_client_args)
|
|
697
698
|
if self._use_aiohttp():
|
google/genai/_common.py
CHANGED
|
@@ -272,9 +272,7 @@ def convert_to_dict(obj: object, convert_keys: bool = False) -> Any:
|
|
|
272
272
|
return convert_to_dict(obj.model_dump(exclude_none=True), convert_keys)
|
|
273
273
|
elif isinstance(obj, dict):
|
|
274
274
|
return {
|
|
275
|
-
maybe_snake_to_camel(key, convert_keys): convert_to_dict(
|
|
276
|
-
value, convert_keys
|
|
277
|
-
)
|
|
275
|
+
maybe_snake_to_camel(key, convert_keys): convert_to_dict(value)
|
|
278
276
|
for key, value in obj.items()
|
|
279
277
|
}
|
|
280
278
|
elif isinstance(obj, list):
|
|
@@ -56,8 +56,13 @@ def _normalize_json_case(obj: Any) -> Any:
|
|
|
56
56
|
return [_normalize_json_case(item) for item in obj]
|
|
57
57
|
elif isinstance(obj, enum.Enum):
|
|
58
58
|
return obj.value
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
elif isinstance(obj, str):
|
|
60
|
+
# Python >= 3.14 has a new division by zero error message.
|
|
61
|
+
if 'division by zero' in obj:
|
|
62
|
+
return obj.replace(
|
|
63
|
+
'division by zero', 'integer division or modulo by zero'
|
|
64
|
+
)
|
|
65
|
+
return obj
|
|
61
66
|
|
|
62
67
|
|
|
63
68
|
def _equals_ignore_key_case(obj1: Any, obj2: Any) -> bool:
|
|
@@ -88,7 +93,7 @@ def _equals_ignore_key_case(obj1: Any, obj2: Any) -> bool:
|
|
|
88
93
|
|
|
89
94
|
def _redact_version_numbers(version_string: str) -> str:
|
|
90
95
|
"""Redacts version numbers in the form x.y.z from a string."""
|
|
91
|
-
return re.sub(r'\d+\.\d+\.\d+', '{VERSION_NUMBER}', version_string)
|
|
96
|
+
return re.sub(r'\d+\.\d+\.\d+[a-zA-Z0-9]*', '{VERSION_NUMBER}', version_string)
|
|
92
97
|
|
|
93
98
|
|
|
94
99
|
def _redact_language_label(language_label: str) -> str:
|
google/genai/types.py
CHANGED
|
@@ -1696,6 +1696,10 @@ class JSONSchema(_common.BaseModel):
|
|
|
1696
1696
|
' matches the instance successfully.'
|
|
1697
1697
|
),
|
|
1698
1698
|
)
|
|
1699
|
+
additional_properties: Optional[Any] = Field(
|
|
1700
|
+
default=None,
|
|
1701
|
+
description="""Can either be a boolean or an object; controls the presence of additional properties.""",
|
|
1702
|
+
)
|
|
1699
1703
|
any_of: Optional[list['JSONSchema']] = Field(
|
|
1700
1704
|
default=None,
|
|
1701
1705
|
description=(
|
|
@@ -1704,6 +1708,20 @@ class JSONSchema(_common.BaseModel):
|
|
|
1704
1708
|
' keyword’s value.'
|
|
1705
1709
|
),
|
|
1706
1710
|
)
|
|
1711
|
+
unique_items: Optional[bool] = Field(
|
|
1712
|
+
default=None,
|
|
1713
|
+
description="""Boolean value that indicates whether the items in an array are unique.""",
|
|
1714
|
+
)
|
|
1715
|
+
ref: Optional[str] = Field(
|
|
1716
|
+
default=None,
|
|
1717
|
+
alias='$ref',
|
|
1718
|
+
description="""Allows indirect references between schema nodes.""",
|
|
1719
|
+
)
|
|
1720
|
+
defs: Optional[dict[str, 'JSONSchema']] = Field(
|
|
1721
|
+
default=None,
|
|
1722
|
+
alias='$defs',
|
|
1723
|
+
description="""Schema definitions to be used with $ref.""",
|
|
1724
|
+
)
|
|
1707
1725
|
|
|
1708
1726
|
|
|
1709
1727
|
class Schema(_common.BaseModel):
|
|
@@ -1915,7 +1933,7 @@ class Schema(_common.BaseModel):
|
|
|
1915
1933
|
list_schema_field_names: tuple[str, ...] = (
|
|
1916
1934
|
'any_of', # 'one_of', 'all_of', 'not' to come
|
|
1917
1935
|
)
|
|
1918
|
-
dict_schema_field_names: tuple[str, ...] = ('properties',)
|
|
1936
|
+
dict_schema_field_names: tuple[str, ...] = ('properties',)
|
|
1919
1937
|
|
|
1920
1938
|
related_field_names_by_type: dict[str, tuple[str, ...]] = {
|
|
1921
1939
|
JSONSchemaType.NUMBER.value: (
|
|
@@ -1964,6 +1982,23 @@ class Schema(_common.BaseModel):
|
|
|
1964
1982
|
# placeholder for potential gemini api unsupported fields
|
|
1965
1983
|
gemini_api_unsupported_field_names: tuple[str, ...] = ()
|
|
1966
1984
|
|
|
1985
|
+
def _resolve_ref(
|
|
1986
|
+
ref_path: str, root_schema_dict: dict[str, Any]
|
|
1987
|
+
) -> dict[str, Any]:
|
|
1988
|
+
"""Helper to resolve a $ref path."""
|
|
1989
|
+
current = root_schema_dict
|
|
1990
|
+
for part in ref_path.lstrip('#/').split('/'):
|
|
1991
|
+
if part == '$defs':
|
|
1992
|
+
part = 'defs'
|
|
1993
|
+
current = current[part]
|
|
1994
|
+
current.pop('title', None)
|
|
1995
|
+
if 'properties' in current and current['properties'] is not None:
|
|
1996
|
+
for prop_schema in current['properties'].values():
|
|
1997
|
+
if isinstance(prop_schema, dict):
|
|
1998
|
+
prop_schema.pop('title', None)
|
|
1999
|
+
|
|
2000
|
+
return current
|
|
2001
|
+
|
|
1967
2002
|
def normalize_json_schema_type(
|
|
1968
2003
|
json_schema_type: Optional[
|
|
1969
2004
|
Union[JSONSchemaType, Sequence[JSONSchemaType], str, Sequence[str]]
|
|
@@ -1972,11 +2007,16 @@ class Schema(_common.BaseModel):
|
|
|
1972
2007
|
"""Returns (non_null_types, nullable)"""
|
|
1973
2008
|
if json_schema_type is None:
|
|
1974
2009
|
return [], False
|
|
1975
|
-
|
|
1976
|
-
|
|
2010
|
+
type_sequence: Sequence[Union[JSONSchemaType, str]]
|
|
2011
|
+
if isinstance(json_schema_type, str) or not isinstance(
|
|
2012
|
+
json_schema_type, Sequence
|
|
2013
|
+
):
|
|
2014
|
+
type_sequence = [json_schema_type]
|
|
2015
|
+
else:
|
|
2016
|
+
type_sequence = json_schema_type
|
|
1977
2017
|
non_null_types = []
|
|
1978
2018
|
nullable = False
|
|
1979
|
-
for type_value in
|
|
2019
|
+
for type_value in type_sequence:
|
|
1980
2020
|
if isinstance(type_value, JSONSchemaType):
|
|
1981
2021
|
type_value = type_value.value
|
|
1982
2022
|
if type_value == JSONSchemaType.NULL.value:
|
|
@@ -1996,7 +2036,10 @@ class Schema(_common.BaseModel):
|
|
|
1996
2036
|
for field_name, field_value in json_schema_dict.items():
|
|
1997
2037
|
if field_value is None:
|
|
1998
2038
|
continue
|
|
1999
|
-
if field_name not in google_schema_field_names
|
|
2039
|
+
if field_name not in google_schema_field_names and field_name not in [
|
|
2040
|
+
'ref',
|
|
2041
|
+
'defs',
|
|
2042
|
+
]:
|
|
2000
2043
|
raise ValueError(
|
|
2001
2044
|
f'JSONSchema field "{field_name}" is not supported by the '
|
|
2002
2045
|
'Schema object. And the "raise_error_on_unsupported_field" '
|
|
@@ -2026,12 +2069,19 @@ class Schema(_common.BaseModel):
|
|
|
2026
2069
|
)
|
|
2027
2070
|
|
|
2028
2071
|
def convert_json_schema(
|
|
2029
|
-
|
|
2072
|
+
current_json_schema: JSONSchema,
|
|
2073
|
+
root_json_schema_dict: dict[str, Any],
|
|
2030
2074
|
api_option: Literal['VERTEX_AI', 'GEMINI_API'],
|
|
2031
2075
|
raise_error_on_unsupported_field: bool,
|
|
2032
2076
|
) -> 'Schema':
|
|
2033
2077
|
schema = Schema()
|
|
2034
|
-
json_schema_dict =
|
|
2078
|
+
json_schema_dict = current_json_schema.model_dump()
|
|
2079
|
+
|
|
2080
|
+
if json_schema_dict.get('ref'):
|
|
2081
|
+
json_schema_dict = _resolve_ref(
|
|
2082
|
+
json_schema_dict['ref'], root_json_schema_dict
|
|
2083
|
+
)
|
|
2084
|
+
|
|
2035
2085
|
raise_error_if_cannot_convert(
|
|
2036
2086
|
json_schema_dict=json_schema_dict,
|
|
2037
2087
|
api_option=api_option,
|
|
@@ -2057,6 +2107,7 @@ class Schema(_common.BaseModel):
|
|
|
2057
2107
|
non_null_types, nullable = normalize_json_schema_type(
|
|
2058
2108
|
json_schema_dict.get('type', None)
|
|
2059
2109
|
)
|
|
2110
|
+
is_union_like_type = len(non_null_types) > 1
|
|
2060
2111
|
if len(non_null_types) > 1:
|
|
2061
2112
|
logger.warning(
|
|
2062
2113
|
'JSONSchema type is union-like, e.g. ["null", "string", "array"]. '
|
|
@@ -2086,11 +2137,14 @@ class Schema(_common.BaseModel):
|
|
|
2086
2137
|
# Pass 2: the JSONSchema.type is not union-like,
|
|
2087
2138
|
# e.g. 'string', ['string'], ['null', 'string'].
|
|
2088
2139
|
for field_name, field_value in json_schema_dict.items():
|
|
2089
|
-
if field_value is None:
|
|
2140
|
+
if field_value is None or field_name == 'defs':
|
|
2090
2141
|
continue
|
|
2091
2142
|
if field_name in schema_field_names:
|
|
2143
|
+
if field_name == 'items' and not field_value:
|
|
2144
|
+
continue
|
|
2092
2145
|
schema_field_value: 'Schema' = convert_json_schema(
|
|
2093
|
-
|
|
2146
|
+
current_json_schema=JSONSchema(**field_value),
|
|
2147
|
+
root_json_schema_dict=root_json_schema_dict,
|
|
2094
2148
|
api_option=api_option,
|
|
2095
2149
|
raise_error_on_unsupported_field=raise_error_on_unsupported_field,
|
|
2096
2150
|
)
|
|
@@ -2098,17 +2152,21 @@ class Schema(_common.BaseModel):
|
|
|
2098
2152
|
elif field_name in list_schema_field_names:
|
|
2099
2153
|
list_schema_field_value: list['Schema'] = [
|
|
2100
2154
|
convert_json_schema(
|
|
2101
|
-
|
|
2155
|
+
current_json_schema=JSONSchema(**this_field_value),
|
|
2156
|
+
root_json_schema_dict=root_json_schema_dict,
|
|
2102
2157
|
api_option=api_option,
|
|
2103
2158
|
raise_error_on_unsupported_field=raise_error_on_unsupported_field,
|
|
2104
2159
|
)
|
|
2105
2160
|
for this_field_value in field_value
|
|
2106
2161
|
]
|
|
2107
2162
|
setattr(schema, field_name, list_schema_field_value)
|
|
2163
|
+
if not schema.type and not is_union_like_type:
|
|
2164
|
+
schema.type = Type('OBJECT')
|
|
2108
2165
|
elif field_name in dict_schema_field_names:
|
|
2109
2166
|
dict_schema_field_value: dict[str, 'Schema'] = {
|
|
2110
2167
|
key: convert_json_schema(
|
|
2111
|
-
|
|
2168
|
+
current_json_schema=JSONSchema(**value),
|
|
2169
|
+
root_json_schema_dict=root_json_schema_dict,
|
|
2112
2170
|
api_option=api_option,
|
|
2113
2171
|
raise_error_on_unsupported_field=raise_error_on_unsupported_field,
|
|
2114
2172
|
)
|
|
@@ -2116,20 +2174,52 @@ class Schema(_common.BaseModel):
|
|
|
2116
2174
|
}
|
|
2117
2175
|
setattr(schema, field_name, dict_schema_field_value)
|
|
2118
2176
|
elif field_name == 'type':
|
|
2119
|
-
# non_null_types can only be empty or have one element.
|
|
2120
|
-
# because already handled union-like case above.
|
|
2121
2177
|
non_null_types, nullable = normalize_json_schema_type(field_value)
|
|
2122
2178
|
if nullable:
|
|
2123
2179
|
schema.nullable = True
|
|
2124
2180
|
if non_null_types:
|
|
2125
2181
|
schema.type = Type(non_null_types[0])
|
|
2126
2182
|
else:
|
|
2127
|
-
|
|
2183
|
+
if (
|
|
2184
|
+
hasattr(schema, field_name)
|
|
2185
|
+
and field_name != 'additional_properties'
|
|
2186
|
+
):
|
|
2187
|
+
setattr(schema, field_name, field_value)
|
|
2188
|
+
|
|
2189
|
+
if (
|
|
2190
|
+
schema.type == 'ARRAY'
|
|
2191
|
+
and schema.items
|
|
2192
|
+
and not schema.items.model_dump(exclude_unset=True)
|
|
2193
|
+
):
|
|
2194
|
+
schema.items = None
|
|
2195
|
+
|
|
2196
|
+
if schema.any_of and len(schema.any_of) == 2:
|
|
2197
|
+
nullable_part = None
|
|
2198
|
+
type_part = None
|
|
2199
|
+
for part in schema.any_of:
|
|
2200
|
+
# A schema representing `None` will either be of type NULL or just be nullable.
|
|
2201
|
+
part_dict = part.model_dump(exclude_unset=True)
|
|
2202
|
+
if part_dict == {'nullable': True} or part_dict == {'type': 'NULL'}:
|
|
2203
|
+
nullable_part = part
|
|
2204
|
+
else:
|
|
2205
|
+
type_part = part
|
|
2206
|
+
|
|
2207
|
+
# If we found both parts, unwrap them into a single schema.
|
|
2208
|
+
if nullable_part and type_part:
|
|
2209
|
+
default_value = schema.default
|
|
2210
|
+
schema = type_part
|
|
2211
|
+
schema.nullable = True
|
|
2212
|
+
# Carry the default value over to the unwrapped schema
|
|
2213
|
+
if default_value is not None:
|
|
2214
|
+
schema.default = default_value
|
|
2128
2215
|
|
|
2129
2216
|
return schema
|
|
2130
2217
|
|
|
2218
|
+
# This is the initial call to the recursive function.
|
|
2219
|
+
root_schema_dict = json_schema.model_dump()
|
|
2131
2220
|
return convert_json_schema(
|
|
2132
|
-
|
|
2221
|
+
current_json_schema=json_schema,
|
|
2222
|
+
root_json_schema_dict=root_schema_dict,
|
|
2133
2223
|
api_option=api_option,
|
|
2134
2224
|
raise_error_on_unsupported_field=raise_error_on_unsupported_field,
|
|
2135
2225
|
)
|
|
@@ -2371,7 +2461,32 @@ class FunctionDeclaration(_common.BaseModel):
|
|
|
2371
2461
|
json_schema_dict = _automatic_function_calling_util._add_unevaluated_items_to_fixed_len_tuple_schema(
|
|
2372
2462
|
json_schema_dict
|
|
2373
2463
|
)
|
|
2374
|
-
|
|
2464
|
+
if 'prefixItems' in json_schema_dict:
|
|
2465
|
+
parameters_json_schema[name] = json_schema_dict
|
|
2466
|
+
continue
|
|
2467
|
+
|
|
2468
|
+
union_args = typing.get_args(param.annotation)
|
|
2469
|
+
has_primitive = any(
|
|
2470
|
+
_automatic_function_calling_util._is_builtin_primitive_or_compound(
|
|
2471
|
+
arg
|
|
2472
|
+
)
|
|
2473
|
+
for arg in union_args
|
|
2474
|
+
)
|
|
2475
|
+
if (
|
|
2476
|
+
'$ref' in json_schema_dict or '$defs' in json_schema_dict
|
|
2477
|
+
) and has_primitive:
|
|
2478
|
+
# This is a complex schema with a primitive (e.g., str | MyModel)
|
|
2479
|
+
# that is better represented by raw JSON schema.
|
|
2480
|
+
parameters_json_schema[name] = json_schema_dict
|
|
2481
|
+
continue
|
|
2482
|
+
|
|
2483
|
+
schema = Schema.from_json_schema(
|
|
2484
|
+
json_schema=JSONSchema(**json_schema_dict),
|
|
2485
|
+
api_option=api_option,
|
|
2486
|
+
)
|
|
2487
|
+
if param.default is not inspect.Parameter.empty:
|
|
2488
|
+
schema.default = param.default
|
|
2489
|
+
parameters_properties[name] = schema
|
|
2375
2490
|
except Exception as e:
|
|
2376
2491
|
_automatic_function_calling_util._raise_for_unsupported_param(
|
|
2377
2492
|
param, callable.__name__, e
|
google/genai/version.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: google-genai
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.45.0
|
|
4
4
|
Summary: GenAI Python SDK
|
|
5
5
|
Author-email: Google LLC <googleapis-packages@google.com>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -15,6 +15,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.11
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.12
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
18
19
|
Classifier: Topic :: Internet
|
|
19
20
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
20
21
|
Requires-Python: >=3.9
|
|
@@ -279,6 +280,25 @@ http_options = types.HttpOptions(
|
|
|
279
280
|
client=Client(..., http_options=http_options)
|
|
280
281
|
```
|
|
281
282
|
|
|
283
|
+
### Custom base url
|
|
284
|
+
|
|
285
|
+
In some cases you might need a custom base url (for example, API gateway proxy
|
|
286
|
+
server) and bypass some authentication checks for project, location, or API key.
|
|
287
|
+
You may pass the custom base url like this:
|
|
288
|
+
|
|
289
|
+
```python
|
|
290
|
+
|
|
291
|
+
base_url = 'https://test-api-gateway-proxy.com'
|
|
292
|
+
client = Client(
|
|
293
|
+
vertexai=True,
|
|
294
|
+
http_options={
|
|
295
|
+
'base_url': base_url,
|
|
296
|
+
'headers': {'Authorization': 'Bearer test_token'},
|
|
297
|
+
},
|
|
298
|
+
)
|
|
299
|
+
|
|
300
|
+
```
|
|
301
|
+
|
|
282
302
|
## Types
|
|
283
303
|
|
|
284
304
|
Parameter types can be specified as either dictionaries(`TypedDict`) or
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
google/genai/__init__.py,sha256=SKz_9WQKA3R4OpJIDJlgssVfizLNDG2tuWtOD9pxrPE,729
|
|
2
2
|
google/genai/_adapters.py,sha256=Kok38miNYJff2n--l0zEK_hbq0y2rWOH7k75J7SMYbQ,1744
|
|
3
|
-
google/genai/_api_client.py,sha256=
|
|
3
|
+
google/genai/_api_client.py,sha256=3rR0I0naOvkeSFlmSK7WCn56z29hHuR71-i6ryqs1Bc,62734
|
|
4
4
|
google/genai/_api_module.py,sha256=lj8eUWx8_LBGBz-49qz6_ywWm3GYp3d8Bg5JoOHbtbI,902
|
|
5
5
|
google/genai/_automatic_function_calling_util.py,sha256=xXNkJR-pzSMkeSXMz3Jw-kMHFbTJEiRJ3wocuwtWW4I,11627
|
|
6
6
|
google/genai/_base_transformers.py,sha256=wljA6m4tLl4XLGlBC2DNOls5N9-X9tffBq0M7i8jgpw,1034
|
|
7
7
|
google/genai/_base_url.py,sha256=E5H4dew14Y16qfnB3XRnjSCi19cJVlkaMNoM_8ip-PM,1597
|
|
8
|
-
google/genai/_common.py,sha256=
|
|
8
|
+
google/genai/_common.py,sha256=6_psdFl0iBRwgyIKOuGtugpTCHPGB2zZzsJCVcI_2oI,24114
|
|
9
9
|
google/genai/_extra_utils.py,sha256=YLw64xzAKD_fQJp327-GGZM3kQ0sVdhNXMeDaaNkVFE,23011
|
|
10
10
|
google/genai/_live_converters.py,sha256=jhGi2U7G8XC27qE-9LY6B-jc5mAHK1vS_Nx9_-jBNF0,42115
|
|
11
11
|
google/genai/_local_tokenizer_loader.py,sha256=cGN1F0f7hNjRIGCGTLeox7IGAZf_YcvZjSp2rCyhUak,7465
|
|
12
12
|
google/genai/_mcp_utils.py,sha256=HuWJ8FUjquv40Mf_QjcL5r5yXWrS-JjINsjlOSbbyAc,3870
|
|
13
13
|
google/genai/_operations_converters.py,sha256=8w4WSeA_KSyc56JcL1MTknZHIds0gF3E8YdriluUJfY,8708
|
|
14
|
-
google/genai/_replay_api_client.py,sha256=
|
|
14
|
+
google/genai/_replay_api_client.py,sha256=oCPZULWpmjahOn5pvY7KkCB_cksNwm7pc4nuTnqqqV8,22956
|
|
15
15
|
google/genai/_test_api_client.py,sha256=4ruFIy5_1qcbKqqIBu3HSQbpSOBrxiecBtDZaTGFR1s,4797
|
|
16
16
|
google/genai/_tokens_converters.py,sha256=xQY6yWtt7iJtfygfmd29d9mjjGKOpy0xG3yTdlr7APk,14137
|
|
17
17
|
google/genai/_transformers.py,sha256=tx6FecRkfQbEmmgXZrb8ndIRacAfluKIFlyQilslWG0,42782
|
|
@@ -30,10 +30,10 @@ google/genai/pagers.py,sha256=m0SfWWn1EJs2k1On3DZx371qb8g2BRm_188ExsicIRc,7098
|
|
|
30
30
|
google/genai/py.typed,sha256=RsMFoLwBkAvY05t6izop4UHZtqOPLiKp3GkIEizzmQY,40
|
|
31
31
|
google/genai/tokens.py,sha256=4BPW0gGWFeFVk3INkuY2tfREnsrvzQDhouvRI6_F9Q8,12235
|
|
32
32
|
google/genai/tunings.py,sha256=VmCBW_RR16QbzVpimi7pTEv6XTVeyDGpwqmJqetUj0o,58175
|
|
33
|
-
google/genai/types.py,sha256=
|
|
34
|
-
google/genai/version.py,sha256=
|
|
35
|
-
google_genai-1.
|
|
36
|
-
google_genai-1.
|
|
37
|
-
google_genai-1.
|
|
38
|
-
google_genai-1.
|
|
39
|
-
google_genai-1.
|
|
33
|
+
google/genai/types.py,sha256=dHxmIaGE8kN1QqZU0k_o3ubDpFifyF9hf1AqC4SfUm0,565049
|
|
34
|
+
google/genai/version.py,sha256=5PMgawnATApGV9ARgdK3dp0AjM505-kzZ7a_U4_QYWU,627
|
|
35
|
+
google_genai-1.45.0.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
36
|
+
google_genai-1.45.0.dist-info/METADATA,sha256=BuK4IlwvidL2zzmghBQwy950jDKW8NYl-z3p7qKMrCY,45766
|
|
37
|
+
google_genai-1.45.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
38
|
+
google_genai-1.45.0.dist-info/top_level.txt,sha256=_1QvSJIhFAGfxb79D6DhB7SUw2X6T4rwnz_LLrbcD3c,7
|
|
39
|
+
google_genai-1.45.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|