#macro-derive #pyo3 #special #derive #attributes #repr #skip #pyclass #pyo3-smd

macro pyo3_special_method_derive_macro

Automatically derive Python dunder methods for your Rust code

4 releases

new 0.4.3 Apr 10, 2025
0.4.2 Jul 20, 2024
0.4.1 Jul 19, 2024
0.4.0 Jul 19, 2024

#5 in #pyclass

Download history 232/week @ 2024-12-12 185/week @ 2024-12-19 182/week @ 2024-12-26 1424/week @ 2025-01-02 1795/week @ 2025-01-09 1042/week @ 2025-01-16 235/week @ 2025-01-23 1188/week @ 2025-01-30 181/week @ 2025-02-06 390/week @ 2025-02-13 1781/week @ 2025-02-20 929/week @ 2025-02-27 1/week @ 2025-03-06 49/week @ 2025-03-13 8/week @ 2025-03-20

58 downloads per month
Used in pyo3_special_method_deriv…

MIT license

49KB
959 lines

pyo3-special-method-derive

This crate enables you to automatically derive Python dunder methods for your Rust crate using PyO3.

Key features

  • The following methods may be automatically derived on structs and enums:
    • __str__
    • __repr__
    • __dir__
    • __getattr__
    • __dict__
  • Support for structs and enums (only unit and complex enums due to a PyO3 limitation)
  • Support for skipping variants or fields with the #[pyo3_smd(skip)] attribute
  • Automatically skip struct fields which are not pub
  • Support for skipping variants or fields for __str__ or __repr__ differently with the #[pyo3_smd_str(skip)] and #[pyo3_smd_str(repr)] attributes

Example

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

PyO3 feature note

To use pyo3-special-method-derive, you should enable the multiple-pymethods feature on PyO3:

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

Dependencies

~3.5MB
~81K SLoC