python-docx-oss 0.0.8__tar.gz → 0.0.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/HISTORY.md +7 -2
- {python_docx_oss-0.0.8/python_docx_oss.egg-info → python_docx_oss-0.0.9}/PKG-INFO +8 -3
- python_docx_oss-0.0.9/docs/_static/img/example-docx-01.png +0 -0
- python_docx_oss-0.0.9/docs/index.rst +116 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/user/shapes.rst +4 -3
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/__init__.py +7 -8
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/image/__init__.py +4 -1
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/image/constants.py +1 -0
- python_docx_oss-0.0.9/docx/image/svg.py +65 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/oxml/__init__.py +2 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/oxml/ns.py +5 -6
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/oxml/shape.py +45 -13
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/_scratch/test_out.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9/python_docx_oss.egg-info}/PKG-INFO +8 -3
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/python_docx_oss.egg-info/SOURCES.txt +2 -0
- python_docx_oss-0.0.9/tests/image/test_svg.py +57 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/snippets/inline.txt +1 -1
- python_docx_oss-0.0.8/docs/_static/img/example-docx-01.png +0 -0
- python_docx_oss-0.0.8/docs/index.rst +0 -115
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/LICENSE +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/MANIFEST.in +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/README.md +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/Makefile +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/_static/.gitignore +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/_static/img/hdrftr-01.png +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/_static/img/hdrftr-02.png +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/_static/img/oss.png +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/_templates/layout.html +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/_templates/sidebarlinks.html +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/_themes/armstrong/LICENSE +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/_themes/armstrong/layout.html +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/_themes/armstrong/rtd-themes.conf +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/_themes/armstrong/static/rtd.css_t +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/_themes/armstrong/theme.conf +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/_themes/armstrong/theme.conf.orig +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/dml.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/document.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/enum/MsoColorType.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/enum/MsoThemeColorIndex.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/enum/WdAlignParagraph.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/enum/WdBuiltinStyle.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/enum/WdCellVerticalAlignment.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/enum/WdColorIndex.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/enum/WdLineSpacing.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/enum/WdOrientation.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/enum/WdRowAlignment.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/enum/WdRowHeightRule.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/enum/WdSectionStart.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/enum/WdStyleType.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/enum/WdTabAlignment.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/enum/WdTabLeader.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/enum/WdTableDirection.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/enum/WdUnderline.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/enum/index.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/section.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/settings.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/shape.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/shared.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/style.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/table.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/api/text.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/conf.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/coreprops.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/header.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/numbering.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/sections.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/settings.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/shapes/index.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/shapes/picture.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/shapes/shapes-inline-size.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/shapes/shapes-inline.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/styles/character-style.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/styles/index.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/styles/latent-styles.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/styles/paragraph-style.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/styles/style.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/styles/styles.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/table/cell-merge.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/table/index.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/table/table-cell.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/table/table-props.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/table/table-row.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/text/breaks.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/text/font-color.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/text/font-highlight-color.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/text/font.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/text/index.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/text/paragraph-format.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/text/run-content.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/text/tab-stops.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/features/text/underline.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/index.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/schema/ct_body.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/schema/ct_document.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/dev/analysis/schema/ct_p.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/requirements.txt +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/user/api-concepts.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/user/custom-properties.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/user/custom-xml.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/user/documents.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/user/hdrftr.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/user/install.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/user/quickstart.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/user/sections.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/user/styles-understanding.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/user/styles-using.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docs/user/text.rst +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/api.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/blkcntnr.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/compat.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/dml/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/dml/color.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/document.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/enum/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/enum/base.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/enum/dml.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/enum/section.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/enum/shape.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/enum/style.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/enum/table.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/enum/text.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/exceptions.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/image/bmp.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/image/emf.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/image/exceptions.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/image/gif.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/image/helpers.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/image/image.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/image/jpeg.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/image/png.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/image/tiff.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/opc/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/opc/compat.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/opc/constants.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/opc/coreprops.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/opc/customprops.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/opc/exceptions.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/opc/oxml.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/opc/package.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/opc/packuri.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/opc/part.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/opc/parts/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/opc/parts/coreprops.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/opc/parts/customprops.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/opc/phys_pkg.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/opc/pkgreader.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/opc/pkgwriter.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/opc/rel.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/opc/shared.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/opc/spec.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/oxml/coreprops.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/oxml/customprops.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/oxml/document.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/oxml/exceptions.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/oxml/numbering.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/oxml/section.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/oxml/settings.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/oxml/shared.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/oxml/simpletypes.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/oxml/styles.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/oxml/table.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/oxml/text/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/oxml/text/font.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/oxml/text/paragraph.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/oxml/text/parfmt.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/oxml/text/run.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/oxml/xmlchemy.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/package.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/parts/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/parts/customxml.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/parts/document.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/parts/hdrftr.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/parts/image.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/parts/numbering.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/parts/settings.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/parts/story.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/parts/styles.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/section.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/settings.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/shape.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/shared.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/styles/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/styles/latent.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/styles/style.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/styles/styles.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/table.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-docx-template/[Content_Types].xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-docx-template/_rels/.rels +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-docx-template/customXml/_rels/item1.xml.rels +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-docx-template/customXml/item1.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-docx-template/customXml/itemProps1.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-docx-template/docProps/app.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-docx-template/docProps/core.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-docx-template/docProps/thumbnail.jpeg +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-docx-template/word/_rels/document.xml.rels +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-docx-template/word/document.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-docx-template/word/fontTable.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-docx-template/word/numbering.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-docx-template/word/settings.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-docx-template/word/styles.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-docx-template/word/stylesWithEffects.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-docx-template/word/theme/theme1.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-docx-template/word/webSettings.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-footer.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-header.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-numbering.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-settings.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default-styles.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/templates/default.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/text/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/text/font.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/text/paragraph.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/text/parfmt.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/text/run.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/docx/text/tabstops.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/api-open-document.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/blk-add-paragraph.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/blk-add-table.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/cel-add-table.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/cel-text.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/doc-access-collections.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/doc-access-sections.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/doc-add-heading.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/doc-add-page-break.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/doc-add-paragraph.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/doc-add-picture.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/doc-add-section.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/doc-add-table.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/doc-coreprops.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/doc-customprops.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/doc-settings.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/doc-styles.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/environment.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/hdr-header-footer.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/img-characterize-image.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/num-access-numbering-part.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/par-access-parfmt.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/par-add-run.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/par-alignment-prop.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/par-clear-paragraph.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/par-insert-paragraph.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/par-set-text.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/par-style-prop.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/run-access-content.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/run-access-font.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/run-add-content.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/run-add-picture.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/run-char-style.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/run-clear-run.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/run-enum-props.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/sct-section.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/shp-inline-shape-access.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/shp-inline-shape-size.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/api.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/block.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/cell.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/coreprops.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/customprops.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/document.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/font.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/hdrftr.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/helpers.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/image.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/numbering.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/paragraph.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/parfmt.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/section.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/settings.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/shape.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/shared.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/styles.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/table.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/tabstops.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/blk-containing-table.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/court-exif.jpg +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/doc-access-sections.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/doc-add-section.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/doc-coreprops.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/doc-customprops.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/doc-default.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/doc-no-coreprops.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/doc-no-customprops.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/doc-odd-even-hdrs.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/doc-word-default-blank.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/fnt-color.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/hdr-header-footer.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/jfif-300-dpi.jpg +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/jpeg420exif.jpg +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/lena.bmp +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/lena.gif +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/lena.tif +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/lena_std.jpg +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/monty-truth.png +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/mountain.bmp +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/num-having-numbering-part.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/par-alignment.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/par-known-paragraphs.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/par-known-styles.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/python-icon.jpeg +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/run-char-style.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/run-enumerated-props.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/sample.tif +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/sct-first-page-hdrftr.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/sct-section-props.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/set-no-settings-part.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/shp-inline-shape-access.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/sty-behav-props.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/sty-having-no-styles-part.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/sty-having-styles-part.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/sty-known-styles.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/tab-stops.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/tbl-2x2-table.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/tbl-cell-access.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/tbl-col-props.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/tbl-having-applied-style.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/tbl-having-tables.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/tbl-on-off-props.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/tbl-props.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/test.png +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/txt-font-highlight-color.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/test_files/txt-font-props.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/steps/text.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/sty-access-font.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/sty-access-latent-styles.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/sty-access-parfmt.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/sty-add-style.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/sty-delete-style.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/sty-latent-add-del.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/sty-latent-props.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/sty-style-props.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/tab-access-tabs.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/tab-tabstop-props.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/tbl-add-row-or-col.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/tbl-cell-access.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/tbl-cell-props.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/tbl-col-props.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/tbl-item-access.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/tbl-merge-cells.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/tbl-props.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/tbl-row-props.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/tbl-style.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/txt-add-break.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/txt-font-color.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/txt-font-props.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/features/txt-parfmt-props.feature +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/python_docx_oss.egg-info/dependency_links.txt +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/python_docx_oss.egg-info/not-zip-safe +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/python_docx_oss.egg-info/requires.txt +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/python_docx_oss.egg-info/top_level.txt +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/setup.cfg +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/setup.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/dml/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/dml/test_color.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/image/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/image/test_bmp.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/image/test_emf.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/image/test_gif.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/image/test_helpers.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/image/test_image.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/image/test_jpeg.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/image/test_png.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/image/test_tiff.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/opc/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/opc/parts/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/opc/parts/test_coreprops.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/opc/parts/test_customprops.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/opc/test_coreprops.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/opc/test_customprops.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/opc/test_oxml.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/opc/test_package.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/opc/test_packuri.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/opc/test_part.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/opc/test_phys_pkg.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/opc/test_pkgreader.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/opc/test_pkgwriter.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/opc/test_rel.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/opc/unitdata/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/opc/unitdata/rels.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/opc/unitdata/types.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/oxml/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/oxml/parts/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/oxml/parts/test_document.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/oxml/parts/unitdata/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/oxml/parts/unitdata/document.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/oxml/test__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/oxml/test_ns.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/oxml/test_styles.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/oxml/test_table.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/oxml/test_xmlchemy.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/oxml/text/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/oxml/text/test_run.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/oxml/unitdata/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/oxml/unitdata/dml.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/oxml/unitdata/numbering.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/oxml/unitdata/section.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/oxml/unitdata/shared.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/oxml/unitdata/styles.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/oxml/unitdata/table.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/oxml/unitdata/text.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/parts/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/parts/test_customxml.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/parts/test_document.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/parts/test_hdrftr.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/parts/test_image.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/parts/test_numbering.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/parts/test_settings.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/parts/test_story.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/parts/test_styles.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/styles/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/styles/test_latent.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/styles/test_style.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/styles/test_styles.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_api.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_blkcntnr.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_document.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_enum.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/150-dpi.png +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/300-dpi.TIF +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/300-dpi.jpg +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/300-dpi.png +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/72-dpi.tiff +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/CVS_LOGO.WMF +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/exif-420-dpi.jpg +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/expanded_docx/[Content_Types].xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/expanded_docx/_rels/.rels +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/expanded_docx/customXml/_rels/item1.xml.rels +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/expanded_docx/customXml/item1.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/expanded_docx/customXml/itemProps1.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/expanded_docx/docProps/app.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/expanded_docx/docProps/core.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/expanded_docx/docProps/thumbnail.jpeg +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/expanded_docx/word/_rels/document.xml.rels +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/expanded_docx/word/document.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/expanded_docx/word/fontTable.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/expanded_docx/word/numbering.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/expanded_docx/word/settings.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/expanded_docx/word/styles.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/expanded_docx/word/stylesWithEffects.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/expanded_docx/word/theme/theme1.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/expanded_docx/word/webSettings.xml +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/having-images.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/jfif-iguana.jpg +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/little-endian.tif +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/monty-truth.png +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/python-icon.jpeg +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/python-icon.png +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/python-powered.png +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/python.bmp +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/snippets/add-row-col.txt +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/snippets/new-tbl.txt +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/snippets/tbl-cells.txt +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/sonic.gif +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_files/test.docx +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_package.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_section.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_settings.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_shape.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_shared.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/test_table.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/text/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/text/test_font.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/text/test_paragraph.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/text/test_parfmt.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/text/test_run.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/text/test_tabstops.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/unitdata.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/unitutil/__init__.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/unitutil/cxml.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/unitutil/file.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tests/unitutil/mock.py +0 -0
- {python_docx_oss-0.0.8 → python_docx_oss-0.0.9}/tox.ini +0 -0
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
## Release History
|
|
2
2
|
|
|
3
|
+
**0.0.9 (2024-11-26)**
|
|
4
|
+
|
|
5
|
+
- svg file support in add_picture. #27
|
|
6
|
+
- update docs.
|
|
7
|
+
|
|
3
8
|
**0.0.8 (2024-11-22)**
|
|
4
9
|
|
|
5
|
-
- EastAsia font support fixes #25
|
|
6
|
-
- Update README.md #26
|
|
10
|
+
- EastAsia font support fixes. #25
|
|
11
|
+
- Update README.md. #26
|
|
7
12
|
|
|
8
13
|
**0.0.7 (2022-10-29)**
|
|
9
14
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: python-docx-oss
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.9
|
|
4
4
|
Summary: CRUD Microsoft Word .docx files.
|
|
5
5
|
Home-page: https://github.com/lsaint/python-docx-oss
|
|
6
6
|
Author: Ethan St. Lee
|
|
@@ -75,10 +75,15 @@ This project is based on the original work by [Steve Canny](https://github.com/s
|
|
|
75
75
|
|
|
76
76
|
## Release History
|
|
77
77
|
|
|
78
|
+
**0.0.9 (2024-11-26)**
|
|
79
|
+
|
|
80
|
+
- svg file support in add_picture. #27
|
|
81
|
+
- update docs.
|
|
82
|
+
|
|
78
83
|
**0.0.8 (2024-11-22)**
|
|
79
84
|
|
|
80
|
-
- EastAsia font support fixes #25
|
|
81
|
-
- Update README.md #26
|
|
85
|
+
- EastAsia font support fixes. #25
|
|
86
|
+
- Update README.md. #26
|
|
82
87
|
|
|
83
88
|
**0.0.7 (2022-10-29)**
|
|
84
89
|
|
|
Binary file
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
.. python-docx-oss documentation master file, created by
|
|
2
|
+
sphinx-quickstart on Wed Jul 6 15:38:29 2022.
|
|
3
|
+
You can adapt this file completely to your liking, but it should at least
|
|
4
|
+
contain the root `toctree` directive.
|
|
5
|
+
|
|
6
|
+
Welcome to python-docx-oss's documentation!
|
|
7
|
+
===========================================
|
|
8
|
+
|
|
9
|
+
Release v\ |release| (:ref:`Installation <install>`)
|
|
10
|
+
|
|
11
|
+
*python-docx-oss* is a Python library for CRUD Microsoft Word (.docx) files.
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
What it can do
|
|
15
|
+
--------------
|
|
16
|
+
|
|
17
|
+
.. |img| image:: /_static/img/example-docx-01.png
|
|
18
|
+
|
|
19
|
+
Here's an example of what |docx| can do:
|
|
20
|
+
|
|
21
|
+
::
|
|
22
|
+
|
|
23
|
+
from docx import Document
|
|
24
|
+
from docx.shared import Inches
|
|
25
|
+
|
|
26
|
+
document = Document()
|
|
27
|
+
|
|
28
|
+
document.add_heading('Document Title', 0)
|
|
29
|
+
|
|
30
|
+
p = document.add_paragraph('A plain paragraph having some ')
|
|
31
|
+
p.add_run('bold').bold = True
|
|
32
|
+
p.add_run(' and some ')
|
|
33
|
+
p.add_run('italic.').italic = True
|
|
34
|
+
|
|
35
|
+
document.add_heading('Heading, level 1', level=1)
|
|
36
|
+
document.add_paragraph('Intense quote', style='Intense Quote')
|
|
37
|
+
|
|
38
|
+
document.add_paragraph(
|
|
39
|
+
'first item in unordered list', style='List Bullet'
|
|
40
|
+
)
|
|
41
|
+
document.add_paragraph(
|
|
42
|
+
'first item in ordered list', style='List Number'
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
document.add_picture('500miles.png', width=Inches(5.9))
|
|
46
|
+
|
|
47
|
+
records = (
|
|
48
|
+
(3, '101', 'Spam'),
|
|
49
|
+
(7, '422', 'Eggs'),
|
|
50
|
+
(4, '631', 'Spam, spam, eggs, and spam')
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
table = document.add_table(rows=1, cols=3)
|
|
54
|
+
hdr_cells = table.rows[0].cells
|
|
55
|
+
hdr_cells[0].text = 'Qty'
|
|
56
|
+
hdr_cells[1].text = 'Id'
|
|
57
|
+
hdr_cells[2].text = 'Desc'
|
|
58
|
+
for qty, id, desc in records:
|
|
59
|
+
row_cells = table.add_row().cells
|
|
60
|
+
row_cells[0].text = str(qty)
|
|
61
|
+
row_cells[1].text = id
|
|
62
|
+
row_cells[2].text = desc
|
|
63
|
+
|
|
64
|
+
document.add_page_break()
|
|
65
|
+
|
|
66
|
+
document.save('demo.docx')
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|img|
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
User Guide
|
|
73
|
+
----------
|
|
74
|
+
|
|
75
|
+
.. toctree::
|
|
76
|
+
:maxdepth: 1
|
|
77
|
+
|
|
78
|
+
user/install
|
|
79
|
+
user/quickstart
|
|
80
|
+
user/documents
|
|
81
|
+
user/text
|
|
82
|
+
user/sections
|
|
83
|
+
user/hdrftr
|
|
84
|
+
user/api-concepts
|
|
85
|
+
user/styles-understanding
|
|
86
|
+
user/styles-using
|
|
87
|
+
user/shapes
|
|
88
|
+
user/custom-properties
|
|
89
|
+
user/custom-xml
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
API Documentation
|
|
93
|
+
-----------------
|
|
94
|
+
|
|
95
|
+
.. toctree::
|
|
96
|
+
:maxdepth: 2
|
|
97
|
+
|
|
98
|
+
api/document
|
|
99
|
+
api/settings
|
|
100
|
+
api/style
|
|
101
|
+
api/text
|
|
102
|
+
api/table
|
|
103
|
+
api/section
|
|
104
|
+
api/shape
|
|
105
|
+
api/dml
|
|
106
|
+
api/shared
|
|
107
|
+
api/enum/index
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
Contributor Guide
|
|
111
|
+
-----------------
|
|
112
|
+
|
|
113
|
+
.. toctree::
|
|
114
|
+
:maxdepth: 1
|
|
115
|
+
|
|
116
|
+
dev/analysis/index
|
|
@@ -19,9 +19,10 @@ will cause it to move to the right. Often, a picture is placed in a paragraph
|
|
|
19
19
|
by itself, but this is not required. It can have text before and after it in
|
|
20
20
|
the paragraph in which it's placed.
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
can be added. If you have an active use case, submit a feature request on the
|
|
24
|
-
issue tracker. The ``Document.add_picture()`` method adds a specified picture
|
|
22
|
+
The ``Document.add_picture()`` method adds a specified picture
|
|
25
23
|
to the end of the document in a paragraph of its own. However, by digging
|
|
26
24
|
a little deeper into the API you can place text on either side of the picture
|
|
27
25
|
in its paragraph, or both.
|
|
26
|
+
|
|
27
|
+
If width and height are not specified in svg, the default size is *72px*.
|
|
28
|
+
The ratio of width and height is kept the same as viewbox attribute.
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
from docx.api import Document
|
|
2
|
-
|
|
3
|
-
__version__ = "0.0.8"
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
# register custom Part classes with opc package reader
|
|
7
|
-
|
|
1
|
+
from docx.api import Document
|
|
8
2
|
from docx.opc.constants import CONTENT_TYPE as CT
|
|
9
3
|
from docx.opc.constants import RELATIONSHIP_TYPE as RT
|
|
10
4
|
from docx.opc.part import PartFactory
|
|
@@ -16,7 +10,12 @@ from docx.parts.hdrftr import FooterPart, HeaderPart
|
|
|
16
10
|
from docx.parts.image import ImagePart
|
|
17
11
|
from docx.parts.numbering import NumberingPart
|
|
18
12
|
from docx.parts.settings import SettingsPart
|
|
19
|
-
from docx.parts.styles import StylesPart
|
|
13
|
+
from docx.parts.styles import StylesPart # noqa
|
|
14
|
+
|
|
15
|
+
__version__ = "0.0.9"
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# register custom Part classes with opc package reader
|
|
20
19
|
|
|
21
20
|
|
|
22
21
|
def part_class_selector(content_type, reltype):
|
|
@@ -8,11 +8,12 @@ size, as a required step in including them in a document.
|
|
|
8
8
|
from __future__ import absolute_import, division, print_function, unicode_literals
|
|
9
9
|
|
|
10
10
|
from docx.image.bmp import Bmp
|
|
11
|
+
from docx.image.emf import Emf
|
|
11
12
|
from docx.image.gif import Gif
|
|
12
13
|
from docx.image.jpeg import Exif, Jfif
|
|
13
14
|
from docx.image.png import Png
|
|
15
|
+
from docx.image.svg import Svg
|
|
14
16
|
from docx.image.tiff import Tiff
|
|
15
|
-
from docx.image.emf import Emf
|
|
16
17
|
|
|
17
18
|
|
|
18
19
|
SIGNATURES = (
|
|
@@ -26,4 +27,6 @@ SIGNATURES = (
|
|
|
26
27
|
(Tiff, 0, b"II*\x00"), # little-endian (Intel) TIFF
|
|
27
28
|
(Bmp, 0, b"BM"),
|
|
28
29
|
(Emf, 0, b"\x01\x00\x00\x00"),
|
|
30
|
+
(Svg, 0, b"<svg "),
|
|
31
|
+
(Svg, 0, b"<?xml version="),
|
|
29
32
|
)
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import xml.etree.ElementTree as ET
|
|
2
|
+
|
|
3
|
+
from .constants import MIME_TYPE
|
|
4
|
+
from .image import BaseImageHeader
|
|
5
|
+
|
|
6
|
+
BASE_PX = 72
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class Svg(BaseImageHeader):
|
|
10
|
+
"""
|
|
11
|
+
Image header parser for SVG images.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
@classmethod
|
|
15
|
+
def from_stream(cls, stream):
|
|
16
|
+
"""
|
|
17
|
+
Return |Svg| instance having header properties parsed from SVG image
|
|
18
|
+
in *stream*.
|
|
19
|
+
"""
|
|
20
|
+
px_width, px_height = cls._dimensions_from_stream(stream)
|
|
21
|
+
return cls(px_width, px_height, 72, 72)
|
|
22
|
+
|
|
23
|
+
@property
|
|
24
|
+
def content_type(self):
|
|
25
|
+
"""
|
|
26
|
+
MIME content type for this image, unconditionally `image/svg+xml` for
|
|
27
|
+
SVG images.
|
|
28
|
+
"""
|
|
29
|
+
return MIME_TYPE.SVG
|
|
30
|
+
|
|
31
|
+
@property
|
|
32
|
+
def default_ext(self):
|
|
33
|
+
"""
|
|
34
|
+
Default filename extension, always 'svg' for SVG images.
|
|
35
|
+
"""
|
|
36
|
+
return "svg"
|
|
37
|
+
|
|
38
|
+
@classmethod
|
|
39
|
+
def _dimensions_from_stream(cls, stream):
|
|
40
|
+
stream.seek(0)
|
|
41
|
+
data = stream.read()
|
|
42
|
+
root = ET.fromstring(data)
|
|
43
|
+
if root.attrib.get("width") is None:
|
|
44
|
+
return cls._calculate_scaled_dimensions(root.attrib["viewBox"])
|
|
45
|
+
|
|
46
|
+
width = int(root.attrib["width"])
|
|
47
|
+
height = int(root.attrib["height"])
|
|
48
|
+
return width, height
|
|
49
|
+
|
|
50
|
+
@classmethod
|
|
51
|
+
def _calculate_scaled_dimensions(
|
|
52
|
+
cls, viewbox: str, base_px: int = BASE_PX
|
|
53
|
+
) -> tuple[int, int]:
|
|
54
|
+
_, _, logical_width, logical_height = map(int, viewbox.split())
|
|
55
|
+
|
|
56
|
+
aspect_ratio = logical_width / logical_height
|
|
57
|
+
|
|
58
|
+
if aspect_ratio >= 1:
|
|
59
|
+
final_width = base_px
|
|
60
|
+
final_height = base_px / aspect_ratio
|
|
61
|
+
else:
|
|
62
|
+
final_height = base_px
|
|
63
|
+
final_width = base_px * aspect_ratio
|
|
64
|
+
|
|
65
|
+
return int(final_width), int(final_height)
|
|
@@ -133,6 +133,8 @@ from .shape import (
|
|
|
133
133
|
|
|
134
134
|
register_element_cls("a:blip", CT_Blip)
|
|
135
135
|
register_element_cls("a:ext", CT_PositiveSize2D)
|
|
136
|
+
register_element_cls("a:extLst", CT_Transform2D)
|
|
137
|
+
register_element_cls("asvg:svgBlip", CT_Transform2D)
|
|
136
138
|
register_element_cls("a:graphic", CT_GraphicalObject)
|
|
137
139
|
register_element_cls("a:graphicData", CT_GraphicalObjectData)
|
|
138
140
|
register_element_cls("a:off", CT_Point2D)
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
1
|
"""
|
|
4
2
|
Namespace-related objects.
|
|
5
3
|
"""
|
|
@@ -25,9 +23,10 @@ nsmap = {
|
|
|
25
23
|
"wp": "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing",
|
|
26
24
|
"xml": "http://www.w3.org/XML/1998/namespace",
|
|
27
25
|
"xsi": "http://www.w3.org/2001/XMLSchema-instance",
|
|
26
|
+
"asvg": "http://schemas.microsoft.com/office/drawing/2016/SVG/main",
|
|
28
27
|
}
|
|
29
28
|
|
|
30
|
-
pfxmap =
|
|
29
|
+
pfxmap = {value: key for key, value in nsmap.items()}
|
|
31
30
|
|
|
32
31
|
|
|
33
32
|
class NamespacePrefixedTag(str):
|
|
@@ -50,7 +49,7 @@ class NamespacePrefixedTag(str):
|
|
|
50
49
|
@classmethod
|
|
51
50
|
def from_clark_name(cls, clark_name):
|
|
52
51
|
nsuri, local_name = clark_name[1:].split("}")
|
|
53
|
-
nstag = "
|
|
52
|
+
nstag = f"{pfxmap[nsuri]}:{local_name}"
|
|
54
53
|
return cls(nstag)
|
|
55
54
|
|
|
56
55
|
@property
|
|
@@ -93,7 +92,7 @@ def nsdecls(*prefixes):
|
|
|
93
92
|
Return a string containing a namespace declaration for each of the
|
|
94
93
|
namespace prefix strings, e.g. 'p', 'ct', passed as *prefixes*.
|
|
95
94
|
"""
|
|
96
|
-
return " ".join(['xmlns
|
|
95
|
+
return " ".join([f'xmlns:{pfx}="{nsmap[pfx]}"' for pfx in prefixes])
|
|
97
96
|
|
|
98
97
|
|
|
99
98
|
def nspfxmap(*nspfxs):
|
|
@@ -102,7 +101,7 @@ def nspfxmap(*nspfxs):
|
|
|
102
101
|
*nspfxs*. Any number of namespace prefixes can be supplied, e.g.
|
|
103
102
|
namespaces('a', 'r', 'p').
|
|
104
103
|
"""
|
|
105
|
-
return
|
|
104
|
+
return {pfx: nsmap[pfx] for pfx in nspfxs}
|
|
106
105
|
|
|
107
106
|
|
|
108
107
|
def qn(tag):
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Custom element classes for shape-related elements like ``<w:inline>``
|
|
3
3
|
"""
|
|
4
|
+
|
|
4
5
|
from docx.oxml import parse_xml
|
|
5
6
|
from docx.oxml.ns import nsdecls
|
|
6
7
|
from docx.oxml.xmlchemy import BaseOxmlElement, OneAndOnlyOne
|
|
@@ -31,6 +32,7 @@ class CT_Blip(BaseOxmlElement):
|
|
|
31
32
|
|
|
32
33
|
embed = OptionalAttribute("r:embed", ST_RelationshipId)
|
|
33
34
|
link = OptionalAttribute("r:link", ST_RelationshipId)
|
|
35
|
+
extLst = ZeroOrOne("a:extLst")
|
|
34
36
|
|
|
35
37
|
|
|
36
38
|
class CT_BlipFillProperties(BaseOxmlElement):
|
|
@@ -108,7 +110,7 @@ class CT_Inline(BaseOxmlElement):
|
|
|
108
110
|
" <a:graphic>\n"
|
|
109
111
|
' <a:graphicData uri="URI not set"/>\n'
|
|
110
112
|
" </a:graphic>\n"
|
|
111
|
-
"</wp:inline>" % nsdecls("wp", "a", "pic", "r")
|
|
113
|
+
"</wp:inline>" % nsdecls("wp", "a", "pic", "r", "asvg")
|
|
112
114
|
)
|
|
113
115
|
|
|
114
116
|
|
|
@@ -145,14 +147,48 @@ class CT_Picture(BaseOxmlElement):
|
|
|
145
147
|
contents required to define a viable picture element, based on the
|
|
146
148
|
values passed as parameters.
|
|
147
149
|
"""
|
|
148
|
-
|
|
150
|
+
if filename.endswith(".svg"):
|
|
151
|
+
pic = parse_xml(cls._pic_xml_svg())
|
|
152
|
+
pic.blipFill.blip.extLst.ext.svgBlip.embed = rId
|
|
153
|
+
else:
|
|
154
|
+
pic = parse_xml(cls._pic_xml())
|
|
155
|
+
pic.blipFill.blip.embed = rId
|
|
149
156
|
pic.nvPicPr.cNvPr.id = pic_id
|
|
150
157
|
pic.nvPicPr.cNvPr.name = filename
|
|
151
|
-
pic.blipFill.blip.embed = rId
|
|
152
158
|
pic.spPr.cx = cx
|
|
153
159
|
pic.spPr.cy = cy
|
|
154
160
|
return pic
|
|
155
161
|
|
|
162
|
+
@classmethod
|
|
163
|
+
def _pic_xml_svg(cls):
|
|
164
|
+
return (
|
|
165
|
+
"<pic:pic %s>\n"
|
|
166
|
+
" <pic:nvPicPr>\n"
|
|
167
|
+
' <pic:cNvPr id="666" name="unnamed"/>\n'
|
|
168
|
+
" <pic:cNvPicPr/>\n"
|
|
169
|
+
" </pic:nvPicPr>\n"
|
|
170
|
+
" <pic:blipFill>\n"
|
|
171
|
+
" <a:blip>\n"
|
|
172
|
+
" <a:extLst>\n"
|
|
173
|
+
' <a:ext uri="{96DAC541-7B7A-43D3-8B79-37D633B846F1}">\n'
|
|
174
|
+
" <asvg:svgBlip/>\n"
|
|
175
|
+
" </a:ext>\n"
|
|
176
|
+
" </a:extLst>\n"
|
|
177
|
+
" </a:blip>\n"
|
|
178
|
+
" <a:stretch>\n"
|
|
179
|
+
" <a:fillRect/>\n"
|
|
180
|
+
" </a:stretch>\n"
|
|
181
|
+
" </pic:blipFill>\n"
|
|
182
|
+
" <pic:spPr>\n"
|
|
183
|
+
" <a:xfrm>\n"
|
|
184
|
+
' <a:off x="0" y="0"/>\n'
|
|
185
|
+
' <a:ext cx="914400" cy="914400"/>\n'
|
|
186
|
+
" </a:xfrm>\n"
|
|
187
|
+
' <a:prstGeom prst="rect"/>\n'
|
|
188
|
+
" </pic:spPr>\n"
|
|
189
|
+
"</pic:pic>" % nsdecls("pic", "a", "r", "asvg")
|
|
190
|
+
)
|
|
191
|
+
|
|
156
192
|
@classmethod
|
|
157
193
|
def _pic_xml(cls):
|
|
158
194
|
return (
|
|
@@ -174,7 +210,7 @@ class CT_Picture(BaseOxmlElement):
|
|
|
174
210
|
" </a:xfrm>\n"
|
|
175
211
|
' <a:prstGeom prst="rect"/>\n'
|
|
176
212
|
" </pic:spPr>\n"
|
|
177
|
-
"</pic:pic>" % nsdecls("pic", "a", "r")
|
|
213
|
+
"</pic:pic>" % nsdecls("pic", "a", "r", "asvg")
|
|
178
214
|
)
|
|
179
215
|
|
|
180
216
|
|
|
@@ -204,6 +240,7 @@ class CT_PositiveSize2D(BaseOxmlElement):
|
|
|
204
240
|
|
|
205
241
|
cx = RequiredAttribute("cx", ST_PositiveCoordinate)
|
|
206
242
|
cy = RequiredAttribute("cy", ST_PositiveCoordinate)
|
|
243
|
+
svgBlip = ZeroOrOne("asvg:svgBlip")
|
|
207
244
|
|
|
208
245
|
|
|
209
246
|
class CT_PresetGeometry2D(BaseOxmlElement):
|
|
@@ -260,9 +297,7 @@ class CT_ShapeProperties(BaseOxmlElement):
|
|
|
260
297
|
Shape height as an instance of Emu, or None if not present.
|
|
261
298
|
"""
|
|
262
299
|
xfrm = self.xfrm
|
|
263
|
-
if xfrm is None
|
|
264
|
-
return None
|
|
265
|
-
return xfrm.cy
|
|
300
|
+
return None if xfrm is None else xfrm.cy
|
|
266
301
|
|
|
267
302
|
@cy.setter
|
|
268
303
|
def cy(self, value):
|
|
@@ -284,13 +319,12 @@ class CT_Transform2D(BaseOxmlElement):
|
|
|
284
319
|
|
|
285
320
|
off = ZeroOrOne("a:off", successors=("a:ext",))
|
|
286
321
|
ext = ZeroOrOne("a:ext", successors=())
|
|
322
|
+
embed = OptionalAttribute("r:embed", ST_RelationshipId)
|
|
287
323
|
|
|
288
324
|
@property
|
|
289
325
|
def cx(self):
|
|
290
326
|
ext = self.ext
|
|
291
|
-
if ext is None
|
|
292
|
-
return None
|
|
293
|
-
return ext.cx
|
|
327
|
+
return None if ext is None else ext.cx
|
|
294
328
|
|
|
295
329
|
@cx.setter
|
|
296
330
|
def cx(self, value):
|
|
@@ -300,9 +334,7 @@ class CT_Transform2D(BaseOxmlElement):
|
|
|
300
334
|
@property
|
|
301
335
|
def cy(self):
|
|
302
336
|
ext = self.ext
|
|
303
|
-
if ext is None
|
|
304
|
-
return None
|
|
305
|
-
return ext.cy
|
|
337
|
+
return None if ext is None else ext.cy
|
|
306
338
|
|
|
307
339
|
@cy.setter
|
|
308
340
|
def cy(self, value):
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: python-docx-oss
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.9
|
|
4
4
|
Summary: CRUD Microsoft Word .docx files.
|
|
5
5
|
Home-page: https://github.com/lsaint/python-docx-oss
|
|
6
6
|
Author: Ethan St. Lee
|
|
@@ -75,10 +75,15 @@ This project is based on the original work by [Steve Canny](https://github.com/s
|
|
|
75
75
|
|
|
76
76
|
## Release History
|
|
77
77
|
|
|
78
|
+
**0.0.9 (2024-11-26)**
|
|
79
|
+
|
|
80
|
+
- svg file support in add_picture. #27
|
|
81
|
+
- update docs.
|
|
82
|
+
|
|
78
83
|
**0.0.8 (2024-11-22)**
|
|
79
84
|
|
|
80
|
-
- EastAsia font support fixes #25
|
|
81
|
-
- Update README.md #26
|
|
85
|
+
- EastAsia font support fixes. #25
|
|
86
|
+
- Update README.md. #26
|
|
82
87
|
|
|
83
88
|
**0.0.7 (2022-10-29)**
|
|
84
89
|
|
|
@@ -124,6 +124,7 @@ docx/image/helpers.py
|
|
|
124
124
|
docx/image/image.py
|
|
125
125
|
docx/image/jpeg.py
|
|
126
126
|
docx/image/png.py
|
|
127
|
+
docx/image/svg.py
|
|
127
128
|
docx/image/tiff.py
|
|
128
129
|
docx/opc/__init__.py
|
|
129
130
|
docx/opc/compat.py
|
|
@@ -365,6 +366,7 @@ tests/image/test_helpers.py
|
|
|
365
366
|
tests/image/test_image.py
|
|
366
367
|
tests/image/test_jpeg.py
|
|
367
368
|
tests/image/test_png.py
|
|
369
|
+
tests/image/test_svg.py
|
|
368
370
|
tests/image/test_tiff.py
|
|
369
371
|
tests/opc/__init__.py
|
|
370
372
|
tests/opc/test_coreprops.py
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import io
|
|
2
|
+
from xml.etree.ElementTree import Element, tostring
|
|
3
|
+
|
|
4
|
+
import pytest
|
|
5
|
+
|
|
6
|
+
from docx.image.svg import BASE_PX, Svg
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@pytest.fixture
|
|
10
|
+
def svg_with_dimensions():
|
|
11
|
+
"""Fixture for SVG stream with width and height."""
|
|
12
|
+
root = Element("svg", width="200", height="100")
|
|
13
|
+
return io.BytesIO(tostring(root))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@pytest.fixture
|
|
17
|
+
def svg_with_viewbox():
|
|
18
|
+
"""Fixture for SVG stream with viewBox but no width and height."""
|
|
19
|
+
root = Element("svg", viewBox="0 0 400 200")
|
|
20
|
+
return io.BytesIO(tostring(root))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@pytest.fixture(
|
|
24
|
+
params=[
|
|
25
|
+
("0 0 400 200", 72, 36, 72), # Landscape
|
|
26
|
+
("0 0 200 400", 100, 200, 200), # Portrait
|
|
27
|
+
("0 0 100 100", 50, 50, 50), # Square
|
|
28
|
+
]
|
|
29
|
+
)
|
|
30
|
+
def viewbox_data(request):
|
|
31
|
+
"""Fixture for different viewBox test cases as tuples."""
|
|
32
|
+
return request.param
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@pytest.fixture(
|
|
36
|
+
params=[
|
|
37
|
+
(b'<svg width="200" height="100"/>', 200, 100),
|
|
38
|
+
(b'<svg viewBox="0 0 400 200"/>', BASE_PX, BASE_PX // 2),
|
|
39
|
+
]
|
|
40
|
+
)
|
|
41
|
+
def svg_stream_data(request):
|
|
42
|
+
return request.param
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def test_dimensions_from_stream(svg_stream_data):
|
|
46
|
+
stream_data, expected_width, expected_height = svg_stream_data
|
|
47
|
+
stream = io.BytesIO(stream_data)
|
|
48
|
+
width, height = Svg._dimensions_from_stream(stream)
|
|
49
|
+
assert width == expected_width
|
|
50
|
+
assert height == expected_height
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def test_calculate_scaled_dimensions(viewbox_data):
|
|
54
|
+
viewbox, expected_width, expected_height, base_px = viewbox_data
|
|
55
|
+
width, height = Svg._calculate_scaled_dimensions(viewbox, base_px)
|
|
56
|
+
assert width == expected_width
|
|
57
|
+
assert height == expected_height
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<wp:inline xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
|
|
1
|
+
<wp:inline xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:asvg="http://schemas.microsoft.com/office/drawing/2016/SVG/main">
|
|
2
2
|
<wp:extent cx="444" cy="888"/>
|
|
3
3
|
<wp:docPr id="24" name="Picture 24"/>
|
|
4
4
|
<wp:cNvGraphicFramePr>
|
|
Binary file
|