@@ -220,20 +220,20 @@ def write(self, filename, arcname=None, compress_type=None):
220220 kwargs = {'filename' : filename , 'arcname' : arcname , 'compress_type' : compress_type }
221221 self .paths_to_write .append (kwargs )
222222
223- def write_iter (self , arcname , iterable , compress_type = None , buffer_size = None ):
223+ def write_iter (self , arcname , iterable , compress_type = None , buffer_size = None , date_time = None ):
224224 """Write the bytes iterable `iterable` to the archive under the name `arcname`."""
225- kwargs = {'arcname' : arcname , 'iterable' : iterable , 'compress_type' : compress_type , 'buffer_size' : buffer_size }
225+ kwargs = {'arcname' : arcname , 'iterable' : iterable , 'compress_type' : compress_type , 'buffer_size' : buffer_size , 'date_time' : date_time }
226226 self .paths_to_write .append (kwargs )
227227
228- def writestr (self , arcname , data , compress_type = None , buffer_size = None ):
228+ def writestr (self , arcname , data , compress_type = None , buffer_size = None , date_time = None ):
229229 """
230230 Writes a str into ZipFile by wrapping data as a generator
231231 """
232232 def _iterable ():
233233 yield data
234- return self .write_iter (arcname , _iterable (), compress_type = compress_type , buffer_size = buffer_size )
234+ return self .write_iter (arcname , _iterable (), compress_type = compress_type , buffer_size = buffer_size , date_time = date_time )
235235
236- def __write (self , filename = None , iterable = None , arcname = None , compress_type = None , buffer_size = None ):
236+ def __write (self , filename = None , iterable = None , arcname = None , compress_type = None , buffer_size = None , date_time = None ):
237237 """Put the bytes from filename into the archive under the name
238238 `arcname`."""
239239 if not self .fp :
@@ -248,7 +248,11 @@ def __write(self, filename=None, iterable=None, arcname=None, compress_type=None
248248 mtime = time .localtime (st .st_mtime )
249249 date_time = mtime [0 :6 ]
250250 else :
251- st , isdir , date_time = None , False , time .localtime ()[0 :6 ]
251+ st , isdir = None , False
252+ if date_time is not None and isinstance (date_time , time .struct_time ):
253+ date_time = date_time [0 :6 ]
254+ if date_time is None :
255+ date_time = time .localtime ()[0 :6 ]
252256 # Create ZipInfo instance to store file information
253257 if arcname is None :
254258 arcname = filename
0 commit comments