bytespec

bytespec описывает последовательный бинарный формат типизированным Python-классом. Вы задаёте представление полей; библиотека записывает и читает их, считает длины и обновляет смещение. Это удобно для собственных протоколов и существующих форматов, которые укладываются в такую модель.

Установите пакет (Python 3.10+):

python -m pip install bytespec
from bytespec import ProtoModel

class User(ProtoModel):
    name: str
    active: bool

user = User(name="Anna", active=True)
encoded = user.encode()           # bytes для хранения или передачи
decoded = User.decode(encoded)   # снова User

print(decoded.name)  # Anna

Для чтения нужен тот же класс модели. Бинарное представление определяется типами полей и их настройками; при необходимости можно выбрать размер числа, кодировку строки или собственное правило сериализации.

Зачем bytespec? сравнивает один пакет в struct, Construct и bytespec и объясняет границы применимости. Первая модель проведёт от этого примера к модели с другими типами, необязательными полями и списками. Если уже знаете, что ищете, откройте API Reference или Binary / wire format.