Skip to main content

A wrapper around the struct library with support for PEP 484 types.

Project description

typedstruct

Build Status codecov MIT license

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


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 details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

typedstruct-0.1.0-py3-none-any.whl (3.5 kB view details)

Uploaded Python 3

File details

Details for the file typedstruct-0.1.0.tar.gz.

File metadata

  • Download URL: typedstruct-0.1.0.tar.gz
  • Upload date:
  • Size: 3.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.10 CPython/3.8.5 Darwin/18.7.0

File hashes

Hashes for typedstruct-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5595230dc6b58a01572830689459307091d687123cf98d11398a359dddad032d
MD5 60fd84a0950582db4f886acdfaefa391
BLAKE2b-256 034cd7951b49a9c6dc66bfc899bb3779e02c7eb8a65ec1efee186618a1954c00

See more details on using hashes here.

File details

Details for the file typedstruct-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: typedstruct-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 3.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.10 CPython/3.8.5 Darwin/18.7.0

File hashes

Hashes for typedstruct-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6ae8e4e1680f6f65f937acbfe6e550fe4c8e67150eb708aeb4aa317b08f08da5
MD5 4d4d08b137d0ab516e9642c5acc4849f
BLAKE2b-256 54d361364ad347a6a51849f7ce1d0f888b53dd2ad3f3ba4dd03f37c318e304e6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page