#pyo3 #automatic #derive #methods #python #repr #attributes

pyo3_special_method_derive_macro_0_21

自动为 Rust 代码生成 Python dunder 方法

1 个不稳定版本

0.4.2 2024 年 7 月 20 日

#2137 in 过程宏

Download history 146/week @ 2024-07-15 15/week @ 2024-07-22

161 每月下载量
用于 pyo3_special_method_deriv…

MIT 许可证

49KB
959 行代码(不包括注释)

pyo3-special-method-derive

此 crate 允许您使用 PyO3 自动为 Rust crate 生成 Python dunder 方法。

主要功能

  • 以下方法可以在结构和枚举上自动生成
    • __str__
    • __repr__
    • __dir__
    • __getattr__
    • __dict__
  • 支持结构和枚举(由于 PyO3 的限制,仅支持单元和复杂枚举)
  • 支持使用 #[pyo3_smd(skip)] 属性跳过变体或字段
  • 自动跳过非 pub 的结构字段
  • 支持使用 #[pyo3_smd_str(skip)]#[pyo3_smd_str(repr)] 属性分别跳过 __str__ 或 __repr__ 的变体或字段

示例

#[pyclass]
#[derive(Dir, Str, Repr)]
struct Person {
    pub name: String,
    occupation: String,
    #[pyo3_smd(skip)]
    pub phone_num: String,
}

PyO3 功能说明

要使用 pyo3-special-method-derive,应在 PyO3 上启用 multiple-pymethods 功能

pyo3 = { version = "0.21", features = ["multiple-pymethods"] }

依赖项

~4–10MB
~100K SLoC