class documentation

A variation of Cluster that decompresses only once, storing all data in RAM.

Method __init__ The default constructor.
Method iter_read_blob Iteratively read the specified blob.
Method read_blob Read the entirety of the specified range in the specified blob and return the content.
Method reset Reset all internal state except the cluster offset, causing said offset to be read again the next time it is required.
Method _read_if_needed Read (and decompress) all data if this has not yet been done.
Instance Variable _data Undocumented

Inherited from OffsetRememberingCluster:

Method iter_blob_offsets Read the blob offsets, yielding them as an iterator.
Method _read_offsets_if_needed Read the offsets if they have not yet been read.
Instance Variable _offsets the offsets in this cluster

Inherited from Cluster (via OffsetRememberingCluster):

Method generate_infobyte Generate the infobyte for this cluster.
Method get_blob_size Get the size of a blob.
Method get_content_size Return the content size of this cluster.
Method get_number_of_blobs Return the number of blobs in this cluster.
Method get_number_of_offsets Return the number of offsets in this cluster.
Method get_offset Return the offset with the specified index.
Method get_total_compressed_size Return the total compressed size of the cluster.
Method get_total_decompressed_size Return the total decompressed size of this cluster.
Method get_total_offset_size Return the total size of the offsets.
Method parse_infobyte Parse the cluster information byte, setting the attributes of this cluster as necessary.
Method read_infobyte Read the cluster information byte, returning it.
Method read_infobyte_if_needed Read and parse the infobyte if this has not yet happened.
Instance Variable compression compression to use, None when unknown
Instance Variable is_extended whether this cluster is extended, None if not set
Instance Variable offset absolute offset of the cluster
Property did_read_infobyte True if the infobyte was already read and parsed.
Method _get_compressor Return a compressor suitable to compress this cluster.
Method _get_decompressing_reader Return a decompressing reader that can be sued to decompress the content.
Method _get_decompressor Return a decompressor suitable to decompress this cluster.
Method _seek_if_needed Seek to the specified position (relative to the cluster start) in the file only if it is needed.
Instance Variable _decompressing_reader Undocumented
Property _pointer_format The pointer format.

Inherited from BindableMixIn (via OffsetRememberingCluster, Cluster):

Method bind Bind this object to a ZIM file.
Method unbind Unbind this object. Can be called multiple times.
Property bound Whether this object is bound to a ZIM file or not.
Property zim The bound ZIM archive, if any is bound. Otherwise None.
Instance Variable _zim the bound ZIM archive or None
def __init__(self, zim=None, offset=None):

The default constructor.

Parameters
zim:pyzim.archive.Zimif specified, bind this ZIM immediately.
offset:int or Noneabsolute offset of the cluster
Raises
ValueErrorif offset was specified but zim was not specified.
def iter_read_blob(self, i, buffersize=4096, start=None, end=None):

Iteratively read the specified blob.

The parameters 'start' and 'end' can be used to specify a range within the blob to read. In this case, both values are interpreted relative to the actual blob start. Similar to how python slices work, the 'start' value will be inclusive and the 'end' value exclusive. If start >= size of the blob, the return value will be b"". If the end lies outside the blob, read only up until the end of the blob.

Parameters
i:intindex of blob to read
buffersize:intnumber of bytes to read at once
start:None or intif specified, the offset relative to the start of the blob to start reading from
end:None or intif specified, the offset relative to the start of the blob to stop reading at
Yields
byteschunks of the blob content
Raises
pyzim.exceptions.BindRequiredif cluster is unbound
pyzim.exceptions.BlobNotFoundif the blob index is out of range
def read_blob(self, i, start=None, end=None):

Read the entirety of the specified range in the specified blob and return the content.

The parameters 'start' and 'end' can be used to specify a range within the blob to read. In this case, both values are interpreted relative to the actual blob start. Similar to how python slices work, the 'start' value will be inclusive and the 'end' value exclusive. If start >= size of the blob, the return value will be b"". If the end lies outside the blob, read only up until the end of the blob.

Parameters
i:intindex of blob to read
start:None or intif specified, the offset relative to the start of the blob to start reading from
end:None or intif specified, the offset relative to the start of the blob to stop reading at
Returns
bytesthe content of the blob
Raises
pyzim.exceptions.BindRequiredif cluster is unbound
pyzim.exceptions.BlobNotFoundif the blob index is out of range
def reset(self):

Reset all internal state except the cluster offset, causing said offset to be read again the next time it is required.

def _read_if_needed(self):

Read (and decompress) all data if this has not yet been done.

Raises
pyzim.exceptions.BindRequiredif cluster is unbound
_data =

Undocumented