python-pptx2 2.18.0__tar.gz → 2.19.0__tar.gz
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.
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/HISTORY.rst +20 -0
- {python_pptx2-2.18.0/src/python_pptx2.egg-info → python_pptx2-2.19.0}/PKG-INFO +1 -1
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/__init__.py +1 -1
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/_agent_friendly.py +88 -14
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/diagrams.py +51 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/shapes/shapetree.py +11 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/skill/references/basics.md +10 -6
- {python_pptx2-2.18.0 → python_pptx2-2.19.0/src/python_pptx2.egg-info}/PKG-INFO +1 -1
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_shape_helpers.py +60 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/LICENSE +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/MANIFEST.in +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/README.rst +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/act-action.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/act-hyperlink.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/cht-axis-props.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/cht-axistitle-props.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/cht-category-access.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/cht-category-props.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/cht-chart.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/cht-charttitle-props.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/cht-data-props.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/cht-datalabels.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/cht-gridlines-props.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/cht-legend-access.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/cht-legend-props.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/cht-marker-props.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/cht-plot-props.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/cht-point-access.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/cht-point-props.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/cht-replace-data.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/cht-series.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/cht-ticklabels-props.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/dml-color.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/dml-effect.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/dml-fill.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/dml-line.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/environment.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/ph-inherit-props.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/ph-insert-shape.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/ph-phfmt-props.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/ph-placeholder-props.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/prs-coreprops.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/prs-default-template.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/prs-open-save.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/prs-presentation-props.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/shp-autoshape.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/shp-connector.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/shp-freeform.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/shp-graphicframe.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/shp-groupshape.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/shp-movie-props.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/shp-picture.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/shp-placeholder.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/shp-shapes.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/shp-shared.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/sld-background.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/sld-slide.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/sld-slides.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/action.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/axis.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/background.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/category.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/chart.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/chartdata.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/color.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/coreprops.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/datalabel.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/effect.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/fill.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/font.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/font_color.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/helpers.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/legend.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/line.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/picture.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/placeholder.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/plot.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/presentation.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/series.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/shape.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/shapes.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/slide.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/slides.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/table.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/72-dpi.tiff +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/CVS_LOGO.WMF +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/act-props.pptm +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/calibriz.ttf +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/cht-axis-props.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/cht-category-access.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/cht-chart-props.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/cht-chart-type.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/cht-charts.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/cht-datalabels.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/cht-gridlines-props.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/cht-legend-props.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/cht-legend.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/cht-marker-props.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/cht-plot-props.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/cht-point-access.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/cht-point-props.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/cht-replace-data.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/cht-series.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/cht-ticklabels-props.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/dml-effect.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/dml-fill.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/dml-line.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/ext-rels.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/[Content_Types].xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/_rels/.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/docProps/app.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/docProps/core.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/docProps/thumbnail.jpeg +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/_rels/presentation.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/presProps.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/presentation.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/printerSettings/printerSettings1.bin +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout1.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout10.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout11.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout2.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout3.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout4.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout5.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout6.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout7.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout8.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout9.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout1.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout10.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout11.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout2.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout3.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout4.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout5.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout6.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout7.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout8.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout9.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideMasters/_rels/slideMaster1.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slideMasters/slideMaster1.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slides/_rels/slide1.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/slides/slide1.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/tableStyles.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/theme/theme1.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/extracted-pptx/ppt/viewProps.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/font-color.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/just-two-mice.mp4 +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/just-two-mice.png +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/lyt-shapes.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/minimal.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/monty-truth.png +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/mst-placeholders.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/mst-shapes.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/mst-slide-layouts.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/ph-inherit-props.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/ph-populated-placeholders.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/ph-unpopulated-placeholders.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/pic.emf +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/prs-add-slide.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/prs-notes.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/prs-properties.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/prs-slide-masters.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/python-icon.jpeg +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/python-powered.png +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/python.bmp +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/shp-access-chart.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/shp-access-ole-object.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/shp-autoshape-adjustments.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/shp-autoshape-props.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/shp-common-props.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/shp-connector-props.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/shp-embedded-docx.docx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/shp-embedded-pptx.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/shp-embedded-xlsx.xlsx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/shp-freeform.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/shp-groupshape.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/shp-movie-props.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/shp-picture.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/shp-pos-and-size.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/shp-shapes.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/sld-background.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/sld-blank.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/sld-notes.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/sld-slide.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/sld-slides.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/sonic.gif +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/tbl-cell.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/test-image-jpg-mime.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/test.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/txt-fit-text.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/txt-font-props.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/txt-font-typeface.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/txt-paragraph-spacing.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/txt-text-frame.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/test_files/txt-text.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/text.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/steps/text_frame.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/tbl-cell.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/tbl-column.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/tbl-table.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/txt-fit-text.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/txt-font-color.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/txt-font-props.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/txt-paragraph.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/txt-text.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/features/txt-textframe.feature +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/pyproject.toml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/setup.cfg +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/_color.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/_slide_importer.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/_svg.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/_template_applier.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/_textstyle.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/accessibility.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/action.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/animation.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/api.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/audit.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/chart/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/chart/analytics.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/chart/axis.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/chart/category.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/chart/chart.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/chart/data.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/chart/datalabel.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/chart/legend.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/chart/marker.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/chart/palettes.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/chart/plot.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/chart/point.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/chart/quick_layouts.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/chart/series.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/chart/xlsx.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/chart/xmlwriter.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/compose/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/compose/from_spec.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/design/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/design/components.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/design/figures.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/design/layout.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/design/recipes.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/design/style.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/design/tokens.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/dml/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/dml/chtfmt.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/dml/color.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/dml/effect.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/dml/fill.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/dml/line.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/dml/picture.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/dml/three_d.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/enum/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/enum/action.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/enum/animation.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/enum/base.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/enum/chart.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/enum/dml.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/enum/lang.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/enum/presentation.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/enum/shapes.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/enum/text.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/exc.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/formats.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/geometry.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/inherit.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/lint.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/math.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/mathml2omml.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/media.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/opc/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/opc/constants.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/opc/oxml.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/opc/package.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/opc/packuri.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/opc/serialized.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/opc/shared.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/opc/spec.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/action.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/chart/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/chart/axis.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/chart/chart.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/chart/datalabel.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/chart/legend.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/chart/marker.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/chart/plot.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/chart/series.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/chart/shared.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/coreprops.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/customprops.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/dml/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/dml/color.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/dml/effect.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/dml/fill.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/dml/line.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/dml/three_d.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/ns.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/presentation.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/shapes/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/shapes/autoshape.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/shapes/connector.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/shapes/graphfrm.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/shapes/groupshape.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/shapes/picture.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/shapes/shared.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/simpletypes.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/slide.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/table.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/text.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/theme.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/oxml/xmlchemy.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/package.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/parts/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/parts/chart.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/parts/coreprops.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/parts/customprops.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/parts/diagram.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/parts/embeddedpackage.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/parts/image.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/parts/media.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/parts/presentation.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/parts/slide.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/presentation.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/py.typed +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/render.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/section.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/shapes/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/shapes/autoshape.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/shapes/base.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/shapes/connector.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/shapes/freeform.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/shapes/graphfrm.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/shapes/group.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/shapes/picture.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/shapes/placeholder.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/shared.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/skill/SKILL.md +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/skill/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/skill/__main__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/skill/references/animations.md +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/skill/references/charts.md +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/skill/references/compose.md +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/skill/references/design.md +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/skill/references/effects.md +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/skill/references/end-to-end-deck.md +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/skill/references/geometry-and-arrows.md +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/skill/references/lint.md +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/skill/references/math.md +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/skill/references/picture-effects.md +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/skill/references/render.md +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/skill/references/smart-art.md +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/skill/references/space-aware-authoring.md +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/skill/references/tables.md +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/skill/references/theme.md +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/skill/references/three-d.md +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/skill/references/transitions.md +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/slide.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/smart_art.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/spec.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/table.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/table_styles.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/templates/default.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/templates/docx-icon.emf +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/templates/generic-icon.emf +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/templates/notes.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/templates/notesMaster.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/templates/pptx-icon.emf +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/templates/theme.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/templates/xlsx-icon.emf +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/text/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/text/fonts.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/text/layout.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/text/text.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/theme.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/types.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/pptx2/util.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/python_pptx2.egg-info/SOURCES.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/python_pptx2.egg-info/dependency_links.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/python_pptx2.egg-info/entry_points.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/python_pptx2.egg-info/requires.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/src/python_pptx2.egg-info/top_level.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/chart/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/chart/test_analytics.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/chart/test_axis.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/chart/test_category.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/chart/test_chart.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/chart/test_chart_toggles.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/chart/test_collision_strategy.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/chart/test_data.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/chart/test_datalabel.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/chart/test_legend.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/chart/test_marker.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/chart/test_palettes.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/chart/test_plot.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/chart/test_point.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/chart/test_quick_layouts.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/chart/test_series.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/chart/test_xlsx.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/chart/test_xmlwriter.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/design/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/design/test_components.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/design/test_figures.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/design/test_layout.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/design/test_recipes.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/design/test_style.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/design/test_tokens.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/dml/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/dml/test_chtfmt.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/dml/test_color.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/dml/test_effect.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/dml/test_fill.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/dml/test_line.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/dml/test_three_d.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/enum/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/enum/test_base.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/enum/test_shapes.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/integration/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/integration/round_trip.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/integration/test_add_slide_layout.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/integration/test_apply_template.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/integration/test_compose_package.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/integration/test_import_slide.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/integration/test_round_trip.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/opc/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/opc/test_oxml.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/opc/test_package.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/opc/test_packuri.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/opc/test_serialized.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/oxml/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/oxml/shapes/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/oxml/shapes/test_autoshape.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/oxml/shapes/test_graphfrm.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/oxml/shapes/test_groupshape.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/oxml/shapes/test_picture.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/oxml/test___init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/oxml/test_dml.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/oxml/test_ns.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/oxml/test_presentation.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/oxml/test_simpletypes.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/oxml/test_slide.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/oxml/test_table.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/oxml/test_theme.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/oxml/test_xmlchemy.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/oxml/unitdata/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/oxml/unitdata/dml.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/oxml/unitdata/shape.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/oxml/unitdata/text.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/parts/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/parts/test_chart.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/parts/test_coreprops.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/parts/test_customprops.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/parts/test_embeddedpackage.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/parts/test_image.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/parts/test_media.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/parts/test_presentation.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/parts/test_slide.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/schema/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/schema/oxml_schema_validator.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/schema/test_schema_validity.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/shapes/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/shapes/test_anchor.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/shapes/test_animate.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/shapes/test_autoshape.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/shapes/test_base.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/shapes/test_connector.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/shapes/test_freeform.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/shapes/test_graphfrm.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/shapes/test_group.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/shapes/test_picture.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/shapes/test_placeholder.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/shapes/test_shapetree.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_accessibility.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_action.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_animation.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_api.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_audit.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_compose_from_spec.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_diagrams.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/calibriz.ttf +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/cdw-logo.eps +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/dummy.mp4 +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/[Content_Types].xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/_rels/.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/docProps/app.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/docProps/core.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/docProps/thumbnail.jpeg +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/_rels/presentation.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/presProps.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/presentation.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/printerSettings/printerSettings1.bin +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout1.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout10.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout11.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout2.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout3.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout4.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout5.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout6.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout7.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout8.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout9.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout1.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout10.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout11.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout2.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout3.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout4.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout5.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout6.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout7.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout8.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout9.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideMasters/_rels/slideMaster1.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slideMasters/slideMaster1.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slides/_rels/slide1.xml.rels +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/slides/slide1.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/tableStyles.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/theme/theme1.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/expanded_pptx/ppt/viewProps.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/minimal.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/minimal_slide.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/missing_rels_item.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/monty-truth.png +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/no-core-props.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/no-slides.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/presentation.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/python-icon.jpeg +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/python-powered.png +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/python.bmp +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/slideLayout1.xml +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/smart_art_org_chart.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x2-area-date.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x2-area-float.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x2-area-stacked-100.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x2-area-stacked.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x2-area.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x2-bar-clustered-date.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x2-bar-clustered-float.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x2-bar-clustered.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x2-bar-stacked-100.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x2-bar-stacked.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x2-column-clustered.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x2-column-stacked-100.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x2-column-stacked.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x2-line-date.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x2-line-float.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x2-line-markers-stacked-100.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x2-line-markers-stacked.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x2-line-markers.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x2-line-stacked-100.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x2-line-stacked.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x2-line.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x3-bubble-3d.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x3-bubble.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x3-xy-lines-no-markers.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x3-xy-lines.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x3-xy-smooth-no-markers.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x3-xy-smooth.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x3-xy.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/2x5-radar.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/3x1-pie-exploded.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/3x1-pie.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/3x2-doughnut-exploded.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/3x2-doughnut.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/4x2-multi-cat-bar.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/adjust-ser-count.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/cat-labels.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/content-types-xml.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/default-notes.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/default-notesMaster.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/default-theme.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/freeform.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/package-rels-xml.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/placeholders.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/presentation-rels-xml.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/relationships.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/rels-load-from-xml.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/rewrite-ser.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/snippets/timing.txt +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/test.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_files/test_slides.pptx +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_formats.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_geometry.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_inherit.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_lint.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_lint_on_save.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_math.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_media.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_new_features.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_package.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_pathlike_inputs.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_powerpoint_strict_validation.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_presentation.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_render.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_render_slides_alias.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_section.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_shared.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_skill.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_slide.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_smart_art.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_svg_picture.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_table.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_table_extras.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_theme.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_transition_morph.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/test_util.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/text/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/text/test_fonts.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/text/test_layout.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/text/test_text.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/unitdata.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/unitutil/__init__.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/unitutil/cxml.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/unitutil/file.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tests/unitutil/mock.py +0 -0
- {python_pptx2-2.18.0 → python_pptx2-2.19.0}/tox.ini +0 -0
|
@@ -15,6 +15,26 @@ can sit beside both ``python-pptx`` (``pptx``) and ``power-pptx``
|
|
|
15
15
|
.. _`scanny/python-pptx`: https://github.com/scanny/python-pptx
|
|
16
16
|
|
|
17
17
|
|
|
18
|
+
2.19.0 (2026-08-30)
|
|
19
|
+
+++++++++++++++++++
|
|
20
|
+
|
|
21
|
+
Added
|
|
22
|
+
.....
|
|
23
|
+
|
|
24
|
+
* **Agent-friendly kwargs, everywhere.** The alias/fuzzy normalization
|
|
25
|
+
introduced for ``add_text`` now covers the whole shape-creation
|
|
26
|
+
surface via a reusable ``@agent_friendly`` decorator: ``add_shape``
|
|
27
|
+
(``shape_type=``), ``add_picture`` / ``add_svg_picture`` /
|
|
28
|
+
``add_movie`` (``image=`` / ``video=``), ``add_table``
|
|
29
|
+
(``columns=``), ``add_chart`` (``data=``, ``width=``/``height=`` for
|
|
30
|
+
``cx``/``cy``), ``add_textbox``, ``add_connector`` (``x1/y1/x2/y2``),
|
|
31
|
+
``add_group_shape``, ``add_ole_object``, and the six diagram recipes
|
|
32
|
+
(``items=`` / ``stages=`` / ``nodes=`` / ``colour=`` ...). All of
|
|
33
|
+
them accept ``x``/``y``/``w``/``h`` geometry keywords, substitute
|
|
34
|
+
synonyms without allowing contradictions, and raise ``TypeErrors``
|
|
35
|
+
that list every accepted argument.
|
|
36
|
+
|
|
37
|
+
|
|
18
38
|
2.18.0 (2026-08-30)
|
|
19
39
|
+++++++++++++++++++
|
|
20
40
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-pptx2
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.19.0
|
|
4
4
|
Summary: Create, read, and update PowerPoint 2007+ (.pptx) files. Fork of power-pptx / python-pptx, published as python-pptx2.
|
|
5
5
|
Author: Matěj Štágl
|
|
6
6
|
Author-email: stagl@wattlescript.org
|
|
@@ -23,23 +23,21 @@ caller bug and still raises.
|
|
|
23
23
|
from __future__ import annotations
|
|
24
24
|
|
|
25
25
|
import difflib
|
|
26
|
+
import functools
|
|
27
|
+
import inspect
|
|
26
28
|
|
|
27
29
|
# Canonical kwarg -> spellings other ecosystems use for the same thing.
|
|
28
30
|
SYNONYMS: dict[str, tuple[str, ...]] = {
|
|
29
31
|
"text": ("txt", "string", "content", "label", "caption", "value"),
|
|
30
|
-
"font": (
|
|
32
|
+
"font": (
|
|
33
|
+
"font_family", "fontfamily", "font_name", "fontname", "typeface", "family", "face",
|
|
34
|
+
),
|
|
31
35
|
"size_pt": ("size", "font_size", "fontsize", "pt_size", "point_size"),
|
|
32
36
|
"align": ("halign", "ha", "horizontal_align", "horizontal_alignment", "text_align", "text_alignment"),
|
|
33
37
|
"anchor": ("valign", "va", "vertical_align", "vertical_alignment", "v_align"),
|
|
34
38
|
"color": (
|
|
35
|
-
"colour",
|
|
36
|
-
"
|
|
37
|
-
"font_colour",
|
|
38
|
-
"text_color",
|
|
39
|
-
"text_colour",
|
|
40
|
-
"fg_color",
|
|
41
|
-
"line_color",
|
|
42
|
-
"stroke_color",
|
|
39
|
+
"colour", "font_color", "font_colour", "text_color", "text_colour",
|
|
40
|
+
"fg_color", "line_color", "stroke_color",
|
|
43
41
|
),
|
|
44
42
|
"weight_pt": ("weight", "line_weight", "width_pt", "stroke_width"),
|
|
45
43
|
"bold": ("font_bold", "is_bold"),
|
|
@@ -53,6 +51,8 @@ SYNONYMS: dict[str, tuple[str, ...]] = {
|
|
|
53
51
|
"height": ("h",),
|
|
54
52
|
"start": ("begin", "start_point", "start_shape", "from", "source"),
|
|
55
53
|
"end": ("to", "end_point", "end_shape", "target"),
|
|
54
|
+
"image_file": ("image", "img", "path", "file", "filename", "image_path", "file_path"),
|
|
55
|
+
"steps": ("items", "stages", "nodes", "boxes"),
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
_ALIAS_TO_CANONICAL: dict[str, str] = {
|
|
@@ -89,17 +89,28 @@ def absorb_agent_kwargs(
|
|
|
89
89
|
method: str,
|
|
90
90
|
kwargs: dict,
|
|
91
91
|
canonical_names: "list[str] | tuple[str, ...]",
|
|
92
|
+
extra_synonyms: "dict[str, tuple[str, ...]] | None" = None,
|
|
93
|
+
pass_through_unknown: bool = False,
|
|
92
94
|
) -> dict:
|
|
93
95
|
"""Map alias / near-miss *kwargs* onto canonical names; raise else.
|
|
94
96
|
|
|
95
97
|
*canonical_names* lists the kwargs the method actually understands
|
|
96
|
-
(including any already-bound explicit parameters).
|
|
97
|
-
|
|
98
|
-
|
|
98
|
+
(including any already-bound explicit parameters). *extra_synonyms*
|
|
99
|
+
adds call-site-specific spellings (e.g. ``{"cx": ("width", "w")}``
|
|
100
|
+
for ``add_chart``). Returns a dict containing only canonical names
|
|
101
|
+
— unless *pass_through_unknown* is set (for functions that accept
|
|
102
|
+
``**kwargs`` themselves), in which case unabsorbable names are
|
|
103
|
+
passed through verbatim. A synonym that matches a canonical the
|
|
104
|
+
caller already supplied with a *different* value raises
|
|
99
105
|
``TypeError``; equal values are fine.
|
|
100
106
|
"""
|
|
101
107
|
known = list(canonical_names)
|
|
102
|
-
|
|
108
|
+
alias_map = dict(_ALIAS_TO_CANONICAL)
|
|
109
|
+
if extra_synonyms:
|
|
110
|
+
for canonical, aliases in extra_synonyms.items():
|
|
111
|
+
for alias in aliases:
|
|
112
|
+
alias_map[alias] = canonical
|
|
113
|
+
alias_space = [a for a in alias_map if a not in known]
|
|
103
114
|
candidates = known + alias_space
|
|
104
115
|
|
|
105
116
|
resolved: dict = {}
|
|
@@ -112,7 +123,7 @@ def absorb_agent_kwargs(
|
|
|
112
123
|
)
|
|
113
124
|
resolved[name] = value
|
|
114
125
|
continue
|
|
115
|
-
canonical =
|
|
126
|
+
canonical = alias_map.get(name)
|
|
116
127
|
if canonical is not None and canonical not in known:
|
|
117
128
|
# The alias resolves to an argument this method doesn't take
|
|
118
129
|
# (e.g. ``to=`` on add_text); fall through to the fuzzy/error
|
|
@@ -121,6 +132,9 @@ def absorb_agent_kwargs(
|
|
|
121
132
|
if canonical is None:
|
|
122
133
|
canonical = _did_you_mean(name, candidates, known)
|
|
123
134
|
if canonical is None:
|
|
135
|
+
if pass_through_unknown:
|
|
136
|
+
resolved[name] = value
|
|
137
|
+
continue
|
|
124
138
|
raise TypeError(
|
|
125
139
|
f"{method}(): got an unexpected keyword argument {name!r}. "
|
|
126
140
|
f"Accepted: {', '.join(sorted(known))} "
|
|
@@ -134,3 +148,63 @@ def absorb_agent_kwargs(
|
|
|
134
148
|
)
|
|
135
149
|
resolved[canonical] = value
|
|
136
150
|
return resolved
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
def agent_friendly(extra_synonyms=None):
|
|
154
|
+
"""Decorator: make a method/function absorb alias and fuzzy kwargs.
|
|
155
|
+
|
|
156
|
+
Wrap any public helper so its keyword arguments get the full
|
|
157
|
+
treatment from :func:`absorb_agent_kwargs` — global synonyms,
|
|
158
|
+
per-call *extra_synonyms*, fuzzy near-misses, and didactic errors —
|
|
159
|
+
without touching its body. Usable bare (``@agent_friendly``) or
|
|
160
|
+
with per-method synonyms. A keyword that repeats a value already
|
|
161
|
+
bound positionally (through a synonym or exact name) is dropped when
|
|
162
|
+
equal and raises ``TypeError`` when it contradicts::
|
|
163
|
+
|
|
164
|
+
@agent_friendly({"cx": ("width", "w"), "cy": ("height", "h")})
|
|
165
|
+
def add_chart(self, x, y, cx, cy, chart_type, chart_data): ...
|
|
166
|
+
"""
|
|
167
|
+
if callable(extra_synonyms): # used bare: @agent_friendly above def
|
|
168
|
+
return _decorate_friendly(extra_synonyms, None)
|
|
169
|
+
|
|
170
|
+
def decorator(func):
|
|
171
|
+
return _decorate_friendly(func, extra_synonyms)
|
|
172
|
+
|
|
173
|
+
return decorator
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
def _decorate_friendly(func, extra_synonyms):
|
|
177
|
+
sig = inspect.signature(func)
|
|
178
|
+
has_self = bool(sig.parameters) and next(iter(sig.parameters)) in ("self", "cls")
|
|
179
|
+
param_list = [
|
|
180
|
+
p
|
|
181
|
+
for p in sig.parameters.values()
|
|
182
|
+
if p.kind not in (inspect.Parameter.VAR_POSITIONAL, inspect.Parameter.VAR_KEYWORD)
|
|
183
|
+
and p.name not in ("self", "cls")
|
|
184
|
+
]
|
|
185
|
+
known = tuple(p.name for p in param_list)
|
|
186
|
+
takes_var_kw = any(
|
|
187
|
+
p.kind == inspect.Parameter.VAR_KEYWORD for p in sig.parameters.values()
|
|
188
|
+
)
|
|
189
|
+
|
|
190
|
+
@functools.wraps(func)
|
|
191
|
+
def wrapper(*args, **kwargs):
|
|
192
|
+
if kwargs:
|
|
193
|
+
kwargs = absorb_agent_kwargs(
|
|
194
|
+
func.__name__, kwargs, known, extra_synonyms,
|
|
195
|
+
pass_through_unknown=takes_var_kw,
|
|
196
|
+
)
|
|
197
|
+
offset = 1 if has_self else 0
|
|
198
|
+
for i, p in enumerate(param_list[: len(args) - offset]):
|
|
199
|
+
if p.name in kwargs:
|
|
200
|
+
if kwargs[p.name] != args[offset + i]:
|
|
201
|
+
raise TypeError(
|
|
202
|
+
f"{func.__name__}(): {p.name} given positionally "
|
|
203
|
+
f"({args[offset + i]!r}) and by keyword "
|
|
204
|
+
f"({kwargs[p.name]!r}) with different values"
|
|
205
|
+
)
|
|
206
|
+
del kwargs[p.name]
|
|
207
|
+
return func(*args, **kwargs)
|
|
208
|
+
|
|
209
|
+
return wrapper
|
|
210
|
+
|
|
@@ -32,6 +32,7 @@ import math
|
|
|
32
32
|
from dataclasses import dataclass, field
|
|
33
33
|
from typing import TYPE_CHECKING, Any, Sequence
|
|
34
34
|
|
|
35
|
+
from pptx2._agent_friendly import agent_friendly
|
|
35
36
|
from pptx2.enum.shapes import MSO_SHAPE
|
|
36
37
|
from pptx2.geometry import BBox
|
|
37
38
|
from pptx2.util import Emu, Inches, Pt
|
|
@@ -245,6 +246,14 @@ def _card(
|
|
|
245
246
|
# ----------------------------------------------------------------------------- pipelines
|
|
246
247
|
|
|
247
248
|
|
|
249
|
+
@agent_friendly(
|
|
250
|
+
{
|
|
251
|
+
"text_color": ("color", "colour", "fg_color", "text_colour"),
|
|
252
|
+
"accent": ("accent_color", "primary", "primary_color"),
|
|
253
|
+
"fill": ("fill_color", "background", "bg"),
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
)
|
|
248
257
|
def horizontal_pipeline(
|
|
249
258
|
slide,
|
|
250
259
|
bbox: BBox,
|
|
@@ -312,6 +321,14 @@ def horizontal_pipeline(
|
|
|
312
321
|
return PipelineResult(cards=cards, arrows=arrows)
|
|
313
322
|
|
|
314
323
|
|
|
324
|
+
@agent_friendly(
|
|
325
|
+
{
|
|
326
|
+
"text_color": ("color", "colour", "fg_color", "text_colour"),
|
|
327
|
+
"accent": ("accent_color", "primary", "primary_color"),
|
|
328
|
+
"fill": ("fill_color", "background", "bg"),
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
)
|
|
315
332
|
def vertical_pipeline(
|
|
316
333
|
slide,
|
|
317
334
|
bbox: BBox,
|
|
@@ -371,6 +388,15 @@ def vertical_pipeline(
|
|
|
371
388
|
# ----------------------------------------------------------------------------- hub
|
|
372
389
|
|
|
373
390
|
|
|
391
|
+
@agent_friendly(
|
|
392
|
+
{
|
|
393
|
+
"text_color": ("color", "colour", "fg_color", "text_colour"),
|
|
394
|
+
"accent": ("accent_color", "primary", "primary_color"),
|
|
395
|
+
"fill": ("fill_color", "background", "bg"),
|
|
396
|
+
"spokes": ("items", "stages", "nodes"),
|
|
397
|
+
"centre": ("center", "hub", "hub_label", "title"),
|
|
398
|
+
}
|
|
399
|
+
)
|
|
374
400
|
def hub_and_spoke(
|
|
375
401
|
slide,
|
|
376
402
|
bbox: BBox,
|
|
@@ -479,6 +505,14 @@ def hub_and_spoke(
|
|
|
479
505
|
# ----------------------------------------------------------------------------- cycle
|
|
480
506
|
|
|
481
507
|
|
|
508
|
+
@agent_friendly(
|
|
509
|
+
{
|
|
510
|
+
"text_color": ("color", "colour", "fg_color", "text_colour"),
|
|
511
|
+
"accent": ("accent_color", "primary", "primary_color"),
|
|
512
|
+
"fill": ("fill_color", "background", "bg"),
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
)
|
|
482
516
|
def cycle(
|
|
483
517
|
slide,
|
|
484
518
|
bbox: BBox,
|
|
@@ -553,6 +587,15 @@ def cycle(
|
|
|
553
587
|
# ----------------------------------------------------------------------------- decision tree
|
|
554
588
|
|
|
555
589
|
|
|
590
|
+
@agent_friendly(
|
|
591
|
+
{
|
|
592
|
+
"text_color": ("color", "colour", "fg_color", "text_colour"),
|
|
593
|
+
"accent": ("accent_color", "primary", "primary_color"),
|
|
594
|
+
"fill": ("fill_color", "background", "bg"),
|
|
595
|
+
"branches": ("items", "nodes", "children", "steps"),
|
|
596
|
+
"root": ("root_label", "title", "center"),
|
|
597
|
+
}
|
|
598
|
+
)
|
|
556
599
|
def decision_tree(
|
|
557
600
|
slide,
|
|
558
601
|
bbox: BBox,
|
|
@@ -675,6 +718,14 @@ def decision_tree(
|
|
|
675
718
|
# ----------------------------------------------------------------------------- columns
|
|
676
719
|
|
|
677
720
|
|
|
721
|
+
@agent_friendly(
|
|
722
|
+
{
|
|
723
|
+
"text_color": ("color", "colour", "fg_color", "text_colour"),
|
|
724
|
+
"accent": ("accent_color", "primary", "primary_color"),
|
|
725
|
+
"fill": ("fill_color", "background", "bg"),
|
|
726
|
+
"columns": ("items", "cols", "sections"),
|
|
727
|
+
}
|
|
728
|
+
)
|
|
678
729
|
def comparison_columns(
|
|
679
730
|
slide,
|
|
680
731
|
bbox: BBox,
|
|
@@ -34,6 +34,7 @@ from pptx2.shapes.placeholder import (
|
|
|
34
34
|
TablePlaceholder,
|
|
35
35
|
)
|
|
36
36
|
from pptx2.shared import ParentedElementProxy
|
|
37
|
+
from pptx2._agent_friendly import agent_friendly
|
|
37
38
|
from pptx2.util import Emu, _coerce_emu, lazyproperty
|
|
38
39
|
|
|
39
40
|
if TYPE_CHECKING:
|
|
@@ -567,6 +568,7 @@ class _BaseGroupShapes(_BaseShapes):
|
|
|
567
568
|
super(_BaseGroupShapes, self).__init__(grpSp, parent)
|
|
568
569
|
self._grpSp = grpSp
|
|
569
570
|
|
|
571
|
+
@agent_friendly({"cx": ("width", "w"), "cy": ("height", "h"), "chart_data": ("data", "chartdata"), "chart_type": ("type", "charttype")})
|
|
570
572
|
def add_chart(
|
|
571
573
|
self,
|
|
572
574
|
chart_type: XL_CHART_TYPE,
|
|
@@ -601,6 +603,7 @@ class _BaseGroupShapes(_BaseShapes):
|
|
|
601
603
|
_apply_horizontal_bar_default(shape, chart_type)
|
|
602
604
|
return cast("Chart", shape)
|
|
603
605
|
|
|
606
|
+
@agent_friendly({"connector_type": ("type", "kind", "connector"), "begin_x": ("x1", "start_x"), "begin_y": ("y1", "start_y"), "end_x": ("x2", "to_x"), "end_y": ("y2", "to_y")})
|
|
604
607
|
def add_connector(
|
|
605
608
|
self,
|
|
606
609
|
connector_type: MSO_CONNECTOR_TYPE,
|
|
@@ -621,6 +624,7 @@ class _BaseGroupShapes(_BaseShapes):
|
|
|
621
624
|
self._recalculate_extents()
|
|
622
625
|
return cast(Connector, self._shape_factory(cxnSp))
|
|
623
626
|
|
|
627
|
+
@agent_friendly({"shapes": ("items", "members")})
|
|
624
628
|
def add_group_shape(self, shapes: Iterable[BaseShape] = ()) -> GroupShape:
|
|
625
629
|
"""Return a |GroupShape| object newly appended to this shape tree.
|
|
626
630
|
|
|
@@ -639,6 +643,7 @@ class _BaseGroupShapes(_BaseShapes):
|
|
|
639
643
|
grpSp.recalculate_extents()
|
|
640
644
|
return cast(GroupShape, self._shape_factory(grpSp))
|
|
641
645
|
|
|
646
|
+
@agent_friendly
|
|
642
647
|
def add_ole_object(
|
|
643
648
|
self,
|
|
644
649
|
object_file: str | IO[bytes],
|
|
@@ -700,6 +705,7 @@ class _BaseGroupShapes(_BaseShapes):
|
|
|
700
705
|
self._recalculate_extents()
|
|
701
706
|
return cast(GraphicFrame, self._shape_factory(graphicFrame))
|
|
702
707
|
|
|
708
|
+
@agent_friendly
|
|
703
709
|
def add_picture(
|
|
704
710
|
self,
|
|
705
711
|
image_file: str | os.PathLike[str] | IO[bytes],
|
|
@@ -762,6 +768,7 @@ class _BaseGroupShapes(_BaseShapes):
|
|
|
762
768
|
picture.top = Emu(ct + new_top)
|
|
763
769
|
return picture
|
|
764
770
|
|
|
771
|
+
@agent_friendly({"svg_file": ("svg", "svg_path", "svg_source")})
|
|
765
772
|
def add_svg_picture(
|
|
766
773
|
self,
|
|
767
774
|
svg_file,
|
|
@@ -825,6 +832,7 @@ class _BaseGroupShapes(_BaseShapes):
|
|
|
825
832
|
self._recalculate_extents()
|
|
826
833
|
return cast(Picture, self._shape_factory(pic))
|
|
827
834
|
|
|
835
|
+
@agent_friendly({"autoshape_type_id": ("shape_type", "autoshape_type", "shape", "preset_shape")})
|
|
828
836
|
def add_shape(
|
|
829
837
|
self,
|
|
830
838
|
autoshape_type_id: MSO_SHAPE,
|
|
@@ -863,6 +871,7 @@ class _BaseGroupShapes(_BaseShapes):
|
|
|
863
871
|
shape.top = Emu(ct + new_top)
|
|
864
872
|
return shape
|
|
865
873
|
|
|
874
|
+
@agent_friendly
|
|
866
875
|
def add_textbox(
|
|
867
876
|
self,
|
|
868
877
|
left: Length,
|
|
@@ -1498,6 +1507,7 @@ class _BaseGroupShapes(_BaseShapes):
|
|
|
1498
1507
|
sp = self._spTree.add_textbox(id_, name, x, y, cx, cy)
|
|
1499
1508
|
return sp
|
|
1500
1509
|
|
|
1510
|
+
@agent_friendly({"cols": ("columns", "num_cols", "col_count"), "rows": ("num_rows", "row_count")})
|
|
1501
1511
|
def add_table(
|
|
1502
1512
|
self,
|
|
1503
1513
|
rows: int,
|
|
@@ -1549,6 +1559,7 @@ class _BaseGroupShapes(_BaseShapes):
|
|
|
1549
1559
|
tbl.vert_banding = False
|
|
1550
1560
|
return shape
|
|
1551
1561
|
|
|
1562
|
+
@agent_friendly({"movie_file": ("video", "video_file", "movie", "path", "file")})
|
|
1552
1563
|
def add_movie(
|
|
1553
1564
|
self,
|
|
1554
1565
|
movie_file: str | IO[bytes],
|
|
@@ -452,9 +452,13 @@ end. `move` raises `IndexError` out of range; `reorder` raises
|
|
|
452
452
|
|
|
453
453
|
### Forgiving keyword arguments
|
|
454
454
|
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
`
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
455
|
+
Every shape helper (`add_text`, `add_shape`, `add_picture`,
|
|
456
|
+
`add_table`, `add_chart`, `add_textbox`, `add_connector`, `add_movie`,
|
|
457
|
+
`add_arrow`, `add_equation`, ...) and the diagram recipes
|
|
458
|
+
(`horizontal_pipeline`, `hub_and_spoke`, ...) absorb cross-library and
|
|
459
|
+
near-miss kwargs: `font_family=`, `halign=`/`valign=`, `fontsize=`,
|
|
460
|
+
`colour`, `x,y,w,h` geometry keywords, `shape_type=`, `image=`,
|
|
461
|
+
`columns=`, `data=`, `begin=`/`to=`, `items=`/`nodes=` ... Synonyms
|
|
462
|
+
substitute, never contradict (two different values for the same
|
|
463
|
+
logical argument still raise), and a truly unknown kwarg raises a
|
|
464
|
+
`TypeError` listing every accepted name.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-pptx2
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.19.0
|
|
4
4
|
Summary: Create, read, and update PowerPoint 2007+ (.pptx) files. Fork of power-pptx / python-pptx, published as python-pptx2.
|
|
5
5
|
Author: Matěj Štágl
|
|
6
6
|
Author-email: stagl@wattlescript.org
|
|
@@ -180,6 +180,66 @@ class DescribeAddArrowSynonyms:
|
|
|
180
180
|
assert arrow.begin_x == Inches(0)
|
|
181
181
|
|
|
182
182
|
|
|
183
|
+
class DescribeAgentFriendlyShapeApi:
|
|
184
|
+
"""Every shapes.add_* absorbs cross-library kwargs, not just add_text."""
|
|
185
|
+
|
|
186
|
+
def it_add_shape_takes_shape_type_and_xywh(self, slide):
|
|
187
|
+
rect = slide.shapes.add_shape(
|
|
188
|
+
shape_type=MSO_SHAPE.RECTANGLE,
|
|
189
|
+
x=Inches(1), y=Inches(1), w=Inches(2), h=Inches(1),
|
|
190
|
+
)
|
|
191
|
+
assert (rect.left, rect.top) == (Inches(1), Inches(1))
|
|
192
|
+
|
|
193
|
+
def it_add_picture_takes_image_and_xywh(self, slide, tmp_path):
|
|
194
|
+
import struct, zlib
|
|
195
|
+
|
|
196
|
+
def _png(path):
|
|
197
|
+
def chunk(tag, data):
|
|
198
|
+
c = struct.pack(">I", len(data)) + tag + data
|
|
199
|
+
return c + struct.pack(">I", zlib.crc32(tag + data) & 0xFFFFFFFF)
|
|
200
|
+
ihdr = struct.pack(">IIBBBBB", 1, 1, 8, 2, 0, 0, 0)
|
|
201
|
+
raw = b"\x00\xff\x00\x00"
|
|
202
|
+
blob = (b"\x89PNG\r\n\x1a\n" + chunk(b"IHDR", ihdr)
|
|
203
|
+
+ chunk(b"IDAT", zlib.compress(raw)) + chunk(b"IEND", b""))
|
|
204
|
+
path.write_bytes(blob)
|
|
205
|
+
|
|
206
|
+
pic_path = tmp_path / "dot.png"
|
|
207
|
+
_png(pic_path)
|
|
208
|
+
pic = slide.shapes.add_picture(
|
|
209
|
+
image=str(pic_path), x=Inches(1), y=Inches(1), w=Inches(1), h=Inches(1)
|
|
210
|
+
)
|
|
211
|
+
assert pic.left == Inches(1)
|
|
212
|
+
|
|
213
|
+
def it_add_table_takes_columns_and_xywh(self, slide):
|
|
214
|
+
gf = slide.shapes.add_table(
|
|
215
|
+
rows=2, columns=3, x=Inches(1), y=Inches(1), w=Inches(6), h=Inches(2)
|
|
216
|
+
)
|
|
217
|
+
assert len(gf.table.columns) == 3
|
|
218
|
+
|
|
219
|
+
def it_add_textbox_takes_xywh(self, slide):
|
|
220
|
+
tb = slide.shapes.add_textbox(x=Inches(2), y=Inches(2), w=Inches(3), h=Inches(1))
|
|
221
|
+
assert tb.top == Inches(2)
|
|
222
|
+
|
|
223
|
+
def it_add_connector_takes_x1y1x2y2(self, slide):
|
|
224
|
+
cxn = slide.shapes.add_connector(
|
|
225
|
+
MSO_CONNECTOR_TYPE.STRAIGHT,
|
|
226
|
+
x1=Inches(0), y1=Inches(0), x2=Inches(2), y2=Inches(2),
|
|
227
|
+
)
|
|
228
|
+
assert cxn.begin_x == Inches(0)
|
|
229
|
+
|
|
230
|
+
def it_unknown_kwarg_error_lists_accepted_names(self, slide):
|
|
231
|
+
with pytest.raises(TypeError, match="Accepted"):
|
|
232
|
+
slide.shapes.add_textbox(Inches(0), Inches(0), Inches(1), Inches(1), bogus=1)
|
|
233
|
+
|
|
234
|
+
def it_diagram_recipes_absorb_item_and_colour_synonyms(self, slide):
|
|
235
|
+
from pptx2 import BBox
|
|
236
|
+
from pptx2.diagrams import horizontal_pipeline
|
|
237
|
+
|
|
238
|
+
horizontal_pipeline(
|
|
239
|
+
slide, BBox.from_inches(0.5, 1, 12, 1.5), items=["a", "b"], colour="#0D0D0D"
|
|
240
|
+
)
|
|
241
|
+
|
|
242
|
+
|
|
183
243
|
class DescribeSetTextPreservingFormat:
|
|
184
244
|
def it_preserves_font_attributes_across_replacement(self, slide):
|
|
185
245
|
tx = slide.shapes.add_text(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|