python-docx-oss 0.3.1__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.1 → python_docx_oss-0.3.2}/HISTORY.md +9 -1
- {python_docx_oss-0.3.1/src/python_docx_oss.egg-info → python_docx_oss-0.3.2}/PKG-INFO +6 -1
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/README.md +5 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/user/compatibility.rst +8 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/__init__.py +1 -1
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/text/hyperlink.py +2 -2
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/text/paragraph.py +2 -2
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/text/run.py +8 -12
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/xmlchemy.py +1 -22
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/table.py +1 -1
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/text/hyperlink.py +1 -1
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/text/paragraph.py +1 -1
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/text/run.py +2 -2
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2/src/python_docx_oss.egg-info}/PKG-INFO +6 -1
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/python_docx_oss.egg-info/SOURCES.txt +0 -1
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/integration/customxml/test_custom_xml_roundtrip.py +1 -1
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/integration/test_word_roundtrip.py +1 -1
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/test_xmlchemy.py +20 -1
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/text/test_hyperlink.py +3 -2
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/text/test_run.py +7 -3
- python_docx_oss-0.3.1/features/_scratch/test_out.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/LICENSE +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/MANIFEST.in +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/Makefile +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/_static/.gitignore +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/_static/img/comment-parts.png +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/_static/img/example-docx-01.png +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/_static/img/hdrftr-01.png +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/_static/img/hdrftr-02.png +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/_static/img/oss.png +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/_templates/layout.html +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/_templates/sidebarlinks.html +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/_themes/armstrong/LICENSE +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/_themes/armstrong/layout.html +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/_themes/armstrong/rtd-themes.conf +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/_themes/armstrong/static/rtd.css_t +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/_themes/armstrong/theme.conf +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/_themes/armstrong/theme.conf.orig +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/comments.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/dml.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/document.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/enum/MsoColorType.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/enum/MsoThemeColorIndex.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/enum/WdAlignParagraph.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/enum/WdBuiltinStyle.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/enum/WdCellVerticalAlignment.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/enum/WdColorIndex.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/enum/WdLineSpacing.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/enum/WdOrientation.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/enum/WdRowAlignment.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/enum/WdRowHeightRule.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/enum/WdSectionStart.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/enum/WdStyleType.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/enum/WdTabAlignment.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/enum/WdTabLeader.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/enum/WdTableDirection.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/enum/WdUnderline.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/enum/index.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/sanitize.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/section.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/settings.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/shape.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/shared.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/style.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/table.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/api/text.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/conf.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/comments.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/coreprops.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/header.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/numbering.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/sections.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/settings.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/shapes/index.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/shapes/picture.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/shapes/shapes-inline-size.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/shapes/shapes-inline.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/styles/character-style.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/styles/index.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/styles/latent-styles.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/styles/paragraph-style.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/styles/style.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/styles/styles.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/table/cell-merge.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/table/index.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/table/table-cell.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/table/table-props.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/table/table-row.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/breaks.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/font-color.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/font-highlight-color.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/font.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/hyperlink.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/index.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/paragraph-format.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/run-content.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/tab-stops.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/underline.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/index.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/schema/ct_body.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/schema/ct_document.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/schema/ct_p.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/upstream-maintenance.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/index.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/requirements.txt +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/user/api-concepts.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/user/comments.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/user/custom-properties.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/user/custom-xml.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/user/documents.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/user/hdrftr.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/user/install.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/user/quickstart.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/user/sanitization.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/user/sections.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/user/shapes.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/user/styles-understanding.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/user/styles-using.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/user/tables.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/user/text.rst +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/api-open-document.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/blk-add-paragraph.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/blk-add-table.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/blk-iter-inner-content.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/cmt-mutations.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/cmt-props.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/doc-access-collections.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/doc-access-sections.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/doc-add-comment.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/doc-add-heading.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/doc-add-page-break.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/doc-add-paragraph.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/doc-add-picture.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/doc-add-section.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/doc-add-table.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/doc-comments.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/doc-coreprops.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/doc-customprops.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/doc-settings.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/doc-styles.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/environment.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/hdr-header-footer.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/hlk-props.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/img-characterize-image.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/num-access-numbering-part.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/par-access-inner-content.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/par-access-parfmt.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/par-add-run.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/par-alignment-prop.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/par-clear-paragraph.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/par-insert-paragraph.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/par-set-text.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/par-style-prop.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/pbk-split-para.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/run-access-font.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/run-access-inner-content.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/run-add-content.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/run-add-picture.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/run-char-style.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/run-clear-run.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/run-enum-props.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/sct-section.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/shp-inline-shape-access.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/shp-inline-shape-size.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/api.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/block.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/comments.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/coreprops.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/customprops.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/document.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/font.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/hdrftr.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/helpers.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/hyperlink.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/image.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/numbering.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/pagebreak.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/paragraph.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/parfmt.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/section.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/settings.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/shape.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/shared.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/styles.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/table.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/tabstops.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/blk-containing-table.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/blk-paras-and-tables.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/comments-rich-para.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/court-exif.jpg +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/doc-access-sections.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/doc-add-section.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/doc-coreprops.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/doc-customprops-legacy.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/doc-customprops.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/doc-default.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/doc-no-coreprops.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/doc-no-customprops.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/doc-odd-even-hdrs.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/doc-word-default-blank.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/fnt-color.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/hdr-header-footer.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/jfif-300-dpi.jpg +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/jpeg420exif.jpg +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/lena.bmp +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/lena.gif +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/lena.tif +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/lena_std.jpg +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/monty-truth.png +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/mountain.bmp +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/num-having-numbering-part.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/par-alignment.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/par-hlink-frags.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/par-hyperlinks.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/par-known-paragraphs.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/par-known-styles.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/par-rendered-page-breaks.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/python-icon.jpeg +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/run-char-style.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/run-enumerated-props.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/sample.tif +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/sct-first-page-hdrftr.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/sct-inner-content.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/sct-section-props.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/set-no-settings-part.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/shp-inline-shape-access.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/sty-behav-props.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/sty-having-no-styles-part.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/sty-having-styles-part.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/sty-known-styles.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/tab-stops.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/tbl-2x2-table.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/tbl-cell-access.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/tbl-cell-props.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/tbl-col-props.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/tbl-having-applied-style.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/tbl-having-tables.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/tbl-on-off-props.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/tbl-props.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/test.png +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/txt-font-highlight-color.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/test_files/txt-font-props.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/steps/text.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/sty-access-font.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/sty-access-latent-styles.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/sty-access-parfmt.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/sty-add-style.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/sty-delete-style.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/sty-latent-add-del.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/sty-latent-props.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/sty-style-props.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/tab-access-tabs.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/tab-tabstop-props.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/tbl-add-row-or-col.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/tbl-cell-access.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/tbl-cell-add-table.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/tbl-cell-props.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/tbl-cell-text.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/tbl-col-props.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/tbl-item-access.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/tbl-merge-cells.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/tbl-props.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/tbl-row-props.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/tbl-style.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/txt-add-break.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/txt-font-color.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/txt-font-props.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/features/txt-parfmt-props.feature +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/pyproject.toml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/requirements-dev.txt +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/requirements-docs.txt +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/requirements-test.txt +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/requirements.txt +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/setup.cfg +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/api.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/blkcntnr.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/comments.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/dml/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/dml/color.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/document.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/drawing/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/enum/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/enum/base.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/enum/dml.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/enum/section.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/enum/shape.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/enum/style.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/enum/table.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/enum/text.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/exceptions.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/image/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/image/bmp.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/image/constants.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/image/emf.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/image/exceptions.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/image/gif.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/image/helpers.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/image/image.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/image/jpeg.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/image/png.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/image/svg.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/image/tiff.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/opc/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/opc/constants.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/opc/coreprops.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/opc/customprops.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/opc/exceptions.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/opc/oxml.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/opc/package.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/opc/packuri.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/opc/part.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/opc/parts/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/opc/parts/coreprops.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/opc/parts/customprops.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/opc/phys_pkg.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/opc/pkgreader.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/opc/pkgwriter.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/opc/rel.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/opc/shared.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/opc/spec.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/comments.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/coreprops.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/customprops.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/dml/CT_ExtensionList.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/document.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/drawing.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/exceptions.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/ns.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/numbering.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/parser.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/section.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/settings.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/shape.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/shared.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/simpletypes.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/styles.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/table.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/text/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/text/font.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/text/pagebreak.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/oxml/text/parfmt.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/package.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/parts/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/parts/comments.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/parts/customxml.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/parts/document.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/parts/hdrftr.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/parts/image.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/parts/numbering.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/parts/settings.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/parts/story.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/parts/styles.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/py.typed +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/sanitize/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/sanitize/cleaner.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/sanitize/result.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/section.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/settings.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/shape.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/shared.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/styles/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/styles/latent.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/styles/style.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/styles/styles.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-comments.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/[Content_Types].xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/_rels/.rels +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/customXml/_rels/item1.xml.rels +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/customXml/item1.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/customXml/itemProps1.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/docProps/app.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/docProps/core.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/docProps/thumbnail.jpeg +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/word/_rels/document.xml.rels +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/word/document.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/word/fontTable.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/word/numbering.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/word/settings.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/word/styles.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/word/stylesWithEffects.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/word/theme/theme1.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-docx-template/word/webSettings.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-footer.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-header.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-numbering.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-settings.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default-styles.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/templates/default.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/text/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/text/font.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/text/pagebreak.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/text/parfmt.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/text/tabstops.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/docx/types.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/python_docx_oss.egg-info/dependency_links.txt +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/python_docx_oss.egg-info/requires.txt +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/src/python_docx_oss.egg-info/top_level.txt +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/conftest.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/dml/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/dml/test_color.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/fixtures/README.md +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/fixtures/comments/word-comments-rich.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/fixtures/customxml/generate_fixture.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/fixtures/customxml/multiple-custom-xml-parts.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/fixtures/documents/word-blank.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/fixtures/drawing/word-floating-picture.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/fixtures/fonts/word-east-asian-fonts.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/fixtures/images/word-svg-image.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/image/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/image/test_bmp.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/image/test_emf.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/image/test_gif.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/image/test_helpers.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/image/test_image.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/image/test_jpeg.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/image/test_png.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/image/test_svg.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/image/test_tiff.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/integration/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/integration/customxml/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/opc/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/opc/parts/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/opc/parts/test_coreprops.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/opc/parts/test_customprops.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/opc/test_coreprops.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/opc/test_customprops.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/opc/test_oxml.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/opc/test_package.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/opc/test_packuri.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/opc/test_part.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/opc/test_phys_pkg.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/opc/test_pkgreader.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/opc/test_pkgwriter.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/opc/test_rel.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/opc/unitdata/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/opc/unitdata/rels.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/opc/unitdata/types.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/parts/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/parts/test_document.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/parts/unitdata/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/parts/unitdata/document.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/test__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/test_comments.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/test_document.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/test_ns.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/test_section.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/test_styles.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/test_table.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/text/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/unitdata/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/unitdata/dml.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/unitdata/numbering.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/unitdata/section.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/unitdata/shared.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/unitdata/styles.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/unitdata/table.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/oxml/unitdata/text.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/parts/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/parts/test_comments.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/parts/test_customxml.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/parts/test_document.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/parts/test_hdrftr.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/parts/test_image.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/parts/test_numbering.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/parts/test_settings.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/parts/test_story.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/parts/test_styles.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/styles/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/styles/test_latent.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/styles/test_style.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/styles/test_styles.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_api.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_blkcntnr.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_comments.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_document.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_drawing.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_enum.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/150-dpi.png +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/300-dpi.TIF +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/300-dpi.jpg +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/300-dpi.png +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/72-dpi.tiff +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/CVS_LOGO.WMF +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/blk-inner-content.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/exif-420-dpi.jpg +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/[Content_Types].xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/_rels/.rels +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/customXml/_rels/item1.xml.rels +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/customXml/item1.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/customXml/itemProps1.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/docProps/app.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/docProps/core.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/docProps/thumbnail.jpeg +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/word/_rels/document.xml.rels +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/word/document.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/word/fontTable.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/word/numbering.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/word/settings.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/word/styles.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/word/stylesWithEffects.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/word/theme/theme1.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/expanded_docx/word/webSettings.xml +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/having-images.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/jfif-iguana.jpg +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/jpeg_without_app0_and_app1.jpg +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/little-endian.tif +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/monty-truth.png +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/python-icon.jpeg +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/python-icon.png +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/python-powered.png +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/python.bmp +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/sct-inner-content.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/snippets/add-row-col.txt +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/snippets/inline.txt +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/snippets/new-tbl.txt +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/snippets/tbl-cells.txt +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/sonic.emf +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/sonic.gif +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_files/test.docx +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_package.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_sanitize.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_section.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_settings.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_shape.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_shared.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/test_table.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/text/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/text/test_font.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/text/test_hyperlink.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/text/test_pagebreak.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/text/test_paragraph.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/text/test_parfmt.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/text/test_run.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/text/test_tabstops.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/unitdata.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/unitutil/__init__.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/unitutil/cxml.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/unitutil/file.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tests/unitutil/mock.py +0 -0
- {python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/tox.ini +0 -0
|
@@ -2,7 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
**Unreleased**
|
|
4
4
|
|
|
5
|
-
**0.3.
|
|
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.
|
|
6
14
|
|
|
7
15
|
- Fixed an issue where calling `itertext()` on oxml elements produced duplicated
|
|
8
16
|
text due to overridden `.text` properties.
|
|
@@ -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.
|
|
@@ -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)
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
7
|
import re
|
|
8
|
-
from typing import TYPE_CHECKING, Any, Callable,
|
|
8
|
+
from typing import TYPE_CHECKING, Any, Callable, Sequence, Type, TypeVar
|
|
9
9
|
|
|
10
10
|
from lxml import etree
|
|
11
11
|
from lxml.etree import ElementBase, _Element # pyright: ignore[reportPrivateUsage]
|
|
@@ -653,11 +653,6 @@ class ZeroOrOneChoice(_BaseChildElement):
|
|
|
653
653
|
return "_remove_%s" % self._prop_name
|
|
654
654
|
|
|
655
655
|
|
|
656
|
-
# -- raw lxml text/tail accessors, used to bypass `.text` property overrides --
|
|
657
|
-
_raw_text = _Element.text.__get__
|
|
658
|
-
_raw_tail = _Element.tail.__get__
|
|
659
|
-
|
|
660
|
-
|
|
661
656
|
# -- lxml typing isn't quite right here, just ignore this error on _Element --
|
|
662
657
|
class BaseOxmlElement(etree.ElementBase, metaclass=MetaOxmlElement):
|
|
663
658
|
"""Effective base class for all custom element classes.
|
|
@@ -688,22 +683,6 @@ class BaseOxmlElement(etree.ElementBase, metaclass=MetaOxmlElement):
|
|
|
688
683
|
self.append(elm)
|
|
689
684
|
return elm
|
|
690
685
|
|
|
691
|
-
def itertext(self, tag: Any | None = None, *tags: Any, with_tail: bool = True) -> Iterator[str]:
|
|
692
|
-
"""Iterate over text content of this element and its descendants.
|
|
693
|
-
|
|
694
|
-
Bypasses the overridden `.text` properties on custom oxml element classes (such as
|
|
695
|
-
`CT_P`, `CT_R`, `CT_Hyperlink`), which would otherwise duplicate text, so standard
|
|
696
|
-
lxml `itertext()` semantics are preserved.
|
|
697
|
-
"""
|
|
698
|
-
for node in self.iter(tag, *tags):
|
|
699
|
-
text = _raw_text(node)
|
|
700
|
-
if text:
|
|
701
|
-
yield text
|
|
702
|
-
if with_tail and node is not self:
|
|
703
|
-
tail = _raw_tail(node)
|
|
704
|
-
if tail:
|
|
705
|
-
yield tail
|
|
706
|
-
|
|
707
686
|
def remove_all(self, *tagnames: str) -> None:
|
|
708
687
|
"""Remove child elements with tagname (e.g. "a:p") in `tagnames`."""
|
|
709
688
|
for tagname in tagnames:
|
|
@@ -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.
|
|
@@ -175,7 +175,6 @@ features/txt-add-break.feature
|
|
|
175
175
|
features/txt-font-color.feature
|
|
176
176
|
features/txt-font-props.feature
|
|
177
177
|
features/txt-parfmt-props.feature
|
|
178
|
-
features/_scratch/test_out.docx
|
|
179
178
|
features/steps/api.py
|
|
180
179
|
features/steps/block.py
|
|
181
180
|
features/steps/comments.py
|
|
@@ -97,7 +97,7 @@ class DescribeMultipleCustomXmlParts:
|
|
|
97
97
|
replaced = _parts_by_name(reopened)["/customXml/item1.xml"]
|
|
98
98
|
|
|
99
99
|
assert replaced.tag == "{urn:python-docx-oss:wrapper}wrapper"
|
|
100
|
-
assert replaced.attrib["version"] == "1"
|
|
100
|
+
assert replaced.attrib["version"] == "1" # pyright: ignore[reportUnknownMemberType]
|
|
101
101
|
assert len(replaced.items) == 1
|
|
102
102
|
assert replaced.items[0].tag == f"{{{CUSTOMERS_NS}}}customers"
|
|
103
103
|
assert len(replaced.items[0]) == 2
|
|
@@ -115,7 +115,7 @@ class DescribeWordDocumentRoundTrips:
|
|
|
115
115
|
text.text = "Business link"
|
|
116
116
|
run.append(text)
|
|
117
117
|
hyperlink.append(run)
|
|
118
|
-
paragraph._p.append(hyperlink)
|
|
118
|
+
paragraph._p.append(hyperlink) # pyright: ignore[reportPrivateUsage]
|
|
119
119
|
|
|
120
120
|
new_target = "https://example.invalid/objects/new-id?position=begin"
|
|
121
121
|
document.part.rels[relationship_id].target_ref = new_target
|
|
@@ -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,7 +49,7 @@ class DescribeBaseOxmlElement:
|
|
|
48
49
|
element.remove_all(*tagnames)
|
|
49
50
|
assert element.xml == expected_xml
|
|
50
51
|
|
|
51
|
-
def
|
|
52
|
+
def it_iterates_text_without_duplication_on_oxml_elements(self):
|
|
52
53
|
elm = parse_xml(
|
|
53
54
|
'<w:p xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">'
|
|
54
55
|
"<w:r><w:t>foo</w:t></w:r>"
|
|
@@ -58,6 +59,24 @@ class DescribeBaseOxmlElement:
|
|
|
58
59
|
assert "".join(elm.itertext()) == "foobar"
|
|
59
60
|
assert list(elm.itertext(qn("w:t"))) == ["foo", "bar"]
|
|
60
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
|
+
|
|
61
80
|
# fixtures ---------------------------------------------
|
|
62
81
|
|
|
63
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,18 +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
51
|
|
|
52
52
|
def it_iterates_text_without_duplication(self):
|
|
53
53
|
r = cast(CT_R, element('w:r/(w:br,w:t"foo",w:cr,w:t"bar")'))
|
|
54
54
|
|
|
55
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
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_docx_oss-0.3.1 → 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.1 → 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.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/styles/latent-styles.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/styles/styles.rst
RENAMED
|
File without changes
|
{python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/table/cell-merge.rst
RENAMED
|
File without changes
|
|
File without changes
|
{python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/table/table-cell.rst
RENAMED
|
File without changes
|
{python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/table/table-props.rst
RENAMED
|
File without changes
|
{python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/table/table-row.rst
RENAMED
|
File without changes
|
|
File without changes
|
{python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/font-color.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/hyperlink.rst
RENAMED
|
File without changes
|
|
File without changes
|
{python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/paragraph-format.rst
RENAMED
|
File without changes
|
{python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/run-content.rst
RENAMED
|
File without changes
|
{python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/tab-stops.rst
RENAMED
|
File without changes
|
{python_docx_oss-0.3.1 → python_docx_oss-0.3.2}/docs/dev/analysis/features/text/underline.rst
RENAMED
|
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
|