power-pptx

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 RGBColor

Reach 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              #   Trigger

Text

  • MSO_AUTO_SIZENONE, SHAPE_TO_FIT_TEXT,TEXT_TO_FIT_SHAPE, MIXED. The second layer of thespace-aware stack.
  • PP_ALIGN (alias PP_PARAGRAPH_ALIGNMENT) — LEFT,CENTER, RIGHT, JUSTIFY, JUSTIFY_LOW,DISTRIBUTE, THAI_DISTRIBUTE, MIXED.
  • MSO_ANCHOR (alias MSO_VERTICAL_ANCHOR) — TOP,MIDDLE, BOTTOM, MIXED.
  • MSO_UNDERLINE (alias MSO_TEXT_UNDERLINE_TYPE) — 19 members:NONE, SINGLE_LINE, DOUBLE_LINE,HEAVY_LINE, WORDS, the DOT* / 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:

  • BasicRECTANGLE, 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 variantsROUND_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
  • ArrowsLEFT_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, the CURVED_*_ARROW, CIRCULAR_ARROW /LEFT_CIRCULAR_ARROW / LEFT_RIGHT_CIRCULAR_ARROW, and the*_ARROW_CALLOUT variants
  • Flowchart — 29 FLOWCHART_* members (FLOWCHART_PROCESS, FLOWCHART_DECISION,FLOWCHART_TERMINATOR, FLOWCHART_DATA, …)
  • CalloutsRECTANGULAR_CALLOUT,ROUNDED_RECTANGULAR_CALLOUT, OVAL_CALLOUT,CLOUD_CALLOUT, BALLOON, and the 16LINE_CALLOUT_1..4 variants
  • Stars, banners, bracesSTAR_4_POINTSTAR_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 buttonsMATH_PLUS,MATH_MINUS, MATH_MULTIPLY, MATH_DIVIDE,MATH_EQUAL, MATH_NOT_EQUAL; CHART_PLUS,CHART_STAR, CHART_X; 12 ACTION_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 (alias MSO_CONNECTOR_TYPE) —STRAIGHT, ELBOW, CURVE, MIXED. For an arrow with a head, prefer add_arrow.
  • MSO_SHAPE_TYPE (alias MSO) — 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 (alias PP_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_TYPEMOVIE, OTHER, MIXED.
  • PROG_IDDOCX, PPTX, XLSX; used withadd_ole_object.

DrawingML — fills, lines, colours

  • MSO_FILL (alias MSO_FILL_TYPE) — BACKGROUND,GRADIENT, GROUP, PATTERNED, PICTURE,SOLID, TEXTURED. Reported by fill.type; set the fill with the matching method (fill.solid(), fill.gradient(), …).
  • MSO_THEME_COLOR (alias MSO_THEME_COLOR_INDEX) —ACCENT_1ACCENT_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 to color.theme_color keeps a shape on-theme when the deck's palette is swapped — see Theme.
  • MSO_COLOR_TYPERGB, SCHEME, HSL,PRESET, SCRGB, SYSTEM. Read offcolor.type; only RGB guarantees color.rgb resolves.
  • MSO_LINE_DASH_STYLE (alias MSO_LINE) — SOLID,DASH, DASH_DOT, DASH_DOT_DOT,LONG_DASH, LONG_DASH_DOT, ROUND_DOT,SQUARE_DOT, DASH_STYLE_MIXED.
  • MSO_LINE_END_TYPENONE, ARROW,DIAMOND, OVAL, STEALTH, TRIANGLE;MSO_LINE_END_SIZESMALL, 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*_STYLE alias.
  • MSO_PRESET_SHADOW — 20 members, SHADOW_1SHADOW_20, used byshadow presets.
  • MSO_PATTERN_TYPE (alias MSO_PATTERN) — 55 members: thePERCENT_5PERCENT_90 screens, theLIGHT_/DARK_/WIDE_/DASHED_*_DIAGONAL, *_HORIZONTAL and *_VERTICAL families, plus CROSS, 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.

FamilyMembers
ColumnCOLUMN_CLUSTERED, COLUMN_STACKED, COLUMN_STACKED_100
BarBAR_CLUSTERED, BAR_STACKED, BAR_STACKED_100
LineLINE, LINE_STACKED, LINE_STACKED_100, LINE_MARKERS, LINE_MARKERS_STACKED, LINE_MARKERS_STACKED_100
Pie / doughnutPIE, PIE_EXPLODED, PIE_OF_PIE, BAR_OF_PIE, DOUGHNUT, DOUGHNUT_EXPLODED
AreaAREA, AREA_STACKED, AREA_STACKED_100
XY / bubbleXY_SCATTER, XY_SCATTER_LINES, XY_SCATTER_LINES_NO_MARKERS, XY_SCATTER_SMOOTH, XY_SCATTER_SMOOTH_NO_MARKERS, BUBBLE, BUBBLE_THREE_D_EFFECT
RadarRADAR, RADAR_MARKERS, RADAR_FILLED
StockSTOCK_HLC, STOCK_OHLC, STOCK_VHLC, STOCK_VOHLC
SurfaceSURFACE, SURFACE_WIREFRAME, SURFACE_TOP_VIEW, SURFACE_TOP_VIEW_WIREFRAME
3-DTHREE_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/barsCONE_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_POSITIONTOP, 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 reject INSIDE_END.
  • XL_TICK_MARKNONE, INSIDE,OUTSIDE, CROSS.
  • XL_TICK_LABEL_POSITIONNONE, LOW,HIGH, NEXT_TO_AXIS.
  • XL_MARKER_STYLEAUTOMATIC, NONE,CIRCLE, DASH, DIAMOND, DOT,PLUS, SQUARE, STAR, TRIANGLE,X, PICTURE.
  • XL_TRENDLINE_TYPELINEAR, POLYNOMIAL,EXPONENTIAL, LOGARITHMIC, POWER,MOVING_AVERAGE. trendlines.add() also accepts the short names"linear", "poly", "exp", "log","power", "movingAvg".
  • XL_ERROR_BAR_INCLUDEFIXED_VALUE, PERCENTAGE,STANDARD_DEVIATION, STANDARD_ERROR, CUSTOM;XL_ERROR_BAR_TYPEPLUS, MINUS,BOTH; XL_ERROR_BAR_DIRECTIONX, Y.
  • XL_AXIS_CROSSESAUTOMATIC, MINIMUM,MAXIMUM, CUSTOM.
  • XL_CATEGORY_TYPEAUTOMATIC_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+ p14 set —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.
  • BevelPresetANGLE, ART_DECO,CIRCLE, CONVEX, COOL_SLANT, CROSS,DIVOT, HARD_EDGE, NONE,RELAXED_INSET, RIBLET, SLOPE,SOFT_ROUND.
  • PresetMaterialCLEAR, 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 name ERCENT_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 to font.language_id to steer PowerPoint's spell-checker.

Gotchas

  • MSO_PATTERN_TYPE.ERCENT_40 is the upstream typo (missing leading "P"). It is kept as an alias for compatibility and raises DeprecationWarning on access — use PERCENT_40.
  • Many enums ship under two names. The aliases are the same object, soMSO_ANCHOR.MIDDLE is MSO_VERTICAL_ANCHOR.MIDDLE is True — pick one spelling per codebase and stay with it.
  • MIXED members 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, so PP_ALIGN.CENTER == 2 isTrue. Don't lean on that — write the member name, which survives an upstream renumbering.
  • add_shape and add_chart do not accept short-name strings; a lower-case "rounded_rectangle" raises KeyError. 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 tint

Upstream 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.