Элементы header¶
Все три класса импортируются из bytespec. Готовые экземпляры задаются
в tuple __header__ при объявлении модели. Практическое руководство:
Header и framing; наследование: Наследование моделей.
- class bytespec.Constructor(encoding: Literal[1, 2, 4, 8] | Annotated[int, VarIntSpec(signed=False)])[исходный код]¶
Model identifier from constructor, validated during decoding.
- Параметры:
encoding – Unsigned integer width in bytes (1, 2, 4, 8) or VarUInt.
Примечание
The int type is validated when building the schema; the value range is validated during encoding. Nested models skip this element.
Использует
__constructor__(по умолчанию 1). При наличии этого элемента тип значения проверяется при сборке модели, диапазон — при encode.include_constructor=Falseв encode иexpect_constructor=Falseв decode_from полностью пропускают элемент; это не режим чтения без проверки значения. Вложенные модели используют именно такой пропуск.
- class bytespec.PayloadLength(encoding: Literal[1, 2, 4, 8] | Annotated[int, VarIntSpec(signed=False)])[исходный код]¶
Размер всех закодированных полей, исключая весь header.
- Параметры:
encoding – Ширина unsigned integer в байтах (1, 2, 4, 8) или VarUInt.
Примечание
При чтении ограничивает буфер полей объявленной длиной. Позиция этого элемента внутри header не меняет смысл записанного числа.
Длина всех полей после полного header, исключая весь header, независимо от позиции элемента. Без него decode_from возвращает конец известных полей и не задаёт отдельную границу body.
- class bytespec.Flags(encoding: Literal[1, 2, 4, 8] | Annotated[int, VarIntSpec(signed=False)])[исходный код]¶
Bitmap присутствия optional-полей, вычисляемый из их значений.
- Параметры:
encoding – Ширина unsigned integer в байтах (1, 2, 4, 8) или VarUInt.
Примечание
Поле присутствует, если его значение не None. Номера битов задаются через field(flag=…) и ограничены 0–63; при фиксированной ширине проверяется, что все используемые биты в неё помещаются.
Bitmap присутствующих optional-полей.
Flags(1)вмещает биты 0–7,Flags(8)иFlags(VarUInt)— 0–63. При наличии optional-полей отсутствие этого элемента вызывает SchemaError при объявлении класса, включая подклассы с унаследованными полями. См. Что проверяется в 0.1.0.
Общий параметр encoding принимает 1, 2, 4, 8 (байты)
или VarUInt из bytespec.types. Другие представления вызывают
SchemaError. Порядок байтов представлений фиксированной длины задаёт модель.
Эти элементы описывают вычисляемые и проверяемые служебные числа. Для пользовательских значений header используйте вложенную модель; добавлять их через внутренние контексты сборки схемы не требуется.