A wrapper around the struct library with support for PEP 484 types.
Project description
typedstruct
A wrapper around the struct
built-in module
with support for typing, on top of
Python 3.7 dataclasses
.
Example
For example, if you wanted to read the header of BMP files, you could write this:
from dataclasses import dataclass
from typedstruct import LittleEndianStruct, StructType
@dataclass
class BMPHeader(LittleEndianStruct):
type: int = StructType.uint16() # magic identifier: 0x4d42
size: int = StructType.uint32() # file size in bytes
reserved1: int = StructType.uint16() # not used
reserved2: int = StructType.uint16() # not used
offset: int = StructType.uint32() # image data offset in bytes
dib_header_size: int = StructType.uint32() # DIB header size in bytes
width_px: int = StructType.int32() # width of the image
height_px: int = StructType.int32() # height of the image
num_planes_px: int = StructType.uint16() # number of color planes
bits_per_pixel: int = StructType.uint16() # bits per pixel
compression: int = StructType.uint32() # compression type
image_size_bytes: int = StructType.uint32() # compression type
x_resolution_ppm: int = StructType.int32() # pixels per meter
y_resolution_ppm: int = StructType.int32() # pixels per meter
num_colors: int = StructType.int32() # number of colors
important_colors_colors: int = StructType.int32() # important colors
with open("some_file.bmp", "rb") as file:
raw_data = file.read(BMPHeader.get_size())
bmp_header = BMPHeader.unpack(raw_data)
assert bmp_header.type == 0x4D42
print(f"This image is {bmp_header.width_px}x{bmp_header.height_px}")
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
typedstruct-0.1.0.tar.gz
(3.5 kB
view hashes)
Built Distribution
Close
Hashes for typedstruct-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ae8e4e1680f6f65f937acbfe6e550fe4c8e67150eb708aeb4aa317b08f08da5 |
|
MD5 | 4d4d08b137d0ab516e9642c5acc4849f |
|
BLAKE2b-256 | 54d361364ad347a6a51849f7ce1d0f888b53dd2ad3f3ba4dd03f37c318e304e6 |