pyo3_stub_gen/generate/
enum_.rs1use crate::{generate::*, type_info::*};
2use std::fmt;
3
4#[derive(Debug, Clone, PartialEq)]
6pub struct EnumDef {
7 pub name: &'static str,
8 pub doc: &'static str,
9 pub variants: &'static [(&'static str, &'static str)],
10 pub methods: Vec<MethodDef>,
11 pub members: Vec<MemberDef>,
12}
13
14impl From<&PyEnumInfo> for EnumDef {
15 fn from(info: &PyEnumInfo) -> Self {
16 Self {
17 name: info.pyclass_name,
18 doc: info.doc,
19 variants: info.variants,
20 methods: Vec::new(),
21 members: Vec::new(),
22 }
23 }
24}
25
26impl fmt::Display for EnumDef {
27 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
28 writeln!(f, "class {}(Enum):", self.name)?;
29 let indent = indent();
30 docstring::write_docstring(f, self.doc, indent)?;
31 for (variant, variant_doc) in self.variants {
32 writeln!(f, "{indent}{} = ...", variant)?;
33 docstring::write_docstring(f, variant_doc, indent)?;
34 }
35 for member in &self.members {
36 writeln!(f)?;
37 member.fmt(f)?;
38 }
39 for methods in &self.methods {
40 writeln!(f)?;
41 methods.fmt(f)?;
42 }
43 writeln!(f)?;
44 Ok(())
45 }
46}