python-pptx2 2.13.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pptx2/__init__.py +152 -0
- pptx2/_color.py +75 -0
- pptx2/_slide_importer.py +597 -0
- pptx2/_svg.py +155 -0
- pptx2/_template_applier.py +292 -0
- pptx2/_textstyle.py +187 -0
- pptx2/accessibility.py +365 -0
- pptx2/action.py +270 -0
- pptx2/animation.py +2237 -0
- pptx2/api.py +49 -0
- pptx2/audit.py +258 -0
- pptx2/chart/__init__.py +0 -0
- pptx2/chart/analytics.py +381 -0
- pptx2/chart/axis.py +543 -0
- pptx2/chart/category.py +200 -0
- pptx2/chart/chart.py +670 -0
- pptx2/chart/data.py +864 -0
- pptx2/chart/datalabel.py +406 -0
- pptx2/chart/legend.py +86 -0
- pptx2/chart/marker.py +70 -0
- pptx2/chart/palettes.py +129 -0
- pptx2/chart/plot.py +462 -0
- pptx2/chart/point.py +101 -0
- pptx2/chart/quick_layouts.py +325 -0
- pptx2/chart/series.py +334 -0
- pptx2/chart/xlsx.py +272 -0
- pptx2/chart/xmlwriter.py +1845 -0
- pptx2/compose/__init__.py +28 -0
- pptx2/compose/from_spec.py +1094 -0
- pptx2/design/__init__.py +8 -0
- pptx2/design/components.py +607 -0
- pptx2/design/figures.py +389 -0
- pptx2/design/layout.py +370 -0
- pptx2/design/recipes.py +1967 -0
- pptx2/design/style.py +209 -0
- pptx2/design/tokens.py +915 -0
- pptx2/diagrams.py +754 -0
- pptx2/dml/__init__.py +0 -0
- pptx2/dml/chtfmt.py +40 -0
- pptx2/dml/color.py +496 -0
- pptx2/dml/effect.py +909 -0
- pptx2/dml/fill.py +691 -0
- pptx2/dml/line.py +287 -0
- pptx2/dml/picture.py +212 -0
- pptx2/dml/three_d.py +381 -0
- pptx2/enum/__init__.py +0 -0
- pptx2/enum/action.py +71 -0
- pptx2/enum/animation.py +31 -0
- pptx2/enum/base.py +218 -0
- pptx2/enum/chart.py +574 -0
- pptx2/enum/dml.py +740 -0
- pptx2/enum/lang.py +685 -0
- pptx2/enum/presentation.py +133 -0
- pptx2/enum/shapes.py +1029 -0
- pptx2/enum/text.py +230 -0
- pptx2/exc.py +42 -0
- pptx2/formats.py +139 -0
- pptx2/geometry.py +420 -0
- pptx2/inherit.py +109 -0
- pptx2/lint.py +2256 -0
- pptx2/math.py +177 -0
- pptx2/media.py +197 -0
- pptx2/opc/__init__.py +0 -0
- pptx2/opc/constants.py +332 -0
- pptx2/opc/oxml.py +188 -0
- pptx2/opc/package.py +762 -0
- pptx2/opc/packuri.py +109 -0
- pptx2/opc/serialized.py +296 -0
- pptx2/opc/shared.py +20 -0
- pptx2/opc/spec.py +45 -0
- pptx2/oxml/__init__.py +555 -0
- pptx2/oxml/action.py +53 -0
- pptx2/oxml/chart/__init__.py +0 -0
- pptx2/oxml/chart/axis.py +337 -0
- pptx2/oxml/chart/chart.py +481 -0
- pptx2/oxml/chart/datalabel.py +253 -0
- pptx2/oxml/chart/legend.py +72 -0
- pptx2/oxml/chart/marker.py +61 -0
- pptx2/oxml/chart/plot.py +365 -0
- pptx2/oxml/chart/series.py +425 -0
- pptx2/oxml/chart/shared.py +220 -0
- pptx2/oxml/coreprops.py +288 -0
- pptx2/oxml/dml/__init__.py +0 -0
- pptx2/oxml/dml/color.py +135 -0
- pptx2/oxml/dml/effect.py +213 -0
- pptx2/oxml/dml/fill.py +316 -0
- pptx2/oxml/dml/line.py +12 -0
- pptx2/oxml/dml/three_d.py +110 -0
- pptx2/oxml/ns.py +135 -0
- pptx2/oxml/presentation.py +313 -0
- pptx2/oxml/shapes/__init__.py +19 -0
- pptx2/oxml/shapes/autoshape.py +467 -0
- pptx2/oxml/shapes/connector.py +107 -0
- pptx2/oxml/shapes/graphfrm.py +347 -0
- pptx2/oxml/shapes/groupshape.py +329 -0
- pptx2/oxml/shapes/picture.py +270 -0
- pptx2/oxml/shapes/shared.py +577 -0
- pptx2/oxml/simpletypes.py +1027 -0
- pptx2/oxml/slide.py +563 -0
- pptx2/oxml/table.py +650 -0
- pptx2/oxml/text.py +815 -0
- pptx2/oxml/theme.py +36 -0
- pptx2/oxml/xmlchemy.py +717 -0
- pptx2/package.py +222 -0
- pptx2/parts/__init__.py +0 -0
- pptx2/parts/chart.py +95 -0
- pptx2/parts/coreprops.py +167 -0
- pptx2/parts/diagram.py +37 -0
- pptx2/parts/embeddedpackage.py +93 -0
- pptx2/parts/image.py +275 -0
- pptx2/parts/media.py +37 -0
- pptx2/parts/presentation.py +136 -0
- pptx2/parts/slide.py +371 -0
- pptx2/presentation.py +408 -0
- pptx2/py.typed +0 -0
- pptx2/render.py +586 -0
- pptx2/section.py +272 -0
- pptx2/shapes/__init__.py +26 -0
- pptx2/shapes/autoshape.py +442 -0
- pptx2/shapes/base.py +1078 -0
- pptx2/shapes/connector.py +297 -0
- pptx2/shapes/freeform.py +337 -0
- pptx2/shapes/graphfrm.py +316 -0
- pptx2/shapes/group.py +264 -0
- pptx2/shapes/picture.py +422 -0
- pptx2/shapes/placeholder.py +468 -0
- pptx2/shapes/shapetree.py +2027 -0
- pptx2/shared.py +82 -0
- pptx2/skill/SKILL.md +450 -0
- pptx2/skill/__init__.py +78 -0
- pptx2/skill/__main__.py +64 -0
- pptx2/skill/references/animations.md +189 -0
- pptx2/skill/references/basics.md +421 -0
- pptx2/skill/references/charts.md +254 -0
- pptx2/skill/references/compose.md +234 -0
- pptx2/skill/references/design.md +366 -0
- pptx2/skill/references/effects.md +249 -0
- pptx2/skill/references/end-to-end-deck.md +231 -0
- pptx2/skill/references/geometry-and-arrows.md +334 -0
- pptx2/skill/references/lint.md +275 -0
- pptx2/skill/references/math.md +86 -0
- pptx2/skill/references/picture-effects.md +129 -0
- pptx2/skill/references/render.md +151 -0
- pptx2/skill/references/smart-art.md +75 -0
- pptx2/skill/references/space-aware-authoring.md +249 -0
- pptx2/skill/references/tables.md +244 -0
- pptx2/skill/references/theme.md +127 -0
- pptx2/skill/references/three-d.md +109 -0
- pptx2/skill/references/transitions.md +100 -0
- pptx2/slide.py +1244 -0
- pptx2/smart_art.py +220 -0
- pptx2/spec.py +633 -0
- pptx2/table.py +1181 -0
- pptx2/table_styles.py +184 -0
- pptx2/templates/default.pptx +0 -0
- pptx2/templates/docx-icon.emf +0 -0
- pptx2/templates/generic-icon.emf +0 -0
- pptx2/templates/notes.xml +23 -0
- pptx2/templates/notesMaster.xml +352 -0
- pptx2/templates/pptx-icon.emf +0 -0
- pptx2/templates/theme.xml +321 -0
- pptx2/templates/xlsx-icon.emf +0 -0
- pptx2/text/__init__.py +0 -0
- pptx2/text/fonts.py +482 -0
- pptx2/text/layout.py +374 -0
- pptx2/text/text.py +1272 -0
- pptx2/theme.py +721 -0
- pptx2/types.py +36 -0
- pptx2/util.py +263 -0
- python_pptx2-2.13.0.dist-info/METADATA +351 -0
- python_pptx2-2.13.0.dist-info/RECORD +175 -0
- python_pptx2-2.13.0.dist-info/WHEEL +5 -0
- python_pptx2-2.13.0.dist-info/entry_points.txt +3 -0
- python_pptx2-2.13.0.dist-info/licenses/LICENSE +22 -0
- python_pptx2-2.13.0.dist-info/top_level.txt +1 -0
pptx2/__init__.py
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"""Initialization module for python-pptx2 package."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import sys
|
|
6
|
+
from typing import TYPE_CHECKING
|
|
7
|
+
|
|
8
|
+
import pptx2.exc as exceptions
|
|
9
|
+
from pptx2.api import Presentation
|
|
10
|
+
from pptx2.audit import AuditReport, audit
|
|
11
|
+
from pptx2.geometry import BBox
|
|
12
|
+
from pptx2.design.components import (
|
|
13
|
+
ArticleCard,
|
|
14
|
+
Gauge,
|
|
15
|
+
KpiCard,
|
|
16
|
+
ProgressBar,
|
|
17
|
+
StatStrip,
|
|
18
|
+
StatusPill,
|
|
19
|
+
add_article_card,
|
|
20
|
+
add_gauge,
|
|
21
|
+
add_kpi_card,
|
|
22
|
+
add_progress_bar,
|
|
23
|
+
add_stat_strip,
|
|
24
|
+
add_status_pill,
|
|
25
|
+
)
|
|
26
|
+
from pptx2.design.figures import (
|
|
27
|
+
FigureBackendUnavailable,
|
|
28
|
+
add_html_figure,
|
|
29
|
+
add_matplotlib_figure,
|
|
30
|
+
add_plotly_figure,
|
|
31
|
+
add_svg_figure,
|
|
32
|
+
)
|
|
33
|
+
from pptx2.math import MathBackendUnavailable
|
|
34
|
+
from pptx2.opc.constants import CONTENT_TYPE as CT
|
|
35
|
+
from pptx2.opc.package import PartFactory
|
|
36
|
+
from pptx2.parts.chart import ChartPart
|
|
37
|
+
from pptx2.parts.coreprops import CorePropertiesPart
|
|
38
|
+
from pptx2.parts.diagram import (
|
|
39
|
+
DiagramColorsPart,
|
|
40
|
+
DiagramDataPart,
|
|
41
|
+
DiagramLayoutPart,
|
|
42
|
+
DiagramStylePart,
|
|
43
|
+
)
|
|
44
|
+
from pptx2.parts.image import ImagePart
|
|
45
|
+
from pptx2.parts.media import MediaPart
|
|
46
|
+
from pptx2.parts.presentation import PresentationPart
|
|
47
|
+
from pptx2.parts.slide import (
|
|
48
|
+
NotesMasterPart,
|
|
49
|
+
NotesSlidePart,
|
|
50
|
+
SlideLayoutPart,
|
|
51
|
+
SlideMasterPart,
|
|
52
|
+
SlidePart,
|
|
53
|
+
ThemePart,
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
if TYPE_CHECKING:
|
|
57
|
+
from pptx2.opc.package import Part
|
|
58
|
+
|
|
59
|
+
__version__ = "2.13.0"
|
|
60
|
+
|
|
61
|
+
sys.modules["pptx2.exceptions"] = exceptions
|
|
62
|
+
del sys
|
|
63
|
+
|
|
64
|
+
__all__ = [
|
|
65
|
+
"Presentation",
|
|
66
|
+
# First-class rectangular region value object (immutable, splattable
|
|
67
|
+
# into add_shape / add_textbox / add_picture).
|
|
68
|
+
"BBox",
|
|
69
|
+
# One-call deck audit (lint + picture + empty-slide + font + size).
|
|
70
|
+
"audit",
|
|
71
|
+
"AuditReport",
|
|
72
|
+
# Figure adapters — embed Plotly / Matplotlib / SVG / HTML output as
|
|
73
|
+
# slide pictures. Third-party deps are imported lazily on first call.
|
|
74
|
+
"add_plotly_figure",
|
|
75
|
+
"add_matplotlib_figure",
|
|
76
|
+
"add_svg_figure",
|
|
77
|
+
"add_html_figure",
|
|
78
|
+
"FigureBackendUnavailable",
|
|
79
|
+
"MathBackendUnavailable",
|
|
80
|
+
# Shape-level building blocks built on the design tokens.
|
|
81
|
+
"add_kpi_card",
|
|
82
|
+
"add_progress_bar",
|
|
83
|
+
"add_gauge",
|
|
84
|
+
"add_status_pill",
|
|
85
|
+
"add_stat_strip",
|
|
86
|
+
"add_article_card",
|
|
87
|
+
"KpiCard",
|
|
88
|
+
"ProgressBar",
|
|
89
|
+
"Gauge",
|
|
90
|
+
"StatusPill",
|
|
91
|
+
"StatStrip",
|
|
92
|
+
"ArticleCard",
|
|
93
|
+
]
|
|
94
|
+
|
|
95
|
+
content_type_to_part_class_map: dict[str, type[Part]] = {
|
|
96
|
+
CT.PML_PRESENTATION_MAIN: PresentationPart,
|
|
97
|
+
CT.PML_PRES_MACRO_MAIN: PresentationPart,
|
|
98
|
+
CT.PML_TEMPLATE_MAIN: PresentationPart,
|
|
99
|
+
CT.PML_SLIDESHOW_MAIN: PresentationPart,
|
|
100
|
+
CT.OPC_CORE_PROPERTIES: CorePropertiesPart,
|
|
101
|
+
CT.PML_NOTES_MASTER: NotesMasterPart,
|
|
102
|
+
CT.PML_NOTES_SLIDE: NotesSlidePart,
|
|
103
|
+
CT.PML_SLIDE: SlidePart,
|
|
104
|
+
CT.PML_SLIDE_LAYOUT: SlideLayoutPart,
|
|
105
|
+
CT.PML_SLIDE_MASTER: SlideMasterPart,
|
|
106
|
+
CT.OFC_THEME: ThemePart,
|
|
107
|
+
CT.DML_CHART: ChartPart,
|
|
108
|
+
CT.DML_DIAGRAM_DATA: DiagramDataPart,
|
|
109
|
+
CT.DML_DIAGRAM_LAYOUT: DiagramLayoutPart,
|
|
110
|
+
CT.DML_DIAGRAM_STYLE: DiagramStylePart,
|
|
111
|
+
CT.DML_DIAGRAM_COLORS: DiagramColorsPart,
|
|
112
|
+
CT.BMP: ImagePart,
|
|
113
|
+
CT.GIF: ImagePart,
|
|
114
|
+
CT.JPEG: ImagePart,
|
|
115
|
+
CT.MS_PHOTO: ImagePart,
|
|
116
|
+
CT.PNG: ImagePart,
|
|
117
|
+
CT.TIFF: ImagePart,
|
|
118
|
+
CT.X_EMF: ImagePart,
|
|
119
|
+
CT.X_WMF: ImagePart,
|
|
120
|
+
CT.ASF: MediaPart,
|
|
121
|
+
CT.AVI: MediaPart,
|
|
122
|
+
CT.MOV: MediaPart,
|
|
123
|
+
CT.MP4: MediaPart,
|
|
124
|
+
CT.MPG: MediaPart,
|
|
125
|
+
CT.MS_VIDEO: MediaPart,
|
|
126
|
+
CT.SWF: MediaPart,
|
|
127
|
+
CT.VIDEO: MediaPart,
|
|
128
|
+
CT.WMV: MediaPart,
|
|
129
|
+
CT.X_MS_VIDEO: MediaPart,
|
|
130
|
+
# -- accommodate "image/jpg" as an alias for "image/jpeg" --
|
|
131
|
+
"image/jpg": ImagePart,
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
PartFactory.part_type_for.update(content_type_to_part_class_map)
|
|
135
|
+
|
|
136
|
+
del (
|
|
137
|
+
ChartPart,
|
|
138
|
+
CorePropertiesPart,
|
|
139
|
+
DiagramColorsPart,
|
|
140
|
+
DiagramDataPart,
|
|
141
|
+
DiagramLayoutPart,
|
|
142
|
+
DiagramStylePart,
|
|
143
|
+
ImagePart,
|
|
144
|
+
MediaPart,
|
|
145
|
+
SlidePart,
|
|
146
|
+
SlideLayoutPart,
|
|
147
|
+
SlideMasterPart,
|
|
148
|
+
ThemePart,
|
|
149
|
+
PresentationPart,
|
|
150
|
+
CT,
|
|
151
|
+
PartFactory,
|
|
152
|
+
)
|
pptx2/_color.py
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"""Internal canonical colour-coercion helper.
|
|
2
|
+
|
|
3
|
+
Most public colour-accepting setters in python-pptx2 historically accepted
|
|
4
|
+
exactly one shape (``RGBColor`` for ``shape.fill.fore_color.rgb``, hex
|
|
5
|
+
strings for ``linear_gradient``, mixed for ``chart.apply_palette``). The
|
|
6
|
+
asymmetry was a category-of-bug for both human and LLM authoring.
|
|
7
|
+
|
|
8
|
+
:func:`coerce_color` accepts every shape any documented surface in the
|
|
9
|
+
library has accepted historically, so a public setter that routes a
|
|
10
|
+
caller-supplied colour through this helper "just works" with hex
|
|
11
|
+
strings, ``RGBColor`` instances, and 3-tuples.
|
|
12
|
+
|
|
13
|
+
Supported inputs
|
|
14
|
+
~~~~~~~~~~~~~~~~
|
|
15
|
+
|
|
16
|
+
* :class:`~pptx2.dml.color.RGBColor` — returned as-is.
|
|
17
|
+
* ``str`` — 6-digit hex, with or without leading ``"#"``. 3-digit
|
|
18
|
+
shorthand (``"#FFF"``) is **not** accepted; write the full form.
|
|
19
|
+
* 3-tuple / 3-list of ``int`` in ``[0, 255]`` — positional R, G, B.
|
|
20
|
+
|
|
21
|
+
Anything else raises :class:`TypeError` with a message that points to
|
|
22
|
+
this helper, so callers see one consistent error regardless of which
|
|
23
|
+
public setter they hit.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
from __future__ import annotations
|
|
27
|
+
|
|
28
|
+
from typing import Any
|
|
29
|
+
|
|
30
|
+
from pptx2.dml.color import RGBColor
|
|
31
|
+
|
|
32
|
+
ColorLike = "RGBColor | str | tuple[int, int, int] | list[int]"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def coerce_color(value: Any) -> RGBColor:
|
|
36
|
+
"""Coerce *value* to an :class:`RGBColor`.
|
|
37
|
+
|
|
38
|
+
See module docstring for the accepted shapes.
|
|
39
|
+
"""
|
|
40
|
+
if isinstance(value, RGBColor):
|
|
41
|
+
return value
|
|
42
|
+
if isinstance(value, str):
|
|
43
|
+
s = value.lstrip("#")
|
|
44
|
+
if len(s) != 6:
|
|
45
|
+
raise ValueError(
|
|
46
|
+
"color hex string must be 6 digits "
|
|
47
|
+
"(e.g. '#3C2F80' or '3C2F80'); got %r" % value
|
|
48
|
+
)
|
|
49
|
+
try:
|
|
50
|
+
return RGBColor.from_hex(s)
|
|
51
|
+
except ValueError as exc:
|
|
52
|
+
raise ValueError("invalid color hex string %r: %s" % (value, exc)) from exc
|
|
53
|
+
if isinstance(value, (tuple, list)) and len(value) == 3:
|
|
54
|
+
# Reject floats, numeric strings, and bools rather than
|
|
55
|
+
# silently coercing via ``int()`` — the documented contract is
|
|
56
|
+
# "3-tuple of int", and the previous ``RGBColor(*value)`` path
|
|
57
|
+
# rejected non-int inputs too. ``bool`` is a subclass of
|
|
58
|
+
# ``int`` in Python, so guard explicitly so ``(True, False,
|
|
59
|
+
# True)`` doesn't silently resolve to ``RGBColor(1, 0, 1)``.
|
|
60
|
+
for c in value:
|
|
61
|
+
if not isinstance(c, int) or isinstance(c, bool):
|
|
62
|
+
raise TypeError(
|
|
63
|
+
"color 3-tuple must contain ints in [0, 255]; got %r"
|
|
64
|
+
% (value,)
|
|
65
|
+
)
|
|
66
|
+
return RGBColor(value[0], value[1], value[2])
|
|
67
|
+
raise TypeError(
|
|
68
|
+
"expected a color-like value (RGBColor, '#RRGGBB' hex string, "
|
|
69
|
+
"or 3-tuple of ints); got %r" % (value,)
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
# Re-export under the historical underscore name as well so
|
|
74
|
+
# ``from pptx2._color import _coerce`` works.
|
|
75
|
+
_coerce = coerce_color
|