python-docx-oss 0.3.0__tar.gz → 0.3.2__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.3.0 → python_docx_oss-0.3.2}/HISTORY.md +13 -0
- {python_docx_oss-0.3.0/src/python_docx_oss.egg-info → python_docx_oss-0.3.2}/PKG-INFO +6 -1
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/README.md +5 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/conf.py +1 -1
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/user/compatibility.rst +8 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/__init__.py +1 -1
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/text/hyperlink.py +2 -2
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/text/paragraph.py +2 -2
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/text/run.py +8 -12
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/table.py +1 -1
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/text/hyperlink.py +1 -1
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/text/paragraph.py +1 -1
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/text/run.py +2 -2
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2/src/python_docx_oss.egg-info}/PKG-INFO +6 -1
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/integration/customxml/test_custom_xml_roundtrip.py +23 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/integration/test_word_roundtrip.py +58 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/test_xmlchemy.py +29 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/text/test_hyperlink.py +3 -2
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/text/test_run.py +12 -3
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_sanitize.py +51 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/LICENSE +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/MANIFEST.in +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/Makefile +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/_static/.gitignore +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/_static/img/comment-parts.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/_static/img/example-docx-01.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/_static/img/hdrftr-01.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/_static/img/hdrftr-02.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/_static/img/oss.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/_templates/layout.html +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/_templates/sidebarlinks.html +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/_themes/armstrong/LICENSE +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/_themes/armstrong/layout.html +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/_themes/armstrong/rtd-themes.conf +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/_themes/armstrong/static/rtd.css_t +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/_themes/armstrong/theme.conf +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/_themes/armstrong/theme.conf.orig +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/comments.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/dml.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/document.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/enum/MsoColorType.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/enum/MsoThemeColorIndex.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/enum/WdAlignParagraph.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/enum/WdBuiltinStyle.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/enum/WdCellVerticalAlignment.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/enum/WdColorIndex.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/enum/WdLineSpacing.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/enum/WdOrientation.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/enum/WdRowAlignment.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/enum/WdRowHeightRule.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/enum/WdSectionStart.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/enum/WdStyleType.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/enum/WdTabAlignment.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/enum/WdTabLeader.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/enum/WdTableDirection.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/enum/WdUnderline.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/enum/index.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/sanitize.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/section.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/settings.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/shape.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/shared.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/style.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/table.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/api/text.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/comments.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/coreprops.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/header.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/numbering.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/sections.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/settings.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/shapes/index.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/shapes/picture.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/shapes/shapes-inline-size.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/shapes/shapes-inline.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/styles/character-style.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/styles/index.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/styles/latent-styles.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/styles/paragraph-style.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/styles/style.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/styles/styles.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/table/cell-merge.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/table/index.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/table/table-cell.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/table/table-props.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/table/table-row.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/breaks.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/font-color.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/font-highlight-color.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/font.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/hyperlink.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/index.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/paragraph-format.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/run-content.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/tab-stops.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/underline.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/index.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/schema/ct_body.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/schema/ct_document.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/schema/ct_p.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/upstream-maintenance.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/index.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/requirements.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/user/api-concepts.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/user/comments.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/user/custom-properties.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/user/custom-xml.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/user/documents.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/user/hdrftr.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/user/install.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/user/quickstart.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/user/sanitization.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/user/sections.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/user/shapes.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/user/styles-understanding.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/user/styles-using.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/user/tables.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/user/text.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/api-open-document.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/blk-add-paragraph.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/blk-add-table.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/blk-iter-inner-content.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/cmt-mutations.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/cmt-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/doc-access-collections.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/doc-access-sections.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/doc-add-comment.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/doc-add-heading.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/doc-add-page-break.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/doc-add-paragraph.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/doc-add-picture.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/doc-add-section.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/doc-add-table.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/doc-comments.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/doc-coreprops.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/doc-customprops.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/doc-settings.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/doc-styles.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/environment.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/hdr-header-footer.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/hlk-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/img-characterize-image.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/num-access-numbering-part.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/par-access-inner-content.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/par-access-parfmt.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/par-add-run.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/par-alignment-prop.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/par-clear-paragraph.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/par-insert-paragraph.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/par-set-text.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/par-style-prop.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/pbk-split-para.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/run-access-font.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/run-access-inner-content.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/run-add-content.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/run-add-picture.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/run-char-style.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/run-clear-run.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/run-enum-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/sct-section.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/shp-inline-shape-access.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/shp-inline-shape-size.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/api.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/block.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/comments.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/coreprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/customprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/document.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/font.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/hdrftr.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/helpers.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/hyperlink.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/image.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/numbering.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/pagebreak.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/paragraph.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/parfmt.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/section.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/settings.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/shape.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/shared.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/styles.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/table.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/tabstops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/blk-containing-table.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/blk-paras-and-tables.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/comments-rich-para.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/court-exif.jpg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/doc-access-sections.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/doc-add-section.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/doc-coreprops.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/doc-customprops-legacy.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/doc-customprops.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/doc-default.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/doc-no-coreprops.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/doc-no-customprops.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/doc-odd-even-hdrs.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/doc-word-default-blank.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/fnt-color.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/hdr-header-footer.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/jfif-300-dpi.jpg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/jpeg420exif.jpg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/lena.bmp +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/lena.gif +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/lena.tif +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/lena_std.jpg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/monty-truth.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/mountain.bmp +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/num-having-numbering-part.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/par-alignment.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/par-hlink-frags.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/par-hyperlinks.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/par-known-paragraphs.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/par-known-styles.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/par-rendered-page-breaks.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/python-icon.jpeg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/run-char-style.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/run-enumerated-props.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/sample.tif +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/sct-first-page-hdrftr.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/sct-inner-content.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/sct-section-props.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/set-no-settings-part.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/shp-inline-shape-access.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/sty-behav-props.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/sty-having-no-styles-part.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/sty-having-styles-part.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/sty-known-styles.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/tab-stops.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/tbl-2x2-table.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/tbl-cell-access.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/tbl-cell-props.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/tbl-col-props.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/tbl-having-applied-style.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/tbl-having-tables.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/tbl-on-off-props.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/tbl-props.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/test.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/txt-font-highlight-color.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/test_files/txt-font-props.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/steps/text.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/sty-access-font.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/sty-access-latent-styles.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/sty-access-parfmt.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/sty-add-style.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/sty-delete-style.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/sty-latent-add-del.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/sty-latent-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/sty-style-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/tab-access-tabs.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/tab-tabstop-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/tbl-add-row-or-col.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/tbl-cell-access.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/tbl-cell-add-table.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/tbl-cell-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/tbl-cell-text.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/tbl-col-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/tbl-item-access.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/tbl-merge-cells.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/tbl-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/tbl-row-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/tbl-style.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/txt-add-break.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/txt-font-color.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/txt-font-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/features/txt-parfmt-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/pyproject.toml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/requirements-dev.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/requirements-docs.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/requirements-test.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/requirements.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/setup.cfg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/api.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/blkcntnr.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/comments.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/dml/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/dml/color.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/document.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/drawing/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/enum/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/enum/base.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/enum/dml.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/enum/section.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/enum/shape.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/enum/style.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/enum/table.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/enum/text.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/exceptions.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/image/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/image/bmp.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/image/constants.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/image/emf.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/image/exceptions.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/image/gif.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/image/helpers.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/image/image.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/image/jpeg.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/image/png.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/image/svg.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/image/tiff.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/opc/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/opc/constants.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/opc/coreprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/opc/customprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/opc/exceptions.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/opc/oxml.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/opc/package.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/opc/packuri.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/opc/part.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/opc/parts/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/opc/parts/coreprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/opc/parts/customprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/opc/phys_pkg.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/opc/pkgreader.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/opc/pkgwriter.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/opc/rel.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/opc/shared.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/opc/spec.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/comments.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/coreprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/customprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/dml/CT_ExtensionList.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/document.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/drawing.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/exceptions.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/ns.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/numbering.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/parser.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/section.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/settings.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/shape.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/shared.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/simpletypes.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/styles.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/table.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/text/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/text/font.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/text/pagebreak.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/text/parfmt.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/oxml/xmlchemy.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/package.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/parts/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/parts/comments.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/parts/customxml.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/parts/document.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/parts/hdrftr.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/parts/image.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/parts/numbering.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/parts/settings.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/parts/story.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/parts/styles.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/py.typed +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/sanitize/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/sanitize/cleaner.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/sanitize/result.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/section.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/settings.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/shape.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/shared.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/styles/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/styles/latent.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/styles/style.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/styles/styles.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-comments.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/[Content_Types].xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/_rels/.rels +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/customXml/_rels/item1.xml.rels +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/customXml/item1.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/customXml/itemProps1.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/docProps/app.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/docProps/core.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/docProps/thumbnail.jpeg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/word/_rels/document.xml.rels +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/word/document.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/word/fontTable.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/word/numbering.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/word/settings.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/word/styles.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/word/stylesWithEffects.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/word/theme/theme1.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/word/webSettings.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-footer.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-header.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-numbering.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-settings.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default-styles.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/templates/default.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/text/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/text/font.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/text/pagebreak.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/text/parfmt.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/text/tabstops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/docx/types.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/python_docx_oss.egg-info/SOURCES.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/python_docx_oss.egg-info/dependency_links.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/python_docx_oss.egg-info/requires.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/src/python_docx_oss.egg-info/top_level.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/conftest.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/dml/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/dml/test_color.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/fixtures/README.md +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/fixtures/comments/word-comments-rich.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/fixtures/customxml/generate_fixture.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/fixtures/customxml/multiple-custom-xml-parts.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/fixtures/documents/word-blank.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/fixtures/drawing/word-floating-picture.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/fixtures/fonts/word-east-asian-fonts.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/fixtures/images/word-svg-image.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/image/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/image/test_bmp.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/image/test_emf.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/image/test_gif.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/image/test_helpers.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/image/test_image.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/image/test_jpeg.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/image/test_png.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/image/test_svg.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/image/test_tiff.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/integration/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/integration/customxml/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/opc/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/opc/parts/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/opc/parts/test_coreprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/opc/parts/test_customprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/opc/test_coreprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/opc/test_customprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/opc/test_oxml.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/opc/test_package.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/opc/test_packuri.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/opc/test_part.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/opc/test_phys_pkg.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/opc/test_pkgreader.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/opc/test_pkgwriter.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/opc/test_rel.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/opc/unitdata/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/opc/unitdata/rels.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/opc/unitdata/types.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/parts/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/parts/test_document.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/parts/unitdata/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/parts/unitdata/document.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/test__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/test_comments.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/test_document.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/test_ns.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/test_section.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/test_styles.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/test_table.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/text/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/unitdata/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/unitdata/dml.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/unitdata/numbering.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/unitdata/section.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/unitdata/shared.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/unitdata/styles.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/unitdata/table.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/oxml/unitdata/text.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/parts/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/parts/test_comments.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/parts/test_customxml.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/parts/test_document.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/parts/test_hdrftr.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/parts/test_image.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/parts/test_numbering.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/parts/test_settings.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/parts/test_story.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/parts/test_styles.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/styles/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/styles/test_latent.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/styles/test_style.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/styles/test_styles.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_api.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_blkcntnr.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_comments.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_document.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_drawing.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_enum.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/150-dpi.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/300-dpi.TIF +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/300-dpi.jpg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/300-dpi.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/72-dpi.tiff +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/CVS_LOGO.WMF +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/blk-inner-content.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/exif-420-dpi.jpg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/[Content_Types].xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/_rels/.rels +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/customXml/_rels/item1.xml.rels +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/customXml/item1.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/customXml/itemProps1.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/docProps/app.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/docProps/core.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/docProps/thumbnail.jpeg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/word/_rels/document.xml.rels +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/word/document.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/word/fontTable.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/word/numbering.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/word/settings.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/word/styles.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/word/stylesWithEffects.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/word/theme/theme1.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/word/webSettings.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/having-images.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/jfif-iguana.jpg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/jpeg_without_app0_and_app1.jpg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/little-endian.tif +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/monty-truth.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/python-icon.jpeg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/python-icon.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/python-powered.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/python.bmp +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/sct-inner-content.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/snippets/add-row-col.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/snippets/inline.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/snippets/new-tbl.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/snippets/tbl-cells.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/sonic.emf +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/sonic.gif +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_files/test.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_package.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_section.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_settings.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_shape.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_shared.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/test_table.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/text/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/text/test_font.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/text/test_hyperlink.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/text/test_pagebreak.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/text/test_paragraph.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/text/test_parfmt.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/text/test_run.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/text/test_tabstops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/unitdata.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/unitutil/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/unitutil/cxml.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/unitutil/file.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tests/unitutil/mock.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/tox.ini +0 -0
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
**Unreleased**
|
|
4
4
|
|
|
5
|
+
**0.3.2 (2026-09-08)**
|
|
6
|
+
|
|
7
|
+
- Restored the 0.0.12 architecture where OXML elements (`CT_R`, `CT_P`, `CT_Hyperlink`)
|
|
8
|
+
do not override lxml's Cython `_Element.text` descriptor, resolving text duplication
|
|
9
|
+
when calling `itertext()` on bare `lxml.etree._Element` parent nodes (such as revision
|
|
10
|
+
tags `w:ins`, `w:del`, and container tags like `w:txbxContent`).
|
|
11
|
+
- Standardized OXML rich-text extraction and assignment on `.texts`, while maintaining full
|
|
12
|
+
compatibility for public proxy APIs (`Paragraph.text`, `Run.text`, `Hyperlink.text`, `_Cell.text`).
|
|
13
|
+
- Documented the intentional upstream difference in the compatibility guide.
|
|
14
|
+
|
|
15
|
+
- Fixed an issue where calling `itertext()` on oxml elements produced duplicated
|
|
16
|
+
text due to overridden `.text` properties.
|
|
17
|
+
|
|
5
18
|
**0.3.0 (2026-08-29)**
|
|
6
19
|
|
|
7
20
|
- Added opt-in package-level document sanitization for personal metadata,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-docx-oss
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.2
|
|
4
4
|
Summary: Create, read, and update Microsoft Word .docx files.
|
|
5
5
|
Author: Ethan St Lee
|
|
6
6
|
License-Expression: MIT
|
|
@@ -155,6 +155,11 @@ available through `Document.add_float_picture()` and `Run.add_float_picture()`.
|
|
|
155
155
|
|
|
156
156
|
- The project maintains broad compatibility with the public `python-docx` API while
|
|
157
157
|
following its own versioning and product roadmap.
|
|
158
|
+
- Clean lxml integration: Low-level OXML elements avoid shadowing lxml's Cython
|
|
159
|
+
`_Element.text` descriptor (using `.texts` internally). This guarantees that standard
|
|
160
|
+
`element.itertext()` on parent elements and untyped revision nodes (`w:ins`, `w:del`,
|
|
161
|
+
`w:txbxContent`) never duplicates text, while high-level proxy APIs (`paragraph.text`,
|
|
162
|
+
`run.text`) remain fully compatible with `python-docx`.
|
|
158
163
|
- Compatibility does not extend to every private or internal `python-docx` API. Test
|
|
159
164
|
those integrations before migrating production systems.
|
|
160
165
|
- The SDK focuses exclusively on DOCX. It is not a general XLSX/PPTX Office suite.
|
|
@@ -126,6 +126,11 @@ available through `Document.add_float_picture()` and `Run.add_float_picture()`.
|
|
|
126
126
|
|
|
127
127
|
- The project maintains broad compatibility with the public `python-docx` API while
|
|
128
128
|
following its own versioning and product roadmap.
|
|
129
|
+
- Clean lxml integration: Low-level OXML elements avoid shadowing lxml's Cython
|
|
130
|
+
`_Element.text` descriptor (using `.texts` internally). This guarantees that standard
|
|
131
|
+
`element.itertext()` on parent elements and untyped revision nodes (`w:ins`, `w:del`,
|
|
132
|
+
`w:txbxContent`) never duplicates text, while high-level proxy APIs (`paragraph.text`,
|
|
133
|
+
`run.text`) remain fully compatible with `python-docx`.
|
|
129
134
|
- Compatibility does not extend to every private or internal `python-docx` API. Test
|
|
130
135
|
those integrations before migrating production systems.
|
|
131
136
|
- The SDK focuses exclusively on DOCX. It is not a general XLSX/PPTX Office suite.
|
|
@@ -13,7 +13,7 @@ import sys
|
|
|
13
13
|
# add these directories to sys.path here. If the directory is relative to the
|
|
14
14
|
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
|
15
15
|
#
|
|
16
|
-
sys.path.insert(0, os.path.abspath("
|
|
16
|
+
sys.path.insert(0, os.path.abspath("../src"))
|
|
17
17
|
|
|
18
18
|
from docx import __version__ # noqa
|
|
19
19
|
|
|
@@ -43,6 +43,14 @@ public inherited API or its observable behavior. Each record must identify:
|
|
|
43
43
|
* the ``python-docx-oss`` behavior and rationale; and
|
|
44
44
|
* any migration action required by callers.
|
|
45
45
|
|
|
46
|
+
Preservation of lxml ``_Element.text`` and ``itertext()`` semantics
|
|
47
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
48
|
+
|
|
49
|
+
* **Affected API**: Low-level OXML element classes (``CT_P``, ``CT_R``, ``CT_Hyperlink`` in ``docx.oxml``) and observable ``element.itertext()`` / ``element.text`` behavior on XML elements.
|
|
50
|
+
* **Upstream baseline (v1.2.0)**: Upstream defined ``@property def text`` on ``CT_P``, ``CT_R``, and ``CT_Hyperlink`` to return concatenated run/paragraph text. Overriding the Cython descriptor ``_Element.text`` on ``ElementBase`` subclasses causes standard ``lxml`` C-level tree iteration (``itertext()``) to invoke the Python property. As a consequence, calling ``itertext()`` on parent elements or on bare ``lxml.etree._Element`` nodes (such as revision tags ``w:ins``, ``w:del``, or container tags like ``w:txbxContent``) visits both the container node and child ``<w:t>`` nodes, causing text to be duplicated (e.g., ``"Beta"`` becomes ``"BetaBeta"``).
|
|
51
|
+
* **python-docx-oss behavior and rationale**: ``python-docx-oss`` intentionally does not override the ``.text`` property on any ``BaseOxmlElement`` subclass. Rich-text extraction and assignment at the OXML element level is named ``.texts`` (e.g., ``_r.texts``, ``_p.texts``, ``_hyperlink.texts``). Public proxy classes (|Paragraph|, |Run|, |Hyperlink|, and |_Cell|) continue to expose their standard ``.text`` property, delegating internally to ``.texts``. This design preserves standard ``lxml`` descriptor semantics, ensuring that ``itertext()`` produces clean, single-occurrence text across all XML elements.
|
|
52
|
+
* **Migration action**: Callers using public proxy objects (such as ``paragraph.text`` or ``run.text``) require no changes. Callers interacting directly with low-level OXML element instances (e.g., ``run._r``) should use ``.texts`` instead of ``.text`` for rich-text assembly, or standard ``lxml`` methods like ``element.itertext()``.
|
|
53
|
+
|
|
46
54
|
Additive APIs and capabilities do not require individual divergence records;
|
|
47
55
|
they belong in the API documentation and Capability Matrix. Upstream baseline
|
|
48
56
|
changes follow the :doc:`../dev/upstream-maintenance` policy.
|
|
@@ -37,9 +37,9 @@ class CT_Hyperlink(BaseOxmlElement):
|
|
|
37
37
|
return self.xpath("./w:r/w:lastRenderedPageBreak")
|
|
38
38
|
|
|
39
39
|
@property
|
|
40
|
-
def
|
|
40
|
+
def texts(self) -> str:
|
|
41
41
|
"""The textual content of this hyperlink.
|
|
42
42
|
|
|
43
43
|
`CT_Hyperlink` stores the hyperlink-text as one or more `w:r` children.
|
|
44
44
|
"""
|
|
45
|
-
return "".join(r.
|
|
45
|
+
return "".join(r.texts for r in self.xpath("w:r"))
|
|
@@ -93,13 +93,13 @@ class CT_P(BaseOxmlElement):
|
|
|
93
93
|
pPr.style = style
|
|
94
94
|
|
|
95
95
|
@property
|
|
96
|
-
def
|
|
96
|
+
def texts(self) -> str:
|
|
97
97
|
"""The textual content of this paragraph.
|
|
98
98
|
|
|
99
99
|
Inner-content child elements like `w:r` and `w:hyperlink` are translated to
|
|
100
100
|
their text equivalent.
|
|
101
101
|
"""
|
|
102
|
-
return "".join(e.
|
|
102
|
+
return "".join(e.texts for e in self.xpath("w:r | w:hyperlink"))
|
|
103
103
|
|
|
104
104
|
def _insert_pPr(self, pPr: CT_PPr) -> CT_PPr:
|
|
105
105
|
self.insert(0, pPr)
|
|
@@ -127,29 +127,25 @@ class CT_R(BaseOxmlElement):
|
|
|
127
127
|
rPr.style = style
|
|
128
128
|
|
|
129
129
|
@property
|
|
130
|
-
def
|
|
130
|
+
def texts(self) -> str:
|
|
131
131
|
"""The textual content of this run.
|
|
132
132
|
|
|
133
133
|
Inner-content child elements like `w:tab` are translated to their text
|
|
134
134
|
equivalent.
|
|
135
|
+
|
|
136
|
+
Note: We intentionally do NOT define `@property def text` on CT_R or any
|
|
137
|
+
other oxml element, because doing so overrides lxml's Cython descriptor
|
|
138
|
+
`_Element.text`, which corrupts lxml `itertext()` on parent elements (such
|
|
139
|
+
as bare `_Element` revision tags `w:ins`, `w:del`, etc.).
|
|
135
140
|
"""
|
|
136
141
|
return "".join(
|
|
137
142
|
str(e) for e in self.xpath("w:br | w:cr | w:noBreakHyphen | w:ptab | w:t | w:tab")
|
|
138
143
|
)
|
|
139
144
|
|
|
140
|
-
@text.setter
|
|
141
|
-
def text(self, text: str): # pyright: ignore[reportIncompatibleMethodOverride]
|
|
142
|
-
self.clear_content()
|
|
143
|
-
_RunContentAppender.append_to_run_from_text(self, text)
|
|
144
|
-
|
|
145
|
-
@property
|
|
146
|
-
def texts(self) -> str:
|
|
147
|
-
"""Alias for `text` property for compatibility with python-docx-oss."""
|
|
148
|
-
return self.text
|
|
149
|
-
|
|
150
145
|
@texts.setter
|
|
151
146
|
def texts(self, text: str):
|
|
152
|
-
self.
|
|
147
|
+
self.clear_content()
|
|
148
|
+
_RunContentAppender.append_to_run_from_text(self, text)
|
|
153
149
|
|
|
154
150
|
def _insert_rPr(self, rPr: CT_RPr) -> CT_RPr:
|
|
155
151
|
self.insert(0, rPr)
|
|
@@ -98,7 +98,7 @@ class Hyperlink(Parented):
|
|
|
98
98
|
respectively. Note that rendered page-breaks can occur within a hyperlink but
|
|
99
99
|
they are not reflected in this text.
|
|
100
100
|
"""
|
|
101
|
-
return self._hyperlink.
|
|
101
|
+
return self._hyperlink.texts
|
|
102
102
|
|
|
103
103
|
@property
|
|
104
104
|
def url(self) -> str:
|
|
@@ -160,7 +160,7 @@ class Paragraph(StoryChild):
|
|
|
160
160
|
character is mapped to a line break. Paragraph-level formatting, such as style,
|
|
161
161
|
is preserved. All run-level formatting, such as bold or italic, is removed.
|
|
162
162
|
"""
|
|
163
|
-
return self._p.
|
|
163
|
+
return self._p.texts
|
|
164
164
|
|
|
165
165
|
@text.setter
|
|
166
166
|
def text(self, text: str | None):
|
|
@@ -233,11 +233,11 @@ class Run(StoryChild):
|
|
|
233
233
|
`<w:cr/>` element. Any existing run content is replaced. Run formatting is
|
|
234
234
|
preserved.
|
|
235
235
|
"""
|
|
236
|
-
return self._r.
|
|
236
|
+
return self._r.texts
|
|
237
237
|
|
|
238
238
|
@text.setter
|
|
239
239
|
def text(self, text: str):
|
|
240
|
-
self._r.
|
|
240
|
+
self._r.texts = text
|
|
241
241
|
|
|
242
242
|
@property
|
|
243
243
|
def underline(self) -> bool | WD_UNDERLINE | None:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-docx-oss
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.2
|
|
4
4
|
Summary: Create, read, and update Microsoft Word .docx files.
|
|
5
5
|
Author: Ethan St Lee
|
|
6
6
|
License-Expression: MIT
|
|
@@ -155,6 +155,11 @@ available through `Document.add_float_picture()` and `Run.add_float_picture()`.
|
|
|
155
155
|
|
|
156
156
|
- The project maintains broad compatibility with the public `python-docx` API while
|
|
157
157
|
following its own versioning and product roadmap.
|
|
158
|
+
- Clean lxml integration: Low-level OXML elements avoid shadowing lxml's Cython
|
|
159
|
+
`_Element.text` descriptor (using `.texts` internally). This guarantees that standard
|
|
160
|
+
`element.itertext()` on parent elements and untyped revision nodes (`w:ins`, `w:del`,
|
|
161
|
+
`w:txbxContent`) never duplicates text, while high-level proxy APIs (`paragraph.text`,
|
|
162
|
+
`run.text`) remain fully compatible with `python-docx`.
|
|
158
163
|
- Compatibility does not extend to every private or internal `python-docx` API. Test
|
|
159
164
|
those integrations before migrating production systems.
|
|
160
165
|
- The SDK focuses exclusively on DOCX. It is not a general XLSX/PPTX Office suite.
|
|
@@ -11,6 +11,7 @@ import pytest
|
|
|
11
11
|
|
|
12
12
|
from docx import Document
|
|
13
13
|
from docx.document import Document as DocumentType
|
|
14
|
+
from docx.oxml.parser import parse_xml
|
|
14
15
|
from docx.parts.customxml import CustomXmlPart
|
|
15
16
|
|
|
16
17
|
FIXTURE = (
|
|
@@ -83,6 +84,28 @@ class DescribeMultipleCustomXmlParts:
|
|
|
83
84
|
assert "customXml/_rels/item1.xml.rels" in names
|
|
84
85
|
assert "customXml/_rels/item3.xml.rels" in names
|
|
85
86
|
|
|
87
|
+
def it_round_trips_replacing_a_custom_xml_part_element(self):
|
|
88
|
+
document = Document(io.BytesIO(FIXTURE.read_bytes()))
|
|
89
|
+
customers = _parts_by_name(document)["/customXml/item1.xml"]
|
|
90
|
+
wrapper = parse_xml('<wrapper xmlns="urn:python-docx-oss:wrapper" version="1"/>')
|
|
91
|
+
wrapper.append(customers.element)
|
|
92
|
+
customers.element = wrapper
|
|
93
|
+
|
|
94
|
+
output = io.BytesIO()
|
|
95
|
+
document.save(output)
|
|
96
|
+
reopened = Document(io.BytesIO(output.getvalue()))
|
|
97
|
+
replaced = _parts_by_name(reopened)["/customXml/item1.xml"]
|
|
98
|
+
|
|
99
|
+
assert replaced.tag == "{urn:python-docx-oss:wrapper}wrapper"
|
|
100
|
+
assert replaced.attrib["version"] == "1" # pyright: ignore[reportUnknownMemberType]
|
|
101
|
+
assert len(replaced.items) == 1
|
|
102
|
+
assert replaced.items[0].tag == f"{{{CUSTOMERS_NS}}}customers"
|
|
103
|
+
assert len(replaced.items[0]) == 2
|
|
104
|
+
with ZipFile(io.BytesIO(output.getvalue())) as package:
|
|
105
|
+
names = set(package.namelist())
|
|
106
|
+
assert "customXml/itemProps1.xml" in names
|
|
107
|
+
assert "customXml/_rels/item1.xml.rels" in names
|
|
108
|
+
|
|
86
109
|
def it_rejects_an_explicit_partname_collision(self):
|
|
87
110
|
document = Document(io.BytesIO(FIXTURE.read_bytes()))
|
|
88
111
|
|
|
@@ -10,6 +10,10 @@ from zipfile import ZipFile
|
|
|
10
10
|
from lxml import etree
|
|
11
11
|
|
|
12
12
|
from docx import Document
|
|
13
|
+
from docx.opc.constants import CONTENT_TYPE as CT
|
|
14
|
+
from docx.opc.constants import RELATIONSHIP_TYPE as RT
|
|
15
|
+
from docx.oxml import OxmlElement
|
|
16
|
+
from docx.oxml.ns import qn
|
|
13
17
|
|
|
14
18
|
FIXTURE_DIR = Path(__file__).parent.parent / "fixtures"
|
|
15
19
|
TEST_FILE_DIR = Path(__file__).parent.parent / "test_files"
|
|
@@ -73,6 +77,60 @@ class DescribeWordDocumentRoundTrips:
|
|
|
73
77
|
assert "word/styles.xml" in package
|
|
74
78
|
assert not any(name.startswith("word/media/") for name in package)
|
|
75
79
|
|
|
80
|
+
def it_round_trips_a_default_numbering_part_when_the_source_has_none(self):
|
|
81
|
+
fixture = _fixture("documents", "word-blank.docx")
|
|
82
|
+
with ZipFile(fixture) as source_package:
|
|
83
|
+
assert "word/numbering.xml" not in source_package.namelist()
|
|
84
|
+
|
|
85
|
+
document = Document(io.BytesIO(fixture.read_bytes()))
|
|
86
|
+
numbering_part = document.part.numbering_part
|
|
87
|
+
output = document.to_bytes()
|
|
88
|
+
reopened = Document(output)
|
|
89
|
+
|
|
90
|
+
assert str(numbering_part.partname) == "/word/numbering.xml"
|
|
91
|
+
assert str(reopened.part.numbering_part.partname) == "/word/numbering.xml"
|
|
92
|
+
with ZipFile(io.BytesIO(output)) as package_file:
|
|
93
|
+
package = {name: package_file.read(name) for name in package_file.namelist()}
|
|
94
|
+
assert "word/numbering.xml" in package
|
|
95
|
+
assert _content_type(package, "/word/numbering.xml") == CT.WML_NUMBERING
|
|
96
|
+
relationships = _xml(package, "word/_rels/document.xml.rels")
|
|
97
|
+
numbering_relationship = relationships.find(
|
|
98
|
+
f"{{{PR_NS}}}Relationship[@Type='{RT.NUMBERING}']"
|
|
99
|
+
)
|
|
100
|
+
assert numbering_relationship is not None
|
|
101
|
+
assert numbering_relationship.get("Target") == "numbering.xml"
|
|
102
|
+
|
|
103
|
+
def it_round_trips_a_changed_external_hyperlink_target(self):
|
|
104
|
+
document = Document(_fixture("documents", "word-blank.docx").read_bytes())
|
|
105
|
+
paragraph = document.add_paragraph()
|
|
106
|
+
relationship_id = document.part.relate_to(
|
|
107
|
+
"https://example.invalid/objects/old-id",
|
|
108
|
+
RT.HYPERLINK,
|
|
109
|
+
is_external=True,
|
|
110
|
+
)
|
|
111
|
+
hyperlink = OxmlElement("w:hyperlink")
|
|
112
|
+
hyperlink.set(qn("r:id"), relationship_id)
|
|
113
|
+
run = OxmlElement("w:r")
|
|
114
|
+
text = OxmlElement("w:t")
|
|
115
|
+
text.text = "Business link"
|
|
116
|
+
run.append(text)
|
|
117
|
+
hyperlink.append(run)
|
|
118
|
+
paragraph._p.append(hyperlink) # pyright: ignore[reportPrivateUsage]
|
|
119
|
+
|
|
120
|
+
new_target = "https://example.invalid/objects/new-id?position=begin"
|
|
121
|
+
document.part.rels[relationship_id].target_ref = new_target
|
|
122
|
+
output = document.to_bytes()
|
|
123
|
+
reopened = Document(output)
|
|
124
|
+
|
|
125
|
+
assert reopened.paragraphs[-1].hyperlinks[0].text == "Business link"
|
|
126
|
+
assert reopened.paragraphs[-1].hyperlinks[0].address == new_target
|
|
127
|
+
with ZipFile(io.BytesIO(output)) as package_file:
|
|
128
|
+
relationships = etree.fromstring(package_file.read("word/_rels/document.xml.rels"))
|
|
129
|
+
relationship = relationships.find(f"{{{PR_NS}}}Relationship[@Id='{relationship_id}']")
|
|
130
|
+
assert relationship is not None
|
|
131
|
+
assert relationship.get("Target") == new_target
|
|
132
|
+
assert relationship.get("TargetMode") == "External"
|
|
133
|
+
|
|
76
134
|
def it_creates_independent_document_copies_from_one_snapshot(self):
|
|
77
135
|
source = Document(_fixture("customxml", "multiple-custom-xml-parts.docx").read_bytes())
|
|
78
136
|
source.add_paragraph("Shared snapshot")
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""Test suite for docx.oxml.xmlchemy."""
|
|
2
2
|
|
|
3
3
|
import pytest
|
|
4
|
+
from lxml import etree
|
|
4
5
|
|
|
5
6
|
from docx.oxml.exceptions import InvalidXmlError
|
|
6
7
|
from docx.oxml.ns import qn
|
|
@@ -48,6 +49,34 @@ class DescribeBaseOxmlElement:
|
|
|
48
49
|
element.remove_all(*tagnames)
|
|
49
50
|
assert element.xml == expected_xml
|
|
50
51
|
|
|
52
|
+
def it_iterates_text_without_duplication_on_oxml_elements(self):
|
|
53
|
+
elm = parse_xml(
|
|
54
|
+
'<w:p xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">'
|
|
55
|
+
"<w:r><w:t>foo</w:t></w:r>"
|
|
56
|
+
"<w:hyperlink><w:r><w:t>bar</w:t></w:r></w:hyperlink>"
|
|
57
|
+
"</w:p>"
|
|
58
|
+
)
|
|
59
|
+
assert "".join(elm.itertext()) == "foobar"
|
|
60
|
+
assert list(elm.itertext(qn("w:t"))) == ["foo", "bar"]
|
|
61
|
+
|
|
62
|
+
def it_iterates_text_without_duplication_on_unregistered_bare_elements(self):
|
|
63
|
+
# Tags like w:ins, w:del, w:txbxContent are not registered in element_class_lookup
|
|
64
|
+
# and remain bare lxml.etree._Element instances.
|
|
65
|
+
ins = parse_xml(
|
|
66
|
+
'<w:ins xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"'
|
|
67
|
+
' w:id="1" w:author="t" w:date="2026-01-01T00:00:00Z">'
|
|
68
|
+
"<w:r><w:t>Beta</w:t></w:r>"
|
|
69
|
+
"</w:ins>"
|
|
70
|
+
)
|
|
71
|
+
assert type(ins) is etree._Element
|
|
72
|
+
assert list(ins.itertext()) == ["Beta"]
|
|
73
|
+
assert "".join(ins.itertext()) == "Beta"
|
|
74
|
+
|
|
75
|
+
# Verify CT_R inside it has native None for .text and "Beta" for .texts
|
|
76
|
+
r = ins.findall(qn("w:r"))[0]
|
|
77
|
+
assert r.text is None
|
|
78
|
+
assert r.texts == "Beta"
|
|
79
|
+
|
|
51
80
|
# fixtures ---------------------------------------------
|
|
52
81
|
|
|
53
82
|
@pytest.fixture(
|
|
@@ -41,5 +41,6 @@ class DescribeCT_Hyperlink:
|
|
|
41
41
|
rs = hyperlink.r_lst
|
|
42
42
|
|
|
43
43
|
assert [type(r) for r in rs] == [CT_R, CT_R]
|
|
44
|
-
assert rs[0].
|
|
45
|
-
assert rs[1].
|
|
44
|
+
assert rs[0].texts == "blog"
|
|
45
|
+
assert rs[1].texts == " post"
|
|
46
|
+
assert hyperlink.texts == "blog post"
|
|
@@ -38,13 +38,22 @@ class DescribeCT_R:
|
|
|
38
38
|
cxml = 'w:r/(w:br,w:cr,w:noBreakHyphen,w:ptab,w:t"foobar",w:tab)'
|
|
39
39
|
r = cast(CT_R, element(cxml))
|
|
40
40
|
|
|
41
|
-
assert r.
|
|
41
|
+
assert r.texts == "\n\n-\tfoobar\t"
|
|
42
42
|
|
|
43
|
-
def
|
|
43
|
+
def it_can_replace_its_text(self):
|
|
44
44
|
r = cast(CT_R, element('w:r/w:t"alias"'))
|
|
45
45
|
|
|
46
46
|
assert r.texts == "alias"
|
|
47
47
|
|
|
48
48
|
r.texts = "updated"
|
|
49
49
|
|
|
50
|
-
assert r.
|
|
50
|
+
assert r.texts == "updated"
|
|
51
|
+
|
|
52
|
+
def it_iterates_text_without_duplication(self):
|
|
53
|
+
r = cast(CT_R, element('w:r/(w:br,w:t"foo",w:cr,w:t"bar")'))
|
|
54
|
+
|
|
55
|
+
assert "".join(r.itertext()) == "foobar"
|
|
56
|
+
|
|
57
|
+
def it_does_not_override_element_text_descriptor(self):
|
|
58
|
+
r = cast(CT_R, element('w:r/w:t"foo"'))
|
|
59
|
+
assert r.text is None
|
|
@@ -9,6 +9,7 @@ from zipfile import ZipFile
|
|
|
9
9
|
from lxml import etree
|
|
10
10
|
|
|
11
11
|
from docx import Document
|
|
12
|
+
from docx.opc.constants import RELATIONSHIP_TYPE as RT
|
|
12
13
|
from docx.opc.packuri import PackURI
|
|
13
14
|
from docx.opc.part import Part
|
|
14
15
|
from docx.oxml import OxmlElement
|
|
@@ -145,6 +146,56 @@ def it_removes_the_entire_web_extension_relationship_tree():
|
|
|
145
146
|
assert not any(name.startswith("word/webextensions/") for name in archive.namelist())
|
|
146
147
|
|
|
147
148
|
|
|
149
|
+
def it_round_trips_cleanup_without_removing_application_content():
|
|
150
|
+
document = Document(COMMENTS_FIXTURE)
|
|
151
|
+
custom_xml = document.part.add_custom_xml_part(
|
|
152
|
+
'<application xmlns="urn:python-docx-oss:application" version="1"/>'
|
|
153
|
+
)
|
|
154
|
+
business_relationship_id = document.part.relate_to(
|
|
155
|
+
"https://example.invalid/business/object-id",
|
|
156
|
+
RT.HYPERLINK,
|
|
157
|
+
is_external=True,
|
|
158
|
+
)
|
|
159
|
+
package = document.part.package
|
|
160
|
+
taskpanes = Part(
|
|
161
|
+
PackURI("/word/webextensions/taskpanes.xml"),
|
|
162
|
+
"application/vnd.ms-office.webextensiontaskpanes+xml",
|
|
163
|
+
b"<wetp:taskpanes xmlns:wetp='urn:test'/>",
|
|
164
|
+
package,
|
|
165
|
+
)
|
|
166
|
+
extension = Part(
|
|
167
|
+
PackURI("/word/webextensions/webextension1.xml"),
|
|
168
|
+
"application/vnd.ms-office.webextension+xml",
|
|
169
|
+
b"<we:webextension xmlns:we='urn:test'/>",
|
|
170
|
+
package,
|
|
171
|
+
)
|
|
172
|
+
package.relate_to(
|
|
173
|
+
taskpanes,
|
|
174
|
+
"http://schemas.microsoft.com/office/2011/relationships/webextensiontaskpanes",
|
|
175
|
+
)
|
|
176
|
+
taskpanes.relate_to(
|
|
177
|
+
extension,
|
|
178
|
+
"http://schemas.microsoft.com/office/2011/relationships/webextension",
|
|
179
|
+
)
|
|
180
|
+
|
|
181
|
+
report = document.sanitize(comments=True, web_extensions=True)
|
|
182
|
+
output = document.to_bytes()
|
|
183
|
+
reopened = Document(output)
|
|
184
|
+
|
|
185
|
+
assert report.removed_comment_markers > 0
|
|
186
|
+
assert str(custom_xml.partname) not in report.removed_parts
|
|
187
|
+
assert reopened.part.custom_xml_parts[0].tag == ("{urn:python-docx-oss:application}application")
|
|
188
|
+
assert reopened.part.rels[business_relationship_id].target_ref == (
|
|
189
|
+
"https://example.invalid/business/object-id"
|
|
190
|
+
)
|
|
191
|
+
assert reopened.sanitize(comments=True, web_extensions=True).changed is False
|
|
192
|
+
with ZipFile(io.BytesIO(output)) as archive:
|
|
193
|
+
names = archive.namelist()
|
|
194
|
+
assert "customXml/item1.xml" in names
|
|
195
|
+
assert "word/comments.xml" not in names
|
|
196
|
+
assert not any(name.startswith("word/webextensions/") for name in names)
|
|
197
|
+
|
|
198
|
+
|
|
148
199
|
def it_removes_formatting_revisions_and_keeps_current_formatting():
|
|
149
200
|
document = Document()
|
|
150
201
|
paragraph = document.add_paragraph()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/shapes/picture.rst
RENAMED
|
File without changes
|
|
File without changes
|
{python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/shapes/shapes-inline.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_docx_oss-0.3.0 → python_docx_oss-0.3.2}/docs/dev/analysis/features/styles/latent-styles.rst
RENAMED
|
File without changes
|