Skip to content

Commit f289ee9

Browse files
committed
refactor: simplify attribute access using getattr for improved readability
1 parent 73513d7 commit f289ee9

File tree

1 file changed

+29
-40
lines changed

1 file changed

+29
-40
lines changed

src/tppt/_pptx/tree.py

Lines changed: 29 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,14 @@ def color_format_to_dict(color_format: Any) -> Dict[str, Any]:
99
data = {}
1010

1111
try:
12-
if hasattr(color_format, "rgb"):
13-
if color_format.rgb is not None:
14-
data["rgb"] = str(color_format.rgb)
12+
if rgb := getattr(color_format, "rgb"):
13+
data["rgb"] = str(rgb)
1514

16-
if hasattr(color_format, "theme_color"):
17-
if color_format.theme_color is not None:
18-
data["theme_color"] = str(color_format.theme_color)
15+
if theme_color := getattr(color_format, "theme_color"):
16+
data["theme_color"] = str(theme_color)
1917

20-
if hasattr(color_format, "brightness"):
21-
data["brightness"] = color_format.brightness
18+
if brightness := getattr(color_format, "brightness"):
19+
data["brightness"] = brightness
2220
except Exception:
2321
pass
2422

@@ -38,25 +36,21 @@ def text_frame_to_dict(text_frame: Any) -> Dict[str, Any]:
3836
for run in p.runs:
3937
run_data = {"text": run.text}
4038

41-
if hasattr(run, "font"):
39+
if font := getattr(run, "font"):
4240
font_data = {}
43-
if hasattr(run.font, "name") and run.font.name is not None:
44-
font_data["name"] = run.font.name
45-
if hasattr(run.font, "size") and run.font.size is not None:
46-
font_data["size"] = (
47-
run.font.size.pt
48-
if hasattr(run.font.size, "pt")
49-
else run.font.size
50-
)
51-
if hasattr(run.font, "bold") and run.font.bold is not None:
52-
font_data["bold"] = run.font.bold
53-
if hasattr(run.font, "italic") and run.font.italic is not None:
54-
font_data["italic"] = run.font.italic
55-
if hasattr(run.font, "underline") and run.font.underline is not None:
56-
font_data["underline"] = run.font.underline
57-
58-
if hasattr(run.font, "color") and run.font.color is not None:
59-
font_data["color"] = color_format_to_dict(run.font.color)
41+
if name := getattr(font, "name"):
42+
font_data["name"] = name
43+
if size := getattr(font, "size"):
44+
font_data["size"] = size.pt if hasattr(size, "pt") else size
45+
if bold := getattr(font, "bold"):
46+
font_data["bold"] = bold
47+
if italic := getattr(font, "italic"):
48+
font_data["italic"] = italic
49+
if underline := getattr(font, "underline"):
50+
font_data["underline"] = underline
51+
52+
if color := getattr(font, "color"):
53+
font_data["color"] = color_format_to_dict(color)
6054

6155
run_data["font"] = font_data
6256

@@ -136,15 +130,11 @@ def placeholder_to_dict(placeholder: Any) -> Dict[str, Any]:
136130

137131
# Add placeholder-specific information
138132
try:
139-
placeholder_data["placeholder_type"] = (
140-
placeholder.placeholder_format.type
141-
if hasattr(placeholder.placeholder_format, "type")
142-
else None
133+
placeholder_data["placeholder_type"] = getattr(
134+
placeholder.placeholder_format, "type"
143135
)
144-
placeholder_data["placeholder_idx"] = (
145-
placeholder.placeholder_format.idx
146-
if hasattr(placeholder.placeholder_format, "idx")
147-
else None
136+
placeholder_data["placeholder_idx"] = getattr(
137+
placeholder.placeholder_format, "idx"
148138
)
149139
except Exception:
150140
pass
@@ -202,18 +192,17 @@ def slide_to_dict(slide: Any) -> Dict[str, Any]:
202192
}
203193

204194
# Add placeholder information
205-
if hasattr(slide, "placeholders"):
195+
if placeholders := getattr(slide, "placeholders"):
206196
slide_data["placeholders"] = [
207-
placeholder_to_dict(placeholder) for placeholder in slide.placeholders
197+
placeholder_to_dict(placeholder) for placeholder in placeholders
208198
]
209199

210200
# Add notes information
211-
if hasattr(slide, "notes_slide") and slide.notes_slide is not None:
201+
if notes_slide := getattr(slide, "notes_slide"):
212202
notes_placeholders = []
213-
if hasattr(slide.notes_slide, "placeholders"):
203+
if placeholders := getattr(notes_slide, "placeholders"):
214204
notes_placeholders = [
215-
placeholder_to_dict(placeholder)
216-
for placeholder in slide.notes_slide.placeholders
205+
placeholder_to_dict(placeholder) for placeholder in placeholders
217206
]
218207

219208
slide_data["notes_slide"] = {

0 commit comments

Comments
 (0)