power-pptx 1.1.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.
- power_pptx-1.1.0/HISTORY.rst +948 -0
- power_pptx-1.1.0/LICENSE +21 -0
- power_pptx-1.1.0/MANIFEST.in +5 -0
- power_pptx-1.1.0/PKG-INFO +138 -0
- power_pptx-1.1.0/README.rst +99 -0
- power_pptx-1.1.0/features/act-action.feature +88 -0
- power_pptx-1.1.0/features/act-hyperlink.feature +53 -0
- power_pptx-1.1.0/features/cht-axis-props.feature +187 -0
- power_pptx-1.1.0/features/cht-axistitle-props.feature +44 -0
- power_pptx-1.1.0/features/cht-category-access.feature +72 -0
- power_pptx-1.1.0/features/cht-category-props.feature +24 -0
- power_pptx-1.1.0/features/cht-chart.feature +108 -0
- power_pptx-1.1.0/features/cht-charttitle-props.feature +44 -0
- power_pptx-1.1.0/features/cht-data-props.feature +107 -0
- power_pptx-1.1.0/features/cht-datalabels.feature +208 -0
- power_pptx-1.1.0/features/cht-gridlines-props.feature +11 -0
- power_pptx-1.1.0/features/cht-legend-access.feature +31 -0
- power_pptx-1.1.0/features/cht-legend-props.feature +82 -0
- power_pptx-1.1.0/features/cht-marker-props.feature +59 -0
- power_pptx-1.1.0/features/cht-plot-props.feature +121 -0
- power_pptx-1.1.0/features/cht-point-access.feature +37 -0
- power_pptx-1.1.0/features/cht-point-props.feature +21 -0
- power_pptx-1.1.0/features/cht-replace-data.feature +40 -0
- power_pptx-1.1.0/features/cht-series.feature +144 -0
- power_pptx-1.1.0/features/cht-ticklabels-props.feature +26 -0
- power_pptx-1.1.0/features/dml-color.feature +22 -0
- power_pptx-1.1.0/features/dml-effect.feature +29 -0
- power_pptx-1.1.0/features/dml-fill.feature +106 -0
- power_pptx-1.1.0/features/dml-line.feature +62 -0
- power_pptx-1.1.0/features/environment.py +24 -0
- power_pptx-1.1.0/features/ph-inherit-props.feature +33 -0
- power_pptx-1.1.0/features/ph-insert-shape.feature +33 -0
- power_pptx-1.1.0/features/ph-phfmt-props.feature +25 -0
- power_pptx-1.1.0/features/ph-placeholder-props.feature +53 -0
- power_pptx-1.1.0/features/prs-coreprops.feature +20 -0
- power_pptx-1.1.0/features/prs-default-template.feature +9 -0
- power_pptx-1.1.0/features/prs-open-save.feature +39 -0
- power_pptx-1.1.0/features/prs-presentation-props.feature +38 -0
- power_pptx-1.1.0/features/shp-autoshape.feature +26 -0
- power_pptx-1.1.0/features/shp-connector.feature +83 -0
- power_pptx-1.1.0/features/shp-freeform.feature +45 -0
- power_pptx-1.1.0/features/shp-graphicframe.feature +50 -0
- power_pptx-1.1.0/features/shp-groupshape.feature +46 -0
- power_pptx-1.1.0/features/shp-movie-props.feature +24 -0
- power_pptx-1.1.0/features/shp-picture.feature +73 -0
- power_pptx-1.1.0/features/shp-placeholder.feature +16 -0
- power_pptx-1.1.0/features/shp-shapes.feature +384 -0
- power_pptx-1.1.0/features/shp-shared.feature +211 -0
- power_pptx-1.1.0/features/sld-background.feature +15 -0
- power_pptx-1.1.0/features/sld-slide.feature +142 -0
- power_pptx-1.1.0/features/sld-slides.feature +78 -0
- power_pptx-1.1.0/features/steps/action.py +105 -0
- power_pptx-1.1.0/features/steps/axis.py +303 -0
- power_pptx-1.1.0/features/steps/background.py +27 -0
- power_pptx-1.1.0/features/steps/category.py +157 -0
- power_pptx-1.1.0/features/steps/chart.py +380 -0
- power_pptx-1.1.0/features/steps/chartdata.py +210 -0
- power_pptx-1.1.0/features/steps/color.py +70 -0
- power_pptx-1.1.0/features/steps/coreprops.py +73 -0
- power_pptx-1.1.0/features/steps/datalabel.py +195 -0
- power_pptx-1.1.0/features/steps/effect.py +35 -0
- power_pptx-1.1.0/features/steps/fill.py +156 -0
- power_pptx-1.1.0/features/steps/font.py +150 -0
- power_pptx-1.1.0/features/steps/font_color.py +94 -0
- power_pptx-1.1.0/features/steps/helpers.py +51 -0
- power_pptx-1.1.0/features/steps/legend.py +90 -0
- power_pptx-1.1.0/features/steps/line.py +96 -0
- power_pptx-1.1.0/features/steps/picture.py +77 -0
- power_pptx-1.1.0/features/steps/placeholder.py +312 -0
- power_pptx-1.1.0/features/steps/plot.py +135 -0
- power_pptx-1.1.0/features/steps/presentation.py +222 -0
- power_pptx-1.1.0/features/steps/series.py +345 -0
- power_pptx-1.1.0/features/steps/shape.py +671 -0
- power_pptx-1.1.0/features/steps/shapes.py +342 -0
- power_pptx-1.1.0/features/steps/slide.py +206 -0
- power_pptx-1.1.0/features/steps/slides.py +142 -0
- power_pptx-1.1.0/features/steps/table.py +305 -0
- power_pptx-1.1.0/features/steps/test_files/72-dpi.tiff +0 -0
- power_pptx-1.1.0/features/steps/test_files/CVS_LOGO.WMF +0 -0
- power_pptx-1.1.0/features/steps/test_files/act-props.pptm +0 -0
- power_pptx-1.1.0/features/steps/test_files/calibriz.ttf +0 -0
- power_pptx-1.1.0/features/steps/test_files/cht-axis-props.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/cht-category-access.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/cht-chart-props.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/cht-chart-type.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/cht-charts.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/cht-datalabels.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/cht-gridlines-props.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/cht-legend-props.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/cht-legend.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/cht-marker-props.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/cht-plot-props.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/cht-point-access.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/cht-point-props.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/cht-replace-data.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/cht-series.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/cht-ticklabels-props.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/dml-effect.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/dml-fill.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/dml-line.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/ext-rels.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/[Content_Types].xml +27 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/_rels/.rels +7 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/docProps/app.xml +42 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/docProps/core.xml +13 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/docProps/thumbnail.jpeg +0 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/_rels/presentation.xml.rels +10 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/presProps.xml +11 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/presentation.xml +106 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/printerSettings/printerSettings1.bin +0 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout1.xml.rels +4 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout10.xml.rels +4 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout11.xml.rels +4 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout2.xml.rels +4 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout3.xml.rels +4 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout4.xml.rels +4 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout5.xml.rels +4 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout6.xml.rels +4 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout7.xml.rels +4 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout8.xml.rels +4 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/_rels/slideLayout9.xml.rels +4 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout1.xml +237 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout10.xml +165 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout11.xml +175 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout2.xml +165 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout3.xml +241 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout4.xml +283 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout5.xml +417 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout6.xml +113 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout7.xml +90 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout8.xml +272 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideLayouts/slideLayout9.xml +248 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideMasters/_rels/slideMaster1.xml.rels +15 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slideMasters/slideMaster1.xml +505 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slides/_rels/slide1.xml.rels +4 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/slides/slide1.xml +74 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/tableStyles.xml +2 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/theme/theme1.xml +281 -0
- power_pptx-1.1.0/features/steps/test_files/extracted-pptx/ppt/viewProps.xml +32 -0
- power_pptx-1.1.0/features/steps/test_files/font-color.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/just-two-mice.mp4 +0 -0
- power_pptx-1.1.0/features/steps/test_files/just-two-mice.png +0 -0
- power_pptx-1.1.0/features/steps/test_files/lyt-shapes.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/minimal.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/monty-truth.png +0 -0
- power_pptx-1.1.0/features/steps/test_files/mst-placeholders.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/mst-shapes.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/mst-slide-layouts.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/ph-inherit-props.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/ph-populated-placeholders.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/ph-unpopulated-placeholders.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/pic.emf +0 -0
- power_pptx-1.1.0/features/steps/test_files/prs-add-slide.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/prs-notes.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/prs-properties.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/prs-slide-masters.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/python-icon.jpeg +0 -0
- power_pptx-1.1.0/features/steps/test_files/python-powered.png +0 -0
- power_pptx-1.1.0/features/steps/test_files/python.bmp +0 -0
- power_pptx-1.1.0/features/steps/test_files/shp-access-chart.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/shp-access-ole-object.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/shp-autoshape-adjustments.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/shp-autoshape-props.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/shp-common-props.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/shp-connector-props.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/shp-embedded-docx.docx +0 -0
- power_pptx-1.1.0/features/steps/test_files/shp-embedded-pptx.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/shp-embedded-xlsx.xlsx +0 -0
- power_pptx-1.1.0/features/steps/test_files/shp-freeform.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/shp-groupshape.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/shp-movie-props.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/shp-picture.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/shp-pos-and-size.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/shp-shapes.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/sld-background.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/sld-blank.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/sld-notes.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/sld-slide.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/sld-slides.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/sonic.gif +0 -0
- power_pptx-1.1.0/features/steps/test_files/tbl-cell.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/test-image-jpg-mime.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/test.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/txt-fit-text.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/txt-font-props.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/txt-font-typeface.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/txt-paragraph-spacing.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/txt-text-frame.pptx +0 -0
- power_pptx-1.1.0/features/steps/test_files/txt-text.pptx +0 -0
- power_pptx-1.1.0/features/steps/text.py +248 -0
- power_pptx-1.1.0/features/steps/text_frame.py +129 -0
- power_pptx-1.1.0/features/tbl-cell.feature +113 -0
- power_pptx-1.1.0/features/tbl-column.feature +10 -0
- power_pptx-1.1.0/features/tbl-table.feature +60 -0
- power_pptx-1.1.0/features/txt-fit-text.feature +11 -0
- power_pptx-1.1.0/features/txt-font-color.feature +55 -0
- power_pptx-1.1.0/features/txt-font-props.feature +149 -0
- power_pptx-1.1.0/features/txt-paragraph.feature +95 -0
- power_pptx-1.1.0/features/txt-text.feature +23 -0
- power_pptx-1.1.0/features/txt-textframe.feature +75 -0
- power_pptx-1.1.0/pyproject.toml +150 -0
- power_pptx-1.1.0/setup.cfg +4 -0
- power_pptx-1.1.0/src/power_pptx.egg-info/PKG-INFO +138 -0
- power_pptx-1.1.0/src/power_pptx.egg-info/SOURCES.txt +547 -0
- power_pptx-1.1.0/src/power_pptx.egg-info/dependency_links.txt +1 -0
- power_pptx-1.1.0/src/power_pptx.egg-info/requires.txt +4 -0
- power_pptx-1.1.0/src/power_pptx.egg-info/top_level.txt +1 -0
- power_pptx-1.1.0/src/pptx/__init__.py +99 -0
- power_pptx-1.1.0/src/pptx/_slide_importer.py +412 -0
- power_pptx-1.1.0/src/pptx/_svg.py +155 -0
- power_pptx-1.1.0/src/pptx/_template_applier.py +292 -0
- power_pptx-1.1.0/src/pptx/action.py +270 -0
- power_pptx-1.1.0/src/pptx/animation.py +1358 -0
- power_pptx-1.1.0/src/pptx/api.py +49 -0
- power_pptx-1.1.0/src/pptx/chart/__init__.py +0 -0
- power_pptx-1.1.0/src/pptx/chart/axis.py +523 -0
- power_pptx-1.1.0/src/pptx/chart/category.py +200 -0
- power_pptx-1.1.0/src/pptx/chart/chart.py +317 -0
- power_pptx-1.1.0/src/pptx/chart/data.py +864 -0
- power_pptx-1.1.0/src/pptx/chart/datalabel.py +288 -0
- power_pptx-1.1.0/src/pptx/chart/legend.py +79 -0
- power_pptx-1.1.0/src/pptx/chart/marker.py +70 -0
- power_pptx-1.1.0/src/pptx/chart/palettes.py +129 -0
- power_pptx-1.1.0/src/pptx/chart/plot.py +412 -0
- power_pptx-1.1.0/src/pptx/chart/point.py +101 -0
- power_pptx-1.1.0/src/pptx/chart/quick_layouts.py +237 -0
- power_pptx-1.1.0/src/pptx/chart/series.py +258 -0
- power_pptx-1.1.0/src/pptx/chart/xlsx.py +272 -0
- power_pptx-1.1.0/src/pptx/chart/xmlwriter.py +1840 -0
- power_pptx-1.1.0/src/pptx/compose/__init__.py +28 -0
- power_pptx-1.1.0/src/pptx/compose/from_spec.py +350 -0
- power_pptx-1.1.0/src/pptx/design/__init__.py +8 -0
- power_pptx-1.1.0/src/pptx/design/layout.py +325 -0
- power_pptx-1.1.0/src/pptx/design/recipes.py +529 -0
- power_pptx-1.1.0/src/pptx/design/style.py +209 -0
- power_pptx-1.1.0/src/pptx/design/tokens.py +353 -0
- power_pptx-1.1.0/src/pptx/dml/__init__.py +0 -0
- power_pptx-1.1.0/src/pptx/dml/chtfmt.py +40 -0
- power_pptx-1.1.0/src/pptx/dml/color.py +463 -0
- power_pptx-1.1.0/src/pptx/dml/effect.py +545 -0
- power_pptx-1.1.0/src/pptx/dml/fill.py +560 -0
- power_pptx-1.1.0/src/pptx/dml/line.py +287 -0
- power_pptx-1.1.0/src/pptx/dml/picture.py +195 -0
- power_pptx-1.1.0/src/pptx/dml/three_d.py +305 -0
- power_pptx-1.1.0/src/pptx/enum/__init__.py +0 -0
- power_pptx-1.1.0/src/pptx/enum/action.py +71 -0
- power_pptx-1.1.0/src/pptx/enum/animation.py +31 -0
- power_pptx-1.1.0/src/pptx/enum/base.py +206 -0
- power_pptx-1.1.0/src/pptx/enum/chart.py +492 -0
- power_pptx-1.1.0/src/pptx/enum/dml.py +652 -0
- power_pptx-1.1.0/src/pptx/enum/lang.py +685 -0
- power_pptx-1.1.0/src/pptx/enum/presentation.py +126 -0
- power_pptx-1.1.0/src/pptx/enum/shapes.py +1029 -0
- power_pptx-1.1.0/src/pptx/enum/text.py +230 -0
- power_pptx-1.1.0/src/pptx/exc.py +28 -0
- power_pptx-1.1.0/src/pptx/inherit.py +109 -0
- power_pptx-1.1.0/src/pptx/lint.py +359 -0
- power_pptx-1.1.0/src/pptx/media.py +197 -0
- power_pptx-1.1.0/src/pptx/opc/__init__.py +0 -0
- power_pptx-1.1.0/src/pptx/opc/constants.py +332 -0
- power_pptx-1.1.0/src/pptx/opc/oxml.py +188 -0
- power_pptx-1.1.0/src/pptx/opc/package.py +762 -0
- power_pptx-1.1.0/src/pptx/opc/packuri.py +109 -0
- power_pptx-1.1.0/src/pptx/opc/serialized.py +296 -0
- power_pptx-1.1.0/src/pptx/opc/shared.py +20 -0
- power_pptx-1.1.0/src/pptx/opc/spec.py +45 -0
- power_pptx-1.1.0/src/pptx/oxml/__init__.py +546 -0
- power_pptx-1.1.0/src/pptx/oxml/action.py +53 -0
- power_pptx-1.1.0/src/pptx/oxml/chart/__init__.py +0 -0
- power_pptx-1.1.0/src/pptx/oxml/chart/axis.py +297 -0
- power_pptx-1.1.0/src/pptx/oxml/chart/chart.py +282 -0
- power_pptx-1.1.0/src/pptx/oxml/chart/datalabel.py +252 -0
- power_pptx-1.1.0/src/pptx/oxml/chart/legend.py +72 -0
- power_pptx-1.1.0/src/pptx/oxml/chart/marker.py +61 -0
- power_pptx-1.1.0/src/pptx/oxml/chart/plot.py +345 -0
- power_pptx-1.1.0/src/pptx/oxml/chart/series.py +254 -0
- power_pptx-1.1.0/src/pptx/oxml/chart/shared.py +219 -0
- power_pptx-1.1.0/src/pptx/oxml/coreprops.py +288 -0
- power_pptx-1.1.0/src/pptx/oxml/dml/__init__.py +0 -0
- power_pptx-1.1.0/src/pptx/oxml/dml/color.py +135 -0
- power_pptx-1.1.0/src/pptx/oxml/dml/effect.py +180 -0
- power_pptx-1.1.0/src/pptx/oxml/dml/fill.py +310 -0
- power_pptx-1.1.0/src/pptx/oxml/dml/line.py +12 -0
- power_pptx-1.1.0/src/pptx/oxml/dml/three_d.py +79 -0
- power_pptx-1.1.0/src/pptx/oxml/ns.py +133 -0
- power_pptx-1.1.0/src/pptx/oxml/presentation.py +130 -0
- power_pptx-1.1.0/src/pptx/oxml/shapes/__init__.py +19 -0
- power_pptx-1.1.0/src/pptx/oxml/shapes/autoshape.py +465 -0
- power_pptx-1.1.0/src/pptx/oxml/shapes/connector.py +107 -0
- power_pptx-1.1.0/src/pptx/oxml/shapes/graphfrm.py +342 -0
- power_pptx-1.1.0/src/pptx/oxml/shapes/groupshape.py +308 -0
- power_pptx-1.1.0/src/pptx/oxml/shapes/picture.py +270 -0
- power_pptx-1.1.0/src/pptx/oxml/shapes/shared.py +572 -0
- power_pptx-1.1.0/src/pptx/oxml/simpletypes.py +750 -0
- power_pptx-1.1.0/src/pptx/oxml/slide.py +389 -0
- power_pptx-1.1.0/src/pptx/oxml/table.py +612 -0
- power_pptx-1.1.0/src/pptx/oxml/text.py +618 -0
- power_pptx-1.1.0/src/pptx/oxml/theme.py +36 -0
- power_pptx-1.1.0/src/pptx/oxml/xmlchemy.py +717 -0
- power_pptx-1.1.0/src/pptx/package.py +222 -0
- power_pptx-1.1.0/src/pptx/parts/__init__.py +0 -0
- power_pptx-1.1.0/src/pptx/parts/chart.py +95 -0
- power_pptx-1.1.0/src/pptx/parts/coreprops.py +167 -0
- power_pptx-1.1.0/src/pptx/parts/diagram.py +37 -0
- power_pptx-1.1.0/src/pptx/parts/embeddedpackage.py +93 -0
- power_pptx-1.1.0/src/pptx/parts/image.py +275 -0
- power_pptx-1.1.0/src/pptx/parts/media.py +37 -0
- power_pptx-1.1.0/src/pptx/parts/presentation.py +126 -0
- power_pptx-1.1.0/src/pptx/parts/slide.py +333 -0
- power_pptx-1.1.0/src/pptx/presentation.py +264 -0
- power_pptx-1.1.0/src/pptx/py.typed +0 -0
- power_pptx-1.1.0/src/pptx/render.py +280 -0
- power_pptx-1.1.0/src/pptx/shapes/__init__.py +26 -0
- power_pptx-1.1.0/src/pptx/shapes/autoshape.py +355 -0
- power_pptx-1.1.0/src/pptx/shapes/base.py +326 -0
- power_pptx-1.1.0/src/pptx/shapes/connector.py +297 -0
- power_pptx-1.1.0/src/pptx/shapes/freeform.py +337 -0
- power_pptx-1.1.0/src/pptx/shapes/graphfrm.py +208 -0
- power_pptx-1.1.0/src/pptx/shapes/group.py +95 -0
- power_pptx-1.1.0/src/pptx/shapes/picture.py +216 -0
- power_pptx-1.1.0/src/pptx/shapes/placeholder.py +407 -0
- power_pptx-1.1.0/src/pptx/shapes/shapetree.py +1245 -0
- power_pptx-1.1.0/src/pptx/shared.py +82 -0
- power_pptx-1.1.0/src/pptx/slide.py +747 -0
- power_pptx-1.1.0/src/pptx/smart_art.py +220 -0
- power_pptx-1.1.0/src/pptx/spec.py +633 -0
- power_pptx-1.1.0/src/pptx/table.py +630 -0
- power_pptx-1.1.0/src/pptx/templates/default.pptx +0 -0
- power_pptx-1.1.0/src/pptx/templates/docx-icon.emf +0 -0
- power_pptx-1.1.0/src/pptx/templates/generic-icon.emf +0 -0
- power_pptx-1.1.0/src/pptx/templates/notes.xml +23 -0
- power_pptx-1.1.0/src/pptx/templates/notesMaster.xml +352 -0
- power_pptx-1.1.0/src/pptx/templates/pptx-icon.emf +0 -0
- power_pptx-1.1.0/src/pptx/templates/theme.xml +321 -0
- power_pptx-1.1.0/src/pptx/templates/xlsx-icon.emf +0 -0
- power_pptx-1.1.0/src/pptx/text/__init__.py +0 -0
- power_pptx-1.1.0/src/pptx/text/fonts.py +434 -0
- power_pptx-1.1.0/src/pptx/text/layout.py +342 -0
- power_pptx-1.1.0/src/pptx/text/text.py +726 -0
- power_pptx-1.1.0/src/pptx/theme.py +362 -0
- power_pptx-1.1.0/src/pptx/types.py +36 -0
- power_pptx-1.1.0/src/pptx/util.py +214 -0
- power_pptx-1.1.0/tests/__init__.py +0 -0
- power_pptx-1.1.0/tests/chart/__init__.py +0 -0
- power_pptx-1.1.0/tests/chart/test_axis.py +1219 -0
- power_pptx-1.1.0/tests/chart/test_category.py +249 -0
- power_pptx-1.1.0/tests/chart/test_chart.py +686 -0
- power_pptx-1.1.0/tests/chart/test_data.py +893 -0
- power_pptx-1.1.0/tests/chart/test_datalabel.py +663 -0
- power_pptx-1.1.0/tests/chart/test_legend.py +176 -0
- power_pptx-1.1.0/tests/chart/test_marker.py +134 -0
- power_pptx-1.1.0/tests/chart/test_palettes.py +60 -0
- power_pptx-1.1.0/tests/chart/test_plot.py +471 -0
- power_pptx-1.1.0/tests/chart/test_point.py +221 -0
- power_pptx-1.1.0/tests/chart/test_quick_layouts.py +162 -0
- power_pptx-1.1.0/tests/chart/test_series.py +551 -0
- power_pptx-1.1.0/tests/chart/test_xlsx.py +425 -0
- power_pptx-1.1.0/tests/chart/test_xmlwriter.py +726 -0
- power_pptx-1.1.0/tests/design/__init__.py +0 -0
- power_pptx-1.1.0/tests/design/test_layout.py +207 -0
- power_pptx-1.1.0/tests/design/test_recipes.py +257 -0
- power_pptx-1.1.0/tests/design/test_style.py +94 -0
- power_pptx-1.1.0/tests/design/test_tokens.py +119 -0
- power_pptx-1.1.0/tests/dml/__init__.py +0 -0
- power_pptx-1.1.0/tests/dml/test_chtfmt.py +87 -0
- power_pptx-1.1.0/tests/dml/test_color.py +360 -0
- power_pptx-1.1.0/tests/dml/test_effect.py +203 -0
- power_pptx-1.1.0/tests/dml/test_fill.py +907 -0
- power_pptx-1.1.0/tests/dml/test_line.py +337 -0
- power_pptx-1.1.0/tests/dml/test_three_d.py +202 -0
- power_pptx-1.1.0/tests/enum/__init__.py +0 -0
- power_pptx-1.1.0/tests/enum/test_base.py +97 -0
- power_pptx-1.1.0/tests/enum/test_shapes.py +46 -0
- power_pptx-1.1.0/tests/integration/__init__.py +1 -0
- power_pptx-1.1.0/tests/integration/round_trip.py +90 -0
- power_pptx-1.1.0/tests/integration/test_apply_template.py +175 -0
- power_pptx-1.1.0/tests/integration/test_compose_package.py +42 -0
- power_pptx-1.1.0/tests/integration/test_import_slide.py +200 -0
- power_pptx-1.1.0/tests/integration/test_round_trip.py +160 -0
- power_pptx-1.1.0/tests/opc/__init__.py +0 -0
- power_pptx-1.1.0/tests/opc/test_oxml.py +211 -0
- power_pptx-1.1.0/tests/opc/test_package.py +1037 -0
- power_pptx-1.1.0/tests/opc/test_packuri.py +94 -0
- power_pptx-1.1.0/tests/opc/test_serialized.py +410 -0
- power_pptx-1.1.0/tests/oxml/__init__.py +0 -0
- power_pptx-1.1.0/tests/oxml/shapes/__init__.py +0 -0
- power_pptx-1.1.0/tests/oxml/shapes/test_autoshape.py +266 -0
- power_pptx-1.1.0/tests/oxml/shapes/test_graphfrm.py +80 -0
- power_pptx-1.1.0/tests/oxml/shapes/test_groupshape.py +297 -0
- power_pptx-1.1.0/tests/oxml/shapes/test_picture.py +107 -0
- power_pptx-1.1.0/tests/oxml/test___init__.py +105 -0
- power_pptx-1.1.0/tests/oxml/test_dml.py +152 -0
- power_pptx-1.1.0/tests/oxml/test_ns.py +94 -0
- power_pptx-1.1.0/tests/oxml/test_presentation.py +63 -0
- power_pptx-1.1.0/tests/oxml/test_simpletypes.py +283 -0
- power_pptx-1.1.0/tests/oxml/test_slide.py +23 -0
- power_pptx-1.1.0/tests/oxml/test_table.py +255 -0
- power_pptx-1.1.0/tests/oxml/test_theme.py +23 -0
- power_pptx-1.1.0/tests/oxml/test_xmlchemy.py +604 -0
- power_pptx-1.1.0/tests/oxml/unitdata/__init__.py +0 -0
- power_pptx-1.1.0/tests/oxml/unitdata/dml.py +102 -0
- power_pptx-1.1.0/tests/oxml/unitdata/shape.py +215 -0
- power_pptx-1.1.0/tests/oxml/unitdata/text.py +85 -0
- power_pptx-1.1.0/tests/parts/__init__.py +0 -0
- power_pptx-1.1.0/tests/parts/test_chart.py +152 -0
- power_pptx-1.1.0/tests/parts/test_coreprops.py +198 -0
- power_pptx-1.1.0/tests/parts/test_embeddedpackage.py +74 -0
- power_pptx-1.1.0/tests/parts/test_image.py +246 -0
- power_pptx-1.1.0/tests/parts/test_media.py +33 -0
- power_pptx-1.1.0/tests/parts/test_presentation.py +225 -0
- power_pptx-1.1.0/tests/parts/test_slide.py +589 -0
- power_pptx-1.1.0/tests/shapes/__init__.py +0 -0
- power_pptx-1.1.0/tests/shapes/test_autoshape.py +491 -0
- power_pptx-1.1.0/tests/shapes/test_base.py +619 -0
- power_pptx-1.1.0/tests/shapes/test_connector.py +427 -0
- power_pptx-1.1.0/tests/shapes/test_freeform.py +565 -0
- power_pptx-1.1.0/tests/shapes/test_graphfrm.py +168 -0
- power_pptx-1.1.0/tests/shapes/test_group.py +73 -0
- power_pptx-1.1.0/tests/shapes/test_picture.py +306 -0
- power_pptx-1.1.0/tests/shapes/test_placeholder.py +564 -0
- power_pptx-1.1.0/tests/shapes/test_shapetree.py +2358 -0
- power_pptx-1.1.0/tests/test_action.py +373 -0
- power_pptx-1.1.0/tests/test_animation.py +347 -0
- power_pptx-1.1.0/tests/test_api.py +48 -0
- power_pptx-1.1.0/tests/test_files/calibriz.ttf +0 -0
- power_pptx-1.1.0/tests/test_files/cdw-logo.eps +420 -0
- power_pptx-1.1.0/tests/test_files/dummy.mp4 +1 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/[Content_Types].xml +27 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/_rels/.rels +7 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/docProps/app.xml +41 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/docProps/core.xml +13 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/docProps/thumbnail.jpeg +0 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/_rels/presentation.xml.rels +10 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/presProps.xml +4 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/presentation.xml +109 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/printerSettings/printerSettings1.bin +0 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout1.xml.rels +4 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout10.xml.rels +4 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout11.xml.rels +4 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout2.xml.rels +4 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout3.xml.rels +4 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout4.xml.rels +4 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout5.xml.rels +4 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout6.xml.rels +4 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout7.xml.rels +4 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout8.xml.rels +4 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/_rels/slideLayout9.xml.rels +4 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout1.xml +242 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout10.xml +165 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout11.xml +175 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout2.xml +170 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout3.xml +246 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout4.xml +288 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout5.xml +422 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout6.xml +118 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout7.xml +95 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout8.xml +277 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideLayouts/slideLayout9.xml +253 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideMasters/_rels/slideMaster1.xml.rels +15 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slideMasters/slideMaster1.xml +507 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slides/_rels/slide1.xml.rels +4 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/slides/slide1.xml +76 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/tableStyles.xml +2 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/theme/theme1.xml +281 -0
- power_pptx-1.1.0/tests/test_files/expanded_pptx/ppt/viewProps.xml +34 -0
- power_pptx-1.1.0/tests/test_files/minimal.pptx +0 -0
- power_pptx-1.1.0/tests/test_files/minimal_slide.xml +15 -0
- power_pptx-1.1.0/tests/test_files/missing_rels_item.pptx +0 -0
- power_pptx-1.1.0/tests/test_files/monty-truth.png +0 -0
- power_pptx-1.1.0/tests/test_files/no-core-props.pptx +0 -0
- power_pptx-1.1.0/tests/test_files/no-slides.pptx +0 -0
- power_pptx-1.1.0/tests/test_files/presentation.xml +109 -0
- power_pptx-1.1.0/tests/test_files/python-icon.jpeg +0 -0
- power_pptx-1.1.0/tests/test_files/python-powered.png +0 -0
- power_pptx-1.1.0/tests/test_files/python.bmp +0 -0
- power_pptx-1.1.0/tests/test_files/slideLayout1.xml +265 -0
- power_pptx-1.1.0/tests/test_files/smart_art_org_chart.pptx +0 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x2-area-date.txt +166 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x2-area-float.txt +167 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x2-area-stacked-100.txt +165 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x2-area-stacked.txt +165 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x2-area.txt +165 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x2-bar-clustered-date.txt +145 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x2-bar-clustered-float.txt +145 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x2-bar-clustered.txt +143 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x2-bar-stacked-100.txt +144 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x2-bar-stacked.txt +144 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x2-column-clustered.txt +143 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x2-column-stacked-100.txt +144 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x2-column-stacked.txt +144 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x2-line-date.txt +162 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x2-line-float.txt +162 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x2-line-markers-stacked-100.txt +154 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x2-line-markers-stacked.txt +154 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x2-line-markers.txt +154 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x2-line-stacked-100.txt +160 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x2-line-stacked.txt +160 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x2-line.txt +160 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x3-bubble-3d.txt +215 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x3-bubble.txt +215 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x3-xy-lines-no-markers.txt +172 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x3-xy-lines.txt +166 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x3-xy-smooth-no-markers.txt +172 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x3-xy-smooth.txt +166 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x3-xy.txt +176 -0
- power_pptx-1.1.0/tests/test_files/snippets/2x5-radar.txt +205 -0
- power_pptx-1.1.0/tests/test_files/snippets/3x1-pie-exploded.txt +73 -0
- power_pptx-1.1.0/tests/test_files/snippets/3x1-pie.txt +72 -0
- power_pptx-1.1.0/tests/test_files/snippets/3x2-doughnut-exploded.txt +145 -0
- power_pptx-1.1.0/tests/test_files/snippets/3x2-doughnut.txt +143 -0
- power_pptx-1.1.0/tests/test_files/snippets/4x2-multi-cat-bar.txt +181 -0
- power_pptx-1.1.0/tests/test_files/snippets/adjust-ser-count.txt +157 -0
- power_pptx-1.1.0/tests/test_files/snippets/cat-labels.txt +146 -0
- power_pptx-1.1.0/tests/test_files/snippets/content-types-xml.txt +9 -0
- power_pptx-1.1.0/tests/test_files/snippets/default-notes.txt +22 -0
- power_pptx-1.1.0/tests/test_files/snippets/default-notesMaster.txt +347 -0
- power_pptx-1.1.0/tests/test_files/snippets/default-theme.txt +317 -0
- power_pptx-1.1.0/tests/test_files/snippets/freeform.txt +44 -0
- power_pptx-1.1.0/tests/test_files/snippets/package-rels-xml.txt +7 -0
- power_pptx-1.1.0/tests/test_files/snippets/placeholders.txt +54 -0
- power_pptx-1.1.0/tests/test_files/snippets/presentation-rels-xml.txt +6 -0
- power_pptx-1.1.0/tests/test_files/snippets/relationships.txt +2 -0
- power_pptx-1.1.0/tests/test_files/snippets/rels-load-from-xml.txt +6 -0
- power_pptx-1.1.0/tests/test_files/snippets/rewrite-ser.txt +488 -0
- power_pptx-1.1.0/tests/test_files/snippets/timing.txt +101 -0
- power_pptx-1.1.0/tests/test_files/test.pptx +0 -0
- power_pptx-1.1.0/tests/test_files/test_slides.pptx +0 -0
- power_pptx-1.1.0/tests/test_inherit.py +110 -0
- power_pptx-1.1.0/tests/test_media.py +134 -0
- power_pptx-1.1.0/tests/test_package.py +377 -0
- power_pptx-1.1.0/tests/test_presentation.py +268 -0
- power_pptx-1.1.0/tests/test_render.py +327 -0
- power_pptx-1.1.0/tests/test_shared.py +83 -0
- power_pptx-1.1.0/tests/test_slide.py +1233 -0
- power_pptx-1.1.0/tests/test_smart_art.py +145 -0
- power_pptx-1.1.0/tests/test_svg_picture.py +180 -0
- power_pptx-1.1.0/tests/test_table.py +975 -0
- power_pptx-1.1.0/tests/test_theme.py +141 -0
- power_pptx-1.1.0/tests/test_util.py +52 -0
- power_pptx-1.1.0/tests/text/__init__.py +0 -0
- power_pptx-1.1.0/tests/text/test_fonts.py +736 -0
- power_pptx-1.1.0/tests/text/test_layout.py +287 -0
- power_pptx-1.1.0/tests/text/test_text.py +1261 -0
- power_pptx-1.1.0/tests/unitdata.py +120 -0
- power_pptx-1.1.0/tests/unitutil/__init__.py +13 -0
- power_pptx-1.1.0/tests/unitutil/cxml.py +283 -0
- power_pptx-1.1.0/tests/unitutil/file.py +57 -0
- power_pptx-1.1.0/tests/unitutil/mock.py +130 -0
- power_pptx-1.1.0/tox.ini +9 -0
|
@@ -0,0 +1,948 @@
|
|
|
1
|
+
.. :changelog:
|
|
2
|
+
|
|
3
|
+
Release History
|
|
4
|
+
---------------
|
|
5
|
+
|
|
6
|
+
This project was forked from `scanny/python-pptx`_ at version 1.0.2.
|
|
7
|
+
Releases prior to 1.1.0 are upstream history, preserved here verbatim and
|
|
8
|
+
attributed to Steve Canny and the original contributors. Releases from
|
|
9
|
+
1.1.0 onward are made under the ``power-pptx`` distribution name on
|
|
10
|
+
PyPI; the importable package name (``pptx``) is unchanged.
|
|
11
|
+
|
|
12
|
+
.. _`scanny/python-pptx`: https://github.com/scanny/python-pptx
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
1.1.0 (2026-04-28)
|
|
16
|
+
++++++++++++++++++
|
|
17
|
+
|
|
18
|
+
This is the inaugural release under the ``power-pptx`` distribution name
|
|
19
|
+
on PyPI. It is a drop-in replacement for ``python-pptx`` 1.0.2:
|
|
20
|
+
``import pptx`` continues to work and existing user code is unaffected.
|
|
21
|
+
It bundles every feature from Phases 1 through 10 of the fork's roadmap —
|
|
22
|
+
visual effects, animations, transitions, theme reader/writer, JSON
|
|
23
|
+
authoring, the layout linter, design tokens and slide recipes, chart
|
|
24
|
+
palettes and quick layouts, slide thumbnails, and more.
|
|
25
|
+
|
|
26
|
+
The Sphinx documentation has also been rebuilt: every new module ships
|
|
27
|
+
with a user-guide chapter and an API-reference page, the substitution
|
|
28
|
+
table covers every public class added by the fork, and Read-the-Docs
|
|
29
|
+
builds now fail on Sphinx warnings.
|
|
30
|
+
|
|
31
|
+
The full per-phase changelog follows; the project changes summary is
|
|
32
|
+
collected near the end under "Project changes".
|
|
33
|
+
|
|
34
|
+
Phase 9 — design-system layer
|
|
35
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
36
|
+
|
|
37
|
+
- ``pptx.design.tokens.DesignTokens``: source-agnostic container for
|
|
38
|
+
brand tokens — ``palette`` (str → ``RGBColor``), ``typography``
|
|
39
|
+
(``TypographyToken`` with ``family``/``size``/``bold``/``italic``/
|
|
40
|
+
``color``), ``radii`` and ``spacings`` (str → ``Length``), and
|
|
41
|
+
``shadows`` (``ShadowToken``). Constructors: ``from_dict``,
|
|
42
|
+
``from_yaml`` (optional ``pyyaml``), and ``from_pptx`` (extracts
|
|
43
|
+
accent palette + major/minor fonts from a deck's theme).
|
|
44
|
+
``DesignTokens.merge(other)`` layers an override token set on top of
|
|
45
|
+
a base.
|
|
46
|
+
|
|
47
|
+
- ``shape.style``: token-resolving ``ShapeStyle`` facade exposed on
|
|
48
|
+
every shape. Setters fan out to the low-level proxies::
|
|
49
|
+
|
|
50
|
+
shape.style.fill = tokens.palette["primary"]
|
|
51
|
+
shape.style.line = tokens.palette["primary"]
|
|
52
|
+
shape.style.shadow = tokens.shadows["card"]
|
|
53
|
+
shape.style.font = tokens.typography["body"]
|
|
54
|
+
shape.style.text_color = tokens.palette["neutral"]
|
|
55
|
+
|
|
56
|
+
``ShadowToken`` assignment leaves unset fields untouched so partial
|
|
57
|
+
tokens are non-destructive; ``None`` clears the corresponding effect.
|
|
58
|
+
|
|
59
|
+
- ``pptx.design.recipes``: opinionated parameterized slide
|
|
60
|
+
constructors. Five recipes are included — ``title_slide``,
|
|
61
|
+
``bullet_slide``, ``kpi_slide``, ``quote_slide``, and
|
|
62
|
+
``image_hero_slide`` — each taking the host ``Presentation``, the
|
|
63
|
+
recipe-specific content kwargs (e.g. ``title=``, ``bullets=``,
|
|
64
|
+
``kpis=``), an optional ``DesignTokens`` for palette/typography
|
|
65
|
+
resolution, and an optional ``transition=`` name. Recipes use the
|
|
66
|
+
``Blank`` layout and place every shape themselves so the rendered
|
|
67
|
+
geometry doesn't depend on the host template's master. ``kpi_slide``
|
|
68
|
+
honors ``palette["positive"]`` / ``palette["negative"]`` when
|
|
69
|
+
tinting deltas (falling back to green/red), and applies
|
|
70
|
+
``tokens.shadows["card"]`` to each card when present.
|
|
71
|
+
|
|
72
|
+
- A starter pack of three example token sets — ``modern``, ``classic``,
|
|
73
|
+
and ``editorial`` — lives at ``examples/starter_pack/``. Each
|
|
74
|
+
module exports both a ``SPEC`` dict (suitable for serialising) and
|
|
75
|
+
a ready-to-use ``TOKENS`` (a built ``DesignTokens``).
|
|
76
|
+
``examples/starter_pack/build_preview.py`` renders a comparison
|
|
77
|
+
deck per set into ``examples/starter_pack/_out/`` (gitignored).
|
|
78
|
+
|
|
79
|
+
Phase 10 — additional motion-path presets
|
|
80
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
81
|
+
|
|
82
|
+
- ``pptx.animation.MotionPath`` gains five new convenience constructors
|
|
83
|
+
alongside the existing ``line`` / ``custom``: ``diagonal``,
|
|
84
|
+
``circle`` (closed cubic-bezier loop with a ``clockwise`` flag),
|
|
85
|
+
``arc`` (quadratic-bezier hop with a configurable ``height``
|
|
86
|
+
fraction), ``zigzag`` (configurable ``segments`` / ``amplitude``),
|
|
87
|
+
and ``spiral`` (configurable ``turns`` and direction). All
|
|
88
|
+
normalize EMU inputs against the slide's dimensions and route
|
|
89
|
+
through ``slide.animations.add_motion``, so they honor the Phase 5
|
|
90
|
+
trigger model and round-trip cleanly.
|
|
91
|
+
|
|
92
|
+
Phase 10 — chart palette presets
|
|
93
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
94
|
+
|
|
95
|
+
- ``Chart.apply_palette(palette)`` recolors every series in a chart
|
|
96
|
+
from a named built-in preset or an iterable of color-likes,
|
|
97
|
+
independently of ``chart_style``. Series are recolored in
|
|
98
|
+
declaration order; palettes wrap when the chart has more series
|
|
99
|
+
than colors.
|
|
100
|
+
|
|
101
|
+
- New module ``pptx.chart.palettes`` exposes ``CHART_PALETTES`` (six
|
|
102
|
+
built-in palettes — ``modern``, ``classic``, ``editorial``,
|
|
103
|
+
``vibrant``, ``monochrome_blue``, ``monochrome_warm``),
|
|
104
|
+
``palette_names()``, and ``resolve_palette()`` for callers that want
|
|
105
|
+
to share the same color set with non-chart shapes.
|
|
106
|
+
|
|
107
|
+
- Per-series gradient and pattern fills work out of the box through
|
|
108
|
+
``chart.series[i].format.fill`` (a regular ``FillFormat``) — locked
|
|
109
|
+
in with regression tests covering the four gradient kinds and
|
|
110
|
+
``MSO_PATTERN_TYPE`` patterns.
|
|
111
|
+
|
|
112
|
+
Phase 6 — theme-aware color inheritance
|
|
113
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
114
|
+
|
|
115
|
+
- New ``pptx.inherit.resolve_color(color_format, theme=...)`` returns
|
|
116
|
+
the effective ``RGBColor`` for any ``ColorFormat`` (including the
|
|
117
|
+
``_LazyColorFormat`` proxy returned by ``Font.color`` /
|
|
118
|
+
``LineFormat.color``). Explicit RGB colors are returned as-is,
|
|
119
|
+
scheme colors resolve through ``theme.colors[…]``, and unset colors
|
|
120
|
+
return ``None`` without mutating XML. ``brightness`` is applied by
|
|
121
|
+
blending the resolved RGB toward white or black, mirroring
|
|
122
|
+
PowerPoint's ``lumMod`` / ``lumOff`` model.
|
|
123
|
+
|
|
124
|
+
Phase 6 — native SVG in ``add_picture``
|
|
125
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
126
|
+
|
|
127
|
+
- New ``slide.shapes.add_svg_picture(svg_file, left, top, width=None,
|
|
128
|
+
height=None, *, png_fallback=None)`` embeds both an
|
|
129
|
+
``<asvg:svgBlip>`` (Office 2016+ SVG extension) and a PNG fallback
|
|
130
|
+
inside the same ``<a:blip>``. When ``png_fallback`` is omitted the
|
|
131
|
+
SVG is rasterised through the optional ``cairosvg`` dependency; a
|
|
132
|
+
clear ``CairoSvgUnavailable`` error guides callers to install it or
|
|
133
|
+
supply their own fallback. ``image/svg+xml`` is registered as a
|
|
134
|
+
first-class image content type so SVG parts round-trip cleanly.
|
|
135
|
+
|
|
136
|
+
Phase 7 — ``pptx.compose`` package
|
|
137
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
138
|
+
|
|
139
|
+
- ``pptx.compose`` is now a real package re-exporting ``from_spec``,
|
|
140
|
+
``import_slide``, and ``apply_template`` from a single import path::
|
|
141
|
+
|
|
142
|
+
from pptx.compose import from_spec, import_slide, apply_template
|
|
143
|
+
|
|
144
|
+
The implementations live in private submodules
|
|
145
|
+
(``pptx.compose.from_spec``, ``pptx._slide_importer``,
|
|
146
|
+
``pptx._template_applier``). Existing imports (``from pptx.compose
|
|
147
|
+
import from_spec``) are unchanged.
|
|
148
|
+
|
|
149
|
+
Phase 10 — chart quick layouts
|
|
150
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
151
|
+
|
|
152
|
+
- ``Chart.apply_quick_layout(layout)`` toggles title / legend /
|
|
153
|
+
axis-title / gridline visibility in opinionated combinations. Ten
|
|
154
|
+
built-in presets ship in ``pptx.chart.quick_layouts``
|
|
155
|
+
(``title_legend_right``, ``title_legend_bottom``,
|
|
156
|
+
``title_legend_top``, ``title_legend_left``, ``title_no_legend``,
|
|
157
|
+
``no_title_no_legend``, ``title_axes_legend_right``,
|
|
158
|
+
``title_axes_legend_bottom``, ``minimal``, ``dense``); custom layouts
|
|
159
|
+
can be supplied as a dict spec.
|
|
160
|
+
|
|
161
|
+
Phase 10 — slide-thumbnail renderer
|
|
162
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
163
|
+
|
|
164
|
+
- New ``pptx.render`` module with
|
|
165
|
+
``render_slide_thumbnails(prs, ...)`` and
|
|
166
|
+
``render_slide_thumbnail(slide, ...)``, plus convenience methods
|
|
167
|
+
``Presentation.render_thumbnails()`` and ``Slide.render_thumbnail()``.
|
|
168
|
+
Drives a headless ``soffice --headless --convert-to png`` shell-out
|
|
169
|
+
to rasterise slides; supports custom binary path
|
|
170
|
+
(``soffice_bin=`` or ``POWER_PPTX_SOFFICE`` env var), per-slide
|
|
171
|
+
selection (``slide_indexes=``), bytes-or-paths return
|
|
172
|
+
(``return_bytes=True``), custom output directory, and a configurable
|
|
173
|
+
timeout. Raises ``ThumbnailRendererUnavailable`` with an install
|
|
174
|
+
hint when ``soffice`` isn't on PATH and ``ThumbnailRendererError``
|
|
175
|
+
on conversion failure.
|
|
176
|
+
|
|
177
|
+
Phase 6 — text-fit estimator on Linux / minimal runtimes
|
|
178
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
179
|
+
|
|
180
|
+
- ``TextFrame.fit_text()`` now works on Linux and on runtimes without
|
|
181
|
+
the requested font installed. ``FontFiles._font_directories()``
|
|
182
|
+
enumerates ``/usr/share/fonts``, ``/usr/local/share/fonts``,
|
|
183
|
+
``/usr/share/fonts/truetype``, ``~/.fonts``, and
|
|
184
|
+
``~/.local/share/fonts``; unrecognised platforms now return an empty
|
|
185
|
+
directory list instead of raising ``OSError``. When no matching
|
|
186
|
+
system font can be located, ``_best_fit_font_size`` falls back to
|
|
187
|
+
``ImageFont.load_default(size=...)`` (Pillow ≥10.1, with a graceful
|
|
188
|
+
fallback to the unsized bitmap default on older Pillow), so a call
|
|
189
|
+
with no ``font_file=`` argument produces a usable estimate rather
|
|
190
|
+
than a ``KeyError``. Malformed font files encountered during the
|
|
191
|
+
directory scan are skipped silently.
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
Phase 8 — 3D primitives and SmartArt text substitution
|
|
195
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
196
|
+
|
|
197
|
+
- ``shape.three_d`` accessor: ``ThreeDFormat`` facade exposing
|
|
198
|
+
``bevel_top``/``bevel_bottom`` (``_BevelFormat`` with ``preset``,
|
|
199
|
+
``width``, ``height``), ``extrusion_height``, ``extrusion_color``,
|
|
200
|
+
``contour_width``, ``contour_color``, and ``preset_material``.
|
|
201
|
+
Backed by ``CT_Shape3D`` and ``CT_Scene3D`` element classes in
|
|
202
|
+
``pptx.oxml.dml.three_d``. ``BevelPreset`` and ``PresetMaterial``
|
|
203
|
+
enumerations added to ``pptx.enum.dml``.
|
|
204
|
+
|
|
205
|
+
- ``slide.smart_art``: ``SmartArtCollection`` providing indexed and
|
|
206
|
+
iterable access to SmartArt graphics on a slide. Each item is a
|
|
207
|
+
``SmartArtShape`` with:
|
|
208
|
+
|
|
209
|
+
- ``texts`` property — ordered list of node text strings.
|
|
210
|
+
- ``set_text(values, *, strict=True)`` — replaces node text in
|
|
211
|
+
document order without touching layout, style, or colour parts.
|
|
212
|
+
|
|
213
|
+
``DiagramDataPart`` and sibling part classes registered so SmartArt
|
|
214
|
+
``diagrams/data#.xml``, ``layout#``, ``quickStyle#``, and ``colors#``
|
|
215
|
+
parts are handled as typed ``XmlPart`` subclasses.
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
Phase 7 — slide composition
|
|
219
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
220
|
+
|
|
221
|
+
- ``Presentation.import_slide(source_slide, merge_master='dedupe'|'clone')``:
|
|
222
|
+
clones a slide from any ``Presentation`` into the receiver. Copies
|
|
223
|
+
the slide part and all its dependencies (images, charts, media,
|
|
224
|
+
notes, SmartArt diagram parts, …). Master/layout/theme parts are
|
|
225
|
+
either deduped against existing masters (``'dedupe'``) or always
|
|
226
|
+
cloned fresh (``'clone'``). Slide IDs and partnames are guaranteed
|
|
227
|
+
collision-free.
|
|
228
|
+
|
|
229
|
+
- ``Presentation.apply_template(path_or_stream)``: re-points every
|
|
230
|
+
slide's layout/master/theme at masters from a ``.potx`` or ``.pptx``
|
|
231
|
+
template. Slide content is preserved. Layout matching: name → type
|
|
232
|
+
→ first layout. Unreferenced old masters/layouts/themes are dropped
|
|
233
|
+
from the saved package.
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
Project changes
|
|
237
|
+
~~~~~~~~~~~~~~~
|
|
238
|
+
|
|
239
|
+
- Renamed the PyPI distribution from ``python-pptx-next`` to
|
|
240
|
+
``power-pptx``. The importable package remains ``pptx``.
|
|
241
|
+
- Repository moved to ``codehalwell/power-pptx``.
|
|
242
|
+
- Original ``LICENSE`` (MIT, Steve Canny, 2013) preserved verbatim;
|
|
243
|
+
fork copyright added on a second line per MIT requirements.
|
|
244
|
+
- Dropped the vestigial ``pyparsing`` line from ``requirements.txt``;
|
|
245
|
+
it was not in ``pyproject.toml`` runtime deps and is not imported
|
|
246
|
+
anywhere in ``src/pptx/``.
|
|
247
|
+
- Added Python 3.13 to the supported-versions classifier list.
|
|
248
|
+
- Dropped Python 3.8 (EOL October 2024). Minimum supported version is
|
|
249
|
+
now 3.9, matching ``pyright``'s configured ``pythonVersion``.
|
|
250
|
+
|
|
251
|
+
Documentation
|
|
252
|
+
~~~~~~~~~~~~~
|
|
253
|
+
|
|
254
|
+
- Sphinx config rebuilt for ``power-pptx``: switched to the
|
|
255
|
+
``sphinx-rtd-theme``, removed dead upstream-specific hacks, refreshed
|
|
256
|
+
the substitution table, and turned on ``fail_on_warning`` for
|
|
257
|
+
Read-the-Docs builds.
|
|
258
|
+
- New user-guide chapters: visual effects, animations, slide
|
|
259
|
+
transitions, layout linter, JSON authoring + cross-presentation
|
|
260
|
+
composition, themes, design-system layer, advanced charts (palettes
|
|
261
|
+
/ quick layouts / per-series fills), and slide thumbnails.
|
|
262
|
+
- New API reference pages: ``pptx.animation``, ``pptx.lint``,
|
|
263
|
+
``pptx.compose``, ``pptx.theme`` (plus ``pptx.inherit.resolve_color``),
|
|
264
|
+
``pptx.design`` (tokens, style, layout, recipes), ``pptx.render``,
|
|
265
|
+
``pptx.smart_art``, plus enum pages for ``MSO_LINE_CAP_STYLE``,
|
|
266
|
+
``MSO_LINE_COMPOUND_STYLE``, ``MSO_LINE_JOIN_STYLE``,
|
|
267
|
+
``MSO_LINE_END_TYPE``, ``MSO_LINE_END_SIZE``, ``MSO_TRANSITION_TYPE``,
|
|
268
|
+
and ``PP_ANIM_TRIGGER``.
|
|
269
|
+
- ``ShadowFormat`` and the ``DrawingML`` reference page surface the
|
|
270
|
+
full Phase 3/6 effect family (``GlowFormat``, ``SoftEdgeFormat``,
|
|
271
|
+
``BlurFormat``, ``ReflectionFormat``, ``LineEndFormat``,
|
|
272
|
+
``PictureEffects``).
|
|
273
|
+
|
|
274
|
+
Deprecations (scheduled for removal in 2.0)
|
|
275
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
276
|
+
|
|
277
|
+
- ``ShadowFormat.inherit`` now emits a ``DeprecationWarning`` on both
|
|
278
|
+
read and write. Read individual properties (``blur_radius``,
|
|
279
|
+
``distance``, ``direction``, ``color``) for ``None`` instead. The
|
|
280
|
+
``inherit`` property is scheduled for removal in 2.0.
|
|
281
|
+
- ``MSO_PATTERN_TYPE.ERCENT_40`` is now an aliased member of
|
|
282
|
+
``PERCENT_40`` and emits a ``DeprecationWarning`` on access.
|
|
283
|
+
- ``shapes.turbo_add_enabled`` setter remains a no-op and emits a
|
|
284
|
+
``DeprecationWarning`` (shape-id allocation is now always O(1)).
|
|
285
|
+
|
|
286
|
+
New API
|
|
287
|
+
~~~~~~~
|
|
288
|
+
|
|
289
|
+
- Radial / rectangular / shape-path gradients (Phase 6): ``FillFormat.gradient``
|
|
290
|
+
now accepts a ``kind`` argument. ``fill.gradient(kind="radial")`` writes a
|
|
291
|
+
``<a:path path="circle"/>`` shading element; ``"rectangular"`` writes
|
|
292
|
+
``"rect"``; ``"shape"`` follows the bounding shape. ``fill.gradient_kind``
|
|
293
|
+
reports the resolved value (``"linear"``/``"radial"``/``"rectangular"``/
|
|
294
|
+
``"shape"``/``None``). Switching kinds preserves existing gradient stops.
|
|
295
|
+
``GradientStops`` is now mutable: ``stops.append(position, color)``,
|
|
296
|
+
``stops.replace([(pos, color), ...])``, and ``del stops[i]`` (the OOXML
|
|
297
|
+
2-stop minimum is enforced). ``color`` accepts ``RGBColor``, hex strings
|
|
298
|
+
(with or without leading ``#``), 3-tuples, or ``None`` (placeholder
|
|
299
|
+
``schemeClr accent1`` color).
|
|
300
|
+
- ``pptx.design.layout`` (Phase 9): build-time geometry helpers that compute
|
|
301
|
+
``Box(left, top, width, height)`` rectangles so callers don't eyeball EMUs.
|
|
302
|
+
``Grid(slide, cols=12, rows=6, gutter=Pt(12), margin=Inches(0.5))`` allocates
|
|
303
|
+
rectangles via ``grid.cell(col=, row=, col_span=, row_span=)`` or applies
|
|
304
|
+
them directly with ``grid.place(shape, ...)``. ``Stack(direction="vertical"
|
|
305
|
+
| "horizontal", gap=Pt(8), left=, top=, width=, height=)`` walks a running
|
|
306
|
+
cursor via ``stack.next(width=, height=)`` / ``stack.place(shape, ...)``;
|
|
307
|
+
``stack.reset()`` rewinds. Pure geometry — no XML is read or mutated until
|
|
308
|
+
the caller invokes a ``place()``.
|
|
309
|
+
- ``MotionPath`` (Phase 5): convenience class for adding motion-path
|
|
310
|
+
animations. ``MotionPath.line(slide, shape, dx, dy)`` accepts EMU
|
|
311
|
+
deltas (typically built with ``Inches(...)``/``Pt(...)``) and
|
|
312
|
+
normalizes them against the slide's dimensions before emitting the
|
|
313
|
+
motion-path attribute, so the *absolute* travel distance is preserved
|
|
314
|
+
across slide sizes. ``MotionPath.custom(slide, shape, path_str)``
|
|
315
|
+
passes an OOXML motion-path expression through verbatim. Both
|
|
316
|
+
delegate to ``SlideAnimations.add_motion`` and inherit the trigger /
|
|
317
|
+
delay / duration model from the rest of Phase 5.
|
|
318
|
+
- ``SlideAnimations.sequence()`` (Phase 5): context manager that
|
|
319
|
+
groups the contained ``Entrance``/``Exit``/``Emphasis``/``MotionPath``
|
|
320
|
+
effects into a single click-driven chain. Inside the block, the
|
|
321
|
+
first effect (whose ``trigger`` was not explicitly supplied) fires on
|
|
322
|
+
``Trigger.ON_CLICK`` (or whatever ``start=`` is passed) and every
|
|
323
|
+
subsequent effect defaults to ``Trigger.AFTER_PREVIOUS``, producing
|
|
324
|
+
effects that play one after another. Explicit per-call triggers
|
|
325
|
+
still override the sequence default; sequences cannot be nested.
|
|
326
|
+
- ``Entrance.fade(slide, text_frame, by_paragraph=True)`` (Phase 5):
|
|
327
|
+
by-paragraph entrance animations. Accepts a ``TextFrame`` or any
|
|
328
|
+
shape with a ``text_frame``; emits one entrance effect per paragraph,
|
|
329
|
+
each targeting ``<p:txEl>/<p:pRg st=N end=N/>`` so PowerPoint reveals
|
|
330
|
+
paragraphs one at a time. The first paragraph fires on the supplied
|
|
331
|
+
trigger and subsequent paragraphs on ``Trigger.AFTER_PREVIOUS``.
|
|
332
|
+
Available presets: ``appear``, ``fade``, ``wipe``, ``zoom``, ``wheel``,
|
|
333
|
+
``random_bars``. The ``by_paragraph=`` keyword is also exposed on
|
|
334
|
+
``SlideAnimations.add_entrance`` for advanced use.
|
|
335
|
+
- ``Theme`` writer (Phase 7): ``prs.theme`` is now read/write.
|
|
336
|
+
``theme.colors[MSO_THEME_COLOR.ACCENT_1] = RGBColor(0xFF, 0x66, 0x00)``
|
|
337
|
+
rewrites the requested ``clrScheme`` slot with a fresh ``<a:srgbClr>``;
|
|
338
|
+
alias slots (``BACKGROUND_1``/``BACKGROUND_2``/``TEXT_1``/``TEXT_2``)
|
|
339
|
+
resolve to their canonical ``lt1``/``lt2``/``dk1``/``dk2`` target.
|
|
340
|
+
``theme.fonts.major = "Inter"`` and ``theme.fonts.minor = "Inter"``
|
|
341
|
+
rewrite the ``<a:majorFont>/<a:minorFont>/<a:latin typeface=…/>``
|
|
342
|
+
typeface. ``theme.apply(other_prs.theme)`` bulk-copies the palette
|
|
343
|
+
and font pair. ``theme.name`` is now writable. Themes are loaded
|
|
344
|
+
via a typed ``ThemePart(XmlPart)`` so writes round-trip on save.
|
|
345
|
+
- ``Cell.borders`` (Phase 4): per-edge line formatting on table cells.
|
|
346
|
+
``cell.borders.left``/``.right``/``.top``/``.bottom``/``.diagonal_down``/
|
|
347
|
+
``.diagonal_up`` each return a ``LineFormat``. Convenience helpers
|
|
348
|
+
``cell.borders.all(width=, color=)``, ``cell.borders.outer(...)``, and
|
|
349
|
+
``cell.borders.none()`` apply or clear border settings across multiple
|
|
350
|
+
edges in one call. Backed by the OOXML ``a:lnL/lnR/lnT/lnB/lnTlToBr/
|
|
351
|
+
lnBlToTr`` children of ``a:tcPr``.
|
|
352
|
+
- ``run.hyperlink.target_slide`` (Phase 4): assign a ``Slide`` to make
|
|
353
|
+
a text run an internal hyperlink. Writes a relationship-based
|
|
354
|
+
``ppaction://hlinksldjump`` action; assigning ``None`` clears it. The
|
|
355
|
+
symmetric getter resolves the relationship back to the target slide,
|
|
356
|
+
mirroring ``Shape.click_action.target_slide``.
|
|
357
|
+
- ``ColorFormat.alpha`` (Phase 3): per-color transparency. Read/write
|
|
358
|
+
float in ``[0.0, 1.0]`` (``1.0`` is fully opaque, the default; ``0.0``
|
|
359
|
+
is fully transparent). Maps to the ``<a:alpha>`` child of any
|
|
360
|
+
``<a:srgbClr>``/``<a:schemeClr>``/etc. Available on the lazy proxy
|
|
361
|
+
returned by ``Font.color`` and ``LineFormat.color`` with the same
|
|
362
|
+
non-mutating read semantics as the rest of that proxy.
|
|
363
|
+
- ``LineFormat`` line-style additions (Phase 6): ``line.cap``
|
|
364
|
+
(``MSO_LINE_CAP``: ``FLAT``/``ROUND``/``SQUARE``), ``line.compound``
|
|
365
|
+
(``MSO_LINE_COMPOUND``: single, double, thick-thin, thin-thick,
|
|
366
|
+
triple), ``line.join`` (``MSO_LINE_JOIN``: round/bevel/miter mapping
|
|
367
|
+
to the ``<a:round/>``/``<a:bevel/>``/``<a:miter/>`` children), plus
|
|
368
|
+
``line.head_end`` and ``line.tail_end`` ``LineEndFormat`` proxies
|
|
369
|
+
exposing ``.type`` (``MSO_LINE_END_TYPE``), ``.width`` and
|
|
370
|
+
``.length`` (``MSO_LINE_END_SIZE``). All reads are non-mutating;
|
|
371
|
+
clearing the last attribute on a head/tail end drops the element so
|
|
372
|
+
theme inheritance is preserved.
|
|
373
|
+
- ``Slide.transition`` (Phase 4): a ``SlideTransition`` proxy exposing
|
|
374
|
+
``.kind`` (``MSO_TRANSITION_TYPE``, including PowerPoint 2010+
|
|
375
|
+
``p14`` extension transitions like ``MORPH``, ``CONVEYOR``,
|
|
376
|
+
``VORTEX``), ``.duration`` (milliseconds, via ``p14:dur`` with
|
|
377
|
+
fallback mapping for the legacy ``spd`` bucket), ``.advance_on_click``
|
|
378
|
+
and ``.advance_after``. Reads on a slide with no explicit
|
|
379
|
+
``<p:transition>`` return ``None`` and never mutate; ``.clear()``
|
|
380
|
+
removes the element entirely.
|
|
381
|
+
- ``Presentation.set_transition`` (Phase 4): deck-wide convenience that
|
|
382
|
+
applies the same transition (or partial update) to every slide in a
|
|
383
|
+
single call. Accepts ``kind``, ``duration``, ``advance_on_click``,
|
|
384
|
+
and ``advance_after``; unspecified arguments are left untouched on
|
|
385
|
+
each slide so callers can bump the duration without disturbing the
|
|
386
|
+
kind. Passing ``kind=None`` removes the ``<p:transition>`` element
|
|
387
|
+
on every slide.
|
|
388
|
+
- ``BaseShape.blur`` and ``BaseShape.reflection`` (Phase 3): two
|
|
389
|
+
additional non-mutating effect proxies. ``shape.blur`` exposes
|
|
390
|
+
``.radius`` (EMU) and ``.grow``; ``shape.reflection`` exposes
|
|
391
|
+
``.blur_radius``, ``.distance``, ``.direction``, ``.start_alpha``,
|
|
392
|
+
and ``.end_alpha``. Reads on a shape with no explicit effect return
|
|
393
|
+
``None`` and never mutate the XML; the underlying ``<a:blur>`` /
|
|
394
|
+
``<a:reflection>`` element is created on first write and dropped
|
|
395
|
+
again when the last explicit attribute is cleared, preserving theme
|
|
396
|
+
inheritance.
|
|
397
|
+
- New OOXML element classes ``CT_BlurEffect``, ``CT_InnerShadowEffect``,
|
|
398
|
+
and ``CT_ReflectionEffect`` (Phase 3) registered for ``<a:blur>``,
|
|
399
|
+
``<a:innerShdw>``, and ``<a:reflection>`` so PowerPoint-authored
|
|
400
|
+
effects round-trip without loss even when no high-level proxy is
|
|
401
|
+
used.
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
1.0.2 (2024-08-07)
|
|
405
|
+
++++++++++++++++++
|
|
406
|
+
|
|
407
|
+
- fix: #1003 restore read-only enum members
|
|
408
|
+
|
|
409
|
+
1.0.1 (2024-08-05)
|
|
410
|
+
++++++++++++++++++
|
|
411
|
+
|
|
412
|
+
- fix: #1000 add py.typed
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
1.0.0 (2024-08-03)
|
|
416
|
+
++++++++++++++++++
|
|
417
|
+
|
|
418
|
+
- fix: #929 raises on JPEG with image/jpg MIME-type
|
|
419
|
+
- fix: #943 remove mention of a Px Length subtype
|
|
420
|
+
- fix: #972 next-slide-id fails in rare cases
|
|
421
|
+
- fix: #990 do not require strict timestamps for Zip
|
|
422
|
+
- Add type annotations
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
0.6.23 (2023-11-02)
|
|
426
|
+
+++++++++++++++++++
|
|
427
|
+
|
|
428
|
+
- fix: #912 Pillow<=9.5 constraint entails security vulnerability
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
0.6.22 (2023-08-28)
|
|
432
|
+
+++++++++++++++++++
|
|
433
|
+
|
|
434
|
+
- Add #909 Add imgW, imgH params to `shapes.add_ole_object()`
|
|
435
|
+
- fix: #754 _Relationships.items() raises
|
|
436
|
+
- fix: #758 quote in autoshape name must be escaped
|
|
437
|
+
- fix: #746 update Python 3.x support in docs
|
|
438
|
+
- fix: #748 setup's `license` should be short string
|
|
439
|
+
- fix: #762 AttributeError: module 'collections' has no attribute 'abc'
|
|
440
|
+
(Windows Python 3.10+)
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
0.6.21 (2021-09-20)
|
|
444
|
+
+++++++++++++++++++
|
|
445
|
+
|
|
446
|
+
- Fix #741 _DirPkgReader must implement .__contains__()
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
0.6.20 (2021-09-14)
|
|
450
|
+
+++++++++++++++++++
|
|
451
|
+
|
|
452
|
+
- Fix #206 accommodate NULL target-references in relationships.
|
|
453
|
+
- Fix #223 escape image filename that appears as literal in XML.
|
|
454
|
+
- Fix #517 option to display chart categories/values in reverse order.
|
|
455
|
+
- Major refactoring of ancient package loading code.
|
|
456
|
+
|
|
457
|
+
|
|
458
|
+
0.6.19 (2021-05-17)
|
|
459
|
+
+++++++++++++++++++
|
|
460
|
+
|
|
461
|
+
- Add shapes.add_ole_object(), allowing arbitrary Excel or other binary file to be
|
|
462
|
+
embedded as a shape on a slide. The OLE object is represented as an icon.
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
0.6.18 (2019-05-02)
|
|
466
|
+
+++++++++++++++++++
|
|
467
|
+
|
|
468
|
+
- .text property getters encode line-break as a vertical-tab (VT, '\v', ASCII 11/x0B).
|
|
469
|
+
This is consistent with PowerPoint's copy/paste behavior and allows like-breaks (soft
|
|
470
|
+
carriage-return) to be distinguished from paragraph boundary. Previously, a line-break
|
|
471
|
+
was encoded as a newline ('\n') and was not distinguishable from a paragraph boundary.
|
|
472
|
+
|
|
473
|
+
.text properties include Shape.text, _Cell.text, TextFrame.text, _Paragraph.text and
|
|
474
|
+
_Run.text.
|
|
475
|
+
|
|
476
|
+
- .text property setters accept vertical-tab character and place a line-break element in
|
|
477
|
+
that location. All other control characters other than horizontal-tab ('\t') and
|
|
478
|
+
newline ('\n') in range \x00-\x1F are accepted and escaped with plain-text like
|
|
479
|
+
"_x001B" for ESC (ASCII 27).
|
|
480
|
+
|
|
481
|
+
Previously a control character other than tab or newline in an assigned string would
|
|
482
|
+
trigger an exception related to invalid XML character.
|
|
483
|
+
|
|
484
|
+
|
|
485
|
+
0.6.17 (2018-12-16)
|
|
486
|
+
+++++++++++++++++++
|
|
487
|
+
|
|
488
|
+
- Add SlideLayouts.remove() - Delete unused slide-layout
|
|
489
|
+
- Add SlideLayout.used_by_slides - Get slides based on this slide-layout
|
|
490
|
+
- Add SlideLayouts.index() - Get index of slide-layout in master
|
|
491
|
+
- Add SlideLayouts.get_by_name() - Get slide-layout by its str name
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
0.6.16 (2018-11-09)
|
|
495
|
+
+++++++++++++++++++
|
|
496
|
+
|
|
497
|
+
- Feature #395 DataLabels.show_* properties, e.g. .show_percentage
|
|
498
|
+
- Feature #453 Chart data tolerates None for labels
|
|
499
|
+
|
|
500
|
+
|
|
501
|
+
0.6.15 (2018-09-24)
|
|
502
|
+
+++++++++++++++++++
|
|
503
|
+
|
|
504
|
+
- Fix #436 ValueAxis._cross_xAx fails on c:dateAxis
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
0.6.14 (2018-09-24)
|
|
508
|
+
+++++++++++++++++++
|
|
509
|
+
|
|
510
|
+
- Add _Cell.merge()
|
|
511
|
+
- Add _Cell.split()
|
|
512
|
+
- Add _Cell.__eq__()
|
|
513
|
+
- Add _Cell.is_merge_origin
|
|
514
|
+
- Add _Cell.is_spanned
|
|
515
|
+
- Add _Cell.span_height
|
|
516
|
+
- Add _Cell.span_width
|
|
517
|
+
- Add _Cell.text getter
|
|
518
|
+
- Add Table.iter_cells()
|
|
519
|
+
- Move pptx.shapes.table module to pptx.table
|
|
520
|
+
- Add user documentation 'Working with tables'
|
|
521
|
+
|
|
522
|
+
|
|
523
|
+
0.6.13 (2018-09-10)
|
|
524
|
+
+++++++++++++++++++
|
|
525
|
+
|
|
526
|
+
- Add Chart.font
|
|
527
|
+
- Fix #293 Can't hide title of single-series Chart
|
|
528
|
+
- Fix shape.width value is not type Emu
|
|
529
|
+
- Fix add a:defRPr with c:rich (fixes some font inheritance breakage)
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
0.6.12 (2018-08-11)
|
|
533
|
+
+++++++++++++++++++
|
|
534
|
+
|
|
535
|
+
- Add Picture.auto_shape_type
|
|
536
|
+
- Remove Python 2.6 testing from build
|
|
537
|
+
- Update dependencies to avoid vulnerable Pillow version
|
|
538
|
+
- Fix #260, #301, #382, #401
|
|
539
|
+
- Add _Paragraph.add_line_break()
|
|
540
|
+
- Add Connector.line
|
|
541
|
+
|
|
542
|
+
|
|
543
|
+
0.6.11 (2018-07-25)
|
|
544
|
+
+++++++++++++++++++
|
|
545
|
+
|
|
546
|
+
- Add gradient fill.
|
|
547
|
+
- Add experimental "turbo-add" option for producing large shape-count slides.
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
0.6.10 (2018-06-11)
|
|
551
|
+
+++++++++++++++++++
|
|
552
|
+
|
|
553
|
+
- Add `shape.shadow` property to autoshape, connector, picture, and group
|
|
554
|
+
shape, returning a `ShadowFormat` object.
|
|
555
|
+
- Add `ShadowFormat` object with read/write (boolean) `.inherit` property.
|
|
556
|
+
- Fix #328 add support for 26+ series in a chart
|
|
557
|
+
|
|
558
|
+
|
|
559
|
+
0.6.9 (2018-05-08)
|
|
560
|
+
++++++++++++++++++
|
|
561
|
+
|
|
562
|
+
- Add `Picture.crop_x` setters, allowing picture cropping values to be set,
|
|
563
|
+
in addition to interrogated.
|
|
564
|
+
- Add `Slide.background` and `SlideMaster.background`, allowing the
|
|
565
|
+
background fill to be set for an individual slide or for all slides based
|
|
566
|
+
on a slide master.
|
|
567
|
+
- Add option `shapes` parameter to `Shapes.add_group_shape`, allowing a group
|
|
568
|
+
shape to be formed from a number of existing shapes.
|
|
569
|
+
- Improve efficiency of `Shapes._next_shape_id` property to improve
|
|
570
|
+
performance on high shape-count slides.
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
0.6.8 (2018-04-18)
|
|
574
|
+
++++++++++++++++++
|
|
575
|
+
|
|
576
|
+
- Add `GroupShape`, providing properties specific to a group shape, including
|
|
577
|
+
its `shapes` property.
|
|
578
|
+
- Add `GroupShapes`, providing access to shapes contained in a group shape.
|
|
579
|
+
- Add `SlideShapes.add_group_shape()`, allowing a group shape to be added to
|
|
580
|
+
a slide.
|
|
581
|
+
- Add `GroupShapes.add_group_shape()`, allowing a group shape to be added to
|
|
582
|
+
a group shape, enabling recursive, multi-level groups.
|
|
583
|
+
- Add support for adding jump-to-named-slide behavior to shape and run
|
|
584
|
+
hyperlinks.
|
|
585
|
+
|
|
586
|
+
|
|
587
|
+
0.6.7 (2017-10-30)
|
|
588
|
+
++++++++++++++++++
|
|
589
|
+
|
|
590
|
+
- Add `SlideShapes.build_freeform()`, allowing freeform shapes (such as maps)
|
|
591
|
+
to be specified and added to a slide.
|
|
592
|
+
- Add support for patterned fills.
|
|
593
|
+
- Add `LineFormat.dash_style` to allow interrogation and setting of dashed
|
|
594
|
+
line styles.
|
|
595
|
+
|
|
596
|
+
|
|
597
|
+
0.6.6 (2017-06-17)
|
|
598
|
+
++++++++++++++++++
|
|
599
|
+
|
|
600
|
+
- Add `SlideShapes.add_movie()`, allowing video media to be added to a slide.
|
|
601
|
+
|
|
602
|
+
- fix #190 Accommodate non-conforming part names having '00' index segment.
|
|
603
|
+
- fix #273 Accommodate non-conforming part names having no index segment.
|
|
604
|
+
- fix #277 ASCII/Unicode error on non-ASCII multi-level category names
|
|
605
|
+
- fix #279 BaseShape.id warning appearing on placeholder access.
|
|
606
|
+
|
|
607
|
+
|
|
608
|
+
0.6.5 (2017-03-21)
|
|
609
|
+
++++++++++++++++++
|
|
610
|
+
|
|
611
|
+
- #267 compensate for non-conforming PowerPoint behavior on c:overlay element
|
|
612
|
+
|
|
613
|
+
- compensate for non-conforming (to spec) PowerPoint behavior related to
|
|
614
|
+
c:dLbl/c:tx that results in "can't save" error when explicit data labels
|
|
615
|
+
are added to bubbles on a bubble chart.
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
0.6.4 (2017-03-17)
|
|
619
|
+
++++++++++++++++++
|
|
620
|
+
|
|
621
|
+
- add Chart.chart_title and ChartTitle object
|
|
622
|
+
- #263 Use Number type to test for numeric category
|
|
623
|
+
|
|
624
|
+
|
|
625
|
+
0.6.3 (2017-02-28)
|
|
626
|
+
++++++++++++++++++
|
|
627
|
+
|
|
628
|
+
- add DataLabel.font
|
|
629
|
+
- add Axis.axis_title
|
|
630
|
+
|
|
631
|
+
|
|
632
|
+
0.6.2 (2017-01-03)
|
|
633
|
+
++++++++++++++++++
|
|
634
|
+
|
|
635
|
+
- add support for NotesSlide (slide notes, aka. notes page)
|
|
636
|
+
- add support for arbitrary series ordering in XML
|
|
637
|
+
- add Plot.categories providing access to hierarchical categories in an
|
|
638
|
+
existing chart.
|
|
639
|
+
- add support for date axes on category charts, including writing a dateAx
|
|
640
|
+
element for the category axis when ChartData categories are date or
|
|
641
|
+
datetime.
|
|
642
|
+
|
|
643
|
+
**BACKWARD INCOMPATIBILITIES:**
|
|
644
|
+
|
|
645
|
+
Some changes were made to the boilerplate XML used to create new charts. This
|
|
646
|
+
was done to more closely adhere to the settings PowerPoint uses when creating
|
|
647
|
+
a chart using the UI. This may result in some appearance changes in charts
|
|
648
|
+
after upgrading. In particular:
|
|
649
|
+
|
|
650
|
+
* Chart.has_legend now defaults to True for Line charts.
|
|
651
|
+
* Plot.vary_by_categories now defaults to False for Line charts.
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
0.6.1 (2016-10-09)
|
|
655
|
+
++++++++++++++++++
|
|
656
|
+
|
|
657
|
+
- add Connector shape type
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
0.6.0 (2016-08-18)
|
|
661
|
+
++++++++++++++++++
|
|
662
|
+
|
|
663
|
+
- add XY chart types
|
|
664
|
+
- add Bubble chart types
|
|
665
|
+
- add Radar chart types
|
|
666
|
+
- add Area chart types
|
|
667
|
+
- add Doughnut chart types
|
|
668
|
+
- add Series.points and Point
|
|
669
|
+
- add Point.data_label
|
|
670
|
+
- add DataLabel.text_frame
|
|
671
|
+
- add DataLabel.position
|
|
672
|
+
- add Axis.major_gridlines
|
|
673
|
+
- add ChartFormat with .fill and .line
|
|
674
|
+
- add Axis.format (fill and line formatting)
|
|
675
|
+
- add ValueAxis.crosses and .crosses_at
|
|
676
|
+
- add Point.format (fill and line formatting)
|
|
677
|
+
- add Slide.slide_id
|
|
678
|
+
- add Slides.get() (by slide id)
|
|
679
|
+
- add Font.language_id
|
|
680
|
+
- support blank (None) data points in created charts
|
|
681
|
+
- add Series.marker
|
|
682
|
+
- add Point.marker
|
|
683
|
+
- add Marker.format, .style, and .size
|
|
684
|
+
|
|
685
|
+
|
|
686
|
+
0.5.8 (2015-11-27)
|
|
687
|
+
++++++++++++++++++
|
|
688
|
+
|
|
689
|
+
- add Shape.click_action (hyperlink on shape)
|
|
690
|
+
- fix: #128 Chart cat and ser names not escaped
|
|
691
|
+
- fix: #153 shapes.title raises on no title shape
|
|
692
|
+
- fix: #170 remove seek(0) from Image.from_file()
|
|
693
|
+
|
|
694
|
+
|
|
695
|
+
0.5.7 (2015-01-17)
|
|
696
|
+
++++++++++++++++++
|
|
697
|
+
|
|
698
|
+
- add PicturePlaceholder with .insert_picture() method
|
|
699
|
+
- add TablePlaceholder with .insert_table() method
|
|
700
|
+
- add ChartPlaceholder with .insert_chart() method
|
|
701
|
+
- add Picture.image property, returning Image object
|
|
702
|
+
- add Picture.crop_left, .crop_top, .crop_right, and .crop_bottom
|
|
703
|
+
- add Shape.placeholder_format and PlaceholderFormat object
|
|
704
|
+
|
|
705
|
+
**BACKWARD INCOMPATIBILITIES:**
|
|
706
|
+
|
|
707
|
+
Shape.shape_type is now unconditionally `MSO_SHAPE_TYPE.PLACEHOLDER` for all
|
|
708
|
+
placeholder shapes. Previously, some placeholder shapes reported
|
|
709
|
+
`MSO_SHAPE_TYPE.AUTO_SHAPE`, `MSO_SHAPE_TYPE.CHART`,
|
|
710
|
+
`MSO_SHAPE_TYPE.PICTURE`, or `MSO_SHAPE_TYPE.TABLE` for that property.
|
|
711
|
+
|
|
712
|
+
|
|
713
|
+
0.5.6 (2014-12-06)
|
|
714
|
+
++++++++++++++++++
|
|
715
|
+
|
|
716
|
+
- fix #138 - UnicodeDecodeError in setup.py on Windows 7 Python 3.4
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
0.5.5 (2014-11-17)
|
|
720
|
+
++++++++++++++++++
|
|
721
|
+
|
|
722
|
+
- feature #51 - add Python 3 support
|
|
723
|
+
|
|
724
|
+
|
|
725
|
+
0.5.4 (2014-11-15)
|
|
726
|
+
++++++++++++++++++
|
|
727
|
+
|
|
728
|
+
- feature #43 - image native size in shapes.add_picture() is now calculated
|
|
729
|
+
based on DPI attribute in image file, if present, defaulting to 72 dpi.
|
|
730
|
+
- feature #113 - Add Paragraph.space_before, Paragraph.space_after, and
|
|
731
|
+
Paragraph.line_spacing
|
|
732
|
+
|
|
733
|
+
|
|
734
|
+
0.5.3 (2014-11-09)
|
|
735
|
+
++++++++++++++++++
|
|
736
|
+
|
|
737
|
+
- add experimental feature TextFrame.fit_text()
|
|
738
|
+
|
|
739
|
+
|
|
740
|
+
0.5.2 (2014-10-26)
|
|
741
|
+
++++++++++++++++++
|
|
742
|
+
|
|
743
|
+
- fix #127 - Shape.text_frame fails on shape having no txBody
|
|
744
|
+
|
|
745
|
+
|
|
746
|
+
0.5.1 (2014-09-22)
|
|
747
|
+
++++++++++++++++++
|
|
748
|
+
|
|
749
|
+
- feature #120 - add Shape.rotation
|
|
750
|
+
- feature #97 - add Font.underline
|
|
751
|
+
- issue #117 - add BMP image support
|
|
752
|
+
- issue #95 - add BaseShape.name setter
|
|
753
|
+
- issue #107 - all .text properties should return unicode, not str
|
|
754
|
+
- feature #106 - add .text getters to Shape, TextFrame, and Paragraph
|
|
755
|
+
|
|
756
|
+
- Rename Shape.textframe to Shape.text_frame.
|
|
757
|
+
**Shape.textframe property (by that name) is deprecated.**
|
|
758
|
+
|
|
759
|
+
|
|
760
|
+
0.5.0 (2014-09-13)
|
|
761
|
+
++++++++++++++++++
|
|
762
|
+
|
|
763
|
+
- Add support for creating and manipulating bar, column, line, and pie charts
|
|
764
|
+
- Major refactoring of XML layer (oxml)
|
|
765
|
+
- Rationalized graphical object shape access
|
|
766
|
+
**Note backward incompatibilities below**
|
|
767
|
+
|
|
768
|
+
**BACKWARD INCOMPATIBILITIES:**
|
|
769
|
+
|
|
770
|
+
A table is no longer treated as a shape. Rather it is a graphical object
|
|
771
|
+
contained in a GraphicFrame shape, as are Chart and SmartArt objects.
|
|
772
|
+
|
|
773
|
+
Example::
|
|
774
|
+
|
|
775
|
+
table = shapes.add_table(...)
|
|
776
|
+
|
|
777
|
+
# becomes
|
|
778
|
+
|
|
779
|
+
graphic_frame = shapes.add_table(...)
|
|
780
|
+
table = graphic_frame.table
|
|
781
|
+
|
|
782
|
+
# or
|
|
783
|
+
|
|
784
|
+
table = shapes.add_table(...).table
|
|
785
|
+
|
|
786
|
+
As the enclosing shape, the id, name, shape type, position, and size are
|
|
787
|
+
attributes of the enclosing GraphicFrame object.
|
|
788
|
+
|
|
789
|
+
The contents of a GraphicFrame shape can be identified using three available
|
|
790
|
+
properties on a shape: has_table, has_chart, and has_smart_art. The enclosed
|
|
791
|
+
graphical object is obtained using the properties GraphicFrame.table and
|
|
792
|
+
GraphicFrame.chart. SmartArt is not yet supported. Accessing one of these
|
|
793
|
+
properties on a GraphicFrame not containing the corresponding object raises
|
|
794
|
+
an exception.
|
|
795
|
+
|
|
796
|
+
|
|
797
|
+
0.4.2 (2014-04-29)
|
|
798
|
+
++++++++++++++++++
|
|
799
|
+
|
|
800
|
+
- fix: issue #88 -- raises on supported image file having uppercase extension
|
|
801
|
+
- fix: issue #89 -- raises on add_slide() where non-contiguous existing ids
|
|
802
|
+
|
|
803
|
+
|
|
804
|
+
0.4.1 (2014-04-29)
|
|
805
|
+
++++++++++++++++++
|
|
806
|
+
|
|
807
|
+
- Rename Presentation.slidemasters to Presentation.slide_masters.
|
|
808
|
+
Presentation.slidemasters property is deprecated.
|
|
809
|
+
- Rename Presentation.slidelayouts to Presentation.slide_layouts.
|
|
810
|
+
Presentation.slidelayouts property is deprecated.
|
|
811
|
+
- Rename SlideMaster.slidelayouts to SlideMaster.slide_layouts.
|
|
812
|
+
SlideMaster.slidelayouts property is deprecated.
|
|
813
|
+
- Rename SlideLayout.slidemaster to SlideLayout.slide_master.
|
|
814
|
+
SlideLayout.slidemaster property is deprecated.
|
|
815
|
+
- Rename Slide.slidelayout to Slide.slide_layout. Slide.slidelayout property
|
|
816
|
+
is deprecated.
|
|
817
|
+
- Add SlideMaster.shapes to access shapes on slide master.
|
|
818
|
+
- Add SlideMaster.placeholders to access placeholder shapes on slide master.
|
|
819
|
+
- Add _MasterPlaceholder class.
|
|
820
|
+
- Add _LayoutPlaceholder class with position and size inheritable from master
|
|
821
|
+
placeholder.
|
|
822
|
+
- Add _SlidePlaceholder class with position and size inheritable from layout
|
|
823
|
+
placeholder.
|
|
824
|
+
- Add Table.left, top, width, and height read/write properties.
|
|
825
|
+
- Add rudimentary GroupShape with left, top, width, and height properties.
|
|
826
|
+
- Add rudimentary Connector with left, top, width, and height properties.
|
|
827
|
+
- Add TextFrame.auto_size property.
|
|
828
|
+
- Add Presentation.slide_width and .slide_height read/write properties.
|
|
829
|
+
- Add LineFormat class providing access to read and change line color and
|
|
830
|
+
width.
|
|
831
|
+
- Add AutoShape.line
|
|
832
|
+
- Add Picture.line
|
|
833
|
+
|
|
834
|
+
- Rationalize enumerations. **Note backward incompatibilities below**
|
|
835
|
+
|
|
836
|
+
**BACKWARD INCOMPATIBILITIES:**
|
|
837
|
+
|
|
838
|
+
The following enumerations were moved/renamed during the rationalization of
|
|
839
|
+
enumerations:
|
|
840
|
+
|
|
841
|
+
- ``pptx.enum.MSO_COLOR_TYPE`` --> ``pptx.enum.dml.MSO_COLOR_TYPE``
|
|
842
|
+
- ``pptx.enum.MSO_FILL`` --> ``pptx.enum.dml.MSO_FILL``
|
|
843
|
+
- ``pptx.enum.MSO_THEME_COLOR`` --> ``pptx.enum.dml.MSO_THEME_COLOR``
|
|
844
|
+
- ``pptx.constants.MSO.ANCHOR_*`` --> ``pptx.enum.text.MSO_ANCHOR.*``
|
|
845
|
+
- ``pptx.constants.MSO_SHAPE`` --> ``pptx.enum.shapes.MSO_SHAPE``
|
|
846
|
+
- ``pptx.constants.PP.ALIGN_*`` --> ``pptx.enum.text.PP_ALIGN.*``
|
|
847
|
+
- ``pptx.constants.MSO.{SHAPE_TYPES}`` -->
|
|
848
|
+
``pptx.enum.shapes.MSO_SHAPE_TYPE.*``
|
|
849
|
+
|
|
850
|
+
Documentation for all enumerations is available in the Enumerations section
|
|
851
|
+
of the User Guide.
|
|
852
|
+
|
|
853
|
+
|
|
854
|
+
0.3.2 (2014-02-07)
|
|
855
|
+
++++++++++++++++++
|
|
856
|
+
|
|
857
|
+
- Hotfix: issue #80 generated presentations fail to load in Keynote and other
|
|
858
|
+
Apple applications
|
|
859
|
+
|
|
860
|
+
|
|
861
|
+
0.3.1 (2014-01-10)
|
|
862
|
+
++++++++++++++++++
|
|
863
|
+
|
|
864
|
+
- Hotfix: failed to load certain presentations containing images with
|
|
865
|
+
uppercase extension
|
|
866
|
+
|
|
867
|
+
|
|
868
|
+
0.3.0 (2013-12-12)
|
|
869
|
+
++++++++++++++++++
|
|
870
|
+
|
|
871
|
+
- Add read/write font color property supporting RGB, theme color, and inherit
|
|
872
|
+
color types
|
|
873
|
+
- Add font typeface and italic support
|
|
874
|
+
- Add text frame margins and word-wrap
|
|
875
|
+
- Add support for external relationships, e.g. linked spreadsheet
|
|
876
|
+
- Add hyperlink support for text run in shape and table cell
|
|
877
|
+
- Add fill color and brightness for shape and table cell, fill can also be set
|
|
878
|
+
to transparent (no fill)
|
|
879
|
+
- Add read/write position and size properties to shape and picture
|
|
880
|
+
- Replace PIL dependency with Pillow
|
|
881
|
+
- Restructure modules to better suit size of library
|
|
882
|
+
|
|
883
|
+
|
|
884
|
+
0.2.6 (2013-06-22)
|
|
885
|
+
++++++++++++++++++
|
|
886
|
+
|
|
887
|
+
- Add read/write access to core document properties
|
|
888
|
+
- Hotfix to accomodate connector shapes in _AutoShapeType
|
|
889
|
+
- Hotfix to allow customXml parts to load when present
|
|
890
|
+
|
|
891
|
+
|
|
892
|
+
0.2.5 (2013-06-11)
|
|
893
|
+
++++++++++++++++++
|
|
894
|
+
|
|
895
|
+
- Add paragraph alignment property (left, right, centered, etc.)
|
|
896
|
+
- Add vertical alignment within table cell (top, middle, bottom)
|
|
897
|
+
- Add table cell margin properties
|
|
898
|
+
- Add table boolean properties: first column (row header), first row (column
|
|
899
|
+
headings), last row (for e.g. totals row), last column (for e.g. row
|
|
900
|
+
totals), horizontal banding, and vertical banding.
|
|
901
|
+
- Add support for auto shape adjustment values, e.g. change radius of corner
|
|
902
|
+
rounding on rounded rectangle, position of callout arrow, etc.
|
|
903
|
+
|
|
904
|
+
|
|
905
|
+
0.2.4 (2013-05-16)
|
|
906
|
+
++++++++++++++++++
|
|
907
|
+
|
|
908
|
+
- Add support for auto shapes (e.g. polygons, flowchart symbols, etc.)
|
|
909
|
+
|
|
910
|
+
|
|
911
|
+
0.2.3 (2013-05-05)
|
|
912
|
+
++++++++++++++++++
|
|
913
|
+
|
|
914
|
+
- Add support for table shapes
|
|
915
|
+
- Add indentation support to textbox shapes, enabling multi-level bullets on
|
|
916
|
+
bullet slides.
|
|
917
|
+
|
|
918
|
+
|
|
919
|
+
0.2.2 (2013-03-25)
|
|
920
|
+
++++++++++++++++++
|
|
921
|
+
|
|
922
|
+
- Add support for opening and saving a presentation from/to a file-like
|
|
923
|
+
object.
|
|
924
|
+
- Refactor XML handling to use lxml objectify
|
|
925
|
+
|
|
926
|
+
|
|
927
|
+
0.2.1 (2013-02-25)
|
|
928
|
+
++++++++++++++++++
|
|
929
|
+
|
|
930
|
+
- Add support for Python 2.6
|
|
931
|
+
- Add images from a stream (e.g. StringIO) in addition to a path, allowing
|
|
932
|
+
images retrieved from a database or network resource to be inserted without
|
|
933
|
+
saving first.
|
|
934
|
+
- Expand text methods to accept unicode and UTF-8 encoded 8-bit strings.
|
|
935
|
+
- Fix potential install bug triggered by importing ``__version__`` from
|
|
936
|
+
package ``__init__.py`` file.
|
|
937
|
+
|
|
938
|
+
|
|
939
|
+
0.2.0 (2013-02-10)
|
|
940
|
+
++++++++++++++++++
|
|
941
|
+
|
|
942
|
+
First non-alpha release with basic capabilities:
|
|
943
|
+
|
|
944
|
+
- open presentation/template or use built-in default template
|
|
945
|
+
- add slide
|
|
946
|
+
- set placeholder text (e.g. bullet slides)
|
|
947
|
+
- add picture
|
|
948
|
+
- add text box
|