Skip to content

Commit 0cfc191

Browse files
committed
Give clear errors for 'unknown' mime-types
Change-Id: Iea071c396c4cfe2b2c8eacae74dd8fb0acbc128f
1 parent 80003b8 commit 0cfc191

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed

google/generativeai/client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ def create_file(
105105
file["name"] = name
106106
if display_name is not None:
107107
file["displayName"] = display_name
108-
108+
109109
if isinstance(path, IOBase):
110110
media = googleapiclient.http.MediaIoBaseUpload(
111111
fd=path, mimetype=mime_type, resumable=resumable
@@ -114,7 +114,7 @@ def create_file(
114114
media = googleapiclient.http.MediaFileUpload(
115115
filename=path, mimetype=mime_type, resumable=resumable
116116
)
117-
117+
118118
request = self._discovery_api.media().upload(body={"file": file}, media_body=media)
119119
for key, value in metadata:
120120
request.headers[key] = value

google/generativeai/files.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,13 @@ def upload_file(
5858
"""
5959
client = get_default_file_client()
6060

61-
if not isinstance(path, IOBase):
61+
if isinstance(path, IOBase):
62+
if mime_type is None:
63+
raise ValueError(
64+
"Unknown mime type: When passing a file like object to `path` (instead of a\n"
65+
" path-like object) you must set the `mime_type` argument"
66+
)
67+
else:
6268
path = pathlib.Path(os.fspath(path))
6369

6470
if display_name is None:
@@ -67,9 +73,12 @@ def upload_file(
6773
if mime_type is None:
6874
mime_type, _ = mimetypes.guess_type(path)
6975

70-
if mime_type is None:
71-
# Guess failed or IOBase, use octet-stream.
72-
mime_type = 'application/octet-stream'
76+
if mime_type is None:
77+
if mime_type is None:
78+
raise ValueError(
79+
"Unknown mime type: Could not determine the mimetype for your file\n"
80+
" please set the `mime_type` argument"
81+
)
7382

7483
if name is not None and "/" not in name:
7584
name = f"files/{name}"

tests/test_files.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,12 +102,13 @@ def test_video_metadata(self):
102102
protos.File(
103103
uri="https://test",
104104
state="ACTIVE",
105+
mime_type="video/quicktime",
105106
video_metadata=dict(video_duration=datetime.timedelta(seconds=30)),
106107
error=dict(code=7, message="ok?"),
107108
)
108109
)
109110

110-
f = genai.upload_file(path="dummy")
111+
f = genai.upload_file(path="dummy.mov")
111112
self.assertEqual(google.rpc.status_pb2.Status(code=7, message="ok?"), f.error)
112113
self.assertEqual(
113114
protos.VideoMetadata(dict(video_duration=datetime.timedelta(seconds=30))),

0 commit comments

Comments
 (0)