runtimepy.codec.protocol package#

Submodules#

runtimepy.codec.protocol.base module#

A module implementing an interface to build communication protocols.

class runtimepy.codec.protocol.base.FieldSpec(name: str, kind: type[Int8Primitive | Int16Primitive | Int32Primitive | Int64Primitive | Uint8Primitive | Uint16Primitive | Uint32Primitive | Uint64Primitive | HalfPrimitive | FloatPrimitive | DoublePrimitive | BooleanPrimitive] | str, enum: str | int | None = None, array_length: int | None = None)[source]#

Bases: NamedTuple

Information specifying a protocol field.

array_length: int | None#

Alias for field number 3

asdict() Dict[str, str | int | float | bool | None | Dict[str, str | int | float | bool | None] | List[str | int | float | bool | None]][source]#

Obtain a dictionary representing this instance.

enum: str | int | None#

Alias for field number 2

kind: type[Int8Primitive | Int16Primitive | Int32Primitive | Int64Primitive | Uint8Primitive | Uint16Primitive | Uint32Primitive | Uint64Primitive | HalfPrimitive | FloatPrimitive | DoublePrimitive | BooleanPrimitive] | str#

Alias for field number 1

name: str#

Alias for field number 0

class runtimepy.codec.protocol.base.ProtocolBase(enum_registry: EnumRegistry, names: NameRegistry = None, fields: BitFieldsManager = None, build: list[int | FieldSpec | str] = None, identifier: int = 1, byte_order: ByteOrder | str | int = ByteOrder.NETWORK, serializables: dict[str, Serializable] = None)[source]#

Bases: object

A class for defining runtime communication protocols.

add_bit_fields(kind: type[Int8Primitive | Int16Primitive | Int32Primitive | Int64Primitive | Uint8Primitive | Uint16Primitive | Uint32Primitive | Uint64Primitive | HalfPrimitive | FloatPrimitive | DoublePrimitive | BooleanPrimitive] | str = 'uint8') Iterator[BitFields][source]#

Add a bit-fields primitive to the protocol.

add_field(name: str, kind: type[Int8Primitive | Int16Primitive | Int32Primitive | Int64Primitive | Uint8Primitive | Uint16Primitive | Uint32Primitive | Uint64Primitive | HalfPrimitive | FloatPrimitive | DoublePrimitive | BooleanPrimitive] | str = None, enum: str | int = None, serializable: Serializable = None, track: bool = True, array_length: int = None) int[source]#

Add a new field to the protocol.

add_serializable(name: str, serializable: Serializable, array_length: int = None) int[source]#

Add a serializable instance.

register_name(name: str) int[source]#

Register the field name.

property size: int#

Get this protocol’s size in bytes.

trace_size(logger: Logger | LoggerAdapter[Any]) None[source]#

Log a size trace.

value(name: str, resolve_enum: bool = True) int | float | bool | str[source]#

Get the value of a field belonging to the protocol.

runtimepy.codec.protocol.json module#

A protocol extension for importing and exporting JSON.

class runtimepy.codec.protocol.json.JsonProtocol(enum_registry: EnumRegistry, names: NameRegistry = None, fields: BitFieldsManager = None, build: list[int | FieldSpec | str] = None, identifier: int = 1, byte_order: ByteOrder | str | int = ByteOrder.NETWORK, serializables: dict[str, Serializable] = None)[source]#

Bases: ProtocolBase

A class for defining runtime communication protocols.

export_json(resolve_enum: bool = True) dict[str, Dict[str, str | int | float | bool | None | Dict[str, str | int | float | bool | None] | List[str | int | float | bool | None]]][source]#

Export this protocol’s data to JSON.

classmethod import_json(data: dict[str, Dict[str, str | int | float | bool | None | Dict[str, str | int | float | bool | None] | List[str | int | float | bool | None]]]) T[source]#

Create a bit-fields manager from JSON data.

meta_bytes(resolve_enum: bool = True) bytes[source]#

Get protocol metadata as a bytes object.

meta_str(resolve_enum: bool = True) str[source]#

Get protocol metadata as a string..

write_meta(stream: BinaryIO, resolve_enum: bool = True) int[source]#

Write protocol metadata to a stream.

Module contents#

A module implementing an interface to build communication protocols.

class runtimepy.codec.protocol.Protocol(enum_registry: EnumRegistry, names: NameRegistry = None, fields: BitFieldsManager = None, build: list[int | FieldSpec | str] = None, identifier: int = 1, byte_order: ByteOrder | str | int = ByteOrder.NETWORK, serializables: dict[str, Serializable] = None)[source]#

Bases: JsonProtocol

A class for defining runtime communication protocols.

class runtimepy.codec.protocol.ProtocolFactory[source]#

Bases: ABC

A class implementing an interface for creating runtime instances of a prototypes that are unique to the implementing class.

abstract classmethod initialize(protocol: Protocol) None[source]#

Initialize this protocol.

initialized = False#
classmethod instance() Protocol[source]#

Create an instance of this factory’s protocol.

protocol: Protocol = <runtimepy.codec.protocol.Protocol object>#
classmethod singleton() Protocol[source]#

Get a shared single instance of a protocol for this class.