来自已弃坑的 Hydrogenlib,重拾起当初的决心
[!TIP] 这个项目来自
HydrogenLib的Objective-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)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
obstruct-0.2.2-py3-none-any.whl
(11.0 kB
view details)
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e04fdefe089cecec2626fe66672d47c86f23361106f829803f8ae884847d417
|
|
| MD5 |
0d654dbd93e5ce934d8a112b266e0425
|
|
| BLAKE2b-256 |
dd40264e6abb0916bec34a5a7c13889add0930afb100f19a754e35836d00a6f9
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f008debe0b8be62444ebe3a7c0df20a0f98f0378396fb4aa619ed20516cc9360
|
|
| MD5 |
376d459524ec77cc00b9cb8e28a03557
|
|
| BLAKE2b-256 |
972d1b366f998dbde356ef47ee7a438704ef0f0e0ba7448d87b661902a70c1f7
|