python-pptx2 3.1.1__tar.gz → 3.2.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-3.1.1 → python_pptx2-3.2.0}/HISTORY.rst +16 -0
- {python_pptx2-3.1.1/src/python_pptx2.egg-info → python_pptx2-3.2.0}/PKG-INFO +1 -1
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/__init__.py +9 -3
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/design/blocks.py +162 -3
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/lint.py +4 -3
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/SKILL.md +19 -5
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/references/slide-design.md +550 -495
- {python_pptx2-3.1.1 → python_pptx2-3.2.0/src/python_pptx2.egg-info}/PKG-INFO +1 -1
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/design/test_blocks.py +56 -2
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_lint.py +2 -2
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/LICENSE +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/MANIFEST.in +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/README.rst +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/act-action.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/act-hyperlink.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/cht-axis-props.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/cht-axistitle-props.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/cht-category-access.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/cht-category-props.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/cht-chart.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/cht-charttitle-props.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/cht-data-props.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/cht-datalabels.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/cht-gridlines-props.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/cht-legend-access.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/cht-legend-props.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/cht-marker-props.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/cht-plot-props.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/cht-point-access.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/cht-point-props.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/cht-replace-data.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/cht-series.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/cht-ticklabels-props.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/dml-color.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/dml-effect.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/dml-fill.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/dml-line.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/environment.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/ph-inherit-props.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/ph-insert-shape.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/ph-phfmt-props.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/ph-placeholder-props.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/prs-coreprops.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/prs-default-template.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/prs-open-save.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/prs-presentation-props.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/shp-autoshape.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/shp-connector.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/shp-freeform.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/shp-graphicframe.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/shp-groupshape.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/shp-movie-props.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/shp-picture.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/shp-placeholder.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/shp-shapes.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/shp-shared.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/sld-background.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/sld-slide.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/sld-slides.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/action.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/axis.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/background.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/category.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/chart.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/chartdata.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/color.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/coreprops.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/datalabel.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/effect.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/fill.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/font.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/font_color.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/helpers.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/legend.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/line.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/picture.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/placeholder.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/plot.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/presentation.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/series.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/shape.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/shapes.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/slide.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/slides.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/table.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/72-dpi.tiff +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/CVS_LOGO.WMF +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/act-props.pptm +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/calibriz.ttf +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/cht-axis-props.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/cht-category-access.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/cht-chart-props.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/cht-chart-type.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/cht-charts.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/cht-datalabels.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/cht-gridlines-props.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/cht-legend-props.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/cht-legend.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/cht-marker-props.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/cht-plot-props.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/cht-point-access.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/cht-point-props.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/cht-replace-data.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/cht-series.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/cht-ticklabels-props.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/dml-effect.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/dml-fill.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/dml-line.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/ext-rels.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/[Content_Types].xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/_rels/.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/docProps/app.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/docProps/core.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/docProps/thumbnail.jpeg +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/_rels/presentation.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/presProps.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/presentation.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/printerSettings/printerSettings1.bin +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout1.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout10.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout11.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout2.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout3.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout4.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout5.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout6.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout7.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout8.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout9.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout1.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout10.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout11.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout2.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout3.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout4.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout5.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout6.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout7.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout8.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout9.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideMasters/_rels/slideMaster1.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slideMasters/slideMaster1.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slides/_rels/slide1.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/slides/slide1.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/tableStyles.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/theme/theme1.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/extracted-pptx/ppt/viewProps.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/font-color.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/just-two-mice.mp4 +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/just-two-mice.png +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/lyt-shapes.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/minimal.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/monty-truth.png +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/mst-placeholders.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/mst-shapes.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/mst-slide-layouts.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/ph-inherit-props.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/ph-populated-placeholders.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/ph-unpopulated-placeholders.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/pic.emf +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/prs-add-slide.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/prs-notes.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/prs-properties.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/prs-slide-masters.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/python-icon.jpeg +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/python-powered.png +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/python.bmp +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/shp-access-chart.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/shp-access-ole-object.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/shp-autoshape-adjustments.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/shp-autoshape-props.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/shp-common-props.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/shp-connector-props.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/shp-embedded-docx.docx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/shp-embedded-pptx.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/shp-embedded-xlsx.xlsx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/shp-freeform.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/shp-groupshape.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/shp-movie-props.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/shp-picture.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/shp-pos-and-size.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/shp-shapes.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/sld-background.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/sld-blank.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/sld-notes.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/sld-slide.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/sld-slides.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/sonic.gif +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/tbl-cell.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/test-image-jpg-mime.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/test.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/txt-fit-text.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/txt-font-props.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/txt-font-typeface.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/txt-paragraph-spacing.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/txt-text-frame.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/test_files/txt-text.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/text.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/steps/text_frame.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/tbl-cell.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/tbl-column.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/tbl-table.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/txt-fit-text.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/txt-font-color.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/txt-font-props.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/txt-paragraph.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/txt-text.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/features/txt-textframe.feature +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/pyproject.toml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/setup.cfg +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/paper_pptx_doctor/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/paper_pptx_doctor/__main__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/_agent_friendly.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/_color.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/_ownership.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/_slide_importer.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/_svg.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/_template_applier.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/_textstyle.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/_transaction.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/_version.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/_zipguard.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/accessibility.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/action.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/animation.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/api.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/audit.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/chart/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/chart/analytics.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/chart/axis.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/chart/category.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/chart/chart.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/chart/data.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/chart/datalabel.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/chart/legend.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/chart/marker.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/chart/palettes.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/chart/plot.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/chart/point.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/chart/quick_layouts.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/chart/series.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/chart/xlsx.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/chart/xmlwriter.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/compose/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/compose/deck_compose.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/compose/from_spec.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/design/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/design/components.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/design/figures.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/design/layout.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/design/palettes.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/design/recipes.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/design/style.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/design/tokens.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/diagrams.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/diff.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/dml/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/dml/chtfmt.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/dml/color.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/dml/effect.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/dml/fill.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/dml/line.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/dml/picture.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/dml/three_d.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/edit.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/enum/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/enum/action.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/enum/animation.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/enum/base.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/enum/chart.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/enum/dml.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/enum/lang.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/enum/presentation.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/enum/shapes.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/enum/text.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/errors.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/exc.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/formats.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/geometry.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/hf.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/inherit.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/inspect.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/math.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/mathml2omml.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/media.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/opc/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/opc/constants.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/opc/oxml.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/opc/package.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/opc/packuri.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/opc/serialized.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/opc/shared.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/opc/spec.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/action.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/chart/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/chart/axis.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/chart/chart.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/chart/datalabel.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/chart/legend.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/chart/marker.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/chart/plot.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/chart/series.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/chart/shared.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/coreprops.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/customprops.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/dml/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/dml/color.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/dml/effect.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/dml/fill.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/dml/line.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/dml/three_d.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/ns.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/presentation.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/shapes/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/shapes/autoshape.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/shapes/connector.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/shapes/graphfrm.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/shapes/groupshape.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/shapes/picture.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/shapes/shared.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/simpletypes.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/slide.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/table.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/text.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/theme.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/oxml/xmlchemy.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/package.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/parts/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/parts/chart.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/parts/coreprops.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/parts/customprops.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/parts/diagram.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/parts/embeddedpackage.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/parts/image.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/parts/media.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/parts/presentation.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/parts/slide.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/presentation.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/py.typed +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/rebind.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/render.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/section.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/shapes/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/shapes/autoshape.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/shapes/base.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/shapes/connector.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/shapes/freeform.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/shapes/graphfrm.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/shapes/group.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/shapes/picture.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/shapes/placeholder.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/shapes/shapetree.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/shared.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/__main__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/references/animations.md +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/references/basics.md +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/references/charts.md +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/references/compose.md +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/references/design.md +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/references/editing.md +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/references/effects.md +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/references/end-to-end-deck.md +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/references/geometry-and-arrows.md +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/references/lint.md +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/references/math.md +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/references/picture-effects.md +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/references/render.md +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/references/smart-art.md +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/references/space-aware-authoring.md +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/references/tables.md +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/references/theme.md +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/references/three-d.md +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/skill/references/transitions.md +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/slide.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/slideops.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/smart_art.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/spec.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/table.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/table_styles.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/templates/default.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/templates/docx-icon.emf +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/templates/generic-icon.emf +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/templates/notes.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/templates/notesMaster.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/templates/pptx-icon.emf +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/templates/theme.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/templates/xlsx-icon.emf +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/text/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/text/bullet.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/text/fonts.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/text/layout.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/text/text.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/theme.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/types.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/pptx2/util.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/python_pptx2.egg-info/SOURCES.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/python_pptx2.egg-info/dependency_links.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/python_pptx2.egg-info/entry_points.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/python_pptx2.egg-info/requires.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/src/python_pptx2.egg-info/top_level.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/chart/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/chart/test_analytics.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/chart/test_axis.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/chart/test_category.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/chart/test_chart.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/chart/test_chart_toggles.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/chart/test_collision_strategy.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/chart/test_data.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/chart/test_datalabel.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/chart/test_legend.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/chart/test_marker.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/chart/test_palettes.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/chart/test_plot.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/chart/test_point.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/chart/test_quick_layouts.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/chart/test_series.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/chart/test_xlsx.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/chart/test_xmlwriter.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/design/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/design/test_components.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/design/test_figures.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/design/test_layout.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/design/test_palettes.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/design/test_recipes.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/design/test_style.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/design/test_tokens.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/dml/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/dml/test_chtfmt.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/dml/test_color.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/dml/test_effect.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/dml/test_fill.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/dml/test_line.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/dml/test_three_d.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/enum/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/enum/test_base.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/enum/test_shapes.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/integration/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/integration/round_trip.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/integration/test_add_slide_layout.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/integration/test_apply_template.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/integration/test_compose_package.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/integration/test_import_slide.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/integration/test_round_trip.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/opc/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/opc/test_oxml.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/opc/test_package.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/opc/test_packuri.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/opc/test_serialized.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/oxml/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/oxml/shapes/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/oxml/shapes/test_autoshape.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/oxml/shapes/test_graphfrm.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/oxml/shapes/test_groupshape.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/oxml/shapes/test_picture.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/oxml/test___init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/oxml/test_dml.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/oxml/test_ns.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/oxml/test_presentation.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/oxml/test_simpletypes.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/oxml/test_slide.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/oxml/test_table.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/oxml/test_theme.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/oxml/test_xmlchemy.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/oxml/unitdata/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/oxml/unitdata/dml.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/oxml/unitdata/shape.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/oxml/unitdata/text.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/_authoring/build_fixtures.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/_authoring/update_goldens.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/clock.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/conftest.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/contract.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/corpus.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/fragval.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/idlists.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/lo.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/relint.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_autofit.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_batch.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_bullets.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_chart_routing.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_content_type_coverage.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_contract_harness.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_deck_manifest.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_diff.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_distribution_doctor.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_edit_text.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_effective_inspect.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_fields_hf.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_fixture_corpus.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_hf_apply.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_image_replace.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_import.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_inspect_text.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_notes.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_package_io_hardening.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_package_kernel.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_package_round_trip.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_rebind.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_save_destinations.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_shape_surgery.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_slide_ops.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_slide_partname_allocation.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_table_ops.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_transaction.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_walkthrough_pitchbook.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_walkthrough_qbr.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_zipguard_end_record.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/paper/test_zipguard_structural.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/parts/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/parts/test_chart.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/parts/test_coreprops.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/parts/test_customprops.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/parts/test_embeddedpackage.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/parts/test_image.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/parts/test_media.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/parts/test_presentation.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/parts/test_slide.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/schema/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/schema/oxml_schema_validator.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/schema/test_schema_validity.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/shapes/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/shapes/test_anchor.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/shapes/test_animate.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/shapes/test_autoshape.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/shapes/test_base.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/shapes/test_connector.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/shapes/test_freeform.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/shapes/test_graphfrm.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/shapes/test_group.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/shapes/test_picture.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/shapes/test_placeholder.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/shapes/test_shapetree.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_accessibility.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_action.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_animation.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_api.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_audit.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_compose_from_spec.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_diagrams.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/calibriz.ttf +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/cdw-logo.eps +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/dummy.mp4 +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/[Content_Types].xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/_rels/.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/docProps/app.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/docProps/core.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/docProps/thumbnail.jpeg +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/_rels/presentation.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/presProps.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/presentation.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/printerSettings/printerSettings1.bin +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout1.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout10.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout11.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout2.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout3.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout4.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout5.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout6.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout7.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout8.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout9.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout1.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout10.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout11.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout2.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout3.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout4.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout5.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout6.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout7.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout8.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout9.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideMasters/_rels/slideMaster1.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slideMasters/slideMaster1.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slides/_rels/slide1.xml.rels +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/slides/slide1.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/tableStyles.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/theme/theme1.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/expanded_pptx/ppt/viewProps.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/minimal.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/minimal_slide.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/missing_rels_item.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/monty-truth.png +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/no-core-props.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/no-slides.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/presentation.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/python-icon.jpeg +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/python-powered.png +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/python.bmp +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/slideLayout1.xml +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/smart_art_org_chart.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x2-area-date.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x2-area-float.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x2-area-stacked-100.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x2-area-stacked.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x2-area.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x2-bar-clustered-date.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x2-bar-clustered-float.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x2-bar-clustered.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x2-bar-stacked-100.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x2-bar-stacked.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x2-column-clustered.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x2-column-stacked-100.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x2-column-stacked.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x2-line-date.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x2-line-float.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x2-line-markers-stacked-100.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x2-line-markers-stacked.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x2-line-markers.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x2-line-stacked-100.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x2-line-stacked.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x2-line.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x3-bubble-3d.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x3-bubble.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x3-xy-lines-no-markers.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x3-xy-lines.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x3-xy-smooth-no-markers.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x3-xy-smooth.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x3-xy.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/2x5-radar.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/3x1-pie-exploded.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/3x1-pie.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/3x2-doughnut-exploded.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/3x2-doughnut.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/4x2-multi-cat-bar.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/adjust-ser-count.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/cat-labels.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/content-types-xml.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/default-notes.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/default-notesMaster.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/default-theme.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/freeform.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/package-rels-xml.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/placeholders.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/presentation-rels-xml.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/relationships.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/rels-load-from-xml.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/rewrite-ser.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/snippets/timing.txt +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/test.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_files/test_slides.pptx +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_formats.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_geometry.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_inherit.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_lint_on_save.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_math.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_media.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_new_features.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_package.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_pathlike_inputs.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_powerpoint_strict_validation.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_presentation.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_render.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_render_contact_sheet.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_render_slides_alias.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_section.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_shape_helpers.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_shared.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_skill.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_slide.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_smart_art.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_svg_picture.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_table.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_table_extras.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_theme.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_transition_morph.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/test_util.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/text/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/text/test_fonts.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/text/test_layout.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/text/test_text.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/unitdata.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/unitutil/__init__.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/unitutil/cxml.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/unitutil/file.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tests/unitutil/mock.py +0 -0
- {python_pptx2-3.1.1 → python_pptx2-3.2.0}/tox.ini +0 -0
|
@@ -15,6 +15,22 @@ 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
|
+
3.2.0 (2026-09-04)
|
|
19
|
+
++++++++++++++++++
|
|
20
|
+
|
|
21
|
+
Added
|
|
22
|
+
.....
|
|
23
|
+
|
|
24
|
+
* ``add_code`` (``pptx2.design.blocks``, re-exported at the package root):
|
|
25
|
+
a source-code listing — monospace, one paragraph per line, verbatim and
|
|
26
|
+
unwrapped, on a rounded surface coloured after a Shiki theme
|
|
27
|
+
(``CODE_THEMES``), with optional line numbers and a height-only shrink
|
|
28
|
+
that never goes below the audit's legibility floor. The shape is named
|
|
29
|
+
``fika:code:<language>:<theme>:<0|1>`` (``code_shape_name``) so an
|
|
30
|
+
editor with a native code block (Fika) restores a highlighted, editable
|
|
31
|
+
code element on import; PowerPoint sees a plain monospace box.
|
|
32
|
+
|
|
33
|
+
|
|
18
34
|
3.1.1 (2026-09-03)
|
|
19
35
|
++++++++++++++++++
|
|
20
36
|
|
|
@@ -8,15 +8,16 @@ from typing import TYPE_CHECKING
|
|
|
8
8
|
import pptx2.exc as exceptions
|
|
9
9
|
from pptx2.api import Presentation
|
|
10
10
|
from pptx2.audit import AuditReport, audit
|
|
11
|
-
from pptx2.geometry import BBox
|
|
12
11
|
from pptx2.design.blocks import (
|
|
12
|
+
CODE_THEMES,
|
|
13
13
|
Card,
|
|
14
14
|
FittedPicture,
|
|
15
15
|
add_bullets,
|
|
16
16
|
add_card,
|
|
17
|
+
add_code,
|
|
17
18
|
add_picture_fit,
|
|
19
|
+
code_shape_name,
|
|
18
20
|
)
|
|
19
|
-
from pptx2.design.palettes import PALETTES, Palette, palette
|
|
20
21
|
from pptx2.design.components import (
|
|
21
22
|
ArticleCard,
|
|
22
23
|
Gauge,
|
|
@@ -38,6 +39,8 @@ from pptx2.design.figures import (
|
|
|
38
39
|
add_plotly_figure,
|
|
39
40
|
add_svg_figure,
|
|
40
41
|
)
|
|
42
|
+
from pptx2.design.palettes import PALETTES, Palette, palette
|
|
43
|
+
from pptx2.geometry import BBox
|
|
41
44
|
from pptx2.math import MathBackendUnavailable
|
|
42
45
|
from pptx2.opc.constants import CONTENT_TYPE as CT
|
|
43
46
|
from pptx2.opc.package import PartFactory
|
|
@@ -65,7 +68,7 @@ from pptx2.parts.slide import (
|
|
|
65
68
|
if TYPE_CHECKING:
|
|
66
69
|
from pptx2.opc.package import Part
|
|
67
70
|
|
|
68
|
-
__version__ = "3.
|
|
71
|
+
__version__ = "3.2.0"
|
|
69
72
|
|
|
70
73
|
sys.modules["pptx2.exceptions"] = exceptions
|
|
71
74
|
del sys
|
|
@@ -103,6 +106,9 @@ __all__ = [
|
|
|
103
106
|
"add_card",
|
|
104
107
|
"add_bullets",
|
|
105
108
|
"add_picture_fit",
|
|
109
|
+
"add_code",
|
|
110
|
+
"code_shape_name",
|
|
111
|
+
"CODE_THEMES",
|
|
106
112
|
"Card",
|
|
107
113
|
"FittedPicture",
|
|
108
114
|
# Curated colour sets.
|
|
@@ -14,6 +14,11 @@ driven by plain hex colours and points so a script needs no token setup:
|
|
|
14
14
|
* :func:`add_picture_fit` — a picture placed *inside* a box, either
|
|
15
15
|
letter-boxed (``mode="contain"``) or cropped to fill (``mode="cover"``),
|
|
16
16
|
centred, with an optional caption underneath.
|
|
17
|
+
* :func:`add_code` — a source listing: monospace, one paragraph per line,
|
|
18
|
+
no wrapping, on a rounded editor-coloured surface. The shape is *named*
|
|
19
|
+
``fika:code:<language>:<theme>:<0|1>`` so an editor that has a native
|
|
20
|
+
code block (Fika) restores a syntax-highlighted element from it instead
|
|
21
|
+
of a plain text box; PowerPoint just sees a tidy monospace box.
|
|
17
22
|
|
|
18
23
|
Every block tags the shapes it stacks with ``lint_group`` so the linter
|
|
19
24
|
treats a card and the text on it as one deliberate cluster, and every
|
|
@@ -36,11 +41,14 @@ if TYPE_CHECKING:
|
|
|
36
41
|
from pptx2.slide import Slide
|
|
37
42
|
|
|
38
43
|
__all__ = (
|
|
44
|
+
"CODE_THEMES",
|
|
39
45
|
"Card",
|
|
40
46
|
"FittedPicture",
|
|
41
47
|
"add_card",
|
|
42
48
|
"add_bullets",
|
|
49
|
+
"add_code",
|
|
43
50
|
"add_picture_fit",
|
|
51
|
+
"code_shape_name",
|
|
44
52
|
)
|
|
45
53
|
|
|
46
54
|
|
|
@@ -99,7 +107,7 @@ def add_bullets(
|
|
|
99
107
|
align: str = "left",
|
|
100
108
|
anchor: str = "top",
|
|
101
109
|
margin_pt: float = 0.0,
|
|
102
|
-
min_size_pt: float =
|
|
110
|
+
min_size_pt: float = 18.0,
|
|
103
111
|
) -> "Shape":
|
|
104
112
|
"""Add a bulleted (or numbered) list that fits its box.
|
|
105
113
|
|
|
@@ -199,7 +207,7 @@ def add_card(
|
|
|
199
207
|
align: str = "left",
|
|
200
208
|
anchor: str = "top",
|
|
201
209
|
title_gap_pt: float = 6.0,
|
|
202
|
-
body_min_size_pt: float =
|
|
210
|
+
body_min_size_pt: float = 16.0,
|
|
203
211
|
numbered: bool = False,
|
|
204
212
|
) -> Card:
|
|
205
213
|
"""Add a card: one surface, padded title and body, nothing else.
|
|
@@ -260,7 +268,7 @@ def add_card(
|
|
|
260
268
|
run.font.size = Pt(title_size_pt)
|
|
261
269
|
run.font.bold = True
|
|
262
270
|
run.font.color.rgb = coerce_color(title_color)
|
|
263
|
-
_fit(tf, font=font, max_pt=title_size_pt, min_pt=max(
|
|
271
|
+
_fit(tf, font=font, max_pt=title_size_pt, min_pt=max(18.0, title_size_pt * 0.7), bold=True)
|
|
264
272
|
cursor_top += title_h + int(Pt(title_gap_pt))
|
|
265
273
|
remaining = int(inner.bottom) - cursor_top
|
|
266
274
|
|
|
@@ -431,3 +439,154 @@ def add_picture_fit(
|
|
|
431
439
|
|
|
432
440
|
_tag([picture, caption_box], f"picture@{int(bb.left)},{int(bb.top)}")
|
|
433
441
|
return FittedPicture(picture=picture, caption_box=caption_box, frame=frame)
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
# ----------------------------------------------------------------------------- code
|
|
445
|
+
|
|
446
|
+
CODE_SHAPE_NAME_PREFIX = "fika:code"
|
|
447
|
+
|
|
448
|
+
#: Editor themes a listing can be painted in: ``theme -> (background, foreground)``.
|
|
449
|
+
#: The ids are Shiki's, so the tag round-trips into the editor's highlighter;
|
|
450
|
+
#: PowerPoint only sees the two flat colours.
|
|
451
|
+
CODE_THEMES: dict[str, tuple[str, str]] = {
|
|
452
|
+
"github-dark": ("#24292E", "#E1E4E8"),
|
|
453
|
+
"github-light": ("#FFFFFF", "#24292E"),
|
|
454
|
+
"one-dark-pro": ("#282C34", "#ABB2BF"),
|
|
455
|
+
"one-light": ("#FAFAFA", "#383A42"),
|
|
456
|
+
"dracula": ("#282A36", "#F8F8F2"),
|
|
457
|
+
"monokai": ("#272822", "#F8F8F2"),
|
|
458
|
+
"nord": ("#2E3440", "#D8DEE9"),
|
|
459
|
+
"tokyo-night": ("#1A1B26", "#A9B1D6"),
|
|
460
|
+
"night-owl": ("#011627", "#D6DEEB"),
|
|
461
|
+
"catppuccin-mocha": ("#1E1E2E", "#CDD6F4"),
|
|
462
|
+
"catppuccin-latte": ("#EFF1F5", "#4C4F69"),
|
|
463
|
+
"vitesse-dark": ("#121212", "#DBD7CA"),
|
|
464
|
+
"vitesse-light": ("#FFFFFF", "#393A34"),
|
|
465
|
+
"min-dark": ("#1F1F1F", "#B392F0"),
|
|
466
|
+
"min-light": ("#FFFFFF", "#24292E"),
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
_CODE_LANGUAGE_ALIASES = {
|
|
470
|
+
"js": "javascript",
|
|
471
|
+
"ts": "typescript",
|
|
472
|
+
"py": "python",
|
|
473
|
+
"sh": "bash",
|
|
474
|
+
"shell": "bash",
|
|
475
|
+
"zsh": "bash",
|
|
476
|
+
"yml": "yaml",
|
|
477
|
+
"md": "markdown",
|
|
478
|
+
"c++": "cpp",
|
|
479
|
+
"c#": "csharp",
|
|
480
|
+
"cs": "csharp",
|
|
481
|
+
"text": "plaintext",
|
|
482
|
+
"txt": "plaintext",
|
|
483
|
+
"plain": "plaintext",
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
def _code_language(language: str) -> str:
|
|
488
|
+
key = (language or "plaintext").strip().lower()
|
|
489
|
+
return _CODE_LANGUAGE_ALIASES.get(key, key) or "plaintext"
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
def code_shape_name(language: str, theme: str = "github-dark", line_numbers: bool = False) -> str:
|
|
493
|
+
"""The shape name that marks a text box as a code block for the editor.
|
|
494
|
+
|
|
495
|
+
``fika:code:<language>:<theme>:<0|1>`` — the same tag Fika writes when it
|
|
496
|
+
exports one of its native code elements, so a deck authored here and a
|
|
497
|
+
deck exported from the editor import identically.
|
|
498
|
+
"""
|
|
499
|
+
lang = _code_language(language)
|
|
500
|
+
if ":" in lang or ":" in theme:
|
|
501
|
+
raise ValueError("language and theme must not contain ':'")
|
|
502
|
+
return f"{CODE_SHAPE_NAME_PREFIX}:{lang}:{theme}:{1 if line_numbers else 0}"
|
|
503
|
+
|
|
504
|
+
|
|
505
|
+
def add_code(
|
|
506
|
+
slide: "Slide",
|
|
507
|
+
*bbox_or_positional,
|
|
508
|
+
code: str,
|
|
509
|
+
language: str = "plaintext",
|
|
510
|
+
theme: str = "github-dark",
|
|
511
|
+
size_pt: float = 16.0,
|
|
512
|
+
line_numbers: bool = False,
|
|
513
|
+
font: str = "Consolas",
|
|
514
|
+
pad_pt: float = 12.0,
|
|
515
|
+
radius_pt: float = 10.0,
|
|
516
|
+
line_spacing: float = 1.2,
|
|
517
|
+
tab_width: int = 4,
|
|
518
|
+
min_size_pt: float = 12.0,
|
|
519
|
+
) -> "Shape":
|
|
520
|
+
"""Add a source-code listing that the editor recognises as a code block.
|
|
521
|
+
|
|
522
|
+
``code`` is written verbatim — one paragraph per line, leading spaces and
|
|
523
|
+
blank lines kept, tabs expanded to ``tab_width`` spaces, never wrapped —
|
|
524
|
+
in a monospace ``font`` on a rounded surface coloured after ``theme``
|
|
525
|
+
(a key of :data:`CODE_THEMES`; unknown names fall back to a dark
|
|
526
|
+
surface). ``language`` is a Shiki id or common alias (``py``, ``cs``,
|
|
527
|
+
``c#``, ``ts`` …). When the listing is taller than the box the type
|
|
528
|
+
shrinks, never below ``min_size_pt`` — beyond that, split the listing
|
|
529
|
+
across slides instead of squeezing it.
|
|
530
|
+
|
|
531
|
+
The shape is named with :func:`code_shape_name`; an editor with native
|
|
532
|
+
code blocks (Fika) turns it into a highlighted, editable code element
|
|
533
|
+
on import. PowerPoint shows a plain monospace box in the theme colours.
|
|
534
|
+
|
|
535
|
+
Returns the :class:`Shape`.
|
|
536
|
+
"""
|
|
537
|
+
from pptx2._color import coerce_color
|
|
538
|
+
from pptx2.enum.text import MSO_ANCHOR, MSO_AUTO_SIZE, PP_ALIGN
|
|
539
|
+
|
|
540
|
+
bb = _as_bbox(bbox_or_positional)
|
|
541
|
+
lines = code.replace("\r\n", "\n").replace("\r", "\n").expandtabs(tab_width).split("\n")
|
|
542
|
+
while lines and not lines[-1].strip():
|
|
543
|
+
lines.pop()
|
|
544
|
+
while lines and not lines[0].strip():
|
|
545
|
+
lines.pop(0)
|
|
546
|
+
if not lines:
|
|
547
|
+
raise ValueError("code must not be empty")
|
|
548
|
+
|
|
549
|
+
bg_hex, fg_hex = CODE_THEMES.get(theme, CODE_THEMES["github-dark"])
|
|
550
|
+
bg, fg = coerce_color(bg_hex), coerce_color(fg_hex)
|
|
551
|
+
|
|
552
|
+
box = slide.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, *bb)
|
|
553
|
+
box.name = code_shape_name(language, theme, line_numbers)
|
|
554
|
+
box.fill.solid()
|
|
555
|
+
box.fill.fore_color.rgb = bg
|
|
556
|
+
box.line.fill.background()
|
|
557
|
+
box.shadow.clear()
|
|
558
|
+
short_edge = min(int(bb.width), int(bb.height))
|
|
559
|
+
box.corner_radius = Emu(min(int(Pt(radius_pt)), short_edge // 2))
|
|
560
|
+
|
|
561
|
+
tf = box.text_frame
|
|
562
|
+
tf.word_wrap = False
|
|
563
|
+
tf.vertical_anchor = MSO_ANCHOR.TOP
|
|
564
|
+
pad = Pt(pad_pt)
|
|
565
|
+
tf.margin_left = tf.margin_right = tf.margin_top = tf.margin_bottom = pad
|
|
566
|
+
|
|
567
|
+
width = len(str(len(lines)))
|
|
568
|
+
for i, line in enumerate(lines):
|
|
569
|
+
para = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
|
|
570
|
+
para.alignment = PP_ALIGN.LEFT
|
|
571
|
+
para.line_spacing = float(line_spacing)
|
|
572
|
+
text = f"{i + 1:>{width}} {line}" if line_numbers else line
|
|
573
|
+
run = para.add_run()
|
|
574
|
+
run.text = text if text else " "
|
|
575
|
+
run.font.name = font
|
|
576
|
+
run.font.size = Pt(size_pt)
|
|
577
|
+
run.font.color.rgb = fg
|
|
578
|
+
|
|
579
|
+
# Fit by height only: a listing must never wrap, so shrink the type until
|
|
580
|
+
# every line has room, then let PowerPoint clip the rest rather than reflow.
|
|
581
|
+
avail_h = int(bb.height) - 2 * int(pad)
|
|
582
|
+
per_line = size_pt * 1.2 * line_spacing
|
|
583
|
+
needed_h = int(Pt(per_line * len(lines)))
|
|
584
|
+
if needed_h > avail_h > 0:
|
|
585
|
+
fitted = max(min_size_pt, size_pt * avail_h / needed_h)
|
|
586
|
+
for para in tf.paragraphs:
|
|
587
|
+
for run in para.runs:
|
|
588
|
+
run.font.size = Pt(fitted)
|
|
589
|
+
tf.auto_size = MSO_AUTO_SIZE.NONE
|
|
590
|
+
|
|
591
|
+
_tag([box], f"code@{int(bb.left)},{int(bb.top)}")
|
|
592
|
+
return box
|
|
@@ -293,7 +293,7 @@ class MinFontSize(LintIssue):
|
|
|
293
293
|
"""A text run uses a font size below the configured legibility threshold."""
|
|
294
294
|
|
|
295
295
|
pt: float = 0.0
|
|
296
|
-
threshold_pt: float =
|
|
296
|
+
threshold_pt: float = 12.0
|
|
297
297
|
|
|
298
298
|
def __init__(self, shape: BaseShape, pt: float, threshold_pt: float):
|
|
299
299
|
super().__init__(
|
|
@@ -1819,10 +1819,11 @@ def _check_collisions(
|
|
|
1819
1819
|
|
|
1820
1820
|
|
|
1821
1821
|
# ---------------------------------------------------------------------------
|
|
1822
|
-
# Min font size — flag any run below the legibility threshold (default
|
|
1822
|
+
# Min font size — flag any run below the legibility threshold (default 12pt:
|
|
1823
|
+
# projected slides are read from the back of a room, not from a desk).
|
|
1823
1824
|
# ---------------------------------------------------------------------------
|
|
1824
1825
|
|
|
1825
|
-
_DEFAULT_MIN_FONT_PT =
|
|
1826
|
+
_DEFAULT_MIN_FONT_PT = 12.0
|
|
1826
1827
|
_PT_TO_EMU = 12700
|
|
1827
1828
|
|
|
1828
1829
|
|
|
@@ -38,14 +38,22 @@ helpers that implement it:
|
|
|
38
38
|
- one **palette** (`PALETTES["slate"]` → `P.paper / P.ink / P.accent /
|
|
39
39
|
P.surface / P.muted`; `P.dark()` for title and section slides),
|
|
40
40
|
- one **grid** (`TITLE` band + `BODY` region; `BODY.columns(n, gap=…)`),
|
|
41
|
-
- a **type scale** (title 32, body
|
|
41
|
+
- a **type scale** read from the back row (title 32–36, body 22–26, card
|
|
42
|
+
body 18–20, caption 14 — nothing under 14 pt),
|
|
42
43
|
- **surfaces done well** — `add_card` is one tinted rounded rectangle with
|
|
43
44
|
padded text inside, nothing attached to it,
|
|
44
45
|
- real **bullets** with hanging indents (`add_bullets`), pictures that
|
|
45
|
-
keep their aspect (`add_picture_fit`),
|
|
46
|
+
keep their aspect (`add_picture_fit`), **code listings** the editor
|
|
47
|
+
recognises as code blocks (`add_code`), palette-driven diagrams and
|
|
46
48
|
tables,
|
|
47
|
-
- a catalog of **slide archetypes** (title, section, statement,
|
|
48
|
-
picture, three cards, process, comparison, quote,
|
|
49
|
+
- a catalog of **slide archetypes** (title, section, statement, big
|
|
50
|
+
number, bullets + picture, three cards, process, comparison, quote,
|
|
51
|
+
full-bleed photo, question, summary) — planned as a sequence before
|
|
52
|
+
slide 2, consecutive slides never sharing one, dense alternating with
|
|
53
|
+
light,
|
|
54
|
+
- a **visual per slide** chosen for its content: a photo for a real
|
|
55
|
+
thing, a chart for numbers, a diagram for a process, a table for a
|
|
56
|
+
comparison, typeset math for formulas,
|
|
49
57
|
- and a **visual check**: `prs.render_contact_sheet("preview.png")` — one
|
|
50
58
|
PNG of every slide, looked at once before shipping.
|
|
51
59
|
|
|
@@ -61,7 +69,7 @@ working set:
|
|
|
61
69
|
|
|
62
70
|
```python
|
|
63
71
|
from pptx2 import Presentation, BBox, audit, PALETTES
|
|
64
|
-
from pptx2 import add_card, add_bullets, add_picture_fit
|
|
72
|
+
from pptx2 import add_card, add_bullets, add_picture_fit, add_code
|
|
65
73
|
from pptx2.diagrams import horizontal_pipeline, hub_and_spoke, cycle
|
|
66
74
|
from pptx2.enum.shapes import MSO_SHAPE
|
|
67
75
|
from pptx2.util import Inches, Pt
|
|
@@ -104,6 +112,12 @@ add_bullets(slide, left, items=["First point", "Second point"],
|
|
|
104
112
|
add_picture_fit(slide, "photo.jpg", right, mode="contain", # or "cover" to fill + crop
|
|
105
113
|
caption="Source: Wikimedia", caption_color=P.muted)
|
|
106
114
|
|
|
115
|
+
# --- source code: monospace listing, never a plain text box ---
|
|
116
|
+
add_code(slide, right, code='for i in range(3):\n print(i)', language="python",
|
|
117
|
+
size_pt=18) # theme="github-dark" | "github-light" | …; line_numbers=True
|
|
118
|
+
# the shape is named fika:code:<lang>:<theme>:<0|1> — editors with a native
|
|
119
|
+
# code block (Fika) turn it into a highlighted, editable element on import
|
|
120
|
+
|
|
107
121
|
# --- native equation from LaTeX (pip install "python-pptx2[math]") ---
|
|
108
122
|
slide.shapes.add_equation(bb, latex=r"\frac{a}{b}", size_pt=28)
|
|
109
123
|
para = slide.shapes.add_text(bb, text="Euler: ").text_frame.paragraphs[0]
|