pptx/shape-preset-geometry

Every python-pptx MSO_SHAPE preset round-trips to the ECMA-376 <a:prstGeom/@prst> token recorded on the enum member's xml_value. This manifest is a parameterised family: one manifest file expands into one case per MSO_SHAPE member (~180 cases), each backed by a distinct fixture pptx/shape-preset-geometry--<id>.pptx generated from the same gen_shape_preset_geometry.py script parameterised by --preset MSO_SHAPE_NAME.

Cases (182)

Feature IDAxis bindingspython-pptxpptxjs
pptx/shape-preset-geometry--action-button-back-or-previouspreset=action-button-back-or-previouspass
pptx/shape-preset-geometry--action-button-beginningpreset=action-button-beginningpass
pptx/shape-preset-geometry--action-button-custompreset=action-button-custompass
pptx/shape-preset-geometry--action-button-documentpreset=action-button-documentpass
pptx/shape-preset-geometry--action-button-endpreset=action-button-endpass
pptx/shape-preset-geometry--action-button-forward-or-nextpreset=action-button-forward-or-nextpass
pptx/shape-preset-geometry--action-button-helppreset=action-button-helppass
pptx/shape-preset-geometry--action-button-homepreset=action-button-homepass
pptx/shape-preset-geometry--action-button-informationpreset=action-button-informationpass
pptx/shape-preset-geometry--action-button-moviepreset=action-button-moviepass
pptx/shape-preset-geometry--action-button-returnpreset=action-button-returnpass
pptx/shape-preset-geometry--action-button-soundpreset=action-button-soundpass
pptx/shape-preset-geometry--arcpreset=arcpass
pptx/shape-preset-geometry--balloonpreset=balloonpass
pptx/shape-preset-geometry--bent-arrowpreset=bent-arrowpass
pptx/shape-preset-geometry--bent-up-arrowpreset=bent-up-arrowpass
pptx/shape-preset-geometry--bevelpreset=bevelpass
pptx/shape-preset-geometry--block-arcpreset=block-arcpass
pptx/shape-preset-geometry--canpreset=canpass
pptx/shape-preset-geometry--chart-pluspreset=chart-pluspass
pptx/shape-preset-geometry--chart-starpreset=chart-starpass
pptx/shape-preset-geometry--chart-xpreset=chart-xpass
pptx/shape-preset-geometry--chevronpreset=chevronpass
pptx/shape-preset-geometry--chordpreset=chordpass
pptx/shape-preset-geometry--circular-arrowpreset=circular-arrowpass
pptx/shape-preset-geometry--cloudpreset=cloudpass
pptx/shape-preset-geometry--cloud-calloutpreset=cloud-calloutpass
pptx/shape-preset-geometry--cornerpreset=cornerpass
pptx/shape-preset-geometry--corner-tabspreset=corner-tabspass
pptx/shape-preset-geometry--crosspreset=crosspass
pptx/shape-preset-geometry--cubepreset=cubepass
pptx/shape-preset-geometry--curved-down-arrowpreset=curved-down-arrowpass
pptx/shape-preset-geometry--curved-down-ribbonpreset=curved-down-ribbonpass
pptx/shape-preset-geometry--curved-left-arrowpreset=curved-left-arrowpass
pptx/shape-preset-geometry--curved-right-arrowpreset=curved-right-arrowpass
pptx/shape-preset-geometry--curved-up-arrowpreset=curved-up-arrowpass
pptx/shape-preset-geometry--curved-up-ribbonpreset=curved-up-ribbonpass
pptx/shape-preset-geometry--decagonpreset=decagonpass
pptx/shape-preset-geometry--diagonal-stripepreset=diagonal-stripepass
pptx/shape-preset-geometry--diamondpreset=diamondpass
pptx/shape-preset-geometry--dodecagonpreset=dodecagonpass
pptx/shape-preset-geometry--donutpreset=donutpass
pptx/shape-preset-geometry--double-bracepreset=double-bracepass
pptx/shape-preset-geometry--double-bracketpreset=double-bracketpass
pptx/shape-preset-geometry--double-wavepreset=double-wavepass
pptx/shape-preset-geometry--down-arrowpreset=down-arrowpass
pptx/shape-preset-geometry--down-arrow-calloutpreset=down-arrow-calloutpass
pptx/shape-preset-geometry--down-ribbonpreset=down-ribbonpass
pptx/shape-preset-geometry--explosion1preset=explosion1pass
pptx/shape-preset-geometry--explosion2preset=explosion2pass
pptx/shape-preset-geometry--flowchart-alternate-processpreset=flowchart-alternate-processpass
pptx/shape-preset-geometry--flowchart-cardpreset=flowchart-cardpass
pptx/shape-preset-geometry--flowchart-collatepreset=flowchart-collatepass
pptx/shape-preset-geometry--flowchart-connectorpreset=flowchart-connectorpass
pptx/shape-preset-geometry--flowchart-datapreset=flowchart-datapass
pptx/shape-preset-geometry--flowchart-decisionpreset=flowchart-decisionpass
pptx/shape-preset-geometry--flowchart-delaypreset=flowchart-delaypass
pptx/shape-preset-geometry--flowchart-direct-access-storagepreset=flowchart-direct-access-storagepass
pptx/shape-preset-geometry--flowchart-displaypreset=flowchart-displaypass
pptx/shape-preset-geometry--flowchart-documentpreset=flowchart-documentpass
pptx/shape-preset-geometry--flowchart-extractpreset=flowchart-extractpass
pptx/shape-preset-geometry--flowchart-internal-storagepreset=flowchart-internal-storagepass
pptx/shape-preset-geometry--flowchart-magnetic-diskpreset=flowchart-magnetic-diskpass
pptx/shape-preset-geometry--flowchart-manual-inputpreset=flowchart-manual-inputpass
pptx/shape-preset-geometry--flowchart-manual-operationpreset=flowchart-manual-operationpass
pptx/shape-preset-geometry--flowchart-mergepreset=flowchart-mergepass
pptx/shape-preset-geometry--flowchart-multidocumentpreset=flowchart-multidocumentpass
pptx/shape-preset-geometry--flowchart-offline-storagepreset=flowchart-offline-storagepass
pptx/shape-preset-geometry--flowchart-offpage-connectorpreset=flowchart-offpage-connectorpass
pptx/shape-preset-geometry--flowchart-orpreset=flowchart-orpass
pptx/shape-preset-geometry--flowchart-predefined-processpreset=flowchart-predefined-processpass
pptx/shape-preset-geometry--flowchart-preparationpreset=flowchart-preparationpass
pptx/shape-preset-geometry--flowchart-processpreset=flowchart-processpass
pptx/shape-preset-geometry--flowchart-punched-tapepreset=flowchart-punched-tapepass
pptx/shape-preset-geometry--flowchart-sequential-access-storagepreset=flowchart-sequential-access-storagepass
pptx/shape-preset-geometry--flowchart-sortpreset=flowchart-sortpass
pptx/shape-preset-geometry--flowchart-stored-datapreset=flowchart-stored-datapass
pptx/shape-preset-geometry--flowchart-summing-junctionpreset=flowchart-summing-junctionpass
pptx/shape-preset-geometry--flowchart-terminatorpreset=flowchart-terminatorpass
pptx/shape-preset-geometry--folded-cornerpreset=folded-cornerpass
pptx/shape-preset-geometry--framepreset=framepass
pptx/shape-preset-geometry--funnelpreset=funnelpass
pptx/shape-preset-geometry--gear-6preset=gear-6pass
pptx/shape-preset-geometry--gear-9preset=gear-9pass
pptx/shape-preset-geometry--half-framepreset=half-framepass
pptx/shape-preset-geometry--heartpreset=heartpass
pptx/shape-preset-geometry--heptagonpreset=heptagonpass
pptx/shape-preset-geometry--hexagonpreset=hexagonpass
pptx/shape-preset-geometry--horizontal-scrollpreset=horizontal-scrollpass
pptx/shape-preset-geometry--isosceles-trianglepreset=isosceles-trianglepass
pptx/shape-preset-geometry--left-arrowpreset=left-arrowpass
pptx/shape-preset-geometry--left-arrow-calloutpreset=left-arrow-calloutpass
pptx/shape-preset-geometry--left-bracepreset=left-bracepass
pptx/shape-preset-geometry--left-bracketpreset=left-bracketpass
pptx/shape-preset-geometry--left-circular-arrowpreset=left-circular-arrowpass
pptx/shape-preset-geometry--left-right-arrowpreset=left-right-arrowpass
pptx/shape-preset-geometry--left-right-arrow-calloutpreset=left-right-arrow-calloutpass
pptx/shape-preset-geometry--left-right-circular-arrowpreset=left-right-circular-arrowpass
pptx/shape-preset-geometry--left-right-ribbonpreset=left-right-ribbonpass
pptx/shape-preset-geometry--left-right-up-arrowpreset=left-right-up-arrowpass
pptx/shape-preset-geometry--left-up-arrowpreset=left-up-arrowpass
pptx/shape-preset-geometry--lightning-boltpreset=lightning-boltpass
pptx/shape-preset-geometry--line-callout-1preset=line-callout-1pass
pptx/shape-preset-geometry--line-callout-1-accent-barpreset=line-callout-1-accent-barpass
pptx/shape-preset-geometry--line-callout-1-border-and-accent-barpreset=line-callout-1-border-and-accent-barpass
pptx/shape-preset-geometry--line-callout-1-no-borderpreset=line-callout-1-no-borderpass
pptx/shape-preset-geometry--line-callout-2preset=line-callout-2pass
pptx/shape-preset-geometry--line-callout-2-accent-barpreset=line-callout-2-accent-barpass
pptx/shape-preset-geometry--line-callout-2-border-and-accent-barpreset=line-callout-2-border-and-accent-barpass
pptx/shape-preset-geometry--line-callout-2-no-borderpreset=line-callout-2-no-borderpass
pptx/shape-preset-geometry--line-callout-3preset=line-callout-3pass
pptx/shape-preset-geometry--line-callout-3-accent-barpreset=line-callout-3-accent-barpass
pptx/shape-preset-geometry--line-callout-3-border-and-accent-barpreset=line-callout-3-border-and-accent-barpass
pptx/shape-preset-geometry--line-callout-3-no-borderpreset=line-callout-3-no-borderpass
pptx/shape-preset-geometry--line-callout-4preset=line-callout-4pass
pptx/shape-preset-geometry--line-callout-4-accent-barpreset=line-callout-4-accent-barpass
pptx/shape-preset-geometry--line-callout-4-border-and-accent-barpreset=line-callout-4-border-and-accent-barpass
pptx/shape-preset-geometry--line-callout-4-no-borderpreset=line-callout-4-no-borderpass
pptx/shape-preset-geometry--line-inversepreset=line-inversepass
pptx/shape-preset-geometry--math-dividepreset=math-dividepass
pptx/shape-preset-geometry--math-equalpreset=math-equalpass
pptx/shape-preset-geometry--math-minuspreset=math-minuspass
pptx/shape-preset-geometry--math-multiplypreset=math-multiplypass
pptx/shape-preset-geometry--math-not-equalpreset=math-not-equalpass
pptx/shape-preset-geometry--math-pluspreset=math-pluspass
pptx/shape-preset-geometry--moonpreset=moonpass
pptx/shape-preset-geometry--no-symbolpreset=no-symbolpass
pptx/shape-preset-geometry--non-isosceles-trapezoidpreset=non-isosceles-trapezoidpass
pptx/shape-preset-geometry--notched-right-arrowpreset=notched-right-arrowpass
pptx/shape-preset-geometry--octagonpreset=octagonpass
pptx/shape-preset-geometry--ovalpreset=ovalpass
pptx/shape-preset-geometry--oval-calloutpreset=oval-calloutpass
pptx/shape-preset-geometry--parallelogrampreset=parallelogrampass
pptx/shape-preset-geometry--pentagonpreset=pentagonpass
pptx/shape-preset-geometry--piepreset=piepass
pptx/shape-preset-geometry--pie-wedgepreset=pie-wedgepass
pptx/shape-preset-geometry--plaquepreset=plaquepass
pptx/shape-preset-geometry--plaque-tabspreset=plaque-tabspass
pptx/shape-preset-geometry--quad-arrowpreset=quad-arrowpass
pptx/shape-preset-geometry--quad-arrow-calloutpreset=quad-arrow-calloutpass
pptx/shape-preset-geometry--rectanglepreset=rectanglepass
pptx/shape-preset-geometry--rectangular-calloutpreset=rectangular-calloutpass
pptx/shape-preset-geometry--regular-pentagonpreset=regular-pentagonpass
pptx/shape-preset-geometry--right-arrowpreset=right-arrowpass
pptx/shape-preset-geometry--right-arrow-calloutpreset=right-arrow-calloutpass
pptx/shape-preset-geometry--right-bracepreset=right-bracepass
pptx/shape-preset-geometry--right-bracketpreset=right-bracketpass
pptx/shape-preset-geometry--right-trianglepreset=right-trianglepass
pptx/shape-preset-geometry--round-1-rectanglepreset=round-1-rectanglepass
pptx/shape-preset-geometry--round-2-diag-rectanglepreset=round-2-diag-rectanglepass
pptx/shape-preset-geometry--round-2-same-rectanglepreset=round-2-same-rectanglepass
pptx/shape-preset-geometry--rounded-rectanglepreset=rounded-rectanglepass
pptx/shape-preset-geometry--rounded-rectangular-calloutpreset=rounded-rectangular-calloutpass
pptx/shape-preset-geometry--smiley-facepreset=smiley-facepass
pptx/shape-preset-geometry--snip-1-rectanglepreset=snip-1-rectanglepass
pptx/shape-preset-geometry--snip-2-diag-rectanglepreset=snip-2-diag-rectanglepass
pptx/shape-preset-geometry--snip-2-same-rectanglepreset=snip-2-same-rectanglepass
pptx/shape-preset-geometry--snip-round-rectanglepreset=snip-round-rectanglepass
pptx/shape-preset-geometry--square-tabspreset=square-tabspass
pptx/shape-preset-geometry--star-10-pointpreset=star-10-pointpass
pptx/shape-preset-geometry--star-12-pointpreset=star-12-pointpass
pptx/shape-preset-geometry--star-16-pointpreset=star-16-pointpass
pptx/shape-preset-geometry--star-24-pointpreset=star-24-pointpass
pptx/shape-preset-geometry--star-32-pointpreset=star-32-pointpass
pptx/shape-preset-geometry--star-4-pointpreset=star-4-pointpass
pptx/shape-preset-geometry--star-5-pointpreset=star-5-pointpass
pptx/shape-preset-geometry--star-6-pointpreset=star-6-pointpass
pptx/shape-preset-geometry--star-7-pointpreset=star-7-pointpass
pptx/shape-preset-geometry--star-8-pointpreset=star-8-pointpass
pptx/shape-preset-geometry--striped-right-arrowpreset=striped-right-arrowpass
pptx/shape-preset-geometry--sunpreset=sunpass
pptx/shape-preset-geometry--swoosh-arrowpreset=swoosh-arrowpass
pptx/shape-preset-geometry--tearpreset=tearpass
pptx/shape-preset-geometry--trapezoidpreset=trapezoidpass
pptx/shape-preset-geometry--u-turn-arrowpreset=u-turn-arrowpass
pptx/shape-preset-geometry--up-arrowpreset=up-arrowpass
pptx/shape-preset-geometry--up-arrow-calloutpreset=up-arrow-calloutpass
pptx/shape-preset-geometry--up-down-arrowpreset=up-down-arrowpass
pptx/shape-preset-geometry--up-down-arrow-calloutpreset=up-down-arrow-calloutpass
pptx/shape-preset-geometry--up-ribbonpreset=up-ribbonpass
pptx/shape-preset-geometry--vertical-scrollpreset=vertical-scrollpass
pptx/shape-preset-geometry--wavepreset=wavepass

Aggregate

LibraryPassFailPending
python-pptx00182
pptxjs18200

Parameter axes

Spec notes

DrawingML <a:prstGeom prst="..."/> selects one of the ~180 preset auto-shape geometries enumerated in the ST_ShapeType simple type. python-pptx exposes these via pptx.enum.shapes.MSO_SHAPE, where each enum member's xml_value attribute holds the prst token emitted into the XML. This family asserts the identity: for every MSO_SHAPE member, shapes.add_shape(member, ...) emits <a:prstGeom prst="member.xml_value"/>.

Generator source

scripts/gen_shape_preset_geometry.py — runs with --arg_template --preset {preset.mso} --out fixtures/pptx/shape-preset-geometry--{preset.id}.pptx

#!/usr/bin/env python3
"""Generate a single ``fixtures/pptx/shape-preset-geometry--<id>.pptx``.

Parameterised generator: the ``features/pptx/shape-preset-geometry.json``
manifest expands to one case per :class:`pptx.enum.shapes.MSO_SHAPE`
member, and the conformance runner invokes this script once per case
with ``--preset <MSO_SHAPE_NAME> --out <path>``.

Each invocation produces a single-slide presentation containing one
auto-shape added via ``shapes.add_shape(MSO_SHAPE.<name>, ...)``. The
underlying ``<a:prstGeom/@prst>`` token is whatever python-pptx emits
for that enum member; the manifest asserts that this token matches
``MSO_SHAPE.<name>.xml_value``.
"""

from __future__ import annotations

import argparse
import datetime as _dt
from pathlib import Path

from pptx import Presentation
from pptx.enum.shapes import MSO_SHAPE
from pptx.util import Inches

_REPO_ROOT = Path(__file__).resolve().parent.parent
_REPRODUCIBLE_DT = _dt.datetime(2000, 1, 1, 0, 0, 0)


def _write(preset_name: str, out: Path) -> None:
    shape_enum = getattr(MSO_SHAPE, preset_name)
    prs = Presentation()
    # "Title Only" layout — a title placeholder we leave empty plus our shape.
    slide = prs.slides.add_slide(prs.slide_layouts[5])
    slide.shapes.add_shape(shape_enum, Inches(1), Inches(1), Inches(2), Inches(2))
    out.parent.mkdir(parents=True, exist_ok=True)
    prs.save(out, zip_date_time=_REPRODUCIBLE_DT)


def main() -> int:
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--preset",
        required=True,
        help="MSO_SHAPE member name, e.g. RECTANGLE",
    )
    parser.add_argument(
        "--out",
        required=True,
        help="Output fixture path (absolute or repo-relative)",
    )
    args = parser.parse_args()

    out_path = Path(args.out)
    if not out_path.is_absolute():
        out_path = _REPO_ROOT / out_path
    _write(args.preset, out_path)
    print(out_path)
    return 0


if __name__ == "__main__":
    raise SystemExit(main())

Manifest (parent, unexpanded)

{
  "$schema": "../manifest.schema.json",
  "id": "pptx/shape-preset-geometry",
  "kind": "parameterised",
  "title": "Shape preset geometry",
  "format": "pptx",
  "category": "shapes",
  "summary": "Every python-pptx MSO_SHAPE preset round-trips to the ECMA-376 <a:prstGeom/@prst> token recorded on the enum member's xml_value. This manifest is a parameterised family: one manifest file expands into one case per MSO_SHAPE member (~180 cases), each backed by a distinct fixture pptx/shape-preset-geometry--<id>.pptx generated from the same gen_shape_preset_geometry.py script parameterised by --preset MSO_SHAPE_NAME.",
  "spec": {
    "source": "ecma-376-5-part-1",
    "clause": "20.1.9.18",
    "element": "a:prstGeom",
    "rnc_reference": "spec/ecma-376-5/part-1/rnc/DrawingML.rnc",
    "xsd_reference": "spec/ecma-376-5/part-1/xsd/dml-shape.xsd",
    "notes": "DrawingML <a:prstGeom prst=\"...\"/> selects one of the ~180 preset auto-shape geometries enumerated in the ST_ShapeType simple type. python-pptx exposes these via pptx.enum.shapes.MSO_SHAPE, where each enum member's xml_value attribute holds the prst token emitted into the XML. This family asserts the identity: for every MSO_SHAPE member, shapes.add_shape(member, ...) emits <a:prstGeom prst=\"member.xml_value\"/>."
  },
  "fixtures": {
    "machine": "pptx/shape-preset-geometry"
  },
  "generator": {
    "python": "scripts/gen_shape_preset_geometry.py",
    "arg_template": "--preset {preset.mso} --out fixtures/pptx/shape-preset-geometry--{preset.id}.pptx"
  },
  "parameters": {
    "preset": [
      {
        "id": "action-button-back-or-previous",
        "mso": "ACTION_BUTTON_BACK_OR_PREVIOUS",
        "prst": "actionButtonBackPrevious"
      },
      {
        "id": "action-button-beginning",
        "mso": "ACTION_BUTTON_BEGINNING",
        "prst": "actionButtonBeginning"
      },
      {
        "id": "action-button-custom",
        "mso": "ACTION_BUTTON_CUSTOM",
        "prst": "actionButtonBlank"
      },
      {
        "id": "action-button-document",
        "mso": "ACTION_BUTTON_DOCUMENT",
        "prst": "actionButtonDocument"
      },
      {
        "id": "action-button-end",
        "mso": "ACTION_BUTTON_END",
        "prst": "actionButtonEnd"
      },
      {
        "id": "action-button-forward-or-next",
        "mso": "ACTION_BUTTON_FORWARD_OR_NEXT",
        "prst": "actionButtonForwardNext"
      },
      {
        "id": "action-button-help",
        "mso": "ACTION_BUTTON_HELP",
        "prst": "actionButtonHelp"
      },
      {
        "id": "action-button-home",
        "mso": "ACTION_BUTTON_HOME",
        "prst": "actionButtonHome"
      },
      {
        "id": "action-button-information",
        "mso": "ACTION_BUTTON_INFORMATION",
        "prst": "actionButtonInformation"
      },
      {
        "id": "action-button-movie",
        "mso": "ACTION_BUTTON_MOVIE",
        "prst": "actionButtonMovie"
      },
      {
        "id": "action-button-return",
        "mso": "ACTION_BUTTON_RETURN",
        "prst": "actionButtonReturn"
      },
      {
        "id": "action-button-sound",
        "mso": "ACTION_BUTTON_SOUND",
        "prst": "actionButtonSound"
      },
      {
        "id": "arc",
        "mso": "ARC",
        "prst": "arc"
      },
      {
        "id": "balloon",
        "mso": "BALLOON",
        "prst": "wedgeRoundRectCallout"
      },
      {
        "id": "bent-arrow",
        "mso": "BENT_ARROW",
        "prst": "bentArrow"
      },
      {
        "id": "bent-up-arrow",
        "mso": "BENT_UP_ARROW",
        "prst": "bentUpArrow"
      },
      {
        "id": "bevel",
        "mso": "BEVEL",
        "prst": "bevel"
      },
      {
        "id": "block-arc",
        "mso": "BLOCK_ARC",
        "prst": "blockArc"
      },
      {
        "id": "can",
        "mso": "CAN",
        "prst": "can"
      },
      {
        "id": "chart-plus",
        "mso": "CHART_PLUS",
        "prst": "chartPlus"
      },
      {
        "id": "chart-star",
        "mso": "CHART_STAR",
        "prst": "chartStar"
      },
      {
        "id": "chart-x",
        "mso": "CHART_X",
        "prst": "chartX"
      },
      {
        "id": "chevron",
        "mso": "CHEVRON",
        "prst": "chevron"
      },
      {
        "id": "chord",
        "mso": "CHORD",
        "prst": "chord"
      },
      {
        "id": "circular-arrow",
        "mso": "CIRCULAR_ARROW",
        "prst": "circularArrow"
      },
      {
        "id": "cloud",
        "mso": "CLOUD",
        "prst": "cloud"
      },
      {
        "id": "cloud-callout",
        "mso": "CLOUD_CALLOUT",
        "prst": "cloudCallout"
      },
      {
        "id": "corner",
        "mso": "CORNER",
        "prst": "corner"
      },
      {
        "id": "corner-tabs",
        "mso": "CORNER_TABS",
        "prst": "cornerTabs"
      },
      {
        "id": "cross",
        "mso": "CROSS",
        "prst": "plus"
      },
      {
        "id": "cube",
        "mso": "CUBE",
        "prst": "cube"
      },
      {
        "id": "curved-down-arrow",
        "mso": "CURVED_DOWN_ARROW",
        "prst": "curvedDownArrow"
      },
      {
        "id": "curved-down-ribbon",
        "mso": "CURVED_DOWN_RIBBON",
        "prst": "ellipseRibbon"
      },
      {
        "id": "curved-left-arrow",
        "mso": "CURVED_LEFT_ARROW",
        "prst": "curvedLeftArrow"
      },
      {
        "id": "curved-right-arrow",
        "mso": "CURVED_RIGHT_ARROW",
        "prst": "curvedRightArrow"
      },
      {
        "id": "curved-up-arrow",
        "mso": "CURVED_UP_ARROW",
        "prst": "curvedUpArrow"
      },
      {
        "id": "curved-up-ribbon",
        "mso": "CURVED_UP_RIBBON",
        "prst": "ellipseRibbon2"
      },
      {
        "id": "decagon",
        "mso": "DECAGON",
        "prst": "decagon"
      },
      {
        "id": "diagonal-stripe",
        "mso": "DIAGONAL_STRIPE",
        "prst": "diagStripe"
      },
      {
        "id": "diamond",
        "mso": "DIAMOND",
        "prst": "diamond"
      },
      {
        "id": "dodecagon",
        "mso": "DODECAGON",
        "prst": "dodecagon"
      },
      {
        "id": "donut",
        "mso": "DONUT",
        "prst": "donut"
      },
      {
        "id": "double-brace",
        "mso": "DOUBLE_BRACE",
        "prst": "bracePair"
      },
      {
        "id": "double-bracket",
        "mso": "DOUBLE_BRACKET",
        "prst": "bracketPair"
      },
      {
        "id": "double-wave",
        "mso": "DOUBLE_WAVE",
        "prst": "doubleWave"
      },
      {
        "id": "down-arrow",
        "mso": "DOWN_ARROW",
        "prst": "downArrow"
      },
      {
        "id": "down-arrow-callout",
        "mso": "DOWN_ARROW_CALLOUT",
        "prst": "downArrowCallout"
      },
      {
        "id": "down-ribbon",
        "mso": "DOWN_RIBBON",
        "prst": "ribbon"
      },
      {
        "id": "explosion1",
        "mso": "EXPLOSION1",
        "prst": "irregularSeal1"
      },
      {
        "id": "explosion2",
        "mso": "EXPLOSION2",
        "prst": "irregularSeal2"
      },
      {
        "id": "flowchart-alternate-process",
        "mso": "FLOWCHART_ALTERNATE_PROCESS",
        "prst": "flowChartAlternateProcess"
      },
      {
        "id": "flowchart-card",
        "mso": "FLOWCHART_CARD",
        "prst": "flowChartPunchedCard"
      },
      {
        "id": "flowchart-collate",
        "mso": "FLOWCHART_COLLATE",
        "prst": "flowChartCollate"
      },
      {
        "id": "flowchart-connector",
        "mso": "FLOWCHART_CONNECTOR",
        "prst": "flowChartConnector"
      },
      {
        "id": "flowchart-data",
        "mso": "FLOWCHART_DATA",
        "prst": "flowChartInputOutput"
      },
      {
        "id": "flowchart-decision",
        "mso": "FLOWCHART_DECISION",
        "prst": "flowChartDecision"
      },
      {
        "id": "flowchart-delay",
        "mso": "FLOWCHART_DELAY",
        "prst": "flowChartDelay"
      },
      {
        "id": "flowchart-direct-access-storage",
        "mso": "FLOWCHART_DIRECT_ACCESS_STORAGE",
        "prst": "flowChartMagneticDrum"
      },
      {
        "id": "flowchart-display",
        "mso": "FLOWCHART_DISPLAY",
        "prst": "flowChartDisplay"
      },
      {
        "id": "flowchart-document",
        "mso": "FLOWCHART_DOCUMENT",
        "prst": "flowChartDocument"
      },
      {
        "id": "flowchart-extract",
        "mso": "FLOWCHART_EXTRACT",
        "prst": "flowChartExtract"
      },
      {
        "id": "flowchart-internal-storage",
        "mso": "FLOWCHART_INTERNAL_STORAGE",
        "prst": "flowChartInternalStorage"
      },
      {
        "id": "flowchart-magnetic-disk",
        "mso": "FLOWCHART_MAGNETIC_DISK",
        "prst": "flowChartMagneticDisk"
      },
      {
        "id": "flowchart-manual-input",
        "mso": "FLOWCHART_MANUAL_INPUT",
        "prst": "flowChartManualInput"
      },
      {
        "id": "flowchart-manual-operation",
        "mso": "FLOWCHART_MANUAL_OPERATION",
        "prst": "flowChartManualOperation"
      },
      {
        "id": "flowchart-merge",
        "mso": "FLOWCHART_MERGE",
        "prst": "flowChartMerge"
      },
      {
        "id": "flowchart-multidocument",
        "mso": "FLOWCHART_MULTIDOCUMENT",
        "prst": "flowChartMultidocument"
      },
      {
        "id": "flowchart-offline-storage",
        "mso": "FLOWCHART_OFFLINE_STORAGE",
        "prst": "flowChartOfflineStorage"
      },
      {
        "id": "flowchart-offpage-connector",
        "mso": "FLOWCHART_OFFPAGE_CONNECTOR",
        "prst": "flowChartOffpageConnector"
      },
      {
        "id": "flowchart-or",
        "mso": "FLOWCHART_OR",
        "prst": "flowChartOr"
      },
      {
        "id": "flowchart-predefined-process",
        "mso": "FLOWCHART_PREDEFINED_PROCESS",
        "prst": "flowChartPredefinedProcess"
      },
      {
        "id": "flowchart-preparation",
        "mso": "FLOWCHART_PREPARATION",
        "prst": "flowChartPreparation"
      },
      {
        "id": "flowchart-process",
        "mso": "FLOWCHART_PROCESS",
        "prst": "flowChartProcess"
      },
      {
        "id": "flowchart-punched-tape",
        "mso": "FLOWCHART_PUNCHED_TAPE",
        "prst": "flowChartPunchedTape"
      },
      {
        "id": "flowchart-sequential-access-storage",
        "mso": "FLOWCHART_SEQUENTIAL_ACCESS_STORAGE",
        "prst": "flowChartMagneticTape"
      },
      {
        "id": "flowchart-sort",
        "mso": "FLOWCHART_SORT",
        "prst": "flowChartSort"
      },
      {
        "id": "flowchart-stored-data",
        "mso": "FLOWCHART_STORED_DATA",
        "prst": "flowChartOnlineStorage"
      },
      {
        "id": "flowchart-summing-junction",
        "mso": "FLOWCHART_SUMMING_JUNCTION",
        "prst": "flowChartSummingJunction"
      },
      {
        "id": "flowchart-terminator",
        "mso": "FLOWCHART_TERMINATOR",
        "prst": "flowChartTerminator"
      },
      {
        "id": "folded-corner",
        "mso": "FOLDED_CORNER",
        "prst": "foldedCorner"
      },
      {
        "id": "frame",
        "mso": "FRAME",
        "prst": "frame"
      },
      {
        "id": "funnel",
        "mso": "FUNNEL",
        "prst": "funnel"
      },
      {
        "id": "gear-6",
        "mso": "GEAR_6",
        "prst": "gear6"
      },
      {
        "id": "gear-9",
        "mso": "GEAR_9",
        "prst": "gear9"
      },
      {
        "id": "half-frame",
        "mso": "HALF_FRAME",
        "prst": "halfFrame"
      },
      {
        "id": "heart",
        "mso": "HEART",
        "prst": "heart"
      },
      {
        "id": "heptagon",
        "mso": "HEPTAGON",
        "prst": "heptagon"
      },
      {
        "id": "hexagon",
        "mso": "HEXAGON",
        "prst": "hexagon"
      },
      {
        "id": "horizontal-scroll",
        "mso": "HORIZONTAL_SCROLL",
        "prst": "horizontalScroll"
      },
      {
        "id": "isosceles-triangle",
        "mso": "ISOSCELES_TRIANGLE",
        "prst": "triangle"
      },
      {
        "id": "left-arrow",
        "mso": "LEFT_ARROW",
        "prst": "leftArrow"
      },
      {
        "id": "left-arrow-callout",
        "mso": "LEFT_ARROW_CALLOUT",
        "prst": "leftArrowCallout"
      },
      {
        "id": "left-brace",
        "mso": "LEFT_BRACE",
        "prst": "leftBrace"
      },
      {
        "id": "left-bracket",
        "mso": "LEFT_BRACKET",
        "prst": "leftBracket"
      },
      {
        "id": "left-circular-arrow",
        "mso": "LEFT_CIRCULAR_ARROW",
        "prst": "leftCircularArrow"
      },
      {
        "id": "left-right-arrow",
        "mso": "LEFT_RIGHT_ARROW",
        "prst": "leftRightArrow"
      },
      {
        "id": "left-right-arrow-callout",
        "mso": "LEFT_RIGHT_ARROW_CALLOUT",
        "prst": "leftRightArrowCallout"
      },
      {
        "id": "left-right-circular-arrow",
        "mso": "LEFT_RIGHT_CIRCULAR_ARROW",
        "prst": "leftRightCircularArrow"
      },
      {
        "id": "left-right-ribbon",
        "mso": "LEFT_RIGHT_RIBBON",
        "prst": "leftRightRibbon"
      },
      {
        "id": "left-right-up-arrow",
        "mso": "LEFT_RIGHT_UP_ARROW",
        "prst": "leftRightUpArrow"
      },
      {
        "id": "left-up-arrow",
        "mso": "LEFT_UP_ARROW",
        "prst": "leftUpArrow"
      },
      {
        "id": "lightning-bolt",
        "mso": "LIGHTNING_BOLT",
        "prst": "lightningBolt"
      },
      {
        "id": "line-callout-1",
        "mso": "LINE_CALLOUT_1",
        "prst": "borderCallout1"
      },
      {
        "id": "line-callout-1-accent-bar",
        "mso": "LINE_CALLOUT_1_ACCENT_BAR",
        "prst": "accentCallout1"
      },
      {
        "id": "line-callout-1-border-and-accent-bar",
        "mso": "LINE_CALLOUT_1_BORDER_AND_ACCENT_BAR",
        "prst": "accentBorderCallout1"
      },
      {
        "id": "line-callout-1-no-border",
        "mso": "LINE_CALLOUT_1_NO_BORDER",
        "prst": "callout1"
      },
      {
        "id": "line-callout-2",
        "mso": "LINE_CALLOUT_2",
        "prst": "borderCallout2"
      },
      {
        "id": "line-callout-2-accent-bar",
        "mso": "LINE_CALLOUT_2_ACCENT_BAR",
        "prst": "accentCallout2"
      },
      {
        "id": "line-callout-2-border-and-accent-bar",
        "mso": "LINE_CALLOUT_2_BORDER_AND_ACCENT_BAR",
        "prst": "accentBorderCallout2"
      },
      {
        "id": "line-callout-2-no-border",
        "mso": "LINE_CALLOUT_2_NO_BORDER",
        "prst": "callout2"
      },
      {
        "id": "line-callout-3",
        "mso": "LINE_CALLOUT_3",
        "prst": "borderCallout3"
      },
      {
        "id": "line-callout-3-accent-bar",
        "mso": "LINE_CALLOUT_3_ACCENT_BAR",
        "prst": "accentCallout3"
      },
      {
        "id": "line-callout-3-border-and-accent-bar",
        "mso": "LINE_CALLOUT_3_BORDER_AND_ACCENT_BAR",
        "prst": "accentBorderCallout3"
      },
      {
        "id": "line-callout-3-no-border",
        "mso": "LINE_CALLOUT_3_NO_BORDER",
        "prst": "callout3"
      },
      {
        "id": "line-callout-4",
        "mso": "LINE_CALLOUT_4",
        "prst": "borderCallout3"
      },
      {
        "id": "line-callout-4-accent-bar",
        "mso": "LINE_CALLOUT_4_ACCENT_BAR",
        "prst": "accentCallout3"
      },
      {
        "id": "line-callout-4-border-and-accent-bar",
        "mso": "LINE_CALLOUT_4_BORDER_AND_ACCENT_BAR",
        "prst": "accentBorderCallout3"
      },
      {
        "id": "line-callout-4-no-border",
        "mso": "LINE_CALLOUT_4_NO_BORDER",
        "prst": "callout3"
      },
      {
        "id": "line-inverse",
        "mso": "LINE_INVERSE",
        "prst": "lineInv"
      },
      {
        "id": "math-divide",
        "mso": "MATH_DIVIDE",
        "prst": "mathDivide"
      },
      {
        "id": "math-equal",
        "mso": "MATH_EQUAL",
        "prst": "mathEqual"
      },
      {
        "id": "math-minus",
        "mso": "MATH_MINUS",
        "prst": "mathMinus"
      },
      {
        "id": "math-multiply",
        "mso": "MATH_MULTIPLY",
        "prst": "mathMultiply"
      },
      {
        "id": "math-not-equal",
        "mso": "MATH_NOT_EQUAL",
        "prst": "mathNotEqual"
      },
      {
        "id": "math-plus",
        "mso": "MATH_PLUS",
        "prst": "mathPlus"
      },
      {
        "id": "moon",
        "mso": "MOON",
        "prst": "moon"
      },
      {
        "id": "non-isosceles-trapezoid",
        "mso": "NON_ISOSCELES_TRAPEZOID",
        "prst": "nonIsoscelesTrapezoid"
      },
      {
        "id": "notched-right-arrow",
        "mso": "NOTCHED_RIGHT_ARROW",
        "prst": "notchedRightArrow"
      },
      {
        "id": "no-symbol",
        "mso": "NO_SYMBOL",
        "prst": "noSmoking"
      },
      {
        "id": "octagon",
        "mso": "OCTAGON",
        "prst": "octagon"
      },
      {
        "id": "oval",
        "mso": "OVAL",
        "prst": "ellipse"
      },
      {
        "id": "oval-callout",
        "mso": "OVAL_CALLOUT",
        "prst": "wedgeEllipseCallout"
      },
      {
        "id": "parallelogram",
        "mso": "PARALLELOGRAM",
        "prst": "parallelogram"
      },
      {
        "id": "pentagon",
        "mso": "PENTAGON",
        "prst": "homePlate"
      },
      {
        "id": "pie",
        "mso": "PIE",
        "prst": "pie"
      },
      {
        "id": "pie-wedge",
        "mso": "PIE_WEDGE",
        "prst": "pieWedge"
      },
      {
        "id": "plaque",
        "mso": "PLAQUE",
        "prst": "plaque"
      },
      {
        "id": "plaque-tabs",
        "mso": "PLAQUE_TABS",
        "prst": "plaqueTabs"
      },
      {
        "id": "quad-arrow",
        "mso": "QUAD_ARROW",
        "prst": "quadArrow"
      },
      {
        "id": "quad-arrow-callout",
        "mso": "QUAD_ARROW_CALLOUT",
        "prst": "quadArrowCallout"
      },
      {
        "id": "rectangle",
        "mso": "RECTANGLE",
        "prst": "rect"
      },
      {
        "id": "rectangular-callout",
        "mso": "RECTANGULAR_CALLOUT",
        "prst": "wedgeRectCallout"
      },
      {
        "id": "regular-pentagon",
        "mso": "REGULAR_PENTAGON",
        "prst": "pentagon"
      },
      {
        "id": "right-arrow",
        "mso": "RIGHT_ARROW",
        "prst": "rightArrow"
      },
      {
        "id": "right-arrow-callout",
        "mso": "RIGHT_ARROW_CALLOUT",
        "prst": "rightArrowCallout"
      },
      {
        "id": "right-brace",
        "mso": "RIGHT_BRACE",
        "prst": "rightBrace"
      },
      {
        "id": "right-bracket",
        "mso": "RIGHT_BRACKET",
        "prst": "rightBracket"
      },
      {
        "id": "right-triangle",
        "mso": "RIGHT_TRIANGLE",
        "prst": "rtTriangle"
      },
      {
        "id": "rounded-rectangle",
        "mso": "ROUNDED_RECTANGLE",
        "prst": "roundRect"
      },
      {
        "id": "rounded-rectangular-callout",
        "mso": "ROUNDED_RECTANGULAR_CALLOUT",
        "prst": "wedgeRoundRectCallout"
      },
      {
        "id": "round-1-rectangle",
        "mso": "ROUND_1_RECTANGLE",
        "prst": "round1Rect"
      },
      {
        "id": "round-2-diag-rectangle",
        "mso": "ROUND_2_DIAG_RECTANGLE",
        "prst": "round2DiagRect"
      },
      {
        "id": "round-2-same-rectangle",
        "mso": "ROUND_2_SAME_RECTANGLE",
        "prst": "round2SameRect"
      },
      {
        "id": "smiley-face",
        "mso": "SMILEY_FACE",
        "prst": "smileyFace"
      },
      {
        "id": "snip-1-rectangle",
        "mso": "SNIP_1_RECTANGLE",
        "prst": "snip1Rect"
      },
      {
        "id": "snip-2-diag-rectangle",
        "mso": "SNIP_2_DIAG_RECTANGLE",
        "prst": "snip2DiagRect"
      },
      {
        "id": "snip-2-same-rectangle",
        "mso": "SNIP_2_SAME_RECTANGLE",
        "prst": "snip2SameRect"
      },
      {
        "id": "snip-round-rectangle",
        "mso": "SNIP_ROUND_RECTANGLE",
        "prst": "snipRoundRect"
      },
      {
        "id": "square-tabs",
        "mso": "SQUARE_TABS",
        "prst": "squareTabs"
      },
      {
        "id": "star-10-point",
        "mso": "STAR_10_POINT",
        "prst": "star10"
      },
      {
        "id": "star-12-point",
        "mso": "STAR_12_POINT",
        "prst": "star12"
      },
      {
        "id": "star-16-point",
        "mso": "STAR_16_POINT",
        "prst": "star16"
      },
      {
        "id": "star-24-point",
        "mso": "STAR_24_POINT",
        "prst": "star24"
      },
      {
        "id": "star-32-point",
        "mso": "STAR_32_POINT",
        "prst": "star32"
      },
      {
        "id": "star-4-point",
        "mso": "STAR_4_POINT",
        "prst": "star4"
      },
      {
        "id": "star-5-point",
        "mso": "STAR_5_POINT",
        "prst": "star5"
      },
      {
        "id": "star-6-point",
        "mso": "STAR_6_POINT",
        "prst": "star6"
      },
      {
        "id": "star-7-point",
        "mso": "STAR_7_POINT",
        "prst": "star7"
      },
      {
        "id": "star-8-point",
        "mso": "STAR_8_POINT",
        "prst": "star8"
      },
      {
        "id": "striped-right-arrow",
        "mso": "STRIPED_RIGHT_ARROW",
        "prst": "stripedRightArrow"
      },
      {
        "id": "sun",
        "mso": "SUN",
        "prst": "sun"
      },
      {
        "id": "swoosh-arrow",
        "mso": "SWOOSH_ARROW",
        "prst": "swooshArrow"
      },
      {
        "id": "tear",
        "mso": "TEAR",
        "prst": "teardrop"
      },
      {
        "id": "trapezoid",
        "mso": "TRAPEZOID",
        "prst": "trapezoid"
      },
      {
        "id": "up-arrow",
        "mso": "UP_ARROW",
        "prst": "upArrow"
      },
      {
        "id": "up-arrow-callout",
        "mso": "UP_ARROW_CALLOUT",
        "prst": "upArrowCallout"
      },
      {
        "id": "up-down-arrow",
        "mso": "UP_DOWN_ARROW",
        "prst": "upDownArrow"
      },
      {
        "id": "up-down-arrow-callout",
        "mso": "UP_DOWN_ARROW_CALLOUT",
        "prst": "upDownArrowCallout"
      },
      {
        "id": "up-ribbon",
        "mso": "UP_RIBBON",
        "prst": "ribbon2"
      },
      {
        "id": "u-turn-arrow",
        "mso": "U_TURN_ARROW",
        "prst": "uturnArrow"
      },
      {
        "id": "vertical-scroll",
        "mso": "VERTICAL_SCROLL",
        "prst": "verticalScroll"
      },
      {
        "id": "wave",
        "mso": "WAVE",
        "prst": "wave"
      }
    ]
  },
  "assertions_template": [
    {
      "id": "prst-is-{preset.id}",
      "part": "ppt/slides/slide1.xml",
      "namespaces": {
        "p": "http://schemas.openxmlformats.org/presentationml/2006/main",
        "a": "http://schemas.openxmlformats.org/drawingml/2006/main"
      },
      "xpath": "//a:prstGeom/@prst",
      "must": "equal",
      "value": "{preset.prst}",
      "description": "The slide's auto-shape must declare <a:prstGeom prst=\"{preset.prst}\"/>, matching MSO_SHAPE.{preset.mso}.xml_value."
    }
  ],
  "render_assertions_template": [
    {
      "id": "shape-preset-{preset.id}-dom-present",
      "kind": "css_selector",
      "selector": "[data-shape-preset='{preset.prst}'], .pptx-shape, [data-kind='sp'], section[data-slide] *, section.slide *",
      "must": "exist",
      "description": "A DOM node annotated as a shape (via data-shape-preset='{preset.prst}', .pptx-shape, or generic data-kind='sp') must exist. pptxjs renderer support for preset geometries is weak; this assertion records whatever the renderer exposes and falls back to any descendant under a slide section."
    }
  ]
}