Skip to content

Commit 0235ec0

Browse files
committed
Fix typing
Change-Id: I09fb7df098da08bb24337b08cbbc997c4c62af1e
1 parent a96feda commit 0235ec0

File tree

2 files changed

+34
-32
lines changed

2 files changed

+34
-32
lines changed

google/generativeai/types/content_types.py

Lines changed: 3 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ def _convert_dict(d: Mapping) -> glm.Content | glm.Part | glm.Blob:
113113
if "inline_data" in part:
114114
part["inline_data"] = to_blob(part["inline_data"])
115115
if "file_data" in part:
116-
part["file_data"] = to_file_data(part["file_data"])
116+
part["file_data"] = file_types.to_file_data(part["file_data"])
117117
return glm.Part(part)
118118
elif is_blob_dict(d):
119119
blob = d
@@ -161,43 +161,14 @@ def to_blob(blob: BlobType) -> glm.Blob:
161161
)
162162

163163

164-
class FileDataDict(TypedDict):
165-
mime_type: str
166-
file_uri: str
167-
168-
169-
FileDataType = Union[FileDataDict, glm.FileData, file_types.File]
170-
171-
172-
def to_file_data(file_data: FileDataType):
173-
if isinstance(file_data, dict):
174-
if "file_uri" in file_data:
175-
file_data = glm.FileData(file_data)
176-
else:
177-
file_data = glm.File(file_data)
178-
179-
if isinstance(file_data, file_types.File):
180-
file_data = file_data.to_proto()
181-
182-
if isinstance(file_data, (glm.File, file_types.File)):
183-
file_data = glm.FileData(
184-
mime_type=file_data.mime_type,
185-
file_uri=file_data.uri,
186-
)
187-
188-
if isinstance(file_data, glm.FileData):
189-
return file_data
190-
else:
191-
raise TypeError(f"Could not convert a {type(file_data)} to `FileData`")
192-
193164

194165
class PartDict(TypedDict):
195166
text: str
196167
inline_data: BlobType
197168

198169

199170
# When you need a `Part` accept a part object, part-dict, blob or string
200-
PartType = Union[glm.Part, PartDict, BlobType, str, glm.FunctionCall, glm.FunctionResponse]
171+
PartType = Union[glm.Part, PartDict, BlobType, str, glm.FunctionCall, glm.FunctionResponse, file_types.FileDataType]
201172

202173

203174
def is_part_dict(d):
@@ -221,7 +192,7 @@ def to_part(part: PartType):
221192
elif isinstance(part, glm.FileData):
222193
return glm.Part(file_data=part)
223194
elif isinstance(part, (glm.File, file_types.File)):
224-
return glm.Part(file_data=to_file_data(part))
195+
return glm.Part(file_data=file_types.to_file_data(part))
225196
elif isinstance(part, glm.FunctionCall):
226197
return glm.Part(function_call=part)
227198
elif isinstance(part, glm.FunctionResponse):

google/generativeai/types/file_types.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
from __future__ import annotations
1616

1717
import datetime
18+
from typing import Union
19+
from typing_extensions import TypedDict
1820

1921
from google.generativeai.client import get_default_file_client
2022

@@ -69,3 +71,32 @@ def uri(self) -> str:
6971
def delete(self):
7072
client = get_default_file_client()
7173
client.delete_file(name=self.name)
74+
75+
76+
class FileDataDict(TypedDict):
77+
mime_type: str
78+
file_uri: str
79+
80+
81+
FileDataType = Union[FileDataDict, glm.FileData, glm.File, File]
82+
83+
def to_file_data(file_data: FileDataType):
84+
if isinstance(file_data, dict):
85+
if "file_uri" in file_data:
86+
file_data = glm.FileData(file_data)
87+
else:
88+
file_data = glm.File(file_data)
89+
90+
if isinstance(file_data, File):
91+
file_data = file_data.to_proto()
92+
93+
if isinstance(file_data, glm.File):
94+
file_data = glm.FileData(
95+
mime_type=file_data.mime_type,
96+
file_uri=file_data.uri,
97+
)
98+
99+
if isinstance(file_data, glm.FileData):
100+
return file_data
101+
else:
102+
raise TypeError(f"Could not convert a {type(file_data)} to `FileData`")

0 commit comments

Comments
 (0)