Core#

Core module. It defines base classes and their interaction interface.

Base#

Base class for all processable files.

class BaseFile[source]#

Bases: ABC

Abstract base class providing interface for encoders/decoders.

format: FileFormat#
order: ByteOrder = '<'#
signature: Optional[bytes] = None#
options: UserOptions#

Decoder#

Base class for file decoder (parsing).

class FileDecoder(file, options=None)[source]#

Bases: BaseFile, StructFileIO, Generic[Content], ABC

Base class for decoding file content into structured data objects.

mode: str = 'rb'#
decode(seek=True)[source]#

Decode file: prepare, validate signature, parse. Returns parsed data.

Return type:

TypeVar(Content, bound= FileContent)

convert_to(encoder, options=None)[source]#

Decode and convert to encoder. Returns encoder with open buffer (must be closed).

Return type:

FileEncoder[TypeVar(Content, bound= FileContent)]

convert(encoder, options=None)[source]#

Decode, convert to encoder and return bytes. Closes encoder automatically.

Return type:

bytes

prepare()[source]#

Perform file preparation before parsing. (e.g. skip bytes).

Return type:

None

abstractmethod parse()[source]#

Parse file content into self.data.

Return type:

None

validate_signature()[source]#

Validate file signature. Raises EmptyFileError or InvalidSignatureError on failure.

Return type:

None

close()[source]#

Close file buffer. Same as FileIO.close().

Return type:

None

Encoder#

Base class for file encoder (serialization).

class FileEncoder(data, options=None)[source]#

Bases: BaseFile, StructBytesIO, Generic[Content], ABC

Base class for encoding structured data objects into file content.

property mode: str#
property suffix: str#

Return standard file extension for this format (with dot).

encode()[source]#

Encode data: prepare, add signature, serialize. Returns self.

Return type:

Self

encoded()[source]#

Context manager that automatically encodes data on exit.

Return type:

Self

prepare()[source]#

Perform preparations before serialization. (e.g. calculations in content).

Return type:

None

add_signature()[source]#

Write format signature (magic bytes) to buffer if defined.

Return type:

None

abstractmethod serialize()[source]#

Convert structured self.data into bytes and write to buffer.

Return type:

None

save_as(path)[source]#

Write buffer content to file. Keeps encoder open.

Return type:

None

export_as(path)[source]#

Save to path (without suffix) adding format suffix automatically. Keeps encoder open.

Return type:

None

save(path)[source]#

Write buffer content to file. Closes encoder.

Return type:

None

export(path)[source]#

Save to path (without suffix) adding format suffix automatically. Closes encoder.

Return type:

None

close()[source]#

Close buffer and reset self.ctx state. Same as BytesIO.close().

Return type:

None