Skip to main content

来自已弃坑的 Hydrogenlib,重拾起当初的决心

[!TIP] 这个项目来自 HydrogenLibObjective-Struct 模块,脱离大项目的版本

同时,HydrogenLib中的 Objective-Struct 不再会更新

OBStruct

一个简单、纯粹、极速的二进制解析库

亮点

  • 基于类型注解的字段声明方式
  • 支持 struct 标准库中的所有格式,并额外支持 array 类型
  • 基于 AOT 的加速
  • 完整的操作支持(打包、解包、流式处理)

安装

pip install obstruct

如果使用 uv 等包管理器,则按照工具的方法安装即可

用法

首先声明一个 Struct 类型,它是一个 dataclass,也是一个 struct

import obstruct as obs
from dataclasses import dataclass

@obs.struct()
@dataclass()
class MyStruct(obs.Struct):
    a: int
    b: float
    c: obs.long
    d: obs.unsigned_short

    
if __name__ == '__main__':
    data = MyStruct(a=0, b=2.0, c=10000, d=14545)
    
    packed_data = data.pack()
    print(packed_data)
    
    restored = MyStruct.unpack(packed_data)
    print(restored)
    
    print(data == restored)

在上述示例中,你可能发现 data != restored,这是浮点数的精度限制导致的 一般来说,我们不建议使用浮点数类型

计划

  • 展平装饰器,目前的 API 较为繁琐,需要简化为唯一的 Struct 基类
  • 继续优化性能
  • 通过存根文件强制表明类型似乎变得不再有效了

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

obstruct-0.2.2.tar.gz (37.9 kB view details)

Uploaded Source

Built Distribution

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

obstruct-0.2.2-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

Details for the file obstruct-0.2.2.tar.gz.

File metadata

  • Download URL: obstruct-0.2.2.tar.gz
  • Upload date:
  • Size: 37.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for obstruct-0.2.2.tar.gz
Algorithm Hash digest
SHA256 2e04fdefe089cecec2626fe66672d47c86f23361106f829803f8ae884847d417
MD5 0d654dbd93e5ce934d8a112b266e0425
BLAKE2b-256 dd40264e6abb0916bec34a5a7c13889add0930afb100f19a754e35836d00a6f9

See more details on using hashes here.

File details

Details for the file obstruct-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: obstruct-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 11.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for obstruct-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f008debe0b8be62444ebe3a7c0df20a0f98f0378396fb4aa619ed20516cc9360
MD5 376d459524ec77cc00b9cb8e28a03557
BLAKE2b-256 972d1b366f998dbde356ef47ee7a438704ef0f0e0ba7448d87b661902a70c1f7

See more details on using hashes here.

Release history Release notifications | RSS feed

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.15

2 files

0.2.14

2 files

0.2.13

2 files

0.2.12

2 files

0.2.11

2 files

0.2.10

2 files

0.2.9

2 files

0.2.8

2 files

0.2.7

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

This release

0.2.2 This release

2 files

0.2.1

2 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