@@ -75,10 +75,10 @@ def write(self, data):
7575 """
7676 Writes data using AsyncAppendableObjectWriter.
7777 """
78- if not self .writable ():
79- raise ValueError ("File not in write mode" )
8078 if self .closed :
8179 raise ValueError ("I/O operation on closed file." )
80+ if not self .writable ():
81+ raise ValueError ("File not in write mode" )
8282 if self .forced :
8383 raise ValueError ("This file has been force-flushed, can only close" )
8484
@@ -118,39 +118,49 @@ def discard(self):
118118 Data is uploaded via streaming and cannot be cancelled."
119119 )
120120
121- async def initiate_upload (
122- fs ,
123- bucket ,
124- key ,
125- content_type = "application/octet-stream" ,
126- metadata = None ,
127- fixed_key_metadata = None ,
128- mode = "overwrite" ,
129- kms_key_name = None ,
130- ):
131- raise NotImplementedError (
132- "Initiate_upload operation is not implemented yet for Zonal buckets. Please use write() instead."
121+ def _initiate_upload (self ):
122+ """Initiates the upload for Zonal buckets using gRPC."""
123+ from gcsfs .extended_gcsfs import initiate_upload
124+
125+ self .location = asyn .sync (
126+ self .gcsfs .loop ,
127+ initiate_upload ,
128+ self .gcsfs ,
129+ self .bucket ,
130+ self .key ,
131+ self .content_type ,
132+ self .metadata ,
133+ self .fixed_key_metadata ,
134+ mode = "create" if "x" in self .mode else "overwrite" ,
135+ kms_key_name = self .kms_key_name ,
136+ timeout = self .timeout ,
133137 )
134138
135- async def simple_upload (
136- fs ,
137- bucket ,
138- key ,
139- datain ,
140- metadatain = None ,
141- consistency = None ,
142- content_type = "application/octet-stream" ,
143- fixed_key_metadata = None ,
144- mode = "overwrite" ,
145- kms_key_name = None ,
146- ):
147- raise NotImplementedError (
148- "Simple_upload operation is not implemented yet for Zonal buckets. Please use write() instead."
139+ def _simple_upload (self ):
140+ """Performs a simple upload for Zonal buckets using gRPC."""
141+ from gcsfs .extended_gcsfs import simple_upload
142+
143+ self .buffer .seek (0 )
144+ data = self .buffer .read ()
145+ asyn .sync (
146+ self .gcsfs .loop ,
147+ simple_upload ,
148+ self .gcsfs ,
149+ self .bucket ,
150+ self .key ,
151+ data ,
152+ self .metadata ,
153+ self .consistency ,
154+ self .content_type ,
155+ self .fixed_key_metadata ,
156+ mode = "create" if "x" in self .mode else "overwrite" ,
157+ kms_key_name = self .kms_key_name ,
158+ timeout = self .timeout ,
149159 )
150160
151- async def upload_chunk ( fs , location , data , offset , size , content_type ):
161+ def _upload_chunk ( self , final = False ):
152162 raise NotImplementedError (
153- "Upload_chunk operation is not implemented yet for Zonal buckets . Please use write() instead."
163+ "_upload_chunk is not implemented yet for ZonalFile . Please use write() instead."
154164 )
155165
156166 def close (self ):
0 commit comments