pyo3_special_method_derive_macro

Crates.iopyo3_special_method_derive_macro
lib.rspyo3_special_method_derive_macro
version0.4.3
created_at2024-07-19 19:56:15.000902+00
updated_at2025-04-10 13:55:45.782205+00
descriptionAutomatically derive Python dunder methods for your Rust code
homepage
repositoryhttps://github.com/EricLBuehler/pyo3-special-method-derive
max_upload_size
id1309034
size67,812
Eric Buehler (EricLBuehler)

documentation

README

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 per derive macro with the #[skip(...)] attribute
  • Automatically skip struct fields which are not pub

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"] }
Commit count: 57

cargo fmt