2
2
3
3
import os
4
4
import contextlib
5
+ import inspect
5
6
import dataclasses
6
7
import pathlib
7
8
import types
@@ -78,6 +79,7 @@ def create_file(
78
79
name : str | None = None ,
79
80
display_name : str | None = None ,
80
81
resumable : bool = True ,
82
+ metadata :Sequence [tuple [str , str ]] = ()
81
83
) -> protos .File :
82
84
if self ._discovery_api is None :
83
85
self ._setup_discovery_api ()
@@ -92,6 +94,8 @@ def create_file(
92
94
filename = path , mimetype = mime_type , resumable = resumable
93
95
)
94
96
request = self ._discovery_api .media ().upload (body = {"file" : file }, media_body = media )
97
+ for key ,value in metadata :
98
+ request .headers [key ]= value
95
99
result = request .execute ()
96
100
97
101
return self .get_file ({"name" : result ["file" ]["name" ]})
@@ -226,8 +230,6 @@ def make_client(self, name):
226
230
def keep (name , f ):
227
231
if name .startswith ("_" ):
228
232
return False
229
- elif name == "create_file" :
230
- return False
231
233
elif not isinstance (f , types .FunctionType ):
232
234
return False
233
235
elif isinstance (f , classmethod ):
@@ -244,7 +246,7 @@ def call(*args, metadata=(), **kwargs):
244
246
245
247
return call
246
248
247
- for name , value in cls . __dict__ . items ( ):
249
+ for name , value in inspect . getmembers ( cls ):
248
250
if not keep (name , value ):
249
251
continue
250
252
f = getattr (client , name )
0 commit comments