google-genai 0.7.0__py3-none-any.whl → 1.0.0rc0__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/types.py CHANGED
@@ -20,12 +20,22 @@ from enum import Enum, EnumMeta
20
20
  import inspect
21
21
  import json
22
22
  import logging
23
+ import sys
23
24
  import typing
24
25
  from typing import Any, Callable, GenericAlias, Literal, Optional, Type, TypedDict, Union
25
26
  import pydantic
26
27
  from pydantic import Field
27
28
  from . import _common
28
29
 
30
+ if sys.version_info >= (3, 10):
31
+ # Supports both Union[t1, t2] and t1 | t2
32
+ VersionedUnionType = Union[typing.types.UnionType, typing._UnionGenericAlias]
33
+ _UNION_TYPES = (typing.Union, typing.types.UnionType)
34
+ else:
35
+ # Supports only Union[t1, t2]
36
+ VersionedUnionType = typing._UnionGenericAlias
37
+ _UNION_TYPES = (typing.Union,)
38
+
29
39
  _is_pillow_image_imported = False
30
40
  if typing.TYPE_CHECKING:
31
41
  import PIL.Image
@@ -713,7 +723,7 @@ class HttpOptions(_common.BaseModel):
713
723
  timeout: Optional[int] = Field(
714
724
  default=None, description="""Timeout for the request in milliseconds."""
715
725
  )
716
- deprecated_response_payload: Optional[dict[str, any]] = Field(
726
+ deprecated_response_payload: Optional[dict[str, Any]] = Field(
717
727
  default=None,
718
728
  description="""This field is deprecated. If set, the response payload will be returned int the supplied dict.""",
719
729
  )
@@ -734,7 +744,7 @@ class HttpOptionsDict(TypedDict, total=False):
734
744
  timeout: Optional[int]
735
745
  """Timeout for the request in milliseconds."""
736
746
 
737
- deprecated_response_payload: Optional[dict[str, any]]
747
+ deprecated_response_payload: Optional[dict[str, Any]]
738
748
  """This field is deprecated. If set, the response payload will be returned int the supplied dict."""
739
749
 
740
750
 
@@ -1656,7 +1666,7 @@ ContentUnion = Union[Content, list[PartUnion], PartUnion]
1656
1666
  ContentUnionDict = Union[ContentUnion, ContentDict]
1657
1667
 
1658
1668
 
1659
- SchemaUnion = Union[dict, type, Schema, GenericAlias]
1669
+ SchemaUnion = Union[dict, type, Schema, GenericAlias, VersionedUnionType]
1660
1670
 
1661
1671
 
1662
1672
  SchemaUnionDict = Union[SchemaUnion, SchemaDict]
@@ -1863,6 +1873,10 @@ class GenerateContentConfig(_common.BaseModel):
1863
1873
  description="""Associates model output to a specific function call.
1864
1874
  """,
1865
1875
  )
1876
+ labels: Optional[dict[str, str]] = Field(
1877
+ default=None,
1878
+ description="""Labels with user-defined metadata to break down billed charges.""",
1879
+ )
1866
1880
  cached_content: Optional[str] = Field(
1867
1881
  default=None,
1868
1882
  description="""Resource name of a context cache that can be used in subsequent
@@ -2007,6 +2021,9 @@ class GenerateContentConfigDict(TypedDict, total=False):
2007
2021
  """Associates model output to a specific function call.
2008
2022
  """
2009
2023
 
2024
+ labels: Optional[dict[str, str]]
2025
+ """Labels with user-defined metadata to break down billed charges."""
2026
+
2010
2027
  cached_content: Optional[str]
2011
2028
  """Resource name of a context cache that can be used in subsequent
2012
2029
  requests.
@@ -2902,6 +2919,29 @@ class GenerateContentResponse(_common.BaseModel):
2902
2919
  # may not be a valid json per stream response
2903
2920
  except json.decoder.JSONDecodeError:
2904
2921
  pass
2922
+ elif typing.get_origin(response_schema) in _UNION_TYPES:
2923
+ # Union schema.
2924
+ union_types = typing.get_args(response_schema)
2925
+ for union_type in union_types:
2926
+ if issubclass(union_type, pydantic.BaseModel):
2927
+ try:
2928
+
2929
+ class Placeholder(pydantic.BaseModel):
2930
+ placeholder: response_schema
2931
+
2932
+ parsed = {'placeholder': json.loads(result.text)}
2933
+ placeholder = Placeholder.model_validate(parsed)
2934
+ result.parsed = placeholder.placeholder
2935
+ except json.decoder.JSONDecodeError:
2936
+ pass
2937
+ except pydantic.ValidationError:
2938
+ pass
2939
+ else:
2940
+ try:
2941
+ result.parsed = json.loads(result.text)
2942
+ # may not be a valid json per stream response
2943
+ except json.decoder.JSONDecodeError:
2944
+ pass
2905
2945
 
2906
2946
  return result
2907
2947
 
@@ -3533,6 +3573,12 @@ class GeneratedImage(_common.BaseModel):
3533
3573
  response.
3534
3574
  """,
3535
3575
  )
3576
+ enhanced_prompt: Optional[str] = Field(
3577
+ default=None,
3578
+ description="""The rewritten prompt used for the image generation if the prompt
3579
+ enhancer is enabled.
3580
+ """,
3581
+ )
3536
3582
 
3537
3583
 
3538
3584
  class GeneratedImageDict(TypedDict, total=False):
@@ -3547,6 +3593,11 @@ class GeneratedImageDict(TypedDict, total=False):
3547
3593
  response.
3548
3594
  """
3549
3595
 
3596
+ enhanced_prompt: Optional[str]
3597
+ """The rewritten prompt used for the image generation if the prompt
3598
+ enhancer is enabled.
3599
+ """
3600
+
3550
3601
 
3551
3602
  GeneratedImageOrDict = Union[GeneratedImage, GeneratedImageDict]
3552
3603
 
@@ -7190,6 +7241,147 @@ class DeleteResourceJobDict(TypedDict, total=False):
7190
7241
  DeleteResourceJobOrDict = Union[DeleteResourceJob, DeleteResourceJobDict]
7191
7242
 
7192
7243
 
7244
+ class GetOperationConfig(_common.BaseModel):
7245
+
7246
+ http_options: Optional[HttpOptions] = Field(
7247
+ default=None, description="""Used to override HTTP request options."""
7248
+ )
7249
+
7250
+
7251
+ class GetOperationConfigDict(TypedDict, total=False):
7252
+
7253
+ http_options: Optional[HttpOptionsDict]
7254
+ """Used to override HTTP request options."""
7255
+
7256
+
7257
+ GetOperationConfigOrDict = Union[GetOperationConfig, GetOperationConfigDict]
7258
+
7259
+
7260
+ class _GetOperationParameters(_common.BaseModel):
7261
+ """Parameters for the GET method."""
7262
+
7263
+ operation_name: Optional[str] = Field(
7264
+ default=None,
7265
+ description="""The server-assigned name for the operation.""",
7266
+ )
7267
+ config: Optional[GetOperationConfig] = Field(
7268
+ default=None,
7269
+ description="""Used to override the default configuration.""",
7270
+ )
7271
+
7272
+
7273
+ class _GetOperationParametersDict(TypedDict, total=False):
7274
+ """Parameters for the GET method."""
7275
+
7276
+ operation_name: Optional[str]
7277
+ """The server-assigned name for the operation."""
7278
+
7279
+ config: Optional[GetOperationConfigDict]
7280
+ """Used to override the default configuration."""
7281
+
7282
+
7283
+ _GetOperationParametersOrDict = Union[
7284
+ _GetOperationParameters, _GetOperationParametersDict
7285
+ ]
7286
+
7287
+
7288
+ class Operation(_common.BaseModel):
7289
+ """A long-running operation."""
7290
+
7291
+ name: Optional[str] = Field(
7292
+ default=None,
7293
+ description="""The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.""",
7294
+ )
7295
+ metadata: Optional[dict[str, Any]] = Field(
7296
+ default=None,
7297
+ description="""Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.""",
7298
+ )
7299
+ done: Optional[bool] = Field(
7300
+ default=None,
7301
+ description="""If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.""",
7302
+ )
7303
+ error: Optional[dict[str, Any]] = Field(
7304
+ default=None,
7305
+ description="""The error result of the operation in case of failure or cancellation.""",
7306
+ )
7307
+ response: Optional[dict[str, Any]] = Field(
7308
+ default=None,
7309
+ description="""The normal response of the operation in case of success.""",
7310
+ )
7311
+
7312
+
7313
+ class OperationDict(TypedDict, total=False):
7314
+ """A long-running operation."""
7315
+
7316
+ name: Optional[str]
7317
+ """The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`."""
7318
+
7319
+ metadata: Optional[dict[str, Any]]
7320
+ """Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any."""
7321
+
7322
+ done: Optional[bool]
7323
+ """If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available."""
7324
+
7325
+ error: Optional[dict[str, Any]]
7326
+ """The error result of the operation in case of failure or cancellation."""
7327
+
7328
+ response: Optional[dict[str, Any]]
7329
+ """The normal response of the operation in case of success."""
7330
+
7331
+
7332
+ OperationOrDict = Union[Operation, OperationDict]
7333
+
7334
+
7335
+ class FetchPredictOperationConfig(_common.BaseModel):
7336
+
7337
+ http_options: Optional[HttpOptions] = Field(
7338
+ default=None, description="""Used to override HTTP request options."""
7339
+ )
7340
+
7341
+
7342
+ class FetchPredictOperationConfigDict(TypedDict, total=False):
7343
+
7344
+ http_options: Optional[HttpOptionsDict]
7345
+ """Used to override HTTP request options."""
7346
+
7347
+
7348
+ FetchPredictOperationConfigOrDict = Union[
7349
+ FetchPredictOperationConfig, FetchPredictOperationConfigDict
7350
+ ]
7351
+
7352
+
7353
+ class _FetchPredictOperationParameters(_common.BaseModel):
7354
+ """Parameters for the fetchPredictOperation method."""
7355
+
7356
+ operation_name: Optional[str] = Field(
7357
+ default=None,
7358
+ description="""The server-assigned name for the operation.""",
7359
+ )
7360
+ resource_name: Optional[str] = Field(default=None, description="""""")
7361
+ config: Optional[FetchPredictOperationConfig] = Field(
7362
+ default=None,
7363
+ description="""Used to override the default configuration.""",
7364
+ )
7365
+
7366
+
7367
+ class _FetchPredictOperationParametersDict(TypedDict, total=False):
7368
+ """Parameters for the fetchPredictOperation method."""
7369
+
7370
+ operation_name: Optional[str]
7371
+ """The server-assigned name for the operation."""
7372
+
7373
+ resource_name: Optional[str]
7374
+ """"""
7375
+
7376
+ config: Optional[FetchPredictOperationConfigDict]
7377
+ """Used to override the default configuration."""
7378
+
7379
+
7380
+ _FetchPredictOperationParametersOrDict = Union[
7381
+ _FetchPredictOperationParameters, _FetchPredictOperationParametersDict
7382
+ ]
7383
+
7384
+
7193
7385
  class TestTableItem(_common.BaseModel):
7194
7386
 
7195
7387
  name: Optional[str] = Field(
google/genai/version.py CHANGED
@@ -13,4 +13,4 @@
13
13
  # limitations under the License.
14
14
  #
15
15
 
16
- __version__ = '0.7.0' # x-release-please-version
16
+ __version__ = '1.0.0rc0' # x-release-please-version
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: google-genai
3
- Version: 0.7.0
3
+ Version: 1.0.0rc0
4
4
  Summary: GenAI Python SDK
5
5
  Author-email: Google LLC <googleapis-packages@google.com>
6
6
  License: Apache-2.0
@@ -97,9 +97,10 @@ download the file in console.
97
97
  python code.
98
98
 
99
99
  ```python
100
- file = client.files.upload(path="a11.text")
100
+ file = client.files.upload(path="a11.txt")
101
101
  response = client.models.generate_content(
102
- model="gemini-2.0-flash-exp", contents=["Summarize this file", file]
102
+ model="gemini-2.0-flash-exp",
103
+ contents=["Could you summarize this file?", file]
103
104
  )
104
105
  print(response.text)
105
106
  ```
@@ -143,53 +144,17 @@ response = client.models.generate_content(
143
144
  print(response.text)
144
145
  ```
145
146
 
146
- ### Thinking
147
-
148
- The Gemini 2.0 Flash Thinking model is an experimental model that could return
149
- "thoughts" as part of its response.
150
-
151
- #### Gemini Developer API
152
-
153
- Thinking config is only available in v1alpha for Gemini AI API.
154
-
155
- ```python
156
- response = client.models.generate_content(
157
- model='gemini-2.0-flash-thinking-exp',
158
- contents='What is the sum of natural numbers from 1 to 100?',
159
- config=types.GenerateContentConfig(
160
- thinking_config=types.ThinkingConfig(include_thoughts=True),
161
- http_options=types.HttpOptions(api_version='v1alpha'),
162
- )
163
- )
164
- for part in response.candidates[0].content.parts:
165
- print(part)
166
- ```
167
-
168
- #### Vertex AI API
169
-
170
- ```python
171
- response = client.models.generate_content(
172
- model='gemini-2.0-flash-thinking-exp-01-21',
173
- contents='What is the sum of natural numbers from 1 to 100?',
174
- config=types.GenerateContentConfig(
175
- thinking_config=types.ThinkingConfig(include_thoughts=True),
176
- )
177
- )
178
- for part in response.candidates[0].content.parts:
179
- print(part)
180
- ```
181
-
182
147
  ### List Base Models
183
148
 
184
149
  To retrieve tuned models, see [list tuned models](#list-tuned-models).
185
150
 
186
151
  ```python
187
- for model in client.models.list(config={'query_base':True}):
152
+ for model in client.models.list():
188
153
  print(model)
189
154
  ```
190
155
 
191
156
  ```python
192
- pager = client.models.list(config={"page_size": 10, 'query_base':True})
157
+ pager = client.models.list(config={"page_size": 10})
193
158
  print(pager.page_size)
194
159
  print(pager[0])
195
160
  pager.next_page()
@@ -199,12 +164,12 @@ print(pager[0])
199
164
  #### Async
200
165
 
201
166
  ```python
202
- async for job in await client.aio.models.list(config={'query_base':True}):
167
+ async for job in await client.aio.models.list():
203
168
  print(job)
204
169
  ```
205
170
 
206
171
  ```python
207
- async_pager = await client.aio.models.list(config={"page_size": 10, 'query_base':True})
172
+ async_pager = await client.aio.models.list(config={"page_size": 10})
208
173
  print(async_pager.page_size)
209
174
  print(async_pager[0])
210
175
  await async_pager.next_page()
@@ -863,12 +828,12 @@ print(tuned_model)
863
828
  To retrieve base models, see [list base models](#list-base-models).
864
829
 
865
830
  ```python
866
- for model in client.models.list(config={"page_size": 10}):
831
+ for model in client.models.list(config={"page_size": 10, "query_base": False}):
867
832
  print(model)
868
833
  ```
869
834
 
870
835
  ```python
871
- pager = client.models.list(config={"page_size": 10})
836
+ pager = client.models.list(config={"page_size": 10, "query_base": False})
872
837
  print(pager.page_size)
873
838
  print(pager[0])
874
839
  pager.next_page()
@@ -878,12 +843,12 @@ print(pager[0])
878
843
  #### Async
879
844
 
880
845
  ```python
881
- async for job in await client.aio.models.list(config={"page_size": 10}):
846
+ async for job in await client.aio.models.list(config={"page_size": 10, "query_base": False}):
882
847
  print(job)
883
848
  ```
884
849
 
885
850
  ```python
886
- async_pager = await client.aio.models.list(config={"page_size": 10})
851
+ async_pager = await client.aio.models.list(config={"page_size": 10, "query_base": False})
887
852
  print(async_pager.page_size)
888
853
  print(async_pager[0])
889
854
  await async_pager.next_page()
@@ -0,0 +1,27 @@
1
+ google/genai/__init__.py,sha256=IYw-PcsdgjSpS1mU_ZcYkTfPocsJ4aVmrDxP7vX7c6Y,709
2
+ google/genai/_api_client.py,sha256=ZXiLrTI0wWVZaGEC1BHU9fLVp1MZKpnY8J3wV59VOk4,22806
3
+ google/genai/_api_module.py,sha256=9bxmtcSTpT8Ht6VwJyw7fQqiR0jJXz7350dWGl-bC5E,780
4
+ google/genai/_automatic_function_calling_util.py,sha256=8KUbDvuon0Pw9HbYGMjavsmZtAf1elKaxkPEPgw27Wk,10696
5
+ google/genai/_common.py,sha256=Q-3n5U7GCDDfOU_7uBkGYkEcEH2VcMa_NuLcyNzWExM,9017
6
+ google/genai/_extra_utils.py,sha256=y-6Jr2GN2BKZV67I6fTgDtwfsOTQs7QlLDBQdmW_jKk,11258
7
+ google/genai/_operations.py,sha256=KaDgwqG5g6Odd1P6ftvIUT9gF3ov08drm01jE1CjB_s,11490
8
+ google/genai/_replay_api_client.py,sha256=yV2vJJk5Nvdqyi0QmNhupMdm2jrzdYoHVFnVMAx-l0M,14834
9
+ google/genai/_test_api_client.py,sha256=2PvDcW3h01U4UOSoj7TUo6TwdBHSEN_lO2tXjBoh5Fw,4765
10
+ google/genai/_transformers.py,sha256=Jwgbwl7DufqRZGeoPc1GClRQj1X6WM4avZEFfq9WGwA,22690
11
+ google/genai/batches.py,sha256=jv8pW_g_cZee6ol5ER5bQRUkXsj4IUcZC5cMo-YAnt0,38033
12
+ google/genai/caches.py,sha256=jsiclHO71kIa2CNrds3O8PL2fCNr_dlhUSPjhiRsjNE,53152
13
+ google/genai/chats.py,sha256=GyufXQPtyP_v4L3943xaKXMpo1Us9sBTdMSTUV4P6s8,7827
14
+ google/genai/client.py,sha256=MTZ3DOXk1_xgljaHlvF16jr_SKVPRfU8lZ1eH_dfDeQ,9334
15
+ google/genai/errors.py,sha256=DtpDZT5UDqumk2cTRUlg3k4ypmO_0tkMNzJgA3qzCmc,3666
16
+ google/genai/files.py,sha256=v16OR0IwHVB-BDWsUDYBill0BvOLEd-7eEZBJ-VcY8o,41890
17
+ google/genai/live.py,sha256=wxz8ebqcPR6JJs39OOVz8zPzfAf31Zol7sGE7byQEyI,23302
18
+ google/genai/models.py,sha256=2w8-NAMeJXOrY23kyEi1zyATC1sLpkSlI2Gd0m90Vdk,167626
19
+ google/genai/pagers.py,sha256=hSHd-gLvEzYWwK85i8EcFNWUMKtszUs7Nw2r3L7d6_U,6686
20
+ google/genai/tunings.py,sha256=iJJYn1O_wjFKTIL8VS2zpIRqpfCNRrO2REP2ztgFW6M,39144
21
+ google/genai/types.py,sha256=J_hZuu2zPPuerqcACNb3pJgQST8Fa2Y4WB-WxYskDa4,279945
22
+ google/genai/version.py,sha256=Y91_Rt-BIVIiB5ejxu9eKlaoOpM6RxHAVtl2_HhX-Ss,629
23
+ google_genai-1.0.0rc0.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
24
+ google_genai-1.0.0rc0.dist-info/METADATA,sha256=MFyH61qAsTbMTgxOdkZIkSR_YMf5EsGvAPy4Zpk-_C8,22948
25
+ google_genai-1.0.0rc0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
26
+ google_genai-1.0.0rc0.dist-info/top_level.txt,sha256=_1QvSJIhFAGfxb79D6DhB7SUw2X6T4rwnz_LLrbcD3c,7
27
+ google_genai-1.0.0rc0.dist-info/RECORD,,
@@ -1,26 +0,0 @@
1
- google/genai/__init__.py,sha256=IYw-PcsdgjSpS1mU_ZcYkTfPocsJ4aVmrDxP7vX7c6Y,709
2
- google/genai/_api_client.py,sha256=JPCynlSCc_yPEV4-rdV2-BPv-OHoBvotxXbI0VLA3Q4,22882
3
- google/genai/_api_module.py,sha256=9bxmtcSTpT8Ht6VwJyw7fQqiR0jJXz7350dWGl-bC5E,780
4
- google/genai/_automatic_function_calling_util.py,sha256=sEaDAeHjv-H71o1L3_P8sqOslK4TK0Rybn4WPymeEBk,10665
5
- google/genai/_common.py,sha256=aAtTQeGYn8WeiQD2lbjYiHZXWzBdj59wKiqAyQeaByc,8610
6
- google/genai/_extra_utils.py,sha256=y-6Jr2GN2BKZV67I6fTgDtwfsOTQs7QlLDBQdmW_jKk,11258
7
- google/genai/_replay_api_client.py,sha256=8KMjwjah52Mgf0rURK-CO10MqtULh8vkRSOT4-AqPpU,14722
8
- google/genai/_test_api_client.py,sha256=2PvDcW3h01U4UOSoj7TUo6TwdBHSEN_lO2tXjBoh5Fw,4765
9
- google/genai/_transformers.py,sha256=AiSVoQML3MK6AP5xTStIiJUOlrZO4m_qBULOjgdZHC0,21963
10
- google/genai/batches.py,sha256=jv8pW_g_cZee6ol5ER5bQRUkXsj4IUcZC5cMo-YAnt0,38033
11
- google/genai/caches.py,sha256=jsiclHO71kIa2CNrds3O8PL2fCNr_dlhUSPjhiRsjNE,53152
12
- google/genai/chats.py,sha256=GyufXQPtyP_v4L3943xaKXMpo1Us9sBTdMSTUV4P6s8,7827
13
- google/genai/client.py,sha256=MTZ3DOXk1_xgljaHlvF16jr_SKVPRfU8lZ1eH_dfDeQ,9334
14
- google/genai/errors.py,sha256=DtpDZT5UDqumk2cTRUlg3k4ypmO_0tkMNzJgA3qzCmc,3666
15
- google/genai/files.py,sha256=FQLGv-at7T_AZiVkhTsreIaLK_U1acufx-zt8coOjkc,41706
16
- google/genai/live.py,sha256=wxz8ebqcPR6JJs39OOVz8zPzfAf31Zol7sGE7byQEyI,23302
17
- google/genai/models.py,sha256=mitGmy1myd6-zmmV8BEDkdc88cbp8ZF9SyZTNeWnBfk,166628
18
- google/genai/pagers.py,sha256=hSHd-gLvEzYWwK85i8EcFNWUMKtszUs7Nw2r3L7d6_U,6686
19
- google/genai/tunings.py,sha256=iJJYn1O_wjFKTIL8VS2zpIRqpfCNRrO2REP2ztgFW6M,39144
20
- google/genai/types.py,sha256=vOP1JkluVGFhmNFBJk6Z1BoOv4zzwysjIUiU7GFPXwg,273187
21
- google/genai/version.py,sha256=nKmMytxBOALBA2ILryXEQSQpZZJxtfZwKkJcznog9Lw,626
22
- google_genai-0.7.0.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
23
- google_genai-0.7.0.dist-info/METADATA,sha256=eUcx3JIC0OOIh3_hT-pfkYvkyP2ZWrUXU5JoCZqTDwg,23948
24
- google_genai-0.7.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
25
- google_genai-0.7.0.dist-info/top_level.txt,sha256=_1QvSJIhFAGfxb79D6DhB7SUw2X6T4rwnz_LLrbcD3c,7
26
- google_genai-0.7.0.dist-info/RECORD,,