Fallback to struct.Struct#

from dataclasses import dataclass

import bstruct


@dataclass
class Data:
    u8: bstruct.u8
    u16: bstruct.u16


DataEncoding = bstruct.derive(Data)

native_struct = DataEncoding.get_struct(byteorder="little")

It is also possible to use bstruct only as a convenience wrapper for creating the native struct format string. This of course only works for types supported by struct.

import struct

import bstruct


format_str = bstruct.compile_format([
    bstruct.Encodings.u8,
    bstruct.Bytes(8),
    bstruct.Encodings.i64
])

struct.Struct(f"<{format_str}")