Skip to content

Commit efead6b

Browse files
Add support for resumable uploads for File API (#275)
* add support for resumable uploads * run formatter * update docs * simplify resumable flow and set as default
1 parent 855f96f commit efead6b

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

google/generativeai/client.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ def create_file(
5959
mime_type: str | None = None,
6060
name: str | None = None,
6161
display_name: str | None = None,
62+
resumable: bool = True,
6263
) -> glm.File:
6364
if self._discovery_api is None:
6465
self._setup_discovery_api()
@@ -69,7 +70,9 @@ def create_file(
6970
if display_name is not None:
7071
file["displayName"] = display_name
7172

72-
media = googleapiclient.http.MediaFileUpload(filename=path, mimetype=mime_type)
73+
media = googleapiclient.http.MediaFileUpload(
74+
filename=path, mimetype=mime_type, resumable=resumable
75+
)
7376
request = self._discovery_api.media().upload(body={"file": file}, media_body=media)
7477
result = request.execute()
7578

google/generativeai/files.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,24 @@ def upload_file(
3535
mime_type: str | None = None,
3636
name: str | None = None,
3737
display_name: str | None = None,
38+
resumable: bool = True,
3839
) -> file_types.File:
40+
"""Uploads a file using a supported file service.
41+
42+
Args:
43+
path: The path to the file to be uploaded.
44+
mime_type: The MIME type of the file. If not provided, it will be
45+
inferred from the file extension.
46+
name: The name of the file in the destination (e.g., 'files/sample-image').
47+
If not provided, a system generated ID will be created.
48+
display_name: Optional display name of the file.
49+
resumable: Whether to use the resumable upload protocol. By default, this is enabled.
50+
See details at
51+
https://googleapis.github.io/google-api-python-client/docs/epy/googleapiclient.http.MediaFileUpload-class.html#resumable
52+
53+
Returns:
54+
file_types.File: The response of the uploaded file.
55+
"""
3956
client = get_default_file_client()
4057

4158
path = pathlib.Path(os.fspath(path))
@@ -50,7 +67,7 @@ def upload_file(
5067
display_name = path.name
5168

5269
response = client.create_file(
53-
path=path, mime_type=mime_type, name=name, display_name=display_name
70+
path=path, mime_type=mime_type, name=name, display_name=display_name, resumable=resumable
5471
)
5572
return file_types.File(response)
5673

0 commit comments

Comments
 (0)