1
+ # pyright: reportAssignmentType=false
2
+
1
3
"""Custom element classes related to run properties (font)."""
2
4
3
5
from __future__ import annotations
20
22
RequiredAttribute ,
21
23
ZeroOrOne ,
22
24
)
25
+ from docx .shared import RGBColor
23
26
24
27
if TYPE_CHECKING :
25
28
from docx .oxml .shared import CT_OnOff , CT_String
29
32
class CT_Color (BaseOxmlElement ):
30
33
"""`w:color` element, specifying the color of a font and perhaps other objects."""
31
34
32
- val = RequiredAttribute ("w:val" , ST_HexColor )
33
- themeColor = OptionalAttribute ("w:themeColor" , MSO_THEME_COLOR )
35
+ val : RGBColor | str = RequiredAttribute ("w:val" , ST_HexColor )
36
+ themeColor : MSO_THEME_COLOR | None = OptionalAttribute ("w:themeColor" , MSO_THEME_COLOR )
34
37
35
38
36
39
class CT_Fonts (BaseOxmlElement ):
@@ -39,39 +42,33 @@ class CT_Fonts(BaseOxmlElement):
39
42
Specifies typeface name for the various language types.
40
43
"""
41
44
42
- ascii : str | None = OptionalAttribute ( # pyright: ignore[reportAssignmentType]
43
- "w:ascii" , ST_String
44
- )
45
- hAnsi : str | None = OptionalAttribute ( # pyright: ignore[reportAssignmentType]
46
- "w:hAnsi" , ST_String
47
- )
45
+ ascii : str | None = OptionalAttribute ("w:ascii" , ST_String )
46
+ hAnsi : str | None = OptionalAttribute ("w:hAnsi" , ST_String )
48
47
49
48
50
49
class CT_Highlight (BaseOxmlElement ):
51
50
"""`w:highlight` element, specifying font highlighting/background color."""
52
51
53
- val : WD_COLOR_INDEX = RequiredAttribute ( # pyright: ignore[reportGeneralTypeIssues]
54
- "w:val" , WD_COLOR_INDEX
55
- )
52
+ val : WD_COLOR_INDEX = RequiredAttribute ("w:val" , WD_COLOR_INDEX )
56
53
57
54
58
55
class CT_HpsMeasure (BaseOxmlElement ):
59
56
"""Used for `<w:sz>` element and others, specifying font size in half-points."""
60
57
61
- val : Length = RequiredAttribute ( # pyright: ignore[reportGeneralTypeIssues]
62
- "w:val" , ST_HpsMeasure
63
- )
58
+ val : Length = RequiredAttribute ("w:val" , ST_HpsMeasure )
64
59
65
60
66
61
class CT_RPr (BaseOxmlElement ):
67
62
"""`<w:rPr>` element, containing the properties for a run."""
68
63
64
+ get_or_add_color : Callable [[], CT_Color ]
69
65
get_or_add_highlight : Callable [[], CT_Highlight ]
70
66
get_or_add_rFonts : Callable [[], CT_Fonts ]
71
67
get_or_add_sz : Callable [[], CT_HpsMeasure ]
72
68
get_or_add_vertAlign : Callable [[], CT_VerticalAlignRun ]
73
69
_add_rStyle : Callable [..., CT_String ]
74
70
_add_u : Callable [[], CT_Underline ]
71
+ _remove_color : Callable [[], None ]
75
72
_remove_highlight : Callable [[], None ]
76
73
_remove_rFonts : Callable [[], None ]
77
74
_remove_rStyle : Callable [[], None ]
@@ -120,15 +117,9 @@ class CT_RPr(BaseOxmlElement):
120
117
"w:specVanish" ,
121
118
"w:oMath" ,
122
119
)
123
- rStyle : CT_String | None = ZeroOrOne ( # pyright: ignore[reportGeneralTypeIssues]
124
- "w:rStyle" , successors = _tag_seq [1 :]
125
- )
126
- rFonts : CT_Fonts | None = ZeroOrOne ( # pyright: ignore[reportGeneralTypeIssues]
127
- "w:rFonts" , successors = _tag_seq [2 :]
128
- )
129
- b : CT_OnOff | None = ZeroOrOne ( # pyright: ignore[reportGeneralTypeIssues]
130
- "w:b" , successors = _tag_seq [3 :]
131
- )
120
+ rStyle : CT_String | None = ZeroOrOne ("w:rStyle" , successors = _tag_seq [1 :])
121
+ rFonts : CT_Fonts | None = ZeroOrOne ("w:rFonts" , successors = _tag_seq [2 :])
122
+ b : CT_OnOff | None = ZeroOrOne ("w:b" , successors = _tag_seq [3 :])
132
123
bCs = ZeroOrOne ("w:bCs" , successors = _tag_seq [4 :])
133
124
i = ZeroOrOne ("w:i" , successors = _tag_seq [5 :])
134
125
iCs = ZeroOrOne ("w:iCs" , successors = _tag_seq [6 :])
@@ -144,19 +135,11 @@ class CT_RPr(BaseOxmlElement):
144
135
snapToGrid = ZeroOrOne ("w:snapToGrid" , successors = _tag_seq [16 :])
145
136
vanish = ZeroOrOne ("w:vanish" , successors = _tag_seq [17 :])
146
137
webHidden = ZeroOrOne ("w:webHidden" , successors = _tag_seq [18 :])
147
- color = ZeroOrOne ("w:color" , successors = _tag_seq [19 :])
148
- sz : CT_HpsMeasure | None = ZeroOrOne ( # pyright: ignore[reportGeneralTypeIssues]
149
- "w:sz" , successors = _tag_seq [24 :]
150
- )
151
- highlight : CT_Highlight | None = ZeroOrOne ( # pyright: ignore[reportGeneralTypeIssues]
152
- "w:highlight" , successors = _tag_seq [26 :]
153
- )
154
- u : CT_Underline | None = ZeroOrOne ( # pyright: ignore[reportGeneralTypeIssues]
155
- "w:u" , successors = _tag_seq [27 :]
156
- )
157
- vertAlign : CT_VerticalAlignRun | None = ZeroOrOne ( # pyright: ignore[reportGeneralTypeIssues]
158
- "w:vertAlign" , successors = _tag_seq [32 :]
159
- )
138
+ color : CT_Color | None = ZeroOrOne ("w:color" , successors = _tag_seq [19 :])
139
+ sz : CT_HpsMeasure | None = ZeroOrOne ("w:sz" , successors = _tag_seq [24 :])
140
+ highlight : CT_Highlight | None = ZeroOrOne ("w:highlight" , successors = _tag_seq [26 :])
141
+ u : CT_Underline | None = ZeroOrOne ("w:u" , successors = _tag_seq [27 :])
142
+ vertAlign : CT_VerticalAlignRun | None = ZeroOrOne ("w:vertAlign" , successors = _tag_seq [32 :])
160
143
rtl = ZeroOrOne ("w:rtl" , successors = _tag_seq [33 :])
161
144
cs = ZeroOrOne ("w:cs" , successors = _tag_seq [34 :])
162
145
specVanish = ZeroOrOne ("w:specVanish" , successors = _tag_seq [38 :])
@@ -343,14 +326,10 @@ def _set_bool_val(self, name: str, value: bool | None):
343
326
class CT_Underline (BaseOxmlElement ):
344
327
"""`<w:u>` element, specifying the underlining style for a run."""
345
328
346
- val : WD_UNDERLINE | None = OptionalAttribute ( # pyright: ignore[reportAssignmentType]
347
- "w:val" , WD_UNDERLINE
348
- )
329
+ val : WD_UNDERLINE | None = OptionalAttribute ("w:val" , WD_UNDERLINE )
349
330
350
331
351
332
class CT_VerticalAlignRun (BaseOxmlElement ):
352
333
"""`<w:vertAlign>` element, specifying subscript or superscript."""
353
334
354
- val : str = RequiredAttribute ( # pyright: ignore[reportGeneralTypeIssues]
355
- "w:val" , ST_VerticalAlignRun
356
- )
335
+ val : str = RequiredAttribute ("w:val" , ST_VerticalAlignRun )
0 commit comments