8
8
from typing import Any , cast
9
9
from collections .abc import Sequence
10
10
import httplib2
11
+ from io import IOBase
11
12
12
13
import google .ai .generativelanguage as glm
13
14
import google .generativeai .protos as protos
@@ -88,7 +89,7 @@ def _setup_discovery_api(self, metadata: dict | Sequence[tuple[str, str]] = ()):
88
89
89
90
def create_file (
90
91
self ,
91
- path : str | pathlib .Path | os .PathLike ,
92
+ path : str | pathlib .Path | os .PathLike | IOBase ,
92
93
* ,
93
94
mime_type : str | None = None ,
94
95
name : str | None = None ,
@@ -104,10 +105,16 @@ def create_file(
104
105
file ["name" ] = name
105
106
if display_name is not None :
106
107
file ["displayName" ] = display_name
107
-
108
- media = googleapiclient .http .MediaFileUpload (
109
- filename = path , mimetype = mime_type , resumable = resumable
110
- )
108
+
109
+ if isinstance (path , IOBase ):
110
+ media = googleapiclient .http .MediaIoBaseUpload (
111
+ fd = path , mimetype = mime_type , resumable = resumable
112
+ )
113
+ else :
114
+ media = googleapiclient .http .MediaFileUpload (
115
+ filename = path , mimetype = mime_type , resumable = resumable
116
+ )
117
+
111
118
request = self ._discovery_api .media ().upload (body = {"file" : file }, media_body = media )
112
119
for key , value in metadata :
113
120
request .headers [key ] = value
0 commit comments