Skip to content

Commit f700de4

Browse files
committed
feat: Complete draft 1 for typehints
Signed-off-by: Avishrant Sharma <[email protected]>
1 parent 7e46f9c commit f700de4

30 files changed

+3469
-124
lines changed

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,8 @@ coverage.xml
3939
htmlcov/
4040
coverage/
4141
.cache/
42-
stub.py
4342

4443
# Stub project specific
4544
# Keep only .pyi and metadata
4645
*.py
47-
!**/*.pyi
46+
!**/*.pyi

pptx-stubs/chart/chart.pyi

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ from pptx.chart.axis import CategoryAxis, DateAxis, ValueAxis
44
from pptx.chart.data import _BaseChartData
55
from pptx.chart.legend import Legend
66
from pptx.chart.plot import _BasePlot
7-
from pptx.chart.series import SeriesCollection, _BaseSeries
7+
from pptx.chart.series import SeriesCollection, _BaseCategorySeries, _BaseSeries
88
from pptx.dml.chtfmt import ChartFormat
99
from pptx.enum.chart import XL_CHART_TYPE
1010
from pptx.oxml.chart.chart import CT_ChartSpace, CT_PlotArea
@@ -15,6 +15,7 @@ from pptx.text.text import Font, TextFrame
1515
from pptx.util import lazyproperty
1616

1717
class Chart[SeriesType: _BaseSeries, PlotType: _BasePlot](PartElementProxy):
18+
_chartSpace: CT_ChartSpace
1819
def __init__(self, chartSpace: CT_ChartSpace, chart_part: ChartPart) -> None: ...
1920
@property
2021
def category_axis(self) -> CategoryAxis | DateAxis | ValueAxis: ...
@@ -46,7 +47,16 @@ class Chart[SeriesType: _BaseSeries, PlotType: _BasePlot](PartElementProxy):
4647
@property
4748
def value_axis(self) -> ValueAxis: ...
4849

50+
DefaultChart = Chart[_BaseSeries | _BaseCategorySeries, _BasePlot]
51+
"""Type-checking alias.
52+
53+
This symbol exists only in stubs and is not available at runtime.
54+
Do not import or reference it in production code. Always import this under
55+
`TYPE_CHECKING` guards.
56+
"""
57+
4958
class ChartTitle(ElementProxy):
59+
_title: CT_Title
5060
def __init__(self, title: CT_Title) -> None: ...
5161
@lazyproperty
5262
def format(self) -> ChartFormat: ...
@@ -58,6 +68,8 @@ class ChartTitle(ElementProxy):
5868
def text_frame(self) -> TextFrame: ...
5969

6070
class _Plots[PlotType: _BasePlot](Sequence[PlotType]):
71+
_plotArea: CT_PlotArea
72+
_chart: Chart
6173
def __init__(self, plotArea: CT_PlotArea, chart: Chart) -> None: ...
6274
def __getitem__(self, index: slice | int) -> PlotType: ...
6375
def __len__(self) -> int: ...

pptx-stubs/enum/__init__.pyi

Whitespace-only changes.

pptx-stubs/enum/action.pyi

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from pptx.enum.base import BaseEnum
2+
3+
class PP_ACTION_TYPE(BaseEnum):
4+
END_SHOW = ...
5+
FIRST_SLIDE = ...
6+
HYPERLINK = ...
7+
LAST_SLIDE = ...
8+
LAST_SLIDE_VIEWED = ...
9+
NAMED_SLIDE = ...
10+
NAMED_SLIDE_SHOW = ...
11+
NEXT_SLIDE = ...
12+
NONE = ...
13+
OPEN_FILE = ...
14+
OLE_VERB = ...
15+
PLAY = ...
16+
PREVIOUS_SLIDE = ...
17+
RUN_MACRO = ...
18+
RUN_PROGRAM = ...
19+
20+
PP_ACTION = PP_ACTION_TYPE

pptx-stubs/enum/base.pyi

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import enum
2+
from typing import Any, Self
3+
4+
class BaseEnum(int, enum.Enum):
5+
def __new__(cls, ms_api_value: int, docstr: str) -> Self: ...
6+
def __str__(self) -> str: ...
7+
8+
class BaseXmlEnum[T: BaseXmlEnum](int, enum.Enum):
9+
xml_value: str | None
10+
def __new__(cls, ms_api_value: int, xml_value: str | None, docstr: str) -> Self: ...
11+
def __str__(self) -> str: ...
12+
@classmethod
13+
def from_xml(cls, xml_value: str) -> Self: ...
14+
@classmethod
15+
def to_xml(cls: type[T], value: int | T) -> str: ...
16+
@classmethod
17+
def validate(cls: type[T], value: T) -> None: ...
18+
19+
class DocsPageFormatter:
20+
def __init__(self, clsname: str, clsdict: dict[str, Any]) -> None: ...
21+
@property
22+
def page_str(self) -> str: ...

pptx-stubs/enum/chart.pyi

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
from pptx.enum.base import BaseEnum, BaseXmlEnum
2+
3+
class XL_AXIS_CROSSES(BaseXmlEnum):
4+
AUTOMATIC = ...
5+
CUSTOM = ...
6+
MAXIMUM = ...
7+
MINIMUM = ...
8+
9+
class XL_CATEGORY_TYPE(BaseEnum):
10+
AUTOMATIC_SCALE = ...
11+
CATEGORY_SCALE = ...
12+
TIME_SCALE = ...
13+
14+
class XL_CHART_TYPE(BaseEnum):
15+
THREE_D_AREA = ...
16+
THREE_D_AREA_STACKED = ...
17+
THREE_D_AREA_STACKED_100 = ...
18+
THREE_D_BAR_CLUSTERED = ...
19+
THREE_D_BAR_STACKED = ...
20+
THREE_D_BAR_STACKED_100 = ...
21+
THREE_D_COLUMN = ...
22+
THREE_D_COLUMN_CLUSTERED = ...
23+
THREE_D_COLUMN_STACKED = ...
24+
THREE_D_COLUMN_STACKED_100 = ...
25+
THREE_D_LINE = ...
26+
THREE_D_PIE = ...
27+
THREE_D_PIE_EXPLODED = ...
28+
AREA = ...
29+
AREA_STACKED = ...
30+
AREA_STACKED_100 = ...
31+
BAR_CLUSTERED = ...
32+
BAR_OF_PIE = ...
33+
BAR_STACKED = ...
34+
BAR_STACKED_100 = ...
35+
BUBBLE = ...
36+
BUBBLE_THREE_D_EFFECT = ...
37+
COLUMN_CLUSTERED = ...
38+
COLUMN_STACKED = ...
39+
COLUMN_STACKED_100 = ...
40+
CONE_BAR_CLUSTERED = ...
41+
CONE_BAR_STACKED = ...
42+
CONE_BAR_STACKED_100 = ...
43+
CONE_COL = ...
44+
CONE_COL_CLUSTERED = ...
45+
CONE_COL_STACKED = ...
46+
CONE_COL_STACKED_100 = ...
47+
CYLINDER_BAR_CLUSTERED = ...
48+
CYLINDER_BAR_STACKED = ...
49+
CYLINDER_BAR_STACKED_100 = ...
50+
CYLINDER_COL = ...
51+
CYLINDER_COL_CLUSTERED = ...
52+
CYLINDER_COL_STACKED = ...
53+
CYLINDER_COL_STACKED_100 = ...
54+
DOUGHNUT = ...
55+
DOUGHNUT_EXPLODED = ...
56+
LINE = ...
57+
LINE_MARKERS = ...
58+
LINE_MARKERS_STACKED = ...
59+
LINE_MARKERS_STACKED_100 = ...
60+
LINE_STACKED = ...
61+
LINE_STACKED_100 = ...
62+
PIE = ...
63+
PIE_EXPLODED = ...
64+
PIE_OF_PIE = ...
65+
PYRAMID_BAR_CLUSTERED = ...
66+
PYRAMID_BAR_STACKED = ...
67+
PYRAMID_BAR_STACKED_100 = ...
68+
PYRAMID_COL = ...
69+
PYRAMID_COL_CLUSTERED = ...
70+
PYRAMID_COL_STACKED = ...
71+
PYRAMID_COL_STACKED_100 = ...
72+
RADAR = ...
73+
RADAR_FILLED = ...
74+
RADAR_MARKERS = ...
75+
STOCK_HLC = ...
76+
STOCK_OHLC = ...
77+
STOCK_VHLC = ...
78+
STOCK_VOHLC = ...
79+
SURFACE = ...
80+
SURFACE_TOP_VIEW = ...
81+
SURFACE_TOP_VIEW_WIREFRAME = ...
82+
SURFACE_WIREFRAME = ...
83+
XY_SCATTER = ...
84+
XY_SCATTER_LINES = ...
85+
XY_SCATTER_LINES_NO_MARKERS = ...
86+
XY_SCATTER_SMOOTH = ...
87+
XY_SCATTER_SMOOTH_NO_MARKERS = ...
88+
89+
class XL_DATA_LABEL_POSITION(BaseXmlEnum):
90+
ABOVE = ...
91+
BELOW = ...
92+
BEST_FIT = ...
93+
CENTER = ...
94+
INSIDE_BASE = ...
95+
INSIDE_END = ...
96+
LEFT = ...
97+
MIXED = ...
98+
OUTSIDE_END = ...
99+
RIGHT = ...
100+
101+
XL_LABEL_POSITION = XL_DATA_LABEL_POSITION
102+
103+
class XL_LEGEND_POSITION(BaseXmlEnum):
104+
BOTTOM = ...
105+
CORNER = ...
106+
CUSTOM = ...
107+
LEFT = ...
108+
RIGHT = ...
109+
TOP = ...
110+
111+
class XL_MARKER_STYLE(BaseXmlEnum):
112+
AUTOMATIC = ...
113+
CIRCLE = ...
114+
DASH = ...
115+
DIAMOND = ...
116+
DOT = ...
117+
NONE = ...
118+
PICTURE = ...
119+
PLUS = ...
120+
SQUARE = ...
121+
STAR = ...
122+
TRIANGLE = ...
123+
X = ...
124+
125+
class XL_TICK_MARK(BaseXmlEnum):
126+
CROSS = ...
127+
INSIDE = ...
128+
NONE = ...
129+
OUTSIDE = ...
130+
131+
class XL_TICK_LABEL_POSITION(BaseXmlEnum):
132+
HIGH = ...
133+
LOW = ...
134+
NEXT_TO_AXIS = ...
135+
NONE = ...

pptx-stubs/enum/dml.pyi

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
from pptx.enum.base import BaseEnum, BaseXmlEnum
2+
3+
class MSO_COLOR_TYPE(BaseEnum):
4+
RGB = ...
5+
SCHEME = ...
6+
HSL = ...
7+
PRESET = ...
8+
SCRGB = ...
9+
SYSTEM = ...
10+
11+
class MSO_FILL_TYPE(BaseEnum):
12+
BACKGROUND = ...
13+
GRADIENT = ...
14+
GROUP = ...
15+
PATTERNED = ...
16+
PICTURE = ...
17+
SOLID = ...
18+
TEXTURED = ...
19+
20+
MSO_FILL = MSO_FILL_TYPE
21+
22+
class MSO_LINE_DASH_STYLE(BaseXmlEnum):
23+
DASH = ...
24+
DASH_DOT = ...
25+
DASH_DOT_DOT = ...
26+
LONG_DASH = ...
27+
LONG_DASH_DOT = ...
28+
ROUND_DOT = ...
29+
SOLID = ...
30+
SQUARE_DOT = ...
31+
DASH_STYLE_MIXED = ...
32+
33+
MSO_LINE = MSO_LINE_DASH_STYLE
34+
35+
class MSO_PATTERN_TYPE(BaseXmlEnum):
36+
CROSS = ...
37+
DARK_DOWNWARD_DIAGONAL = ...
38+
DARK_HORIZONTAL = ...
39+
DARK_UPWARD_DIAGONAL = ...
40+
DARK_VERTICAL = ...
41+
DASHED_DOWNWARD_DIAGONAL = ...
42+
DASHED_HORIZONTAL = ...
43+
DASHED_UPWARD_DIAGONAL = ...
44+
DASHED_VERTICAL = ...
45+
DIAGONAL_BRICK = ...
46+
DIAGONAL_CROSS = ...
47+
DIVOT = ...
48+
DOTTED_DIAMOND = ...
49+
DOTTED_GRID = ...
50+
DOWNWARD_DIAGONAL = ...
51+
HORIZONTAL = ...
52+
HORIZONTAL_BRICK = ...
53+
LARGE_CHECKER_BOARD = ...
54+
LARGE_CONFETTI = ...
55+
LARGE_GRID = ...
56+
LIGHT_DOWNWARD_DIAGONAL = ...
57+
LIGHT_HORIZONTAL = ...
58+
LIGHT_UPWARD_DIAGONAL = ...
59+
LIGHT_VERTICAL = ...
60+
NARROW_HORIZONTAL = ...
61+
NARROW_VERTICAL = ...
62+
OUTLINED_DIAMOND = ...
63+
PERCENT_10 = ...
64+
PERCENT_20 = ...
65+
PERCENT_25 = ...
66+
PERCENT_30 = ...
67+
ERCENT_40 = ...
68+
PERCENT_5 = ...
69+
PERCENT_50 = ...
70+
PERCENT_60 = ...
71+
PERCENT_70 = ...
72+
PERCENT_75 = ...
73+
PERCENT_80 = ...
74+
PERCENT_90 = ...
75+
PLAID = ...
76+
SHINGLE = ...
77+
SMALL_CHECKER_BOARD = ...
78+
SMALL_CONFETTI = ...
79+
SMALL_GRID = ...
80+
SOLID_DIAMOND = ...
81+
SPHERE = ...
82+
TRELLIS = ...
83+
UPWARD_DIAGONAL = ...
84+
VERTICAL = ...
85+
WAVE = ...
86+
WEAVE = ...
87+
WIDE_DOWNWARD_DIAGONAL = ...
88+
WIDE_UPWARD_DIAGONAL = ...
89+
ZIG_ZAG = ...
90+
MIXED = ...
91+
92+
MSO_PATTERN = MSO_PATTERN_TYPE
93+
94+
class MSO_THEME_COLOR_INDEX(BaseXmlEnum):
95+
NOT_THEME_COLOR = ...
96+
ACCENT_1 = ...
97+
ACCENT_2 = ...
98+
ACCENT_3 = ...
99+
ACCENT_4 = ...
100+
ACCENT_5 = ...
101+
ACCENT_6 = ...
102+
BACKGROUND_1 = ...
103+
BACKGROUND_2 = ...
104+
DARK_1 = ...
105+
DARK_2 = ...
106+
FOLLOWED_HYPERLINK = ...
107+
HYPERLINK = ...
108+
LIGHT_1 = ...
109+
LIGHT_2 = ...
110+
TEXT_1 = ...
111+
TEXT_2 = ...
112+
MIXED = ...
113+
114+
MSO_THEME_COLOR = MSO_THEME_COLOR_INDEX

0 commit comments

Comments
 (0)