pyo3_special_method_derive 0.2.2

Automatically derive Python dunder methods for your Rust code
Documentation
use pyo3::pyclass;
use pyo3_special_method_derive::Dir;

#[pyclass]
#[derive(Dir)]
#[allow(dead_code)]
struct WithFieldSkip {
    pub dora: u32,
    pub my: String,
    #[pyo3_smd(skip)]
    pub name: f32,
}

#[test]
fn test_with_dir_skip() {
    let dir = WithFieldSkip {
        dora: 0,
        my: "".to_string(),
        name: 0.0,
    }
    .__dir__();
    assert_eq!(vec!["dora".to_string(), "my".to_string()], dir);
}

#[pyclass]
#[derive(Dir)]
#[allow(dead_code)]
struct WithAllFieldsSkipped {
    #[pyo3_smd(skip)]
    pub dora: u32,
    #[pyo3_smd(skip)]
    pub my: String,
    #[pyo3_smd(skip)]
    pub name: f32,
}

#[test]
fn test_with_dir_all_skipped() {
    let dir = WithAllFieldsSkipped {
        dora: 0,
        my: "".to_string(),
        name: 0.0,
    }
    .__dir__();
    assert!(dir.is_empty());
}