Welcome to iofree’s documentation!¶
iofree package¶
iofree is an easy-to-use and powerful library to help you implement network protocols and binary parsers.
-
class
iofree.
LinkedNode
(parser: iofree.Parser, next_: Optional[LinkedNode])[source]¶ Bases:
object
-
next
¶
-
parser
¶
-
-
class
iofree.
Parser
(gen: Generator)[source]¶ Bases:
object
-
property
has_result
¶
-
respond
(*, data: bytes = b'', close: bool = False, exc: Optional[Exception] = None, result: Any = <object object>) → None[source]¶ produce some event data to interact with a stream: data: bytes to send to the peer close: whether the socket should be closed exc: raise an exception to break the loop result: result to return
-
property
-
class
iofree.
ParserChain
(*parsers: iofree.Parser)[source]¶ Bases:
object
-
iofree.
get_parser
() → Generator[tuple, iofree.Parser, iofree.Parser][source]¶ get current parser object
-
iofree.
peek
(nbytes: int = 1, *, from_=None) → Generator[tuple, bytes, bytes][source]¶ peek many bytes without taking them away from buffer
-
iofree.
read
(nbytes: int = 0, *, from_=None) → Generator[tuple, bytes, bytes][source]¶ if nbytes = 0, read as many as possible, empty bytes is valid; if nbytes > 0, read exactly
nbytes
-
iofree.
read_int
(nbytes: int, byteorder: str = 'big', *, signed: bool = False, from_=None) → Generator[tuple, int, int][source]¶ read some bytes as integer
-
iofree.
read_more
(nbytes: int = 1, *, from_=None) → Generator[tuple, bytes, bytes][source]¶ read at least
nbytes
-
iofree.
read_raw_struct
(struct_obj: Struct, *, from_=None) → Generator[tuple, tuple, tuple][source]¶ read raw struct formatted data
-
iofree.
read_struct
(fmt: str, *, from_=None) → Generator[tuple, tuple, tuple][source]¶ read specific formatted data
-
iofree.
read_until
(data: bytes, *, return_tail: bool = True, from_=None) → Generator[tuple, bytes, bytes][source]¶ read until some bytes appear
Submodules¶
iofree.exceptions module¶
iofree.schema module¶
-
class
iofree.schema.
BinarySchema
(*args)[source]¶ Bases:
object
The main class for users to define their own binary structures
-
property
binary
¶
-
property
-
class
iofree.schema.
BinarySchemaMetaclass
[source]¶ Bases:
type
-
get_parser
() → iofree.Parser[source]¶
-
get_value
() → Generator[tuple, Any, iofree.schema.BinarySchema][source]¶ get BinarySchema object from bytes
-
parse
(data: bytes, *, strict: bool = True) → iofree.schema.BinarySchema[source]¶
-
-
class
iofree.schema.
Bytes
(length: int)[source]¶ Bases:
iofree.schema.Unit
-
class
iofree.schema.
Convert
(unit: iofree.schema.Unit, *, encode: Callable = None, decode: Callable = None)[source]¶ Bases:
iofree.schema.Unit
-
class
iofree.schema.
EndWith
(bytes_: bytes)[source]¶ Bases:
iofree.schema.Unit
-
iofree.schema.
Group
(**fields: Dict[str, Union[Type[iofree.schema.BinarySchema], iofree.schema.Unit]]) → Type[iofree.schema.BinarySchema][source]¶
-
class
iofree.schema.
IntUnit
(length: int, byteorder: str, signed: bool = False)[source]¶ Bases:
iofree.schema.Unit
-
class
iofree.schema.
LengthPrefixed
(length_unit: Union[iofree.schema.StructUnit, iofree.schema.IntUnit], object_unit: Union[Type[iofree.schema.BinarySchema], iofree.schema.Unit])[source]¶ Bases:
iofree.schema.Unit
-
class
iofree.schema.
LengthPrefixedBytes
(length_unit: Union[iofree.schema.StructUnit, iofree.schema.IntUnit])[source]¶ Bases:
iofree.schema.Unit
-
class
iofree.schema.
LengthPrefixedObject
(length_unit: Union[iofree.schema.StructUnit, iofree.schema.IntUnit], object_unit: Union[Type[iofree.schema.BinarySchema], iofree.schema.Unit])[source]¶ Bases:
iofree.schema.LengthPrefixed
-
class
iofree.schema.
LengthPrefixedObjectList
(length_unit: Union[iofree.schema.StructUnit, iofree.schema.IntUnit], object_unit: Union[Type[iofree.schema.BinarySchema], iofree.schema.Unit])[source]¶ Bases:
iofree.schema.LengthPrefixed
-
class
iofree.schema.
LengthPrefixedString
(length_unit: Union[iofree.schema.StructUnit, iofree.schema.IntUnit], encoding='utf-8')[source]¶ Bases:
iofree.schema.Convert
-
class
iofree.schema.
MemberDescriptor
(key: str, member: Union[Type[iofree.schema.BinarySchema], iofree.schema.Unit])[source]¶ Bases:
object
-
key
¶
-
member
¶
-
-
class
iofree.schema.
MustEqual
(unit: iofree.schema.Unit, value: Any)[source]¶ Bases:
iofree.schema.Unit
-
class
iofree.schema.
SizedIntEnum
(size_unit: Union[iofree.schema.StructUnit, iofree.schema.IntUnit], enum_class: Type[enum.IntEnum])[source]¶ Bases:
iofree.schema.Unit
-
class
iofree.schema.
String
(length: int, encoding='utf-8')[source]¶ Bases:
iofree.schema.Convert
-
class
iofree.schema.
StructUnit
(format_: str)[source]¶ Bases:
iofree.schema.Unit
-
class
iofree.schema.
Switch
(ref: str, cases: Mapping[Any, Union[Type[iofree.schema.BinarySchema], iofree.schema.Unit]])[source]¶ Bases:
iofree.schema.Unit