API: Enumerations & Utilities
Enumerations live under power_pptx.enum.*. Every member is an intsubclass carrying the Microsoft object-model value, and most carry a one-line docstring, somember.value and member.__doc__ work everywhere. This page lists what the fork actually ships — it has already drifted from upstream python-pptx 1.0.2 (new members, new enums, a corrected typo), so treat this page rather than the upstream docs as authoritative.
You often don't need them
The fork's convenience constructors take hex strings and short names, so most decks never import an enum at all. Colours accept "#RRGGBB", an (r, g, b) tuple or an RGBColor interchangeably; add_text takesalign=/anchor=, add_arrow takeshead=/tail=/style=/route=,apply_quick_layout takes "legend_position": "bottom", andtrendlines.add takes "linear"/"poly"/….
from power_pptx import Presentation, BBox
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[6])
# Preferred: hex string + short-name kwargs, no imports
slide.shapes.add_text(
BBox.from_inches(1, 1, 4, 1),
text="Quarterly review",
color="#0B5CFF", align="center", anchor="middle",
)
slide.shapes.add_arrow((0, 0), (100, 100), head="triangle", style="dashed")
# Equivalent, but three imports heavier
from power_pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from power_pptx.dml.color import RGBColorReach for an enum when there is no short-name form — add_shape requires a realMSO_SHAPE member, add_chart a real XL_CHART_TYPE — or when you are reading a value back off an existing deck.
Enumeration modules
from power_pptx.enum.shapes import (
MSO_SHAPE, # autoshape geometries: RECTANGLE, OVAL, CHEVRON, ...
MSO_CONNECTOR, # STRAIGHT, ELBOW, CURVE
MSO_SHAPE_TYPE, # AUTO_SHAPE, PICTURE, GROUP, PLACEHOLDER, ...
PP_PLACEHOLDER, # TITLE, BODY, CENTER_TITLE, PICTURE, ...
PP_MEDIA_TYPE, # MOVIE, OTHER
PROG_ID, # DOCX, PPTX, XLSX (OLE objects)
)
from power_pptx.enum.text import (
MSO_AUTO_SIZE, # NONE, SHAPE_TO_FIT_TEXT, TEXT_TO_FIT_SHAPE
PP_ALIGN, # LEFT, CENTER, RIGHT, JUSTIFY, ...
MSO_ANCHOR, # TOP, MIDDLE, BOTTOM (a.k.a. MSO_VERTICAL_ANCHOR)
MSO_UNDERLINE,
)
from power_pptx.enum.chart import (
XL_CHART_TYPE, XL_LEGEND_POSITION, XL_LABEL_POSITION,
XL_TICK_MARK, XL_TICK_LABEL_POSITION, XL_MARKER_STYLE,
XL_TRENDLINE_TYPE, XL_AXIS_CROSSES, XL_CATEGORY_TYPE,
XL_ERROR_BAR_TYPE, XL_ERROR_BAR_INCLUDE, XL_ERROR_BAR_DIRECTION,
)
from power_pptx.enum.dml import (
MSO_FILL, MSO_THEME_COLOR, MSO_LINE_DASH_STYLE, MSO_PATTERN_TYPE,
MSO_COLOR_TYPE, MSO_LINE_END_TYPE, MSO_LINE_END_SIZE,
MSO_PRESET_SHADOW,
BevelPreset, PresetMaterial, # fork: 3-D
)
from power_pptx.enum.presentation import MSO_TRANSITION_TYPE # fork
from power_pptx.enum.action import PP_ACTION # click actions
from power_pptx.enum.lang import MSO_LANGUAGE_ID # 214 locale ids
from power_pptx.enum.animation import PP_ANIM_TRIGGER # fork; alias:
from power_pptx.animation import Trigger # TriggerText
MSO_AUTO_SIZE—NONE,SHAPE_TO_FIT_TEXT,TEXT_TO_FIT_SHAPE,MIXED. The second layer of thespace-aware stack.PP_ALIGN(aliasPP_PARAGRAPH_ALIGNMENT) —LEFT,CENTER,RIGHT,JUSTIFY,JUSTIFY_LOW,DISTRIBUTE,THAI_DISTRIBUTE,MIXED.MSO_ANCHOR(aliasMSO_VERTICAL_ANCHOR) —TOP,MIDDLE,BOTTOM,MIXED.MSO_UNDERLINE(aliasMSO_TEXT_UNDERLINE_TYPE) — 19 members:NONE,SINGLE_LINE,DOUBLE_LINE,HEAVY_LINE,WORDS, theDOT*/DASH*/WAVY*families,MIXED.
Shapes
MSO_SHAPE (alias MSO_AUTO_SHAPE_TYPE) has 182members — the complete preset-geometry set. Rather than reproduce all of them, the families are:
- Basic —
RECTANGLE,ROUNDED_RECTANGLE,OVAL,DIAMOND,PARALLELOGRAM,TRAPEZOID,NON_ISOSCELES_TRAPEZOID,ISOSCELES_TRIANGLE,RIGHT_TRIANGLE,PENTAGON,REGULAR_PENTAGON,HEXAGON,HEPTAGON,OCTAGON,DECAGON,DODECAGON,CROSS,CHORD,ARC,PIE,PIE_WEDGE,BLOCK_ARC,DONUT,CAN,CUBE,BEVEL,FRAME,HALF_FRAME,CORNER,DIAGONAL_STRIPE,PLAQUE,TEAR,MOON,HEART,SUN,CLOUD,LIGHTNING_BOLT,SMILEY_FACE,NO_SYMBOL,FUNNEL,GEAR_6,GEAR_9 - Corner variants —
ROUND_1_RECTANGLE,ROUND_2_SAME_RECTANGLE,ROUND_2_DIAG_RECTANGLE,SNIP_1_RECTANGLE,SNIP_2_SAME_RECTANGLE,SNIP_2_DIAG_RECTANGLE,SNIP_ROUND_RECTANGLE,CORNER_TABS,SQUARE_TABS,PLAQUE_TABS,FOLDED_CORNER - Arrows —
LEFT_ARROW,RIGHT_ARROW,UP_ARROW,DOWN_ARROW,LEFT_RIGHT_ARROW,UP_DOWN_ARROW,QUAD_ARROW,BENT_ARROW,BENT_UP_ARROW,U_TURN_ARROW,SWOOSH_ARROW,NOTCHED_RIGHT_ARROW,STRIPED_RIGHT_ARROW,CHEVRON, theCURVED_*_ARROW,CIRCULAR_ARROW/LEFT_CIRCULAR_ARROW/LEFT_RIGHT_CIRCULAR_ARROW, and the*_ARROW_CALLOUTvariants - Flowchart — 29
FLOWCHART_*members (FLOWCHART_PROCESS,FLOWCHART_DECISION,FLOWCHART_TERMINATOR,FLOWCHART_DATA, …) - Callouts —
RECTANGULAR_CALLOUT,ROUNDED_RECTANGULAR_CALLOUT,OVAL_CALLOUT,CLOUD_CALLOUT,BALLOON, and the 16LINE_CALLOUT_1..4variants - Stars, banners, braces —
STAR_4_POINT…STAR_32_POINT,EXPLOSION1,EXPLOSION2,UP_RIBBON,DOWN_RIBBON,CURVED_UP_RIBBON,CURVED_DOWN_RIBBON,LEFT_RIGHT_RIBBON,VERTICAL_SCROLL,HORIZONTAL_SCROLL,WAVE,DOUBLE_WAVE,LEFT_BRACE,RIGHT_BRACE,DOUBLE_BRACE,LEFT_BRACKET,RIGHT_BRACKET,DOUBLE_BRACKET - Math, chart marks, action buttons —
MATH_PLUS,MATH_MINUS,MATH_MULTIPLY,MATH_DIVIDE,MATH_EQUAL,MATH_NOT_EQUAL;CHART_PLUS,CHART_STAR,CHART_X; 12ACTION_BUTTON_*members
Enumerate the rest at the prompt rather than guessing:
from power_pptx.enum.shapes import MSO_SHAPE
len(list(MSO_SHAPE)) # 182
[m.name for m in MSO_SHAPE][:5]
MSO_SHAPE.CHEVRON.value # 52 — the MsoAutoShapeType int
MSO_SHAPE.CHEVRON.__doc__ # 'Chevron'MSO_CONNECTOR(aliasMSO_CONNECTOR_TYPE) —STRAIGHT,ELBOW,CURVE,MIXED. For an arrow with a head, preferadd_arrow.MSO_SHAPE_TYPE(aliasMSO) — 26 members reported byshape.shape_type:AUTO_SHAPE,CALLOUT,CANVAS,CHART,COMMENT,DIAGRAM,EMBEDDED_OLE_OBJECT,FORM_CONTROL,FREEFORM,GROUP,IGX_GRAPHIC,INK,INK_COMMENT,LINE,LINKED_OLE_OBJECT,LINKED_PICTURE,MEDIA,OLE_CONTROL_OBJECT,PICTURE,PLACEHOLDER,SCRIPT_ANCHOR,TABLE,TEXT_BOX,TEXT_EFFECT,WEB_VIDEO,MIXED.PP_PLACEHOLDER(aliasPP_PLACEHOLDER_TYPE) — 20 members:TITLE,CENTER_TITLE,SUBTITLE,BODY,OBJECT,CHART,TABLE,PICTURE,BITMAP,MEDIA_CLIP,ORG_CHART,SLIDE_IMAGE,SLIDE_NUMBER,DATE,FOOTER,HEADER,VERTICAL_TITLE,VERTICAL_BODY,VERTICAL_OBJECT,MIXED.PP_MEDIA_TYPE—MOVIE,OTHER,MIXED.PROG_ID—DOCX,PPTX,XLSX; used withadd_ole_object.
DrawingML — fills, lines, colours
MSO_FILL(aliasMSO_FILL_TYPE) —BACKGROUND,GRADIENT,GROUP,PATTERNED,PICTURE,SOLID,TEXTURED. Reported byfill.type; set the fill with the matching method (fill.solid(),fill.gradient(), …).MSO_THEME_COLOR(aliasMSO_THEME_COLOR_INDEX) —ACCENT_1…ACCENT_6,BACKGROUND_1,BACKGROUND_2,TEXT_1,TEXT_2,DARK_1,DARK_2,LIGHT_1,LIGHT_2,HYPERLINK,FOLLOWED_HYPERLINK,NOT_THEME_COLOR,MIXED. Assigning tocolor.theme_colorkeeps a shape on-theme when the deck's palette is swapped — see Theme.MSO_COLOR_TYPE—RGB,SCHEME,HSL,PRESET,SCRGB,SYSTEM. Read offcolor.type; onlyRGBguaranteescolor.rgbresolves.MSO_LINE_DASH_STYLE(aliasMSO_LINE) —SOLID,DASH,DASH_DOT,DASH_DOT_DOT,LONG_DASH,LONG_DASH_DOT,ROUND_DOT,SQUARE_DOT,DASH_STYLE_MIXED.MSO_LINE_END_TYPE—NONE,ARROW,DIAMOND,OVAL,STEALTH,TRIANGLE;MSO_LINE_END_SIZE—SMALL,MEDIUM,LARGE.MSO_LINE_CAP(FLAT,ROUND,SQUARE),MSO_LINE_JOIN(BEVEL,MITER,ROUND) andMSO_LINE_COMPOUND(SINGLE,DOUBLE,THICK_THIN,THIN_THICK,TRIPLE) each also have a*_STYLEalias.MSO_PRESET_SHADOW— 20 members,SHADOW_1…SHADOW_20, used byshadow presets.MSO_PATTERN_TYPE(aliasMSO_PATTERN) — 55 members: thePERCENT_5…PERCENT_90screens, theLIGHT_/DARK_/WIDE_/DASHED_*_DIAGONAL,*_HORIZONTALand*_VERTICALfamilies, plusCROSS,DIAGONAL_CROSS,DIAGONAL_BRICK,HORIZONTAL_BRICK,DIVOT,DOTTED_DIAMOND,DOTTED_GRID,LARGE_GRID,SMALL_GRID,LARGE_CHECKER_BOARD,SMALL_CHECKER_BOARD,LARGE_CONFETTI,SMALL_CONFETTI,OUTLINED_DIAMOND,SOLID_DIAMOND,PLAID,SHINGLE,SPHERE,TRELLIS,WAVE,WEAVE,ZIG_ZAG,NARROW_HORIZONTAL,NARROW_VERTICAL,MIXED.
Charts
XL_CHART_TYPE has 73 members. It is the first argument toadd_chart; see Charts for how to pick one.
| Family | Members |
|---|---|
| Column | COLUMN_CLUSTERED, COLUMN_STACKED, COLUMN_STACKED_100 |
| Bar | BAR_CLUSTERED, BAR_STACKED, BAR_STACKED_100 |
| Line | LINE, LINE_STACKED, LINE_STACKED_100, LINE_MARKERS, LINE_MARKERS_STACKED, LINE_MARKERS_STACKED_100 |
| Pie / doughnut | PIE, PIE_EXPLODED, PIE_OF_PIE, BAR_OF_PIE, DOUGHNUT, DOUGHNUT_EXPLODED |
| Area | AREA, AREA_STACKED, AREA_STACKED_100 |
| XY / bubble | XY_SCATTER, XY_SCATTER_LINES, XY_SCATTER_LINES_NO_MARKERS, XY_SCATTER_SMOOTH, XY_SCATTER_SMOOTH_NO_MARKERS, BUBBLE, BUBBLE_THREE_D_EFFECT |
| Radar | RADAR, RADAR_MARKERS, RADAR_FILLED |
| Stock | STOCK_HLC, STOCK_OHLC, STOCK_VHLC, STOCK_VOHLC |
| Surface | SURFACE, SURFACE_WIREFRAME, SURFACE_TOP_VIEW, SURFACE_TOP_VIEW_WIREFRAME |
| 3-D | THREE_D_COLUMN, THREE_D_COLUMN_CLUSTERED, THREE_D_COLUMN_STACKED, THREE_D_COLUMN_STACKED_100, THREE_D_BAR_CLUSTERED, THREE_D_BAR_STACKED, THREE_D_BAR_STACKED_100, THREE_D_LINE, THREE_D_AREA, THREE_D_AREA_STACKED, THREE_D_AREA_STACKED_100, THREE_D_PIE, THREE_D_PIE_EXPLODED |
| Shaped columns/bars | CONE_COL, CONE_COL_CLUSTERED, CONE_COL_STACKED, CONE_COL_STACKED_100, CONE_BAR_CLUSTERED, CONE_BAR_STACKED, CONE_BAR_STACKED_100, and the identical CYLINDER_* and PYRAMID_* sets |
The supporting chart enums, in full:
XL_LEGEND_POSITION—TOP,BOTTOM,LEFT,RIGHT,CORNER,CUSTOM.XL_LABEL_POSITION(also exported asXL_DATA_LABEL_POSITION) —ABOVE,BELOW,BEST_FIT,CENTER,INSIDE_BASE,INSIDE_END,OUTSIDE_END,LEFT,RIGHT,MIXED. Which ones a chart accepts depends on its type: bar/column rejectABOVE/BELOW, line charts rejectINSIDE_END.XL_TICK_MARK—NONE,INSIDE,OUTSIDE,CROSS.XL_TICK_LABEL_POSITION—NONE,LOW,HIGH,NEXT_TO_AXIS.XL_MARKER_STYLE—AUTOMATIC,NONE,CIRCLE,DASH,DIAMOND,DOT,PLUS,SQUARE,STAR,TRIANGLE,X,PICTURE.XL_TRENDLINE_TYPE—LINEAR,POLYNOMIAL,EXPONENTIAL,LOGARITHMIC,POWER,MOVING_AVERAGE.trendlines.add()also accepts the short names"linear","poly","exp","log","power","movingAvg".XL_ERROR_BAR_INCLUDE—FIXED_VALUE,PERCENTAGE,STANDARD_DEVIATION,STANDARD_ERROR,CUSTOM;XL_ERROR_BAR_TYPE—PLUS,MINUS,BOTH;XL_ERROR_BAR_DIRECTION—X,Y.XL_AXIS_CROSSES—AUTOMATIC,MINIMUM,MAXIMUM,CUSTOM.XL_CATEGORY_TYPE—AUTOMATIC_SCALE,CATEGORY_SCALE,TIME_SCALE. Reported bycategory_axis.category_type; date categories produceTIME_SCALE.
Post-fork enums
These do not exist upstream:
MSO_TRANSITION_TYPE(power_pptx.enum.presentation) — 27 members:NONE,FADE,PUSH,WIPE,SPLIT,RANDOM_BAR,CIRCLE,DISSOLVE,CHECKER,DIAMOND,PLUS,WEDGE,ZOOM,NEWSFLASH,COVER,STRIPS,CUT,BLINDS,PULL,RANDOM,WHEEL, and the PowerPoint 2016+p14set —MORPH,FLY_THROUGH,VORTEX,SWITCH,GALLERY,CONVEYOR. SeeAnimations & Transitions.PP_ANIM_TRIGGER(power_pptx.enum.animation, re-exported aspower_pptx.animation.Trigger) —ON_CLICK,WITH_PREVIOUS,AFTER_PREVIOUS.BevelPreset—ANGLE,ART_DECO,CIRCLE,CONVEX,COOL_SLANT,CROSS,DIVOT,HARD_EDGE,NONE,RELAXED_INSET,RIBLET,SLOPE,SOFT_ROUND.PresetMaterial—CLEAR,DK_EDGE,FLAT,MATTE,METAL,PLASTIC,POWDER,SOFT_EDGE,SOFT_METAL,TRANSLUCENT_POWDER,WARM_MATTE,NONE, and the fourLEGACY_*materials.MSO_PATTERN_TYPE.PERCENT_40— upstream ships this member under the misspelt nameERCENT_40. Both resolve to the same member here; the misspelt spelling is retained as a deprecated alias.
Actions and languages
PP_ACTION(power_pptx.enum.action) — 15 members:NONE,HYPERLINK,NAMED_SLIDE,NAMED_SLIDE_SHOW,NEXT_SLIDE,PREVIOUS_SLIDE,FIRST_SLIDE,LAST_SLIDE,LAST_SLIDE_VIEWED,END_SHOW,OPEN_FILE,OLE_VERB,PLAY,RUN_MACRO,RUN_PROGRAM. Read offshape.click_action.action.MSO_LANGUAGE_ID(power_pptx.enum.lang) — 214 locale ids, assigned tofont.language_idto steer PowerPoint's spell-checker.
Gotchas
MSO_PATTERN_TYPE.ERCENT_40is the upstream typo (missing leading "P"). It is kept as an alias for compatibility and raisesDeprecationWarningon access — usePERCENT_40.- Many enums ship under two names. The aliases are the same object, so
MSO_ANCHOR.MIDDLE is MSO_VERTICAL_ANCHOR.MIDDLEisTrue— pick one spelling per codebase and stay with it. MIXEDmembers exist only for parity with the Microsoft object model, where they report "the selection has more than one value". They have no XML representation, so never assign one; treat them as read-only sentinels.- Members are
int-valued, soPP_ALIGN.CENTER == 2isTrue. Don't lean on that — write the member name, which survives an upstream renumbering. add_shapeandadd_chartdo not accept short-name strings; a lower-case"rounded_rectangle"raisesKeyError. Pass the enum member.
power_pptx.util lengths
from power_pptx.util import Inches, Pt, Cm, Mm, Emu, Length
Inches(1) + Pt(72) == Inches(2) # Length arithmetic works
(Inches(10) - Inches(0.4)) / 2 # floats coerce at the setter
from power_pptx.dml.color import RGBColor
RGBColor(0x0B, 0x5C, 0xFF)
RGBColor.from_string("0B5CFF")
# fork: alpha lives on the colour proxies (fill / font / line), not RGBColor
from power_pptx import Presentation, BBox
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[6])
shape = slide.shapes.add_text(BBox.from_inches(1, 1, 3, 1), text="Tinted")
shape.fill.solid()
shape.fill.fore_color.rgb = RGBColor(0x0B, 0x5C, 0xFF)
shape.fill.fore_color.alpha = 0.5 # fork: alpha tintUpstream reference
The python-pptx enum documentationcovers the same enums as of upstream 1.0.2 and carries a per-member prose description for the inherited ones. It predates everything in Post-fork enums above and still documents the ERCENT_40 misspelling as canonical, so where the two disagree, this page wins. The fork's own changes are logged in thechangelog.