ps-python-pptx 1.1.0__tar.gz → 1.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.
- {ps_python_pptx-1.1.0/src/ps_python_pptx.egg-info → ps_python_pptx-1.2.0}/PKG-INFO +1 -1
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/__init__.py +1 -1
- ps_python_pptx-1.2.0/src/pptx/background.py +198 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/slide.py +7 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0/src/ps_python_pptx.egg-info}/PKG-INFO +1 -1
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/ps_python_pptx.egg-info/SOURCES.txt +2 -0
- ps_python_pptx-1.2.0/tests/test_background_info.py +91 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/FORK.md +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/HISTORY.rst +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/LICENSE +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/MANIFEST.in +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/README.rst +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/act-action.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/act-hyperlink.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/cht-axis-props.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/cht-axistitle-props.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/cht-category-access.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/cht-category-props.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/cht-chart.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/cht-charttitle-props.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/cht-data-props.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/cht-datalabels.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/cht-gridlines-props.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/cht-legend-access.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/cht-legend-props.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/cht-marker-props.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/cht-plot-props.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/cht-point-access.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/cht-point-props.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/cht-replace-data.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/cht-series.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/cht-ticklabels-props.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/dml-color.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/dml-effect.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/dml-fill.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/dml-line.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/environment.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/ph-inherit-props.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/ph-insert-shape.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/ph-phfmt-props.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/ph-placeholder-props.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/prs-coreprops.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/prs-default-template.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/prs-open-save.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/prs-presentation-props.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/shp-alt-text.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/shp-autoshape.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/shp-connector.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/shp-freeform.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/shp-graphicframe.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/shp-groupshape.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/shp-movie-props.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/shp-picture.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/shp-placeholder.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/shp-shapes.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/shp-shared.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/sld-background.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/sld-slide.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/sld-slides.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/action.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/axis.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/background.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/category.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/chart.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/chartdata.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/color.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/coreprops.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/datalabel.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/effect.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/fill.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/font.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/font_color.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/helpers.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/legend.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/line.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/picture.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/placeholder.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/plot.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/presentation.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/series.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/shape.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/shapes.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/slide.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/slides.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/table.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/72-dpi.tiff +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/CVS_LOGO.WMF +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/act-props.pptm +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/calibriz.ttf +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-axis-props.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-category-access.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-chart-props.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-chart-type.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-charts.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-datalabels.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-gridlines-props.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-legend-props.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-legend.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-marker-props.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-plot-props.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-point-access.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-point-props.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-replace-data.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-series.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-ticklabels-props.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/dml-effect.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/dml-fill.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/dml-line.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/ext-rels.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/[Content_Types].xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/_rels/.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/docProps/app.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/docProps/core.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/docProps/thumbnail.jpeg +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/_rels/presentation.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/presProps.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/presentation.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/printerSettings/printerSettings1.bin +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout1.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout10.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout11.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout2.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout3.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout4.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout5.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout6.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout7.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout8.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout9.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout1.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout10.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout11.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout2.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout3.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout4.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout5.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout6.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout7.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout8.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout9.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideMasters/_rels/slideMaster1.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slideMasters/slideMaster1.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slides/_rels/slide1.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/slides/slide1.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/tableStyles.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/theme/theme1.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/ppt/viewProps.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/font-color.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/just-two-mice.mp4 +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/just-two-mice.png +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/lyt-shapes.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/minimal.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/monty-truth.png +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/mst-placeholders.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/mst-shapes.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/mst-slide-layouts.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/ph-inherit-props.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/ph-populated-placeholders.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/ph-unpopulated-placeholders.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/pic.emf +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/prs-add-slide.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/prs-notes.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/prs-properties.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/prs-slide-masters.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/python-icon.jpeg +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/python-powered.png +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/python.bmp +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/shp-access-chart.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/shp-access-ole-object.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/shp-autoshape-adjustments.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/shp-autoshape-props.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/shp-common-props.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/shp-connector-props.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/shp-embedded-docx.docx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/shp-embedded-pptx.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/shp-embedded-xlsx.xlsx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/shp-freeform.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/shp-groupshape.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/shp-movie-props.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/shp-picture.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/shp-pos-and-size.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/shp-shapes.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/sld-background.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/sld-blank.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/sld-notes.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/sld-slide.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/sld-slides.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/sonic.gif +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/tbl-cell.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/test-image-jpg-mime.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/test.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/txt-fit-text.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/txt-font-props.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/txt-font-typeface.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/txt-paragraph-spacing.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/txt-text-frame.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/txt-text.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/text.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/text_frame.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/tbl-cell.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/tbl-column.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/tbl-table.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/txt-fit-text.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/txt-font-color.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/txt-font-props.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/txt-paragraph.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/txt-text.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/txt-textframe.feature +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/pyproject.toml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/setup.cfg +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/action.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/api.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/chart/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/chart/axis.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/chart/category.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/chart/chart.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/chart/data.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/chart/datalabel.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/chart/legend.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/chart/marker.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/chart/plot.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/chart/point.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/chart/series.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/chart/xlsx.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/chart/xmlwriter.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/dml/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/dml/chtfmt.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/dml/color.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/dml/effect.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/dml/fill.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/dml/line.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/enum/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/enum/action.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/enum/base.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/enum/chart.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/enum/dml.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/enum/lang.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/enum/shapes.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/enum/text.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/exc.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/media.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/opc/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/opc/constants.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/opc/oxml.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/opc/package.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/opc/packuri.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/opc/serialized.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/opc/shared.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/opc/spec.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/action.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/chart/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/chart/axis.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/chart/chart.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/chart/datalabel.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/chart/legend.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/chart/marker.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/chart/plot.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/chart/series.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/chart/shared.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/coreprops.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/dml/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/dml/color.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/dml/fill.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/dml/line.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/ns.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/presentation.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/shapes/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/shapes/autoshape.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/shapes/connector.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/shapes/graphfrm.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/shapes/groupshape.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/shapes/picture.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/shapes/shared.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/simpletypes.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/slide.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/table.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/text.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/theme.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/oxml/xmlchemy.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/package.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/parts/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/parts/chart.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/parts/coreprops.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/parts/embeddedpackage.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/parts/image.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/parts/media.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/parts/presentation.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/parts/slide.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/parts/theme.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/presentation.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/py.typed +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/shapes/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/shapes/autoshape.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/shapes/base.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/shapes/connector.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/shapes/freeform.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/shapes/graphfrm.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/shapes/group.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/shapes/picture.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/shapes/placeholder.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/shapes/shapetree.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/shared.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/spec.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/table.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/templates/default.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/templates/docx-icon.emf +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/templates/generic-icon.emf +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/templates/notes.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/templates/notesMaster.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/templates/pptx-icon.emf +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/templates/theme.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/templates/xlsx-icon.emf +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/text/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/text/fonts.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/text/layout.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/text/text.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/theme.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/types.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/pptx/util.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/ps_python_pptx.egg-info/dependency_links.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/ps_python_pptx.egg-info/requires.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/src/ps_python_pptx.egg-info/top_level.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/chart/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/chart/test_axis.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/chart/test_category.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/chart/test_chart.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/chart/test_data.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/chart/test_datalabel.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/chart/test_legend.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/chart/test_marker.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/chart/test_plot.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/chart/test_point.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/chart/test_series.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/chart/test_xlsx.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/chart/test_xmlwriter.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/dml/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/dml/test_chtfmt.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/dml/test_color.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/dml/test_effect.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/dml/test_fill.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/dml/test_line.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/enum/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/enum/test_base.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/enum/test_shapes.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/fork_wheel_smoke.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/opc/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/opc/test_oxml.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/opc/test_package.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/opc/test_packuri.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/opc/test_serialized.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/oxml/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/oxml/shapes/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/oxml/shapes/test_autoshape.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/oxml/shapes/test_graphfrm.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/oxml/shapes/test_groupshape.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/oxml/shapes/test_picture.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/oxml/test___init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/oxml/test_dml.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/oxml/test_ns.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/oxml/test_presentation.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/oxml/test_simpletypes.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/oxml/test_slide.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/oxml/test_table.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/oxml/test_theme.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/oxml/test_xmlchemy.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/oxml/unitdata/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/oxml/unitdata/dml.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/oxml/unitdata/shape.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/oxml/unitdata/text.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/parts/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/parts/test_chart.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/parts/test_coreprops.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/parts/test_embeddedpackage.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/parts/test_image.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/parts/test_media.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/parts/test_presentation.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/parts/test_slide.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/shapes/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/shapes/test_autoshape.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/shapes/test_base.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/shapes/test_connector.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/shapes/test_freeform.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/shapes/test_graphfrm.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/shapes/test_group.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/shapes/test_picture.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/shapes/test_placeholder.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/shapes/test_shapetree.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_action.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_alternative_text_roundtrip.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_api.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_background_authoring_roundtrip.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_character_formatting_roundtrip.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/calibriz.ttf +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/cdw-logo.eps +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/dummy.mp4 +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/[Content_Types].xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/_rels/.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/docProps/app.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/docProps/core.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/docProps/thumbnail.jpeg +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/_rels/presentation.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/presProps.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/presentation.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/printerSettings/printerSettings1.bin +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout1.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout10.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout11.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout2.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout3.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout4.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout5.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout6.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout7.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout8.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout9.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout1.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout10.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout11.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout2.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout3.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout4.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout5.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout6.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout7.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout8.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout9.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideMasters/_rels/slideMaster1.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slideMasters/slideMaster1.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slides/_rels/slide1.xml.rels +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/slides/slide1.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/tableStyles.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/theme/theme1.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/expanded_pptx/ppt/viewProps.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/minimal.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/minimal_slide.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/missing_rels_item.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/monty-truth.png +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/no-core-props.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/no-slides.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/presentation.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/python-icon.jpeg +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/python-powered.png +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/python.bmp +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/slideLayout1.xml +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x2-area-date.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x2-area-float.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x2-area-stacked-100.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x2-area-stacked.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x2-area.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x2-bar-clustered-date.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x2-bar-clustered-float.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x2-bar-clustered.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x2-bar-stacked-100.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x2-bar-stacked.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x2-column-clustered.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x2-column-stacked-100.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x2-column-stacked.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x2-line-date.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x2-line-float.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x2-line-markers-stacked-100.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x2-line-markers-stacked.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x2-line-markers.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x2-line-stacked-100.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x2-line-stacked.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x2-line.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x3-bubble-3d.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x3-bubble.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x3-xy-lines-no-markers.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x3-xy-lines.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x3-xy-smooth-no-markers.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x3-xy-smooth.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x3-xy.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/2x5-radar.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/3x1-pie-exploded.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/3x1-pie.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/3x2-doughnut-exploded.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/3x2-doughnut.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/4x2-multi-cat-bar.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/adjust-ser-count.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/cat-labels.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/content-types-xml.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/default-notes.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/default-notesMaster.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/default-theme.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/freeform.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/package-rels-xml.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/placeholders.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/presentation-rels-xml.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/relationships.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/rels-load-from-xml.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/rewrite-ser.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/snippets/timing.txt +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/test.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_files/test_slides.pptx +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_media.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_package.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_paragraph_formatting_roundtrip.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_presentation.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_shared.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_slide.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_slide_management_roundtrip.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_stacking_order_roundtrip.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_table.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_table_style_roundtrip.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_theme_authoring_roundtrip.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/test_util.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/text/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/text/test_fonts.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/text/test_layout.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/text/test_text.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/unitdata.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/unitutil/__init__.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/unitutil/cxml.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/unitutil/file.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tests/unitutil/mock.py +0 -0
- {ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/tox.ini +0 -0
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"""Read-only snapshots of slide background fills.
|
|
2
|
+
|
|
3
|
+
This models the background fill, not graphics drawn on a slide or master.
|
|
4
|
+
Unsupported fills are reported explicitly rather than changing the document.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import colorsys
|
|
10
|
+
from dataclasses import dataclass
|
|
11
|
+
|
|
12
|
+
from pptx.dml.color import RGBColor
|
|
13
|
+
from pptx.enum.dml import MSO_THEME_COLOR
|
|
14
|
+
from pptx.opc.constants import RELATIONSHIP_TYPE as RT
|
|
15
|
+
from pptx.oxml.ns import qn
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@dataclass(frozen=True)
|
|
19
|
+
class BackgroundInfo:
|
|
20
|
+
"""Resolved background data, independent of the source XML.
|
|
21
|
+
|
|
22
|
+
kind is solid, gradient, picture, none, or unknown. Gradient angles are
|
|
23
|
+
counter-clockwise degrees. Picture crop values are fractional insets in
|
|
24
|
+
left, top, right, bottom order. Only stretched picture fills are supported.
|
|
25
|
+
reason explains unsupported data. No getter creates or changes XML.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
kind: str
|
|
29
|
+
color: RGBColor | None = None
|
|
30
|
+
stops: tuple = ()
|
|
31
|
+
angle: float = 0.0
|
|
32
|
+
radial: bool = False
|
|
33
|
+
center: tuple = (0.5, 0.5)
|
|
34
|
+
image: bytes | None = None
|
|
35
|
+
crop: tuple = (0.0, 0.0, 0.0, 0.0)
|
|
36
|
+
reason: str | None = None
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def background_info(owner):
|
|
40
|
+
"""Resolve inheritance and theme background styles without modifying XML."""
|
|
41
|
+
chain = [owner]
|
|
42
|
+
if hasattr(owner, "slide_layout"):
|
|
43
|
+
chain.append(owner.slide_layout)
|
|
44
|
+
if hasattr(chain[-1], "slide_master"):
|
|
45
|
+
chain.append(chain[-1].slide_master)
|
|
46
|
+
master = chain[-1]
|
|
47
|
+
try:
|
|
48
|
+
if any(rel.reltype == RT.THEME_OVERRIDE for item in chain for rel in item.part.rels.values()):
|
|
49
|
+
raise ValueError("theme overrides are not supported")
|
|
50
|
+
theme = master.theme
|
|
51
|
+
color_map = {}
|
|
52
|
+
for item in reversed(chain):
|
|
53
|
+
mapping = item._element.find(qn("p:clrMap"))
|
|
54
|
+
override = item._element.find(qn("p:clrMapOvr"))
|
|
55
|
+
if override is not None:
|
|
56
|
+
mapping = override.find(qn("a:overrideClrMapping"))
|
|
57
|
+
if mapping is not None:
|
|
58
|
+
color_map.update(mapping.attrib)
|
|
59
|
+
for item in chain:
|
|
60
|
+
bg = item._element.cSld.find(qn("p:bg"))
|
|
61
|
+
if bg is None:
|
|
62
|
+
continue
|
|
63
|
+
explicit = bg.find(qn("p:bgPr"))
|
|
64
|
+
if explicit is not None:
|
|
65
|
+
return _fill_info(explicit, item.part, theme, color_map)
|
|
66
|
+
reference = bg.find(qn("p:bgRef"))
|
|
67
|
+
if reference is None:
|
|
68
|
+
raise ValueError("background has no fill or style reference")
|
|
69
|
+
index = int(reference.get("idx", "0"))
|
|
70
|
+
if index == 0:
|
|
71
|
+
return BackgroundInfo("none")
|
|
72
|
+
path = "a:themeElements/a:fmtScheme/" + (
|
|
73
|
+
"a:bgFillStyleLst" if index >= 1001 else "a:fillStyleLst"
|
|
74
|
+
)
|
|
75
|
+
styles = theme._element
|
|
76
|
+
for name in path.split("/"):
|
|
77
|
+
styles = styles.find(qn(name))
|
|
78
|
+
if styles is None:
|
|
79
|
+
raise ValueError("theme background style list is missing")
|
|
80
|
+
offset = index - 1001 if index >= 1001 else index - 1
|
|
81
|
+
if offset < 0 or offset >= len(styles):
|
|
82
|
+
raise ValueError("theme background style index is out of range")
|
|
83
|
+
placeholder = _color(reference, theme, color_map)
|
|
84
|
+
return _fill_info(
|
|
85
|
+
styles[offset], master.part.part_related_by(RT.THEME), theme, color_map, placeholder
|
|
86
|
+
)
|
|
87
|
+
return BackgroundInfo("solid", color=RGBColor(255, 255, 255))
|
|
88
|
+
except (ValueError, KeyError, AttributeError, TypeError) as exc:
|
|
89
|
+
return BackgroundInfo("unknown", reason=str(exc))
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def _color(parent, theme, mapping, placeholder=None):
|
|
93
|
+
choices = {"srgbClr", "schemeClr", "sysClr"}
|
|
94
|
+
node = next((child for child in parent if child.tag.rsplit("}", 1)[-1] in choices), None)
|
|
95
|
+
if node is None:
|
|
96
|
+
raise ValueError("unsupported or missing background color")
|
|
97
|
+
kind = node.tag.rsplit("}", 1)[-1]
|
|
98
|
+
if kind == "srgbClr":
|
|
99
|
+
rgb = RGBColor.from_string(node.get("val"))
|
|
100
|
+
elif kind == "sysClr":
|
|
101
|
+
rgb = RGBColor.from_string(node.get("lastClr"))
|
|
102
|
+
else:
|
|
103
|
+
slot = node.get("val")
|
|
104
|
+
if slot == "phClr":
|
|
105
|
+
if placeholder is None:
|
|
106
|
+
raise ValueError("unresolved placeholder color")
|
|
107
|
+
rgb = placeholder
|
|
108
|
+
else:
|
|
109
|
+
slot = mapping.get(slot, slot)
|
|
110
|
+
rgb = theme.color_scheme[MSO_THEME_COLOR.from_xml(slot)]
|
|
111
|
+
channels = tuple(c / 255 for c in rgb)
|
|
112
|
+
for transform in node:
|
|
113
|
+
name = transform.tag.rsplit("}", 1)[-1]
|
|
114
|
+
value = int(transform.get("val", "0")) / 100000
|
|
115
|
+
if name == "alpha" and value == 1:
|
|
116
|
+
continue
|
|
117
|
+
if name in {"lumMod", "lumOff", "satMod"}:
|
|
118
|
+
h, light, saturation = colorsys.rgb_to_hls(*channels)
|
|
119
|
+
if name == "lumMod":
|
|
120
|
+
light *= value
|
|
121
|
+
elif name == "lumOff":
|
|
122
|
+
light += value
|
|
123
|
+
else:
|
|
124
|
+
saturation *= value
|
|
125
|
+
channels = colorsys.hls_to_rgb(h, max(0, min(1, light)), max(0, min(1, saturation)))
|
|
126
|
+
elif name == "tint":
|
|
127
|
+
channels = tuple(1 - (1 - c) * value for c in channels)
|
|
128
|
+
elif name == "shade":
|
|
129
|
+
channels = tuple(c * value for c in channels)
|
|
130
|
+
else:
|
|
131
|
+
raise ValueError("unsupported background color transform: " + name)
|
|
132
|
+
return RGBColor(*(round(max(0, min(1, c)) * 255) for c in channels))
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
def _fill_info(parent, part, theme, mapping, placeholder=None):
|
|
136
|
+
if any(parent.find(qn(name)) is not None for name in ("a:effectLst", "a:effectDag")):
|
|
137
|
+
effects = [parent.find(qn(name)) for name in ("a:effectLst", "a:effectDag")]
|
|
138
|
+
if any(effect is not None and len(effect) for effect in effects):
|
|
139
|
+
raise ValueError("background effects are not supported")
|
|
140
|
+
fills = {"solidFill", "gradFill", "blipFill", "noFill"}
|
|
141
|
+
tag = parent.tag.rsplit("}", 1)[-1]
|
|
142
|
+
node = (
|
|
143
|
+
parent
|
|
144
|
+
if tag in fills
|
|
145
|
+
else next((child for child in parent if child.tag.rsplit("}", 1)[-1] in fills), None)
|
|
146
|
+
)
|
|
147
|
+
if node is None:
|
|
148
|
+
raise ValueError("unsupported background fill")
|
|
149
|
+
kind = node.tag.rsplit("}", 1)[-1]
|
|
150
|
+
if kind == "noFill":
|
|
151
|
+
return BackgroundInfo("none")
|
|
152
|
+
if kind == "solidFill":
|
|
153
|
+
return BackgroundInfo("solid", color=_color(node, theme, mapping, placeholder))
|
|
154
|
+
if kind == "blipFill":
|
|
155
|
+
if node.find(qn("a:tile")) is not None:
|
|
156
|
+
raise ValueError("tiled background pictures are not supported")
|
|
157
|
+
stretch = node.find(qn("a:stretch"))
|
|
158
|
+
if stretch is None:
|
|
159
|
+
raise ValueError("background picture has no stretch geometry")
|
|
160
|
+
rect = stretch.find(qn("a:fillRect"))
|
|
161
|
+
if rect is not None and any(int(rect.get(k, "0")) for k in ("l", "t", "r", "b")):
|
|
162
|
+
raise ValueError("inset picture fills are not supported")
|
|
163
|
+
blip = node.find(qn("a:blip"))
|
|
164
|
+
if blip is None or len(blip):
|
|
165
|
+
raise ValueError("missing background picture or unsupported picture effects")
|
|
166
|
+
image = part.related_part(blip.get(qn("r:embed"))).blob
|
|
167
|
+
rect = node.find(qn("a:srcRect"))
|
|
168
|
+
crop = (
|
|
169
|
+
tuple(int(rect.get(k, "0")) / 100000 for k in ("l", "t", "r", "b"))
|
|
170
|
+
if rect is not None
|
|
171
|
+
else (0.0, 0.0, 0.0, 0.0)
|
|
172
|
+
)
|
|
173
|
+
return BackgroundInfo("picture", image=image, crop=crop)
|
|
174
|
+
stop_list = node.find(qn("a:gsLst"))
|
|
175
|
+
if stop_list is None or len(stop_list) < 2:
|
|
176
|
+
raise ValueError("background gradient needs at least two stops")
|
|
177
|
+
stops = tuple(
|
|
178
|
+
(int(s.get("pos")) / 100000, _color(s, theme, mapping, placeholder)) for s in stop_list
|
|
179
|
+
)
|
|
180
|
+
linear = node.find(qn("a:lin"))
|
|
181
|
+
if linear is not None:
|
|
182
|
+
if linear.get("scaled", "0") not in {"0", "false"}:
|
|
183
|
+
raise ValueError("scaled gradient geometry is not supported")
|
|
184
|
+
return BackgroundInfo(
|
|
185
|
+
"gradient", stops=stops, angle=(-int(linear.get("ang", "0")) / 60000) % 360
|
|
186
|
+
)
|
|
187
|
+
path = node.find(qn("a:path"))
|
|
188
|
+
if path is None or path.get("path") != "circle":
|
|
189
|
+
raise ValueError("unsupported gradient path")
|
|
190
|
+
rect = path.find(qn("a:fillToRect"))
|
|
191
|
+
values = (
|
|
192
|
+
tuple(int(rect.get(k, "0")) / 100000 for k in ("l", "t", "r", "b"))
|
|
193
|
+
if rect is not None
|
|
194
|
+
else (0.0, 0.0, 0.0, 0.0)
|
|
195
|
+
)
|
|
196
|
+
if abs(values[0] + values[2] - 1) > 0.00001 or abs(values[1] + values[3] - 1) > 0.00001:
|
|
197
|
+
raise ValueError("radial gradient focal region must be a point")
|
|
198
|
+
return BackgroundInfo("gradient", stops=stops, radial=True, center=values[:2])
|
|
@@ -56,6 +56,13 @@ class _BaseSlide(PartElementProxy):
|
|
|
56
56
|
"""
|
|
57
57
|
return _Background(self._element.cSld)
|
|
58
58
|
|
|
59
|
+
@property
|
|
60
|
+
def background_info(self):
|
|
61
|
+
"""Read-only effective background fill snapshot, including inherited styles."""
|
|
62
|
+
from pptx.background import background_info
|
|
63
|
+
|
|
64
|
+
return background_info(self)
|
|
65
|
+
|
|
59
66
|
def set_background_picture(self, image_file) -> None:
|
|
60
67
|
"""Use an image path or file-like object as a stretched slide background.
|
|
61
68
|
|
|
@@ -204,6 +204,7 @@ features/steps/test_files/extracted-pptx/ppt/theme/theme1.xml
|
|
|
204
204
|
src/pptx/__init__.py
|
|
205
205
|
src/pptx/action.py
|
|
206
206
|
src/pptx/api.py
|
|
207
|
+
src/pptx/background.py
|
|
207
208
|
src/pptx/exc.py
|
|
208
209
|
src/pptx/media.py
|
|
209
210
|
src/pptx/package.py
|
|
@@ -324,6 +325,7 @@ tests/test_action.py
|
|
|
324
325
|
tests/test_alternative_text_roundtrip.py
|
|
325
326
|
tests/test_api.py
|
|
326
327
|
tests/test_background_authoring_roundtrip.py
|
|
328
|
+
tests/test_background_info.py
|
|
327
329
|
tests/test_character_formatting_roundtrip.py
|
|
328
330
|
tests/test_media.py
|
|
329
331
|
tests/test_package.py
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"""Round-trip checks for the read-only background snapshot API."""
|
|
2
|
+
|
|
3
|
+
import io
|
|
4
|
+
|
|
5
|
+
from PIL import Image
|
|
6
|
+
from pptx import Presentation
|
|
7
|
+
from pptx.dml.color import RGBColor
|
|
8
|
+
from pptx.enum.dml import MSO_THEME_COLOR
|
|
9
|
+
from pptx.oxml.xmlchemy import OxmlElement
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def test_inherited_default_background_does_not_change_xml():
|
|
13
|
+
prs = Presentation()
|
|
14
|
+
slide = prs.slides.add_slide(prs.slide_layouts[1])
|
|
15
|
+
before = (slide._element.xml, slide.slide_layout._element.xml, prs.slide_master._element.xml)
|
|
16
|
+
info = slide.background_info
|
|
17
|
+
assert info.kind == "solid"
|
|
18
|
+
assert info.color == RGBColor(255, 255, 255)
|
|
19
|
+
assert before == (
|
|
20
|
+
slide._element.xml,
|
|
21
|
+
slide.slide_layout._element.xml,
|
|
22
|
+
prs.slide_master._element.xml,
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def test_layout_and_slide_overrides_resolve_theme_colors():
|
|
27
|
+
prs = Presentation()
|
|
28
|
+
layout = prs.slide_layouts[1]
|
|
29
|
+
layout.background.fill.solid()
|
|
30
|
+
layout.background.fill.fore_color.theme_color = MSO_THEME_COLOR.ACCENT_1
|
|
31
|
+
prs.slide_master.theme.color_scheme[MSO_THEME_COLOR.ACCENT_1] = RGBColor(20, 50, 80)
|
|
32
|
+
slide = prs.slides.add_slide(layout)
|
|
33
|
+
assert slide.background_info.color == RGBColor(20, 50, 80)
|
|
34
|
+
slide.background.fill.solid()
|
|
35
|
+
slide.background.fill.fore_color.rgb = RGBColor(40, 50, 60)
|
|
36
|
+
assert slide.background_info.color == RGBColor(40, 50, 60)
|
|
37
|
+
target = io.BytesIO()
|
|
38
|
+
prs.save(target)
|
|
39
|
+
assert Presentation(target).slides[0].background_info.color == RGBColor(40, 50, 60)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def test_gradient_snapshot_includes_geometry_and_resolved_stops():
|
|
43
|
+
prs = Presentation()
|
|
44
|
+
slide = prs.slides.add_slide(prs.slide_layouts[1])
|
|
45
|
+
stops = [(0, RGBColor(0, 0, 0)), (1, RGBColor(255, 255, 255))]
|
|
46
|
+
slide.background.fill.set_gradient(stops, angle=135)
|
|
47
|
+
info = slide.background_info
|
|
48
|
+
assert info.kind == "gradient"
|
|
49
|
+
assert info.stops == tuple(stops)
|
|
50
|
+
assert info.angle == 135
|
|
51
|
+
assert not info.radial
|
|
52
|
+
slide.background.fill.set_gradient(stops, radial=True, center=(0.25, 0.75))
|
|
53
|
+
info = slide.background_info
|
|
54
|
+
assert info.radial and info.center == (0.25, 0.75)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def test_picture_snapshot_returns_embedded_bytes():
|
|
58
|
+
image = io.BytesIO()
|
|
59
|
+
Image.new("RGB", (20, 10), "blue").save(image, format="PNG")
|
|
60
|
+
prs = Presentation()
|
|
61
|
+
prs.slide_master.set_background_picture(image)
|
|
62
|
+
slide = prs.slides.add_slide(prs.slide_layouts[1])
|
|
63
|
+
before = slide._element.xml
|
|
64
|
+
info = slide.background_info
|
|
65
|
+
assert info.kind == "picture"
|
|
66
|
+
assert info.image == image.getvalue()
|
|
67
|
+
assert before == slide._element.xml
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def test_unsupported_fill_is_reported_without_mutation():
|
|
71
|
+
prs = Presentation()
|
|
72
|
+
slide = prs.slides.add_slide(prs.slide_layouts[1])
|
|
73
|
+
slide.background.fill.patterned()
|
|
74
|
+
before = slide._element.xml
|
|
75
|
+
assert slide.background_info.kind == "unknown"
|
|
76
|
+
assert "unsupported" in slide.background_info.reason
|
|
77
|
+
assert before == slide._element.xml
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def test_brightness_transforms_are_resolved():
|
|
81
|
+
prs = Presentation()
|
|
82
|
+
slide = prs.slides.add_slide(prs.slide_layouts[1])
|
|
83
|
+
slide.background.fill.solid()
|
|
84
|
+
color = slide.background.fill.fore_color
|
|
85
|
+
color.rgb = RGBColor(255, 255, 255)
|
|
86
|
+
color.brightness = -0.5
|
|
87
|
+
assert slide.background_info.color == RGBColor(128, 128, 128)
|
|
88
|
+
alpha = OxmlElement("a:alpha")
|
|
89
|
+
alpha.set("val", "50000")
|
|
90
|
+
color._color._xClr.append(alpha)
|
|
91
|
+
assert slide.background_info.kind == "unknown"
|
|
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
|
|
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
|
{ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-category-access.pptx
RENAMED
|
File without changes
|
{ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-chart-props.pptx
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-gridlines-props.pptx
RENAMED
|
File without changes
|
{ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-legend-props.pptx
RENAMED
|
File without changes
|
|
File without changes
|
{ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-marker-props.pptx
RENAMED
|
File without changes
|
|
File without changes
|
{ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-point-access.pptx
RENAMED
|
File without changes
|
{ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-point-props.pptx
RENAMED
|
File without changes
|
{ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-replace-data.pptx
RENAMED
|
File without changes
|
|
File without changes
|
{ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/cht-ticklabels-props.pptx
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ps_python_pptx-1.1.0 → ps_python_pptx-1.2.0}/features/steps/test_files/extracted-pptx/_rels/.rels
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|