Skip to main content

bstruct

ci pypi python

Simple and efficient binary (de)serialization using type annotations. Supports easy fallback to Python's built-in struct library for maximum performance.

Getting Started

pip install bstruct
from typing import Annotated
from dataclasses import dataclass

import bstruct


@dataclass
class Measurement:
    timestamp: bstruct.u32  # shorthand for: Annotated[int, bstruct.Encodings.u32]
    values: Annotated[list[bstruct.u8], bstruct.Array(3)]


MeasurementEncoding = bstruct.derive(Measurement)


measurement = Measurement(
    timestamp=1672764049,
    values=[1, 2, 3],
)

encoded = MeasurementEncoding.encode(measurement)
decoded = MeasurementEncoding.decode(encoded)

assert decoded == measurement

See the documentation for more information.

Benchmarks

Please see the source of the benchmarks in the benchmarks directory. Feel free to create an issue or PR should there be a problem with the methodology. The benchmarks where executed with pyperf using Python 3.11.1 and construct 2.10.68 on a MacBook Pro 2018 with a 2.3GHz i5 processor.

benchmarks/builtins.py

Name decode encode
struct 0.54 us 0.23 us
bstruct 2.51 us 1.64 us
construct (compiled) 9.49 us 10.00 us

benchmarks/native_list.py

Name decode encode
struct 0.17 us 0.33 us
bstruct 1.70 us 0.59 us
construct (compiled) 4.04 us 6.61 us

benchmarks/class_list.py

Name decode encode
bstruct 7.37 us 4.81 us
construct (compiled) 34.5 us 36.6 us

benchmarks/nested.py

Name decode encode
bstruct 6.05 us 4.42 us
construct (compiled) 27.6 us 29.5 us

Issues and Contributing

I am very happy to receive any kind of feedback or contribution. Just open an issue and let me know.

Metadata

Release files for bstruct 0.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bstruct 0.6.1
File Size Uploaded
bstruct-0.6.1.tar.gz 6.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bstruct 0.6.1
File Interpreter ABI Platform
bstruct-0.6.1-py3-none-any.whl Python 3 none any Details

Total release size: 12.9 kB

Release files / bstruct-0.6.1.tar.gz

Download URL bstruct-0.6.1.tar.gz
Size 6.4 kB
Tags Source
SHA-256 checksum
How to use checksums
390e8d3c8bade6409bbed4b6552ba24b4484e4f10d6f0498c2e9c9a0628d4093
BLAKE2b-256 checksum
How to use checksums
ab930d5b39755b6970e5e6fcfe084ceac70e2647e636ffdb9b402d9691d2fe3e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.0 CPython/3.11.6 Linux/6.2.0-1015-azure

Release files / bstruct-0.6.1-py3-none-any.whl

Download URL bstruct-0.6.1-py3-none-any.whl
Size 6.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
68357387131ee45e39a3c691ce600b64ec78f0312a43cb37af24aa13797ba9d0
BLAKE2b-256 checksum
How to use checksums
f9d744d4e326bdc6e62bbc31c83fb7c9cf48d9c8cdfd25f81784003d821f9550
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.0 CPython/3.11.6 Linux/6.2.0-1015-azure

Release history Release notifications | RSS feed

This release

0.6.1 This release

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page