python-docx-oss 0.1.0rc1__tar.gz → 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- python_docx_oss-0.2.0/HISTORY.md +91 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/MANIFEST.in +1 -1
- python_docx_oss-0.2.0/PKG-INFO +218 -0
- python_docx_oss-0.2.0/README.md +189 -0
- python_docx_oss-0.2.0/docs/_static/img/oss.png +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/conf.py +2 -2
- python_docx_oss-0.2.0/docs/dev/upstream-maintenance.rst +95 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/index.rst +19 -10
- python_docx_oss-0.2.0/docs/user/compatibility.rst +48 -0
- python_docx_oss-0.2.0/docs/user/custom-xml.rst +103 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/user/documents.rst +43 -18
- python_docx_oss-0.2.0/docs/user/install.rst +31 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/pyproject.toml +10 -3
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/requirements-test.txt +1 -1
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/__init__.py +1 -1
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/api.py +6 -3
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/document.py +12 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/image/constants.py +1 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/image/emf.py +2 -3
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/opc/rel.py +5 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/parts/customxml.py +12 -7
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/parts/document.py +20 -2
- python_docx_oss-0.2.0/src/python_docx_oss.egg-info/PKG-INFO +218 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/python_docx_oss.egg-info/SOURCES.txt +14 -1
- python_docx_oss-0.2.0/tests/fixtures/README.md +16 -0
- python_docx_oss-0.2.0/tests/fixtures/customxml/generate_fixture.py +127 -0
- python_docx_oss-0.2.0/tests/fixtures/customxml/multiple-custom-xml-parts.docx +0 -0
- python_docx_oss-0.2.0/tests/fixtures/documents/word-blank.docx +0 -0
- python_docx_oss-0.2.0/tests/fixtures/drawing/word-floating-picture.docx +0 -0
- python_docx_oss-0.2.0/tests/fixtures/fonts/word-east-asian-fonts.docx +0 -0
- python_docx_oss-0.2.0/tests/fixtures/images/word-svg-image.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/image/test_emf.py +3 -2
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/image/test_svg.py +0 -1
- python_docx_oss-0.2.0/tests/integration/__init__.py +1 -0
- python_docx_oss-0.2.0/tests/integration/customxml/__init__.py +1 -0
- python_docx_oss-0.2.0/tests/integration/customxml/test_custom_xml_roundtrip.py +120 -0
- python_docx_oss-0.2.0/tests/integration/test_word_roundtrip.py +182 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/opc/parts/test_customprops.py +0 -2
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/opc/test_customprops.py +7 -4
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/opc/test_phys_pkg.py +2 -2
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/opc/test_rel.py +12 -1
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/test_xmlchemy.py +4 -1
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/parts/test_customxml.py +19 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_api.py +20 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_document.py +8 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/text/test_font.py +8 -2
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/unitutil/cxml.py +3 -3
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tox.ini +1 -1
- python_docx_oss-0.1.0rc1/PKG-INFO +0 -57
- python_docx_oss-0.1.0rc1/README.md +0 -32
- python_docx_oss-0.1.0rc1/docs/_static/img/oss.png +0 -0
- python_docx_oss-0.1.0rc1/docs/user/custom-xml.rst +0 -66
- python_docx_oss-0.1.0rc1/docs/user/install.rst +0 -30
- python_docx_oss-0.1.0rc1/features/_scratch/test_out.docx +0 -0
- python_docx_oss-0.1.0rc1/src/python_docx_oss.egg-info/PKG-INFO +0 -57
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/LICENSE +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/Makefile +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/_static/.gitignore +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/_static/img/comment-parts.png +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/_static/img/example-docx-01.png +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/_static/img/hdrftr-01.png +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/_static/img/hdrftr-02.png +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/_templates/layout.html +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/_templates/sidebarlinks.html +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/_themes/armstrong/LICENSE +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/_themes/armstrong/layout.html +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/_themes/armstrong/rtd-themes.conf +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/_themes/armstrong/static/rtd.css_t +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/_themes/armstrong/theme.conf +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/_themes/armstrong/theme.conf.orig +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/comments.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/dml.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/document.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/enum/MsoColorType.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/enum/MsoThemeColorIndex.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/enum/WdAlignParagraph.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/enum/WdBuiltinStyle.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/enum/WdCellVerticalAlignment.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/enum/WdColorIndex.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/enum/WdLineSpacing.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/enum/WdOrientation.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/enum/WdRowAlignment.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/enum/WdRowHeightRule.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/enum/WdSectionStart.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/enum/WdStyleType.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/enum/WdTabAlignment.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/enum/WdTabLeader.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/enum/WdTableDirection.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/enum/WdUnderline.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/enum/index.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/section.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/settings.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/shape.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/shared.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/style.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/table.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/api/text.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/comments.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/coreprops.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/header.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/numbering.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/sections.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/settings.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/shapes/index.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/shapes/picture.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/shapes/shapes-inline-size.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/shapes/shapes-inline.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/styles/character-style.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/styles/index.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/styles/latent-styles.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/styles/paragraph-style.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/styles/style.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/styles/styles.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/table/cell-merge.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/table/index.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/table/table-cell.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/table/table-props.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/table/table-row.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/text/breaks.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/text/font-color.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/text/font-highlight-color.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/text/font.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/text/hyperlink.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/text/index.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/text/paragraph-format.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/text/run-content.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/text/tab-stops.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/features/text/underline.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/index.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/schema/ct_body.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/schema/ct_document.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/dev/analysis/schema/ct_p.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/requirements.txt +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/user/api-concepts.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/user/comments.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/user/custom-properties.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/user/hdrftr.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/user/quickstart.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/user/sections.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/user/shapes.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/user/styles-understanding.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/user/styles-using.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/user/tables.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/docs/user/text.rst +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/api-open-document.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/blk-add-paragraph.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/blk-add-table.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/blk-iter-inner-content.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/cmt-mutations.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/cmt-props.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/doc-access-collections.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/doc-access-sections.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/doc-add-comment.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/doc-add-heading.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/doc-add-page-break.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/doc-add-paragraph.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/doc-add-picture.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/doc-add-section.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/doc-add-table.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/doc-comments.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/doc-coreprops.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/doc-customprops.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/doc-settings.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/doc-styles.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/environment.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/hdr-header-footer.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/hlk-props.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/img-characterize-image.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/num-access-numbering-part.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/par-access-inner-content.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/par-access-parfmt.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/par-add-run.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/par-alignment-prop.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/par-clear-paragraph.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/par-insert-paragraph.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/par-set-text.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/par-style-prop.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/pbk-split-para.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/run-access-font.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/run-access-inner-content.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/run-add-content.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/run-add-picture.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/run-char-style.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/run-clear-run.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/run-enum-props.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/sct-section.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/shp-inline-shape-access.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/shp-inline-shape-size.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/api.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/block.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/comments.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/coreprops.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/customprops.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/document.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/font.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/hdrftr.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/helpers.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/hyperlink.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/image.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/numbering.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/pagebreak.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/paragraph.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/parfmt.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/section.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/settings.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/shape.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/shared.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/styles.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/table.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/tabstops.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/blk-containing-table.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/blk-paras-and-tables.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/comments-rich-para.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/court-exif.jpg +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/doc-access-sections.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/doc-add-section.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/doc-coreprops.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/doc-customprops-legacy.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/doc-customprops.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/doc-default.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/doc-no-coreprops.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/doc-no-customprops.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/doc-odd-even-hdrs.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/doc-word-default-blank.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/fnt-color.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/hdr-header-footer.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/jfif-300-dpi.jpg +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/jpeg420exif.jpg +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/lena.bmp +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/lena.gif +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/lena.tif +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/lena_std.jpg +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/monty-truth.png +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/mountain.bmp +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/num-having-numbering-part.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/par-alignment.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/par-hlink-frags.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/par-hyperlinks.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/par-known-paragraphs.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/par-known-styles.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/par-rendered-page-breaks.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/python-icon.jpeg +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/run-char-style.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/run-enumerated-props.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/sample.tif +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/sct-first-page-hdrftr.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/sct-inner-content.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/sct-section-props.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/set-no-settings-part.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/shp-inline-shape-access.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/sty-behav-props.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/sty-having-no-styles-part.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/sty-having-styles-part.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/sty-known-styles.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/tab-stops.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/tbl-2x2-table.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/tbl-cell-access.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/tbl-cell-props.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/tbl-col-props.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/tbl-having-applied-style.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/tbl-having-tables.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/tbl-on-off-props.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/tbl-props.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/test.png +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/txt-font-highlight-color.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/test_files/txt-font-props.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/steps/text.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/sty-access-font.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/sty-access-latent-styles.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/sty-access-parfmt.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/sty-add-style.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/sty-delete-style.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/sty-latent-add-del.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/sty-latent-props.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/sty-style-props.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/tab-access-tabs.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/tab-tabstop-props.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/tbl-add-row-or-col.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/tbl-cell-access.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/tbl-cell-add-table.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/tbl-cell-props.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/tbl-cell-text.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/tbl-col-props.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/tbl-item-access.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/tbl-merge-cells.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/tbl-props.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/tbl-row-props.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/tbl-style.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/txt-add-break.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/txt-font-color.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/txt-font-props.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/features/txt-parfmt-props.feature +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/requirements-dev.txt +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/requirements-docs.txt +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/requirements.txt +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/setup.cfg +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/blkcntnr.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/comments.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/dml/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/dml/color.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/drawing/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/enum/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/enum/base.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/enum/dml.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/enum/section.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/enum/shape.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/enum/style.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/enum/table.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/enum/text.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/exceptions.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/image/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/image/bmp.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/image/exceptions.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/image/gif.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/image/helpers.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/image/image.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/image/jpeg.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/image/png.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/image/svg.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/image/tiff.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/opc/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/opc/constants.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/opc/coreprops.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/opc/customprops.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/opc/exceptions.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/opc/oxml.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/opc/package.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/opc/packuri.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/opc/part.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/opc/parts/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/opc/parts/coreprops.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/opc/parts/customprops.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/opc/phys_pkg.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/opc/pkgreader.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/opc/pkgwriter.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/opc/shared.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/opc/spec.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/comments.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/coreprops.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/customprops.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/dml/CT_ExtensionList.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/document.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/drawing.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/exceptions.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/ns.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/numbering.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/parser.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/section.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/settings.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/shape.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/shared.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/simpletypes.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/styles.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/table.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/text/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/text/font.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/text/hyperlink.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/text/pagebreak.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/text/paragraph.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/text/parfmt.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/text/run.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/oxml/xmlchemy.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/package.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/parts/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/parts/comments.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/parts/hdrftr.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/parts/image.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/parts/numbering.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/parts/settings.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/parts/story.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/parts/styles.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/py.typed +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/section.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/settings.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/shape.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/shared.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/styles/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/styles/latent.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/styles/style.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/styles/styles.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/table.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-comments.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-docx-template/[Content_Types].xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-docx-template/_rels/.rels +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-docx-template/customXml/_rels/item1.xml.rels +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-docx-template/customXml/item1.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-docx-template/customXml/itemProps1.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-docx-template/docProps/app.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-docx-template/docProps/core.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-docx-template/docProps/thumbnail.jpeg +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-docx-template/word/_rels/document.xml.rels +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-docx-template/word/document.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-docx-template/word/fontTable.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-docx-template/word/numbering.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-docx-template/word/settings.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-docx-template/word/styles.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-docx-template/word/stylesWithEffects.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-docx-template/word/theme/theme1.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-docx-template/word/webSettings.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-footer.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-header.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-numbering.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-settings.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default-styles.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/templates/default.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/text/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/text/font.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/text/hyperlink.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/text/pagebreak.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/text/paragraph.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/text/parfmt.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/text/run.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/text/tabstops.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/docx/types.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/python_docx_oss.egg-info/dependency_links.txt +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/python_docx_oss.egg-info/requires.txt +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/src/python_docx_oss.egg-info/top_level.txt +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/conftest.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/dml/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/dml/test_color.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/image/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/image/test_bmp.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/image/test_gif.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/image/test_helpers.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/image/test_image.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/image/test_jpeg.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/image/test_png.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/image/test_tiff.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/opc/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/opc/parts/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/opc/parts/test_coreprops.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/opc/test_coreprops.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/opc/test_oxml.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/opc/test_package.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/opc/test_packuri.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/opc/test_part.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/opc/test_pkgreader.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/opc/test_pkgwriter.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/opc/unitdata/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/opc/unitdata/rels.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/opc/unitdata/types.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/parts/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/parts/test_document.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/parts/unitdata/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/parts/unitdata/document.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/test__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/test_comments.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/test_document.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/test_ns.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/test_section.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/test_styles.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/test_table.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/text/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/text/test_hyperlink.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/text/test_run.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/unitdata/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/unitdata/dml.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/unitdata/numbering.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/unitdata/section.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/unitdata/shared.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/unitdata/styles.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/unitdata/table.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/oxml/unitdata/text.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/parts/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/parts/test_comments.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/parts/test_document.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/parts/test_hdrftr.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/parts/test_image.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/parts/test_numbering.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/parts/test_settings.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/parts/test_story.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/parts/test_styles.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/styles/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/styles/test_latent.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/styles/test_style.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/styles/test_styles.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_blkcntnr.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_comments.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_drawing.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_enum.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/150-dpi.png +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/300-dpi.TIF +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/300-dpi.jpg +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/300-dpi.png +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/72-dpi.tiff +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/CVS_LOGO.WMF +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/blk-inner-content.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/exif-420-dpi.jpg +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/expanded_docx/[Content_Types].xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/expanded_docx/_rels/.rels +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/expanded_docx/customXml/_rels/item1.xml.rels +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/expanded_docx/customXml/item1.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/expanded_docx/customXml/itemProps1.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/expanded_docx/docProps/app.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/expanded_docx/docProps/core.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/expanded_docx/docProps/thumbnail.jpeg +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/expanded_docx/word/_rels/document.xml.rels +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/expanded_docx/word/document.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/expanded_docx/word/fontTable.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/expanded_docx/word/numbering.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/expanded_docx/word/settings.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/expanded_docx/word/styles.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/expanded_docx/word/stylesWithEffects.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/expanded_docx/word/theme/theme1.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/expanded_docx/word/webSettings.xml +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/having-images.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/jfif-iguana.jpg +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/jpeg_without_app0_and_app1.jpg +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/little-endian.tif +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/monty-truth.png +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/python-icon.jpeg +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/python-icon.png +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/python-powered.png +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/python.bmp +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/sct-inner-content.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/snippets/add-row-col.txt +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/snippets/inline.txt +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/snippets/new-tbl.txt +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/snippets/tbl-cells.txt +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/sonic.emf +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/sonic.gif +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_files/test.docx +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_package.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_section.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_settings.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_shape.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_shared.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/test_table.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/text/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/text/test_hyperlink.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/text/test_pagebreak.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/text/test_paragraph.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/text/test_parfmt.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/text/test_run.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/text/test_tabstops.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/unitdata.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/unitutil/__init__.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/unitutil/file.py +0 -0
- {python_docx_oss-0.1.0rc1 → python_docx_oss-0.2.0}/tests/unitutil/mock.py +0 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
## Release History
|
|
2
|
+
|
|
3
|
+
**0.2.0 (2026-08-24)**
|
|
4
|
+
|
|
5
|
+
- Added direct loading from raw DOCX bytes with ``Document(bytes)``.
|
|
6
|
+
- Added ``Document.to_bytes()`` for in-memory export and ``Document.copy()``
|
|
7
|
+
for independent document snapshots.
|
|
8
|
+
- Added safe removal of Custom XML parts, including their document and property
|
|
9
|
+
relationships.
|
|
10
|
+
- Added real-document EMF round-trip coverage and corrected the EMF MIME type.
|
|
11
|
+
- Documented the capability matrix, upstream maintenance policy, and
|
|
12
|
+
compatibility boundary with official ``python-docx``.
|
|
13
|
+
|
|
14
|
+
**0.1.1 (2026-08-21)**
|
|
15
|
+
|
|
16
|
+
- Added Python 3.14 support and CI coverage for Python 3.12 through 3.14.
|
|
17
|
+
- Added real Microsoft Word document round-trip coverage for floating pictures,
|
|
18
|
+
SVG images, East Asian fonts, and multiple Custom XML parts.
|
|
19
|
+
- Fixed automatic Custom XML part naming to select an available `itemN.xml`
|
|
20
|
+
name and reject explicit name collisions.
|
|
21
|
+
- Expanded the project overview, installation guide, in-memory document examples,
|
|
22
|
+
and Custom XML lifecycle documentation.
|
|
23
|
+
|
|
24
|
+
**0.1.0 (2026-02-02)**
|
|
25
|
+
|
|
26
|
+
- **UPSTREAM MERGE** with python-docx 1.2.0.
|
|
27
|
+
- Backward Compatibility: Fixed a regression where `Font.name` returned a dictionary. It now correctly returns a string (ASCII name) while supporting multi-script assignment via setter. Added `Font.eastAsia` and `Font.hAnsi` properties for fine-grained font control.
|
|
28
|
+
|
|
29
|
+
**0.0.12 (2025-12-03)**
|
|
30
|
+
|
|
31
|
+
- default dpi for jpeg #33
|
|
32
|
+
|
|
33
|
+
**0.0.11 (2025-11-17)**
|
|
34
|
+
|
|
35
|
+
- round-float viewbox and enhance svg unit parsing #31
|
|
36
|
+
|
|
37
|
+
**0.0.10 (2025-11-13)**
|
|
38
|
+
|
|
39
|
+
- Fix modern bool representations in .docx files. #29
|
|
40
|
+
- Fix \_dimensions_from_stream doesn't handle units properly from svg. #30
|
|
41
|
+
|
|
42
|
+
**0.0.9 (2024-11-26)**
|
|
43
|
+
|
|
44
|
+
- svg file support in add_picture. #27
|
|
45
|
+
- update docs.
|
|
46
|
+
|
|
47
|
+
**0.0.8 (2024-11-22)**
|
|
48
|
+
|
|
49
|
+
- EastAsia font support fixes. #25
|
|
50
|
+
- Update README.md. #26
|
|
51
|
+
|
|
52
|
+
**0.0.7 (2022-10-29)**
|
|
53
|
+
|
|
54
|
+
- add emf image file support. #24
|
|
55
|
+
|
|
56
|
+
**0.0.6 (2022-10-21)**
|
|
57
|
+
|
|
58
|
+
- change default custom xml file name to item1. #23
|
|
59
|
+
|
|
60
|
+
**0.0.5 (2022-8-08)**
|
|
61
|
+
|
|
62
|
+
- minor refactor custom-properties.
|
|
63
|
+
- add add_float_picture in Document. #21
|
|
64
|
+
|
|
65
|
+
**0.0.4 (2022-7-21)**
|
|
66
|
+
|
|
67
|
+
- public python-docx-oss docs @ readthedocs.
|
|
68
|
+
- add delete_item in CustomXmlPart. #17
|
|
69
|
+
|
|
70
|
+
**0.0.3 (2022-7-01)**
|
|
71
|
+
|
|
72
|
+
- Change method text to texts in CT_R. #14
|
|
73
|
+
- Add external target_ref setter. #15
|
|
74
|
+
- Blacken all Python files.
|
|
75
|
+
|
|
76
|
+
**0.0.2 (2022-06-24)**
|
|
77
|
+
|
|
78
|
+
- Add custom xml support. #10
|
|
79
|
+
- Add Part **eq**.
|
|
80
|
+
- Add Part element setter.
|
|
81
|
+
- Add Relationships parts_with_reltype.
|
|
82
|
+
|
|
83
|
+
**0.0.1 (2022-06-16)**
|
|
84
|
+
|
|
85
|
+
- Only support Python3.8, 3.9 and 3.10.
|
|
86
|
+
- Add custom properties support. #2
|
|
87
|
+
- Add drop_rels in Package. #5
|
|
88
|
+
- Add drop_rels in Part. #5
|
|
89
|
+
- Add default NumberingPart. #4
|
|
90
|
+
- Fix Python3.8+ **dict** TypeError. #6
|
|
91
|
+
- Add some typehint.
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: python-docx-oss
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Create, read, and update Microsoft Word .docx files.
|
|
5
|
+
Author: Ethan St Lee
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Changelog, https://github.com/lsaint/python-docx-oss/blob/master/HISTORY.md
|
|
8
|
+
Project-URL: Documentation, https://python-docx-oss.readthedocs.io/en/latest/
|
|
9
|
+
Project-URL: Issues, https://github.com/lsaint/python-docx-oss/issues
|
|
10
|
+
Project-URL: Repository, https://github.com/lsaint/python-docx-oss
|
|
11
|
+
Keywords: docx,office,openxml,word
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
21
|
+
Classifier: Topic :: Office/Business :: Office Suites
|
|
22
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
23
|
+
Requires-Python: >=3.12
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
License-File: LICENSE
|
|
26
|
+
Requires-Dist: lxml>=3.1.0
|
|
27
|
+
Requires-Dist: typing_extensions>=4.9.0
|
|
28
|
+
Dynamic: license-file
|
|
29
|
+
|
|
30
|
+
<p align="center">
|
|
31
|
+
<img src="https://raw.githubusercontent.com/lsaint/python-docx-oss/master/docs/_static/img/oss.png" width="400" alt="python-docx-oss"/>
|
|
32
|
+
</p>
|
|
33
|
+
|
|
34
|
+
<p align="center">
|
|
35
|
+
<strong>A Python SDK for advanced creation and manipulation of Microsoft Word <code>.docx</code> files.</strong>
|
|
36
|
+
</p>
|
|
37
|
+
|
|
38
|
+
<p align="center">
|
|
39
|
+
<a href="https://pypi.org/project/python-docx-oss/"><img alt="PyPI" src="https://img.shields.io/pypi/v/python-docx-oss"></a>
|
|
40
|
+
<a href="https://pypi.org/project/python-docx-oss/"><img alt="Python versions" src="https://img.shields.io/pypi/pyversions/python-docx-oss.svg"></a>
|
|
41
|
+
<a href="https://github.com/astral-sh/ruff"><img alt="Code style: Ruff" src="https://img.shields.io/badge/code%20style-ruff-FF6B6B.svg?logo=ruff&logoColor=white"></a>
|
|
42
|
+
<a href="https://github.com/lsaint/python-docx-oss/blob/master/LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg"></a>
|
|
43
|
+
</p>
|
|
44
|
+
|
|
45
|
+
## Overview
|
|
46
|
+
|
|
47
|
+
`python-docx-oss` is an independently evolving DOCX SDK built on the proven API
|
|
48
|
+
foundation of [`python-docx`](https://github.com/python-openxml/python-docx). It keeps
|
|
49
|
+
the familiar `docx` programming model while extending it for advanced OOXML and Open
|
|
50
|
+
Packaging Convention (OPC) workflows.
|
|
51
|
+
|
|
52
|
+
Use it when an application needs more than basic paragraphs and tables: custom document
|
|
53
|
+
metadata, application-owned XML, vector images, floating pictures, East Asian fonts,
|
|
54
|
+
or low-level package and relationship access.
|
|
55
|
+
|
|
56
|
+
## Capability Matrix
|
|
57
|
+
|
|
58
|
+
| Capability | Status | Primary API |
|
|
59
|
+
| --- | --- | --- |
|
|
60
|
+
| Documents, paragraphs, tables, styles, sections, headers, and footers | Stable | `Document()` and document object APIs |
|
|
61
|
+
| Custom document properties | Stable | `document.custom_properties` |
|
|
62
|
+
| Custom XML lifecycle | Stable | `add_custom_xml_part()`, `delete_custom_xml_part()` |
|
|
63
|
+
| SVG and EMF images | Stable | `add_picture()` |
|
|
64
|
+
| Inline and floating pictures | Stable | `add_picture()`, `add_float_picture()` |
|
|
65
|
+
| Latin and East Asian font controls | Stable | `run.font.name`, `run.font.hAnsi`, `run.font.eastAsia` |
|
|
66
|
+
| Low-level OPC parts and relationships | Stable | `document.part.package`, `part.rels` |
|
|
67
|
+
| In-memory read, export, and independent copies | Stable | `Document()`, `to_bytes()`, `copy()` |
|
|
68
|
+
| Package inspection, diff, and sanitization | Planned | — |
|
|
69
|
+
|
|
70
|
+
## Installation
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
python -m pip install python-docx-oss
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
The distribution name is `python-docx-oss`, but the Python import namespace remains
|
|
77
|
+
`docx`:
|
|
78
|
+
|
|
79
|
+
```python
|
|
80
|
+
from docx import Document
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
> [!WARNING]
|
|
84
|
+
> `python-docx` and `python-docx-oss` provide the same `docx` import namespace. Do not
|
|
85
|
+
> install both distributions in the same Python environment.
|
|
86
|
+
|
|
87
|
+
`python-docx-oss` currently supports Python 3.12, 3.13, and 3.14.
|
|
88
|
+
|
|
89
|
+
## Quick Start
|
|
90
|
+
|
|
91
|
+
Create a document entirely in memory:
|
|
92
|
+
|
|
93
|
+
```python
|
|
94
|
+
from io import BytesIO
|
|
95
|
+
|
|
96
|
+
from docx import Document
|
|
97
|
+
|
|
98
|
+
document = Document()
|
|
99
|
+
document.add_heading("Quarterly Report", level=1)
|
|
100
|
+
document.add_paragraph("Generated entirely in memory.")
|
|
101
|
+
|
|
102
|
+
output = BytesIO()
|
|
103
|
+
document.save(output)
|
|
104
|
+
|
|
105
|
+
docx_bytes = output.getvalue()
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
The same APIs also accept filesystem paths:
|
|
109
|
+
|
|
110
|
+
```python
|
|
111
|
+
document = Document("input.docx")
|
|
112
|
+
document.add_paragraph("Appended by python-docx-oss.")
|
|
113
|
+
document.save("output.docx")
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Advanced Capabilities
|
|
117
|
+
|
|
118
|
+
### Custom properties
|
|
119
|
+
|
|
120
|
+
```python
|
|
121
|
+
document = Document()
|
|
122
|
+
document.custom_properties["workflow_status"] = "approved"
|
|
123
|
+
document.custom_properties["revision"] = 3
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Custom properties are visible in Microsoft Word and stored in
|
|
127
|
+
`/docProps/custom.xml`. See [Working with custom
|
|
128
|
+
properties](docs/user/custom-properties.rst).
|
|
129
|
+
|
|
130
|
+
### Custom XML
|
|
131
|
+
|
|
132
|
+
```python
|
|
133
|
+
custom_xml = document.part.add_custom_xml_part(
|
|
134
|
+
'<order xmlns="urn:example:orders" id="A-001"/>',
|
|
135
|
+
)
|
|
136
|
+
custom_xml.add_item("status", "ready")
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
See [Working with Custom XML](docs/user/custom-xml.rst) for lifecycle and compatibility
|
|
140
|
+
considerations.
|
|
141
|
+
|
|
142
|
+
### East Asian fonts
|
|
143
|
+
|
|
144
|
+
```python
|
|
145
|
+
run = document.add_paragraph().add_run("English 与中文")
|
|
146
|
+
run.font.name = "Open Sans"
|
|
147
|
+
run.font.eastAsia = "Microsoft YaHei"
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
SVG and EMF streams can be passed to the standard picture APIs. Floating pictures are
|
|
151
|
+
available through `Document.add_float_picture()` and `Run.add_float_picture()`.
|
|
152
|
+
|
|
153
|
+
## Compatibility and Scope
|
|
154
|
+
|
|
155
|
+
- The project maintains broad compatibility with the public `python-docx` API while
|
|
156
|
+
following its own versioning and product roadmap.
|
|
157
|
+
- Compatibility does not extend to every private or internal `python-docx` API. Test
|
|
158
|
+
those integrations before migrating production systems.
|
|
159
|
+
- The SDK focuses exclusively on DOCX. It is not a general XLSX/PPTX Office suite.
|
|
160
|
+
- It edits document structure but does not implement Word's page-layout rendering
|
|
161
|
+
engine.
|
|
162
|
+
- CLI, MCP, web, desktop, and Agent runtimes belong in separate packages that consume
|
|
163
|
+
this SDK.
|
|
164
|
+
|
|
165
|
+
## Documentation
|
|
166
|
+
|
|
167
|
+
- [Documentation site](https://python-docx-oss.readthedocs.io/en/latest/)
|
|
168
|
+
- [Installation guide](docs/user/install.rst)
|
|
169
|
+
- [Quickstart](docs/user/quickstart.rst)
|
|
170
|
+
- [User guide](docs/index.rst)
|
|
171
|
+
- [API reference](docs/index.rst#api-documentation)
|
|
172
|
+
- [Custom properties](docs/user/custom-properties.rst)
|
|
173
|
+
- [Custom XML](docs/user/custom-xml.rst)
|
|
174
|
+
- [python-docx compatibility](docs/user/compatibility.rst)
|
|
175
|
+
- [Upstream maintenance](docs/dev/upstream-maintenance.rst)
|
|
176
|
+
- [Release history](HISTORY.md)
|
|
177
|
+
|
|
178
|
+
## Quality and Testing
|
|
179
|
+
|
|
180
|
+
The test suite combines unit and acceptance coverage with in-memory round-trip tests
|
|
181
|
+
using documents created by Microsoft Word. The integration fixtures cover floating
|
|
182
|
+
pictures, SVG fallback relationships, East Asian fonts, Custom XML parts, and core OPC
|
|
183
|
+
package preservation.
|
|
184
|
+
|
|
185
|
+
For local development:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
uv sync
|
|
189
|
+
uv run pytest
|
|
190
|
+
uv run ruff check .
|
|
191
|
+
uv run pyright
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Project Status
|
|
195
|
+
|
|
196
|
+
The current focus is stabilizing the independent SDK baseline, its in-memory workflows,
|
|
197
|
+
and its advanced OOXML capabilities before expanding document inspection, comparison,
|
|
198
|
+
sanitization, composition, and validation APIs.
|
|
199
|
+
|
|
200
|
+
## Credits
|
|
201
|
+
|
|
202
|
+
This project builds on the original work of
|
|
203
|
+
[`python-docx`](https://github.com/python-openxml/python-docx) creator Steve Canny and
|
|
204
|
+
its contributors. `python-docx-oss` is maintained by Ethan St Lee and its contributors.
|
|
205
|
+
|
|
206
|
+
## Why “OSS”?
|
|
207
|
+
|
|
208
|
+
In Brazilian jiu-jitsu, “oss” is a greeting and an expression of respect. It reflects
|
|
209
|
+
the same spirit of discipline and collaboration behind this project.
|
|
210
|
+
|
|
211
|
+
## License
|
|
212
|
+
|
|
213
|
+
`python-docx-oss` is released under the [MIT License](LICENSE).
|
|
214
|
+
|
|
215
|
+
## Support
|
|
216
|
+
|
|
217
|
+
If this project is useful to you, you can support its continued development through
|
|
218
|
+
the [donation page](https://lsaint.github.io/donation/?utm_source=github&utm_medium=readme&utm_campaign=python-docx-oss).
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/lsaint/python-docx-oss/master/docs/_static/img/oss.png" width="400" alt="python-docx-oss"/>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<strong>A Python SDK for advanced creation and manipulation of Microsoft Word <code>.docx</code> files.</strong>
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="https://pypi.org/project/python-docx-oss/"><img alt="PyPI" src="https://img.shields.io/pypi/v/python-docx-oss"></a>
|
|
11
|
+
<a href="https://pypi.org/project/python-docx-oss/"><img alt="Python versions" src="https://img.shields.io/pypi/pyversions/python-docx-oss.svg"></a>
|
|
12
|
+
<a href="https://github.com/astral-sh/ruff"><img alt="Code style: Ruff" src="https://img.shields.io/badge/code%20style-ruff-FF6B6B.svg?logo=ruff&logoColor=white"></a>
|
|
13
|
+
<a href="https://github.com/lsaint/python-docx-oss/blob/master/LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg"></a>
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
|
|
18
|
+
`python-docx-oss` is an independently evolving DOCX SDK built on the proven API
|
|
19
|
+
foundation of [`python-docx`](https://github.com/python-openxml/python-docx). It keeps
|
|
20
|
+
the familiar `docx` programming model while extending it for advanced OOXML and Open
|
|
21
|
+
Packaging Convention (OPC) workflows.
|
|
22
|
+
|
|
23
|
+
Use it when an application needs more than basic paragraphs and tables: custom document
|
|
24
|
+
metadata, application-owned XML, vector images, floating pictures, East Asian fonts,
|
|
25
|
+
or low-level package and relationship access.
|
|
26
|
+
|
|
27
|
+
## Capability Matrix
|
|
28
|
+
|
|
29
|
+
| Capability | Status | Primary API |
|
|
30
|
+
| --- | --- | --- |
|
|
31
|
+
| Documents, paragraphs, tables, styles, sections, headers, and footers | Stable | `Document()` and document object APIs |
|
|
32
|
+
| Custom document properties | Stable | `document.custom_properties` |
|
|
33
|
+
| Custom XML lifecycle | Stable | `add_custom_xml_part()`, `delete_custom_xml_part()` |
|
|
34
|
+
| SVG and EMF images | Stable | `add_picture()` |
|
|
35
|
+
| Inline and floating pictures | Stable | `add_picture()`, `add_float_picture()` |
|
|
36
|
+
| Latin and East Asian font controls | Stable | `run.font.name`, `run.font.hAnsi`, `run.font.eastAsia` |
|
|
37
|
+
| Low-level OPC parts and relationships | Stable | `document.part.package`, `part.rels` |
|
|
38
|
+
| In-memory read, export, and independent copies | Stable | `Document()`, `to_bytes()`, `copy()` |
|
|
39
|
+
| Package inspection, diff, and sanitization | Planned | — |
|
|
40
|
+
|
|
41
|
+
## Installation
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
python -m pip install python-docx-oss
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
The distribution name is `python-docx-oss`, but the Python import namespace remains
|
|
48
|
+
`docx`:
|
|
49
|
+
|
|
50
|
+
```python
|
|
51
|
+
from docx import Document
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
> [!WARNING]
|
|
55
|
+
> `python-docx` and `python-docx-oss` provide the same `docx` import namespace. Do not
|
|
56
|
+
> install both distributions in the same Python environment.
|
|
57
|
+
|
|
58
|
+
`python-docx-oss` currently supports Python 3.12, 3.13, and 3.14.
|
|
59
|
+
|
|
60
|
+
## Quick Start
|
|
61
|
+
|
|
62
|
+
Create a document entirely in memory:
|
|
63
|
+
|
|
64
|
+
```python
|
|
65
|
+
from io import BytesIO
|
|
66
|
+
|
|
67
|
+
from docx import Document
|
|
68
|
+
|
|
69
|
+
document = Document()
|
|
70
|
+
document.add_heading("Quarterly Report", level=1)
|
|
71
|
+
document.add_paragraph("Generated entirely in memory.")
|
|
72
|
+
|
|
73
|
+
output = BytesIO()
|
|
74
|
+
document.save(output)
|
|
75
|
+
|
|
76
|
+
docx_bytes = output.getvalue()
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
The same APIs also accept filesystem paths:
|
|
80
|
+
|
|
81
|
+
```python
|
|
82
|
+
document = Document("input.docx")
|
|
83
|
+
document.add_paragraph("Appended by python-docx-oss.")
|
|
84
|
+
document.save("output.docx")
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Advanced Capabilities
|
|
88
|
+
|
|
89
|
+
### Custom properties
|
|
90
|
+
|
|
91
|
+
```python
|
|
92
|
+
document = Document()
|
|
93
|
+
document.custom_properties["workflow_status"] = "approved"
|
|
94
|
+
document.custom_properties["revision"] = 3
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Custom properties are visible in Microsoft Word and stored in
|
|
98
|
+
`/docProps/custom.xml`. See [Working with custom
|
|
99
|
+
properties](docs/user/custom-properties.rst).
|
|
100
|
+
|
|
101
|
+
### Custom XML
|
|
102
|
+
|
|
103
|
+
```python
|
|
104
|
+
custom_xml = document.part.add_custom_xml_part(
|
|
105
|
+
'<order xmlns="urn:example:orders" id="A-001"/>',
|
|
106
|
+
)
|
|
107
|
+
custom_xml.add_item("status", "ready")
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
See [Working with Custom XML](docs/user/custom-xml.rst) for lifecycle and compatibility
|
|
111
|
+
considerations.
|
|
112
|
+
|
|
113
|
+
### East Asian fonts
|
|
114
|
+
|
|
115
|
+
```python
|
|
116
|
+
run = document.add_paragraph().add_run("English 与中文")
|
|
117
|
+
run.font.name = "Open Sans"
|
|
118
|
+
run.font.eastAsia = "Microsoft YaHei"
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
SVG and EMF streams can be passed to the standard picture APIs. Floating pictures are
|
|
122
|
+
available through `Document.add_float_picture()` and `Run.add_float_picture()`.
|
|
123
|
+
|
|
124
|
+
## Compatibility and Scope
|
|
125
|
+
|
|
126
|
+
- The project maintains broad compatibility with the public `python-docx` API while
|
|
127
|
+
following its own versioning and product roadmap.
|
|
128
|
+
- Compatibility does not extend to every private or internal `python-docx` API. Test
|
|
129
|
+
those integrations before migrating production systems.
|
|
130
|
+
- The SDK focuses exclusively on DOCX. It is not a general XLSX/PPTX Office suite.
|
|
131
|
+
- It edits document structure but does not implement Word's page-layout rendering
|
|
132
|
+
engine.
|
|
133
|
+
- CLI, MCP, web, desktop, and Agent runtimes belong in separate packages that consume
|
|
134
|
+
this SDK.
|
|
135
|
+
|
|
136
|
+
## Documentation
|
|
137
|
+
|
|
138
|
+
- [Documentation site](https://python-docx-oss.readthedocs.io/en/latest/)
|
|
139
|
+
- [Installation guide](docs/user/install.rst)
|
|
140
|
+
- [Quickstart](docs/user/quickstart.rst)
|
|
141
|
+
- [User guide](docs/index.rst)
|
|
142
|
+
- [API reference](docs/index.rst#api-documentation)
|
|
143
|
+
- [Custom properties](docs/user/custom-properties.rst)
|
|
144
|
+
- [Custom XML](docs/user/custom-xml.rst)
|
|
145
|
+
- [python-docx compatibility](docs/user/compatibility.rst)
|
|
146
|
+
- [Upstream maintenance](docs/dev/upstream-maintenance.rst)
|
|
147
|
+
- [Release history](HISTORY.md)
|
|
148
|
+
|
|
149
|
+
## Quality and Testing
|
|
150
|
+
|
|
151
|
+
The test suite combines unit and acceptance coverage with in-memory round-trip tests
|
|
152
|
+
using documents created by Microsoft Word. The integration fixtures cover floating
|
|
153
|
+
pictures, SVG fallback relationships, East Asian fonts, Custom XML parts, and core OPC
|
|
154
|
+
package preservation.
|
|
155
|
+
|
|
156
|
+
For local development:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
uv sync
|
|
160
|
+
uv run pytest
|
|
161
|
+
uv run ruff check .
|
|
162
|
+
uv run pyright
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Project Status
|
|
166
|
+
|
|
167
|
+
The current focus is stabilizing the independent SDK baseline, its in-memory workflows,
|
|
168
|
+
and its advanced OOXML capabilities before expanding document inspection, comparison,
|
|
169
|
+
sanitization, composition, and validation APIs.
|
|
170
|
+
|
|
171
|
+
## Credits
|
|
172
|
+
|
|
173
|
+
This project builds on the original work of
|
|
174
|
+
[`python-docx`](https://github.com/python-openxml/python-docx) creator Steve Canny and
|
|
175
|
+
its contributors. `python-docx-oss` is maintained by Ethan St Lee and its contributors.
|
|
176
|
+
|
|
177
|
+
## Why “OSS”?
|
|
178
|
+
|
|
179
|
+
In Brazilian jiu-jitsu, “oss” is a greeting and an expression of respect. It reflects
|
|
180
|
+
the same spirit of discipline and collaboration behind this project.
|
|
181
|
+
|
|
182
|
+
## License
|
|
183
|
+
|
|
184
|
+
`python-docx-oss` is released under the [MIT License](LICENSE).
|
|
185
|
+
|
|
186
|
+
## Support
|
|
187
|
+
|
|
188
|
+
If this project is useful to you, you can support its continued development through
|
|
189
|
+
the [donation page](https://lsaint.github.io/donation/?utm_source=github&utm_medium=readme&utm_campaign=python-docx-oss).
|
|
Binary file
|
|
@@ -20,8 +20,8 @@ from docx import __version__ # noqa
|
|
|
20
20
|
# -- Project information -----------------------------------------------------
|
|
21
21
|
|
|
22
22
|
project = "python-docx-oss"
|
|
23
|
-
copyright = "2022, Ethan St
|
|
24
|
-
author = "Ethan St
|
|
23
|
+
copyright = "2022-2026, Ethan St Lee"
|
|
24
|
+
author = "Ethan St Lee"
|
|
25
25
|
|
|
26
26
|
# The full version, including alpha/beta/rc tags
|
|
27
27
|
release = __version__
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
Upstream maintenance
|
|
2
|
+
====================
|
|
3
|
+
|
|
4
|
+
``python-docx-oss`` evolves as an independent DOCX SDK. Its source, tests,
|
|
5
|
+
versioning, and releases are authoritative in this repository. The official
|
|
6
|
+
`python-docx repository <https://github.com/python-openxml/python-docx>`_ is an
|
|
7
|
+
upstream source of compatible APIs, bug fixes, and OPC/WordprocessingML
|
|
8
|
+
improvements; it is not the development repository for ``python-docx-oss``.
|
|
9
|
+
|
|
10
|
+
Upstream baseline
|
|
11
|
+
-----------------
|
|
12
|
+
|
|
13
|
+
The current upstream baseline is ``python-docx v1.2.0`` at commit
|
|
14
|
+
``e45454602b53e8e572b179ccf1c91093ec9f4ed7``.
|
|
15
|
+
|
|
16
|
+
This baseline identifies the last official release whose changes have been
|
|
17
|
+
evaluated as a whole. It does not imply compatibility with every private or
|
|
18
|
+
internal upstream API.
|
|
19
|
+
|
|
20
|
+
No local repository layout is required. A maintainer may obtain upstream source
|
|
21
|
+
using a temporary clone, a read-only Git remote, a release archive, or another
|
|
22
|
+
equivalent method. Maintenance instructions and project documentation must not
|
|
23
|
+
depend on sibling directories, personal filesystem paths, or local-only
|
|
24
|
+
branches.
|
|
25
|
+
|
|
26
|
+
When to evaluate upstream
|
|
27
|
+
-------------------------
|
|
28
|
+
|
|
29
|
+
Evaluate upstream changes when:
|
|
30
|
+
|
|
31
|
+
* ``python-docx`` publishes a release;
|
|
32
|
+
* upstream fixes a security, data-loss, or document-compatibility issue;
|
|
33
|
+
* a supported downstream workflow needs a new standard API; or
|
|
34
|
+
* an upcoming ``python-docx-oss`` release needs a baseline refresh.
|
|
35
|
+
|
|
36
|
+
Continuous synchronization with individual upstream commits is not required.
|
|
37
|
+
|
|
38
|
+
Integration workflow
|
|
39
|
+
--------------------
|
|
40
|
+
|
|
41
|
+
#. Obtain the target upstream tag or commit and compare it with the recorded
|
|
42
|
+
baseline.
|
|
43
|
+
#. Review release notes and classify changes to public APIs, OPC packaging,
|
|
44
|
+
XML handling, templates, schemas, tests, and documentation.
|
|
45
|
+
#. Create a dedicated branch in ``python-docx-oss`` for the integration. The
|
|
46
|
+
branch name and the location used to obtain upstream source are not part of
|
|
47
|
+
the public maintenance contract.
|
|
48
|
+
#. Integrate the relevant changes as a reviewable change set. Preserve upstream
|
|
49
|
+
history when practical, but prefer a clear, auditable result over a blind
|
|
50
|
+
merge.
|
|
51
|
+
#. Resolve conflicts according to the compatibility rules below.
|
|
52
|
+
#. Run the full verification gates and review the package artifacts.
|
|
53
|
+
#. Update this baseline, compatibility notes, and ``HISTORY.md`` in the same
|
|
54
|
+
integration change.
|
|
55
|
+
|
|
56
|
+
Compatibility and conflict rules
|
|
57
|
+
--------------------------------
|
|
58
|
+
|
|
59
|
+
Standard public ``python-docx`` behavior is preferred unless adopting it would
|
|
60
|
+
break an API intentionally supported by ``python-docx-oss``. An upstream
|
|
61
|
+
integration must preserve the supported capabilities documented in the
|
|
62
|
+
Capability Matrix and covered by the regression test suite.
|
|
63
|
+
|
|
64
|
+
Compatibility with upstream private APIs is not guaranteed. Intentional public
|
|
65
|
+
API differences must be recorded in compatibility or divergence notes rather
|
|
66
|
+
than hidden in conflict-resolution commits.
|
|
67
|
+
|
|
68
|
+
Verification gates
|
|
69
|
+
------------------
|
|
70
|
+
|
|
71
|
+
An upstream integration is complete only when the repository CI passes. This
|
|
72
|
+
includes:
|
|
73
|
+
|
|
74
|
+
* unit, integration, and acceptance tests on all supported Python versions;
|
|
75
|
+
* lint, formatting, and scoped type checks;
|
|
76
|
+
* documentation and distribution builds; and
|
|
77
|
+
* real-DOCX round trips required by the Capability Matrix and regression test
|
|
78
|
+
suite.
|
|
79
|
+
|
|
80
|
+
The resulting wheel and source distribution must contain the expected package
|
|
81
|
+
data and install without also installing the official ``python-docx``
|
|
82
|
+
distribution, because both projects provide the ``docx`` import namespace.
|
|
83
|
+
|
|
84
|
+
Recording the result
|
|
85
|
+
--------------------
|
|
86
|
+
|
|
87
|
+
For each completed baseline refresh, record:
|
|
88
|
+
|
|
89
|
+
* the upstream tag and resolved commit;
|
|
90
|
+
* the material APIs and fixes adopted;
|
|
91
|
+
* intentionally omitted upstream changes and their rationale; and
|
|
92
|
+
* any new compatibility boundary visible to users.
|
|
93
|
+
|
|
94
|
+
Temporary comparison checkouts, remotes, and branches are local implementation
|
|
95
|
+
details and are not part of the permanent project record.
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
You can adapt this file completely to your liking, but it should at least
|
|
4
|
-
contain the root `toctree` directive.
|
|
5
|
-
|
|
6
|
-
Welcome to python-docx-oss's documentation!
|
|
7
|
-
===========================================
|
|
1
|
+
python-docx-oss documentation
|
|
2
|
+
=============================
|
|
8
3
|
|
|
9
4
|
Release v\ |release| (:ref:`Installation <install>`)
|
|
10
5
|
|
|
11
|
-
*python-docx-oss* is
|
|
6
|
+
*python-docx-oss* is an independently developed Python SDK for creating,
|
|
7
|
+
reading, and updating Microsoft Word (``.docx``) files. It combines familiar
|
|
8
|
+
document APIs with advanced WordprocessingML capabilities such as floating and
|
|
9
|
+
vector images, East Asian font control, custom properties, and Custom XML.
|
|
12
10
|
|
|
13
11
|
|
|
14
12
|
What it can do
|
|
@@ -16,7 +14,17 @@ What it can do
|
|
|
16
14
|
|
|
17
15
|
.. |img| image:: /_static/img/example-docx-01.png
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
The library supports common document operations, including paragraphs, text
|
|
18
|
+
formatting, tables, sections, headers, footers, comments, and images. It also
|
|
19
|
+
supports capabilities needed by more demanding document workflows:
|
|
20
|
+
|
|
21
|
+
* floating images with position and text wrapping;
|
|
22
|
+
* SVG and EMF vector images;
|
|
23
|
+
* separate Latin and East Asian font settings;
|
|
24
|
+
* document custom properties; and
|
|
25
|
+
* multiple Custom XML parts that survive a load/save round trip.
|
|
26
|
+
|
|
27
|
+
Here is a small example:
|
|
20
28
|
|
|
21
29
|
::
|
|
22
30
|
|
|
@@ -89,6 +97,7 @@ User Guide
|
|
|
89
97
|
user/shapes
|
|
90
98
|
user/custom-properties
|
|
91
99
|
user/custom-xml
|
|
100
|
+
user/compatibility
|
|
92
101
|
|
|
93
102
|
|
|
94
103
|
API Documentation
|
|
@@ -109,11 +118,11 @@ API Documentation
|
|
|
109
118
|
api/shared
|
|
110
119
|
api/enum/index
|
|
111
120
|
|
|
112
|
-
|
|
113
121
|
Contributor Guide
|
|
114
122
|
-----------------
|
|
115
123
|
|
|
116
124
|
.. toctree::
|
|
117
125
|
:maxdepth: 1
|
|
118
126
|
|
|
127
|
+
dev/upstream-maintenance
|
|
119
128
|
dev/analysis/index
|