Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
bytespec
bytespec
Русский · English

Начало работы

  • Зачем bytespec?
  • Первая модель
  • Поля и значения по умолчанию
  • Числа и другие типы
  • Необязательные поля
  • Списки и вложенные модели
  • Строки, длины и настройки полей
  • Собираем сообщение

Управление форматом

  • Header и framing
  • Codecs: свой формат и свои типы
  • Наследование моделей
  • Проверка значений модели
  • Обработка ошибок
  • Файлы и несколько сообщений
  • Binary / wire format

Справочник

  • API Reference
    • Модель и поля
    • Элементы header
    • Типы и спецификации
    • Codecs
    • Типы для расширений
    • Исключения
  • Сборка и проверка документации
Back to top
View this page

Элементы 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 используйте вложенную модель; добавлять их через внутренние контексты сборки схемы не требуется.

Next
Типы и спецификации
Previous
Модель и поля
Copyright © 2026, ink-developer
Made with Sphinx and @pradyunsg's Furo
On this page
  • Элементы header
    • Constructor
    • PayloadLength
    • Flags