python-docx-oss 0.3.0__tar.gz → 0.3.1__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.1}/HISTORY.md +5 -0
- {python_docx_oss-0.3.0/src/python_docx_oss.egg-info → python_docx_oss-0.3.1}/PKG-INFO +1 -1
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/conf.py +1 -1
- python_docx_oss-0.3.1/features/_scratch/test_out.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/__init__.py +1 -1
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/xmlchemy.py +22 -1
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1/src/python_docx_oss.egg-info}/PKG-INFO +1 -1
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/python_docx_oss.egg-info/SOURCES.txt +1 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/integration/customxml/test_custom_xml_roundtrip.py +23 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/integration/test_word_roundtrip.py +58 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/test_xmlchemy.py +10 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/text/test_run.py +5 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_sanitize.py +51 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/LICENSE +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/MANIFEST.in +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/README.md +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/Makefile +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/_static/.gitignore +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/_static/img/comment-parts.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/_static/img/example-docx-01.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/_static/img/hdrftr-01.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/_static/img/hdrftr-02.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/_static/img/oss.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/_templates/layout.html +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/_templates/sidebarlinks.html +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/_themes/armstrong/LICENSE +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/_themes/armstrong/layout.html +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/_themes/armstrong/rtd-themes.conf +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/_themes/armstrong/static/rtd.css_t +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/_themes/armstrong/theme.conf +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/_themes/armstrong/theme.conf.orig +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/comments.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/dml.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/document.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/enum/MsoColorType.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/enum/MsoThemeColorIndex.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/enum/WdAlignParagraph.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/enum/WdBuiltinStyle.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/enum/WdCellVerticalAlignment.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/enum/WdColorIndex.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/enum/WdLineSpacing.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/enum/WdOrientation.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/enum/WdRowAlignment.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/enum/WdRowHeightRule.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/enum/WdSectionStart.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/enum/WdStyleType.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/enum/WdTabAlignment.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/enum/WdTabLeader.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/enum/WdTableDirection.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/enum/WdUnderline.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/enum/index.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/sanitize.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/section.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/settings.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/shape.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/shared.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/style.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/table.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/api/text.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/comments.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/coreprops.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/header.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/numbering.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/sections.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/settings.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/shapes/index.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/shapes/picture.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/shapes/shapes-inline-size.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/shapes/shapes-inline.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/styles/character-style.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/styles/index.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/styles/latent-styles.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/styles/paragraph-style.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/styles/style.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/styles/styles.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/table/cell-merge.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/table/index.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/table/table-cell.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/table/table-props.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/table/table-row.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/text/breaks.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/text/font-color.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/text/font-highlight-color.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/text/font.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/text/hyperlink.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/text/index.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/text/paragraph-format.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/text/run-content.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/text/tab-stops.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/text/underline.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/index.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/schema/ct_body.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/schema/ct_document.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/schema/ct_p.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/upstream-maintenance.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/index.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/requirements.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/user/api-concepts.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/user/comments.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/user/compatibility.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/user/custom-properties.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/user/custom-xml.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/user/documents.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/user/hdrftr.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/user/install.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/user/quickstart.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/user/sanitization.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/user/sections.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/user/shapes.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/user/styles-understanding.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/user/styles-using.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/user/tables.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/user/text.rst +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/api-open-document.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/blk-add-paragraph.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/blk-add-table.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/blk-iter-inner-content.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/cmt-mutations.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/cmt-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/doc-access-collections.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/doc-access-sections.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/doc-add-comment.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/doc-add-heading.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/doc-add-page-break.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/doc-add-paragraph.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/doc-add-picture.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/doc-add-section.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/doc-add-table.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/doc-comments.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/doc-coreprops.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/doc-customprops.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/doc-settings.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/doc-styles.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/environment.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/hdr-header-footer.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/hlk-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/img-characterize-image.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/num-access-numbering-part.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/par-access-inner-content.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/par-access-parfmt.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/par-add-run.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/par-alignment-prop.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/par-clear-paragraph.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/par-insert-paragraph.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/par-set-text.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/par-style-prop.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/pbk-split-para.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/run-access-font.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/run-access-inner-content.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/run-add-content.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/run-add-picture.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/run-char-style.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/run-clear-run.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/run-enum-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/sct-section.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/shp-inline-shape-access.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/shp-inline-shape-size.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/api.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/block.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/comments.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/coreprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/customprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/document.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/font.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/hdrftr.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/helpers.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/hyperlink.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/image.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/numbering.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/pagebreak.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/paragraph.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/parfmt.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/section.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/settings.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/shape.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/shared.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/styles.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/table.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/tabstops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/blk-containing-table.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/blk-paras-and-tables.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/comments-rich-para.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/court-exif.jpg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/doc-access-sections.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/doc-add-section.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/doc-coreprops.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/doc-customprops-legacy.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/doc-customprops.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/doc-default.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/doc-no-coreprops.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/doc-no-customprops.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/doc-odd-even-hdrs.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/doc-word-default-blank.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/fnt-color.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/hdr-header-footer.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/jfif-300-dpi.jpg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/jpeg420exif.jpg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/lena.bmp +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/lena.gif +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/lena.tif +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/lena_std.jpg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/monty-truth.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/mountain.bmp +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/num-having-numbering-part.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/par-alignment.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/par-hlink-frags.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/par-hyperlinks.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/par-known-paragraphs.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/par-known-styles.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/par-rendered-page-breaks.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/python-icon.jpeg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/run-char-style.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/run-enumerated-props.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/sample.tif +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/sct-first-page-hdrftr.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/sct-inner-content.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/sct-section-props.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/set-no-settings-part.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/shp-inline-shape-access.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/sty-behav-props.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/sty-having-no-styles-part.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/sty-having-styles-part.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/sty-known-styles.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/tab-stops.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/tbl-2x2-table.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/tbl-cell-access.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/tbl-cell-props.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/tbl-col-props.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/tbl-having-applied-style.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/tbl-having-tables.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/tbl-on-off-props.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/tbl-props.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/test.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/txt-font-highlight-color.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/test_files/txt-font-props.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/steps/text.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/sty-access-font.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/sty-access-latent-styles.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/sty-access-parfmt.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/sty-add-style.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/sty-delete-style.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/sty-latent-add-del.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/sty-latent-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/sty-style-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/tab-access-tabs.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/tab-tabstop-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/tbl-add-row-or-col.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/tbl-cell-access.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/tbl-cell-add-table.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/tbl-cell-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/tbl-cell-text.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/tbl-col-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/tbl-item-access.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/tbl-merge-cells.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/tbl-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/tbl-row-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/tbl-style.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/txt-add-break.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/txt-font-color.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/txt-font-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/features/txt-parfmt-props.feature +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/pyproject.toml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/requirements-dev.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/requirements-docs.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/requirements-test.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/requirements.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/setup.cfg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/api.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/blkcntnr.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/comments.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/dml/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/dml/color.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/document.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/drawing/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/enum/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/enum/base.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/enum/dml.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/enum/section.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/enum/shape.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/enum/style.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/enum/table.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/enum/text.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/exceptions.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/image/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/image/bmp.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/image/constants.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/image/emf.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/image/exceptions.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/image/gif.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/image/helpers.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/image/image.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/image/jpeg.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/image/png.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/image/svg.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/image/tiff.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/opc/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/opc/constants.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/opc/coreprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/opc/customprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/opc/exceptions.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/opc/oxml.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/opc/package.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/opc/packuri.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/opc/part.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/opc/parts/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/opc/parts/coreprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/opc/parts/customprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/opc/phys_pkg.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/opc/pkgreader.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/opc/pkgwriter.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/opc/rel.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/opc/shared.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/opc/spec.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/comments.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/coreprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/customprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/dml/CT_ExtensionList.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/document.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/drawing.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/exceptions.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/ns.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/numbering.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/parser.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/section.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/settings.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/shape.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/shared.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/simpletypes.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/styles.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/table.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/text/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/text/font.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/text/hyperlink.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/text/pagebreak.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/text/paragraph.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/text/parfmt.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/oxml/text/run.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/package.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/parts/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/parts/comments.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/parts/customxml.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/parts/document.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/parts/hdrftr.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/parts/image.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/parts/numbering.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/parts/settings.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/parts/story.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/parts/styles.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/py.typed +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/sanitize/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/sanitize/cleaner.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/sanitize/result.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/section.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/settings.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/shape.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/shared.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/styles/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/styles/latent.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/styles/style.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/styles/styles.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/table.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-comments.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-docx-template/[Content_Types].xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-docx-template/_rels/.rels +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-docx-template/customXml/_rels/item1.xml.rels +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-docx-template/customXml/item1.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-docx-template/customXml/itemProps1.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-docx-template/docProps/app.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-docx-template/docProps/core.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-docx-template/docProps/thumbnail.jpeg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-docx-template/word/_rels/document.xml.rels +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-docx-template/word/document.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-docx-template/word/fontTable.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-docx-template/word/numbering.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-docx-template/word/settings.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-docx-template/word/styles.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-docx-template/word/stylesWithEffects.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-docx-template/word/theme/theme1.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-docx-template/word/webSettings.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-footer.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-header.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-numbering.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-settings.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default-styles.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/templates/default.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/text/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/text/font.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/text/hyperlink.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/text/pagebreak.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/text/paragraph.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/text/parfmt.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/text/run.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/text/tabstops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/docx/types.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/python_docx_oss.egg-info/dependency_links.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/python_docx_oss.egg-info/requires.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/src/python_docx_oss.egg-info/top_level.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/conftest.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/dml/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/dml/test_color.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/fixtures/README.md +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/fixtures/comments/word-comments-rich.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/fixtures/customxml/generate_fixture.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/fixtures/customxml/multiple-custom-xml-parts.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/fixtures/documents/word-blank.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/fixtures/drawing/word-floating-picture.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/fixtures/fonts/word-east-asian-fonts.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/fixtures/images/word-svg-image.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/image/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/image/test_bmp.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/image/test_emf.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/image/test_gif.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/image/test_helpers.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/image/test_image.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/image/test_jpeg.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/image/test_png.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/image/test_svg.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/image/test_tiff.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/integration/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/integration/customxml/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/opc/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/opc/parts/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/opc/parts/test_coreprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/opc/parts/test_customprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/opc/test_coreprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/opc/test_customprops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/opc/test_oxml.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/opc/test_package.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/opc/test_packuri.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/opc/test_part.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/opc/test_phys_pkg.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/opc/test_pkgreader.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/opc/test_pkgwriter.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/opc/test_rel.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/opc/unitdata/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/opc/unitdata/rels.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/opc/unitdata/types.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/parts/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/parts/test_document.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/parts/unitdata/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/parts/unitdata/document.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/test__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/test_comments.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/test_document.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/test_ns.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/test_section.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/test_styles.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/test_table.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/text/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/text/test_hyperlink.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/unitdata/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/unitdata/dml.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/unitdata/numbering.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/unitdata/section.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/unitdata/shared.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/unitdata/styles.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/unitdata/table.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/oxml/unitdata/text.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/parts/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/parts/test_comments.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/parts/test_customxml.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/parts/test_document.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/parts/test_hdrftr.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/parts/test_image.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/parts/test_numbering.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/parts/test_settings.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/parts/test_story.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/parts/test_styles.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/styles/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/styles/test_latent.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/styles/test_style.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/styles/test_styles.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_api.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_blkcntnr.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_comments.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_document.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_drawing.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_enum.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/150-dpi.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/300-dpi.TIF +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/300-dpi.jpg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/300-dpi.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/72-dpi.tiff +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/CVS_LOGO.WMF +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/blk-inner-content.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/exif-420-dpi.jpg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/expanded_docx/[Content_Types].xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/expanded_docx/_rels/.rels +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/expanded_docx/customXml/_rels/item1.xml.rels +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/expanded_docx/customXml/item1.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/expanded_docx/customXml/itemProps1.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/expanded_docx/docProps/app.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/expanded_docx/docProps/core.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/expanded_docx/docProps/thumbnail.jpeg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/expanded_docx/word/_rels/document.xml.rels +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/expanded_docx/word/document.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/expanded_docx/word/fontTable.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/expanded_docx/word/numbering.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/expanded_docx/word/settings.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/expanded_docx/word/styles.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/expanded_docx/word/stylesWithEffects.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/expanded_docx/word/theme/theme1.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/expanded_docx/word/webSettings.xml +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/having-images.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/jfif-iguana.jpg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/jpeg_without_app0_and_app1.jpg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/little-endian.tif +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/monty-truth.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/python-icon.jpeg +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/python-icon.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/python-powered.png +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/python.bmp +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/sct-inner-content.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/snippets/add-row-col.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/snippets/inline.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/snippets/new-tbl.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/snippets/tbl-cells.txt +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/sonic.emf +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/sonic.gif +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_files/test.docx +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_package.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_section.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_settings.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_shape.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_shared.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/test_table.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/text/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/text/test_font.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/text/test_hyperlink.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/text/test_pagebreak.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/text/test_paragraph.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/text/test_parfmt.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/text/test_run.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/text/test_tabstops.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/unitdata.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/unitutil/__init__.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/unitutil/cxml.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/unitutil/file.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tests/unitutil/mock.py +0 -0
- {python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/tox.ini +0 -0
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
**Unreleased**
|
|
4
4
|
|
|
5
|
+
**0.3.1 (2026-09-08)**
|
|
6
|
+
|
|
7
|
+
- Fixed an issue where calling `itertext()` on oxml elements produced duplicated
|
|
8
|
+
text due to overridden `.text` properties.
|
|
9
|
+
|
|
5
10
|
**0.3.0 (2026-08-29)**
|
|
6
11
|
|
|
7
12
|
- Added opt-in package-level document sanitization for personal metadata,
|
|
@@ -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
|
|
|
Binary file
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
7
|
import re
|
|
8
|
-
from typing import TYPE_CHECKING, Any, Callable, Sequence, Type, TypeVar
|
|
8
|
+
from typing import TYPE_CHECKING, Any, Callable, Iterator, Sequence, Type, TypeVar
|
|
9
9
|
|
|
10
10
|
from lxml import etree
|
|
11
11
|
from lxml.etree import ElementBase, _Element # pyright: ignore[reportPrivateUsage]
|
|
@@ -653,6 +653,11 @@ 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
|
+
|
|
656
661
|
# -- lxml typing isn't quite right here, just ignore this error on _Element --
|
|
657
662
|
class BaseOxmlElement(etree.ElementBase, metaclass=MetaOxmlElement):
|
|
658
663
|
"""Effective base class for all custom element classes.
|
|
@@ -683,6 +688,22 @@ class BaseOxmlElement(etree.ElementBase, metaclass=MetaOxmlElement):
|
|
|
683
688
|
self.append(elm)
|
|
684
689
|
return elm
|
|
685
690
|
|
|
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
|
+
|
|
686
707
|
def remove_all(self, *tagnames: str) -> None:
|
|
687
708
|
"""Remove child elements with tagname (e.g. "a:p") in `tagnames`."""
|
|
688
709
|
for tagname in tagnames:
|
|
@@ -175,6 +175,7 @@ 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
|
|
178
179
|
features/steps/api.py
|
|
179
180
|
features/steps/block.py
|
|
180
181
|
features/steps/comments.py
|
|
@@ -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"
|
|
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)
|
|
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")
|
|
@@ -48,6 +48,16 @@ class DescribeBaseOxmlElement:
|
|
|
48
48
|
element.remove_all(*tagnames)
|
|
49
49
|
assert element.xml == expected_xml
|
|
50
50
|
|
|
51
|
+
def it_iterates_text_without_duplication_when_text_property_is_overridden(self):
|
|
52
|
+
elm = parse_xml(
|
|
53
|
+
'<w:p xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">'
|
|
54
|
+
"<w:r><w:t>foo</w:t></w:r>"
|
|
55
|
+
"<w:hyperlink><w:r><w:t>bar</w:t></w:r></w:hyperlink>"
|
|
56
|
+
"</w:p>"
|
|
57
|
+
)
|
|
58
|
+
assert "".join(elm.itertext()) == "foobar"
|
|
59
|
+
assert list(elm.itertext(qn("w:t"))) == ["foo", "bar"]
|
|
60
|
+
|
|
51
61
|
# fixtures ---------------------------------------------
|
|
52
62
|
|
|
53
63
|
@pytest.fixture(
|
|
@@ -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
|
|
File without changes
|
{python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/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.1}/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.1}/docs/dev/analysis/features/styles/latent-styles.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/styles/styles.rst
RENAMED
|
File without changes
|
{python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/table/cell-merge.rst
RENAMED
|
File without changes
|
|
File without changes
|
{python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/table/table-cell.rst
RENAMED
|
File without changes
|
{python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/table/table-props.rst
RENAMED
|
File without changes
|
{python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/table/table-row.rst
RENAMED
|
File without changes
|
|
File without changes
|
{python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/text/font-color.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/text/hyperlink.rst
RENAMED
|
File without changes
|
|
File without changes
|
{python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/text/paragraph-format.rst
RENAMED
|
File without changes
|
{python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/text/run-content.rst
RENAMED
|
File without changes
|
{python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/docs/dev/analysis/features/text/tab-stops.rst
RENAMED
|
File without changes
|
{python_docx_oss-0.3.0 → python_docx_oss-0.3.1}/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
|
|
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
|