Composite Serializers

Packet serializer composite module.

final class easynetwork.serializers.composite.StapledPacketSerializer

Bases: AbstractPacketSerializer, Generic

A composite serializer that merges two serializers.

See also

How-to — Serializer Combinations

This class cannot be used directly with a StreamProtocol. This page explains possible workarounds.

property sent_packet_serializer: AbstractPacketSerializer[SentDTOPacket, Any]

Sent packet serializer.

property received_packet_serializer: AbstractPacketSerializer[Any, ReceivedDTOPacket]

Received packet serializer.

serialize(packet: SentDTOPacket) bytes

Calls self.sent_packet_serializer.serialize(packet).

Parameters:

packet (SentDTOPacket) – The Python object to serialize.

Returns:

a byte sequence.

Return type:

bytes

deserialize(data: bytes) ReceivedDTOPacket

Calls self.received_packet_serializer.deserialize(data).

Parameters:

data (bytes) – The byte sequence to deserialize.

Raises:

DeserializeError – An unrelated deserialization error occurred.

Returns:

the deserialized Python object.

Return type:

ReceivedDTOPacket

final class easynetwork.serializers.composite.StapledIncrementalPacketSerializer

Bases: StapledPacketSerializer, AbstractIncrementalPacketSerializer, Generic

A composite serializer that merges two incremental serializers.

property sent_packet_serializer: AbstractPacketSerializer[SentDTOPacket, Any]

Sent packet serializer.

property received_packet_serializer: AbstractPacketSerializer[Any, ReceivedDTOPacket]

Received packet serializer.

incremental_serialize(packet: SentDTOPacket) Generator[bytes]

Calls self.sent_packet_serializer.incremental_serialize(packet).

Parameters:

packet (SentDTOPacket) – The Python object to serialize.

Yields:

all the parts of the packet.

Return type:

Generator[bytes]

incremental_deserialize() Generator[None, bytes, tuple[ReceivedDTOPacket, bytes]]

Calls self.received_packet_serializer.incremental_deserialize().

Raises:

IncrementalDeserializeError – An unrelated deserialization error occurred.

Yields:

None until the whole packet has been deserialized.

Returns:

a tuple with the deserialized Python object and the unused trailing data.

Return type:

Generator[None, bytes, tuple[ReceivedDTOPacket, bytes]]

deserialize(data: bytes) ReceivedDTOPacket

Calls self.received_packet_serializer.deserialize(data).

Parameters:

data (bytes) – The byte sequence to deserialize.

Raises:

DeserializeError – An unrelated deserialization error occurred.

Returns:

the deserialized Python object.

Return type:

ReceivedDTOPacket

serialize(packet: SentDTOPacket) bytes

Calls self.sent_packet_serializer.serialize(packet).

Parameters:

packet (SentDTOPacket) – The Python object to serialize.

Returns:

a byte sequence.

Return type:

bytes

final class easynetwork.serializers.composite.StapledBufferedIncrementalPacketSerializer

Bases: StapledIncrementalPacketSerializer, BufferedIncrementalPacketSerializer, Generic

A composite serializer that merges two incremental serializers with manual control of the receive buffer.

deserialize(data: bytes) ReceivedDTOPacket

Calls self.received_packet_serializer.deserialize(data).

Parameters:

data (bytes) – The byte sequence to deserialize.

Raises:

DeserializeError – An unrelated deserialization error occurred.

Returns:

the deserialized Python object.

Return type:

ReceivedDTOPacket

incremental_deserialize() Generator[None, bytes, tuple[ReceivedDTOPacket, bytes]]

Calls self.received_packet_serializer.incremental_deserialize().

Raises:

IncrementalDeserializeError – An unrelated deserialization error occurred.

Yields:

None until the whole packet has been deserialized.

Returns:

a tuple with the deserialized Python object and the unused trailing data.

Return type:

Generator[None, bytes, tuple[ReceivedDTOPacket, bytes]]

incremental_serialize(packet: SentDTOPacket) Generator[bytes]

Calls self.sent_packet_serializer.incremental_serialize(packet).

Parameters:

packet (SentDTOPacket) – The Python object to serialize.

Yields:

all the parts of the packet.

Return type:

Generator[bytes]

serialize(packet: SentDTOPacket) bytes

Calls self.sent_packet_serializer.serialize(packet).

Parameters:

packet (SentDTOPacket) – The Python object to serialize.

Returns:

a byte sequence.

Return type:

bytes

property sent_packet_serializer: AbstractPacketSerializer[SentDTOPacket, Any]

Sent packet serializer.

property received_packet_serializer: AbstractPacketSerializer[Any, ReceivedDTOPacket]

Received packet serializer.

create_deserializer_buffer(sizehint: int) BufferType

Calls self.received_packet_serializer.create_deserializer_buffer(sizehint).

Parameters:

sizehint (int) – the recommended size (in bytes) for the returned buffer. It is acceptable to return smaller or larger buffers than what sizehint suggests.

Returns:

an object implementing the buffer protocol. It is an error to return a buffer with a zero size.

Return type:

BufferType

buffered_incremental_deserialize(buffer: BufferType) Generator[int | None, int, tuple[ReceivedDTOPacket, Buffer]]

Calls self.received_packet_serializer.buffered_incremental_deserialize(buffer).

Parameters:

buffer (BufferType) – The buffer allocated by create_deserializer_buffer().

Raises:

IncrementalDeserializeError – An unrelated deserialization error occurred.

Yields:

until the whole packet has been deserialized.

Returns:

a tuple with the deserialized Python object and the unused trailing data.

The remainder can be a memoryview pointing to buffer or an external bytes-like object.

Return type:

Generator[int | None, int, tuple[ReceivedDTOPacket, Buffer]]


See also

How-to — Serializer Composition

Describes where and when a composite serializer is used.