iofree.schema module

class iofree.schema.BinarySchema(*args)[source]

Bases: object

The main class for users to define their own binary structures

classmethod get_parser()iofree.Parser[source]
classmethod get_value() → Generator[source]

get BinarySchema object from bytes

classmethod parse(data: bytes, *, strict=True)iofree.schema.BinarySchema[source]
class iofree.schema.BinarySchemaMetaclass(name, bases, namespace)[source]

Bases: type

class iofree.schema.Bytes(length)[source]

Bases: iofree.schema.Unit

get_value()[source]

get object you want from bytes

class iofree.schema.Convert(unit: Union[iofree.schema.BinarySchemaMetaclass, iofree.schema.Unit], *, encode: Callable = None, decode: Callable = None)[source]

Bases: iofree.schema.Unit

get_value()[source]

get object you want from bytes

class iofree.schema.EndWith(bytes_)[source]

Bases: iofree.schema.Unit

get_value()[source]

get object you want from bytes

iofree.schema.Group(**fields: Dict[str, Union[iofree.schema.BinarySchemaMetaclass, iofree.schema.Unit]])iofree.schema.BinarySchema[source]
class iofree.schema.IntUnit(length: int, byteorder: str, signed: bool = False)[source]

Bases: iofree.schema.Unit

get_value()[source]

get object you want from bytes

class iofree.schema.LengthPrefixedBytes(length_unit: iofree.schema.StructUnit)[source]

Bases: iofree.schema.Unit

get_value()[source]

get object you want from bytes

class iofree.schema.LengthPrefixedObject(length_unit: iofree.schema.StructUnit, object_unit: Union[iofree.schema.BinarySchemaMetaclass, iofree.schema.Unit])[source]

Bases: iofree.schema.LengthPrefixedObjectList

class iofree.schema.LengthPrefixedObjectList(length_unit: iofree.schema.StructUnit, object_unit: Union[iofree.schema.BinarySchemaMetaclass, iofree.schema.Unit])[source]

Bases: iofree.schema.Unit

get_value()[source]

get object you want from bytes

class iofree.schema.LengthPrefixedString(length_unit: iofree.schema.StructUnit, encoding='utf-8')[source]

Bases: iofree.schema.Unit

get_value()[source]

get object you want from bytes

class iofree.schema.MustEqual(unit, value)[source]

Bases: iofree.schema.Unit

get_default()[source]
get_value()[source]

get object you want from bytes

class iofree.schema.SizedIntEnum(size_unit: iofree.schema.StructUnit, enum_class)[source]

Bases: iofree.schema.Unit

get_value()[source]

get object you want from bytes

class iofree.schema.String(length, encoding='utf-8')[source]

Bases: iofree.schema.Bytes

get_value()[source]

get object you want from bytes

class iofree.schema.StructUnit(format_: str)[source]

Bases: iofree.schema.Unit

get_value()[source]

get object you want from bytes

class iofree.schema.Switch(ref: str, cases: Mapping[Any, Union[iofree.schema.BinarySchemaMetaclass, iofree.schema.Unit]])[source]

Bases: iofree.schema.Unit

get_value()[source]

get object you want from bytes

class iofree.schema.Unit[source]

Bases: abc.ABC

Unit is the base class of all units. If you can build your own unit class, you must inherit from it

abstract get_value() → Generator[source]

get object you want from bytes

parse(data: bytes, *, strict=True)[source]

a convenient function to help you parse fixed bytes