Source code for satcfdi.zip

import io
from collections import namedtuple
from zipfile import ZipFile, ZipInfo

ZipData = namedtuple("ZipFile", "filename data")


[docs] def zip_create(target: io.BytesIO, files: list[ZipData]): p = target.tell() for f in files: with ZipFile(target, "w") as myzip: zinfo = ZipInfo( filename=f.filename ) zinfo.filename = f.filename zinfo.compress_type = 8 zinfo.create_system = 0 with myzip.open(zinfo, 'w') as stream: zinfo.flag_bits = 2056 zinfo.external_attr = 0 f.data(stream) with target.getbuffer() as view: # change zip flag bytes view[p + 6:p + 8] = b"\x08\x08"