bcf.inmemory_zipfile#

In Memory Zip File management, taken from ruamel.std.zipfile

Copyright (c) 2017-2020 Anthon van der Neut, Ruamel bvba

original idea from https://stackoverflow.com/a/19722365/1307905

Module Contents#

class bcf.inmemory_zipfile.InMemoryZipFile(file_name: Optional[str | Path] = None, compression: int = zipfile.ZIP_DEFLATED, debug: int = 0)#
__enter__(self) InMemoryZipFile#
__exit__(self, exc_type: Any, exc_value: Any, traceback: Any) None#
property data(self) bytes#
write_to_file(self, filename: str | bytes | PathLike[str] | PathLike[bytes] | int) None#

Writes the in-memory zip to a file.

writestr(self, filename_in_zip: str | zipfile.ZipInfo, file_contents: bytes | str) None#

Appends a file with name filename_in_zip and contents of file_contents to the in-memory zip.

class bcf.inmemory_zipfile.ZipFileInterface#

Bases: Protocol

Base class for protocol classes.

Protocol classes are defined as:

class Proto(Protocol):
    def meth(self) -> int:
        ...

Such classes are primarily used with static type checkers that recognize structural subtyping (static duck-typing), for example:

class C:
    def meth(self) -> int:
        return 0

def func(x: Proto) -> int:
    return x.meth()

func(C())  # Passes static type check

See PEP 544 for details. Protocol classes decorated with @typing.runtime_checkable act as simple-minded runtime protocols that check only the presence of given attributes, ignoring their type signatures. Protocol classes can be generic, they are defined as:

class GenProto(Protocol[T]):
    def meth(self) -> T:
        ...
writestr(self, filename_in_zip: str | zipfile.ZipInfo, file_contents: bytes | str) None#