python-docx-oss 0.3.1__tar.gz → 0.3.3__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.
Files changed (543) hide show
  1. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/HISTORY.md +14 -2
  2. {python_docx_oss-0.3.1/src/python_docx_oss.egg-info → python_docx_oss-0.3.3}/PKG-INFO +6 -1
  3. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/README.md +5 -0
  4. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/user/compatibility.rst +8 -0
  5. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/_scratch/test_out.docx +0 -0
  6. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/__init__.py +1 -1
  7. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/text/hyperlink.py +2 -2
  8. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/text/paragraph.py +2 -2
  9. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/text/run.py +8 -12
  10. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/xmlchemy.py +1 -22
  11. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/table.py +1 -1
  12. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/text/hyperlink.py +1 -1
  13. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/text/paragraph.py +1 -1
  14. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/text/run.py +2 -2
  15. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3/src/python_docx_oss.egg-info}/PKG-INFO +6 -1
  16. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/integration/customxml/test_custom_xml_roundtrip.py +1 -1
  17. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/integration/test_word_roundtrip.py +1 -1
  18. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/test_xmlchemy.py +20 -1
  19. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/text/test_hyperlink.py +3 -2
  20. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/text/test_run.py +7 -3
  21. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/LICENSE +0 -0
  22. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/MANIFEST.in +0 -0
  23. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/Makefile +0 -0
  24. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/_static/.gitignore +0 -0
  25. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/_static/img/comment-parts.png +0 -0
  26. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/_static/img/example-docx-01.png +0 -0
  27. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/_static/img/hdrftr-01.png +0 -0
  28. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/_static/img/hdrftr-02.png +0 -0
  29. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/_static/img/oss.png +0 -0
  30. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/_templates/layout.html +0 -0
  31. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/_templates/sidebarlinks.html +0 -0
  32. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/_themes/armstrong/LICENSE +0 -0
  33. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/_themes/armstrong/layout.html +0 -0
  34. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/_themes/armstrong/rtd-themes.conf +0 -0
  35. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/_themes/armstrong/static/rtd.css_t +0 -0
  36. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/_themes/armstrong/theme.conf +0 -0
  37. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/_themes/armstrong/theme.conf.orig +0 -0
  38. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/comments.rst +0 -0
  39. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/dml.rst +0 -0
  40. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/document.rst +0 -0
  41. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/enum/MsoColorType.rst +0 -0
  42. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/enum/MsoThemeColorIndex.rst +0 -0
  43. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/enum/WdAlignParagraph.rst +0 -0
  44. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/enum/WdBuiltinStyle.rst +0 -0
  45. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/enum/WdCellVerticalAlignment.rst +0 -0
  46. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/enum/WdColorIndex.rst +0 -0
  47. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/enum/WdLineSpacing.rst +0 -0
  48. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/enum/WdOrientation.rst +0 -0
  49. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/enum/WdRowAlignment.rst +0 -0
  50. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/enum/WdRowHeightRule.rst +0 -0
  51. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/enum/WdSectionStart.rst +0 -0
  52. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/enum/WdStyleType.rst +0 -0
  53. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/enum/WdTabAlignment.rst +0 -0
  54. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/enum/WdTabLeader.rst +0 -0
  55. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/enum/WdTableDirection.rst +0 -0
  56. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/enum/WdUnderline.rst +0 -0
  57. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/enum/index.rst +0 -0
  58. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/sanitize.rst +0 -0
  59. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/section.rst +0 -0
  60. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/settings.rst +0 -0
  61. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/shape.rst +0 -0
  62. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/shared.rst +0 -0
  63. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/style.rst +0 -0
  64. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/table.rst +0 -0
  65. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/api/text.rst +0 -0
  66. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/conf.py +0 -0
  67. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/comments.rst +0 -0
  68. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/coreprops.rst +0 -0
  69. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/header.rst +0 -0
  70. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/numbering.rst +0 -0
  71. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/sections.rst +0 -0
  72. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/settings.rst +0 -0
  73. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/shapes/index.rst +0 -0
  74. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/shapes/picture.rst +0 -0
  75. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/shapes/shapes-inline-size.rst +0 -0
  76. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/shapes/shapes-inline.rst +0 -0
  77. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/styles/character-style.rst +0 -0
  78. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/styles/index.rst +0 -0
  79. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/styles/latent-styles.rst +0 -0
  80. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/styles/paragraph-style.rst +0 -0
  81. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/styles/style.rst +0 -0
  82. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/styles/styles.rst +0 -0
  83. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/table/cell-merge.rst +0 -0
  84. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/table/index.rst +0 -0
  85. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/table/table-cell.rst +0 -0
  86. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/table/table-props.rst +0 -0
  87. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/table/table-row.rst +0 -0
  88. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/text/breaks.rst +0 -0
  89. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/text/font-color.rst +0 -0
  90. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/text/font-highlight-color.rst +0 -0
  91. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/text/font.rst +0 -0
  92. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/text/hyperlink.rst +0 -0
  93. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/text/index.rst +0 -0
  94. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/text/paragraph-format.rst +0 -0
  95. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/text/run-content.rst +0 -0
  96. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/text/tab-stops.rst +0 -0
  97. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/features/text/underline.rst +0 -0
  98. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/index.rst +0 -0
  99. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/schema/ct_body.rst +0 -0
  100. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/schema/ct_document.rst +0 -0
  101. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/analysis/schema/ct_p.rst +0 -0
  102. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/dev/upstream-maintenance.rst +0 -0
  103. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/index.rst +0 -0
  104. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/requirements.txt +0 -0
  105. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/user/api-concepts.rst +0 -0
  106. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/user/comments.rst +0 -0
  107. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/user/custom-properties.rst +0 -0
  108. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/user/custom-xml.rst +0 -0
  109. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/user/documents.rst +0 -0
  110. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/user/hdrftr.rst +0 -0
  111. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/user/install.rst +0 -0
  112. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/user/quickstart.rst +0 -0
  113. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/user/sanitization.rst +0 -0
  114. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/user/sections.rst +0 -0
  115. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/user/shapes.rst +0 -0
  116. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/user/styles-understanding.rst +0 -0
  117. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/user/styles-using.rst +0 -0
  118. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/user/tables.rst +0 -0
  119. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/docs/user/text.rst +0 -0
  120. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/api-open-document.feature +0 -0
  121. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/blk-add-paragraph.feature +0 -0
  122. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/blk-add-table.feature +0 -0
  123. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/blk-iter-inner-content.feature +0 -0
  124. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/cmt-mutations.feature +0 -0
  125. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/cmt-props.feature +0 -0
  126. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/doc-access-collections.feature +0 -0
  127. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/doc-access-sections.feature +0 -0
  128. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/doc-add-comment.feature +0 -0
  129. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/doc-add-heading.feature +0 -0
  130. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/doc-add-page-break.feature +0 -0
  131. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/doc-add-paragraph.feature +0 -0
  132. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/doc-add-picture.feature +0 -0
  133. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/doc-add-section.feature +0 -0
  134. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/doc-add-table.feature +0 -0
  135. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/doc-comments.feature +0 -0
  136. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/doc-coreprops.feature +0 -0
  137. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/doc-customprops.feature +0 -0
  138. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/doc-settings.feature +0 -0
  139. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/doc-styles.feature +0 -0
  140. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/environment.py +0 -0
  141. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/hdr-header-footer.feature +0 -0
  142. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/hlk-props.feature +0 -0
  143. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/img-characterize-image.feature +0 -0
  144. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/num-access-numbering-part.feature +0 -0
  145. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/par-access-inner-content.feature +0 -0
  146. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/par-access-parfmt.feature +0 -0
  147. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/par-add-run.feature +0 -0
  148. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/par-alignment-prop.feature +0 -0
  149. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/par-clear-paragraph.feature +0 -0
  150. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/par-insert-paragraph.feature +0 -0
  151. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/par-set-text.feature +0 -0
  152. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/par-style-prop.feature +0 -0
  153. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/pbk-split-para.feature +0 -0
  154. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/run-access-font.feature +0 -0
  155. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/run-access-inner-content.feature +0 -0
  156. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/run-add-content.feature +0 -0
  157. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/run-add-picture.feature +0 -0
  158. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/run-char-style.feature +0 -0
  159. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/run-clear-run.feature +0 -0
  160. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/run-enum-props.feature +0 -0
  161. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/sct-section.feature +0 -0
  162. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/shp-inline-shape-access.feature +0 -0
  163. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/shp-inline-shape-size.feature +0 -0
  164. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/api.py +0 -0
  165. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/block.py +0 -0
  166. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/comments.py +0 -0
  167. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/coreprops.py +0 -0
  168. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/customprops.py +0 -0
  169. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/document.py +0 -0
  170. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/font.py +0 -0
  171. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/hdrftr.py +0 -0
  172. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/helpers.py +0 -0
  173. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/hyperlink.py +0 -0
  174. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/image.py +0 -0
  175. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/numbering.py +0 -0
  176. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/pagebreak.py +0 -0
  177. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/paragraph.py +0 -0
  178. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/parfmt.py +0 -0
  179. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/section.py +0 -0
  180. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/settings.py +0 -0
  181. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/shape.py +0 -0
  182. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/shared.py +0 -0
  183. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/styles.py +0 -0
  184. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/table.py +0 -0
  185. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/tabstops.py +0 -0
  186. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/blk-containing-table.docx +0 -0
  187. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/blk-paras-and-tables.docx +0 -0
  188. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/comments-rich-para.docx +0 -0
  189. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/court-exif.jpg +0 -0
  190. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/doc-access-sections.docx +0 -0
  191. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/doc-add-section.docx +0 -0
  192. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/doc-coreprops.docx +0 -0
  193. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/doc-customprops-legacy.docx +0 -0
  194. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/doc-customprops.docx +0 -0
  195. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/doc-default.docx +0 -0
  196. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/doc-no-coreprops.docx +0 -0
  197. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/doc-no-customprops.docx +0 -0
  198. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/doc-odd-even-hdrs.docx +0 -0
  199. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/doc-word-default-blank.docx +0 -0
  200. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/fnt-color.docx +0 -0
  201. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/hdr-header-footer.docx +0 -0
  202. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/jfif-300-dpi.jpg +0 -0
  203. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/jpeg420exif.jpg +0 -0
  204. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/lena.bmp +0 -0
  205. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/lena.gif +0 -0
  206. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/lena.tif +0 -0
  207. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/lena_std.jpg +0 -0
  208. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/monty-truth.png +0 -0
  209. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/mountain.bmp +0 -0
  210. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/num-having-numbering-part.docx +0 -0
  211. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/par-alignment.docx +0 -0
  212. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/par-hlink-frags.docx +0 -0
  213. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/par-hyperlinks.docx +0 -0
  214. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/par-known-paragraphs.docx +0 -0
  215. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/par-known-styles.docx +0 -0
  216. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/par-rendered-page-breaks.docx +0 -0
  217. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/python-icon.jpeg +0 -0
  218. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/run-char-style.docx +0 -0
  219. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/run-enumerated-props.docx +0 -0
  220. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/sample.tif +0 -0
  221. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/sct-first-page-hdrftr.docx +0 -0
  222. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/sct-inner-content.docx +0 -0
  223. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/sct-section-props.docx +0 -0
  224. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/set-no-settings-part.docx +0 -0
  225. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/shp-inline-shape-access.docx +0 -0
  226. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/sty-behav-props.docx +0 -0
  227. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/sty-having-no-styles-part.docx +0 -0
  228. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/sty-having-styles-part.docx +0 -0
  229. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/sty-known-styles.docx +0 -0
  230. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/tab-stops.docx +0 -0
  231. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/tbl-2x2-table.docx +0 -0
  232. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/tbl-cell-access.docx +0 -0
  233. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/tbl-cell-props.docx +0 -0
  234. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/tbl-col-props.docx +0 -0
  235. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/tbl-having-applied-style.docx +0 -0
  236. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/tbl-having-tables.docx +0 -0
  237. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/tbl-on-off-props.docx +0 -0
  238. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/tbl-props.docx +0 -0
  239. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/test.png +0 -0
  240. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/txt-font-highlight-color.docx +0 -0
  241. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/test_files/txt-font-props.docx +0 -0
  242. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/steps/text.py +0 -0
  243. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/sty-access-font.feature +0 -0
  244. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/sty-access-latent-styles.feature +0 -0
  245. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/sty-access-parfmt.feature +0 -0
  246. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/sty-add-style.feature +0 -0
  247. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/sty-delete-style.feature +0 -0
  248. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/sty-latent-add-del.feature +0 -0
  249. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/sty-latent-props.feature +0 -0
  250. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/sty-style-props.feature +0 -0
  251. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/tab-access-tabs.feature +0 -0
  252. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/tab-tabstop-props.feature +0 -0
  253. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/tbl-add-row-or-col.feature +0 -0
  254. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/tbl-cell-access.feature +0 -0
  255. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/tbl-cell-add-table.feature +0 -0
  256. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/tbl-cell-props.feature +0 -0
  257. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/tbl-cell-text.feature +0 -0
  258. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/tbl-col-props.feature +0 -0
  259. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/tbl-item-access.feature +0 -0
  260. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/tbl-merge-cells.feature +0 -0
  261. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/tbl-props.feature +0 -0
  262. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/tbl-row-props.feature +0 -0
  263. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/tbl-style.feature +0 -0
  264. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/txt-add-break.feature +0 -0
  265. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/txt-font-color.feature +0 -0
  266. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/txt-font-props.feature +0 -0
  267. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/features/txt-parfmt-props.feature +0 -0
  268. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/pyproject.toml +0 -0
  269. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/requirements-dev.txt +0 -0
  270. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/requirements-docs.txt +0 -0
  271. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/requirements-test.txt +0 -0
  272. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/requirements.txt +0 -0
  273. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/setup.cfg +0 -0
  274. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/api.py +0 -0
  275. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/blkcntnr.py +0 -0
  276. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/comments.py +0 -0
  277. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/dml/__init__.py +0 -0
  278. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/dml/color.py +0 -0
  279. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/document.py +0 -0
  280. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/drawing/__init__.py +0 -0
  281. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/enum/__init__.py +0 -0
  282. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/enum/base.py +0 -0
  283. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/enum/dml.py +0 -0
  284. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/enum/section.py +0 -0
  285. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/enum/shape.py +0 -0
  286. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/enum/style.py +0 -0
  287. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/enum/table.py +0 -0
  288. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/enum/text.py +0 -0
  289. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/exceptions.py +0 -0
  290. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/image/__init__.py +0 -0
  291. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/image/bmp.py +0 -0
  292. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/image/constants.py +0 -0
  293. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/image/emf.py +0 -0
  294. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/image/exceptions.py +0 -0
  295. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/image/gif.py +0 -0
  296. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/image/helpers.py +0 -0
  297. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/image/image.py +0 -0
  298. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/image/jpeg.py +0 -0
  299. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/image/png.py +0 -0
  300. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/image/svg.py +0 -0
  301. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/image/tiff.py +0 -0
  302. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/opc/__init__.py +0 -0
  303. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/opc/constants.py +0 -0
  304. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/opc/coreprops.py +0 -0
  305. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/opc/customprops.py +0 -0
  306. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/opc/exceptions.py +0 -0
  307. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/opc/oxml.py +0 -0
  308. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/opc/package.py +0 -0
  309. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/opc/packuri.py +0 -0
  310. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/opc/part.py +0 -0
  311. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/opc/parts/__init__.py +0 -0
  312. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/opc/parts/coreprops.py +0 -0
  313. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/opc/parts/customprops.py +0 -0
  314. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/opc/phys_pkg.py +0 -0
  315. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/opc/pkgreader.py +0 -0
  316. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/opc/pkgwriter.py +0 -0
  317. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/opc/rel.py +0 -0
  318. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/opc/shared.py +0 -0
  319. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/opc/spec.py +0 -0
  320. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/__init__.py +0 -0
  321. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/comments.py +0 -0
  322. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/coreprops.py +0 -0
  323. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/customprops.py +0 -0
  324. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/dml/CT_ExtensionList.py +0 -0
  325. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/document.py +0 -0
  326. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/drawing.py +0 -0
  327. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/exceptions.py +0 -0
  328. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/ns.py +0 -0
  329. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/numbering.py +0 -0
  330. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/parser.py +0 -0
  331. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/section.py +0 -0
  332. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/settings.py +0 -0
  333. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/shape.py +0 -0
  334. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/shared.py +0 -0
  335. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/simpletypes.py +0 -0
  336. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/styles.py +0 -0
  337. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/table.py +0 -0
  338. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/text/__init__.py +0 -0
  339. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/text/font.py +0 -0
  340. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/text/pagebreak.py +0 -0
  341. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/oxml/text/parfmt.py +0 -0
  342. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/package.py +0 -0
  343. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/parts/__init__.py +0 -0
  344. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/parts/comments.py +0 -0
  345. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/parts/customxml.py +0 -0
  346. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/parts/document.py +0 -0
  347. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/parts/hdrftr.py +0 -0
  348. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/parts/image.py +0 -0
  349. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/parts/numbering.py +0 -0
  350. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/parts/settings.py +0 -0
  351. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/parts/story.py +0 -0
  352. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/parts/styles.py +0 -0
  353. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/py.typed +0 -0
  354. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/sanitize/__init__.py +0 -0
  355. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/sanitize/cleaner.py +0 -0
  356. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/sanitize/result.py +0 -0
  357. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/section.py +0 -0
  358. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/settings.py +0 -0
  359. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/shape.py +0 -0
  360. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/shared.py +0 -0
  361. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/styles/__init__.py +0 -0
  362. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/styles/latent.py +0 -0
  363. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/styles/style.py +0 -0
  364. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/styles/styles.py +0 -0
  365. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-comments.xml +0 -0
  366. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-docx-template/[Content_Types].xml +0 -0
  367. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-docx-template/_rels/.rels +0 -0
  368. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-docx-template/customXml/_rels/item1.xml.rels +0 -0
  369. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-docx-template/customXml/item1.xml +0 -0
  370. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-docx-template/customXml/itemProps1.xml +0 -0
  371. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-docx-template/docProps/app.xml +0 -0
  372. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-docx-template/docProps/core.xml +0 -0
  373. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-docx-template/docProps/thumbnail.jpeg +0 -0
  374. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-docx-template/word/_rels/document.xml.rels +0 -0
  375. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-docx-template/word/document.xml +0 -0
  376. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-docx-template/word/fontTable.xml +0 -0
  377. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-docx-template/word/numbering.xml +0 -0
  378. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-docx-template/word/settings.xml +0 -0
  379. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-docx-template/word/styles.xml +0 -0
  380. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-docx-template/word/stylesWithEffects.xml +0 -0
  381. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-docx-template/word/theme/theme1.xml +0 -0
  382. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-docx-template/word/webSettings.xml +0 -0
  383. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-footer.xml +0 -0
  384. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-header.xml +0 -0
  385. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-numbering.xml +0 -0
  386. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-settings.xml +0 -0
  387. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default-styles.xml +0 -0
  388. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/templates/default.docx +0 -0
  389. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/text/__init__.py +0 -0
  390. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/text/font.py +0 -0
  391. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/text/pagebreak.py +0 -0
  392. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/text/parfmt.py +0 -0
  393. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/text/tabstops.py +0 -0
  394. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/docx/types.py +0 -0
  395. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/python_docx_oss.egg-info/SOURCES.txt +0 -0
  396. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/python_docx_oss.egg-info/dependency_links.txt +0 -0
  397. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/python_docx_oss.egg-info/requires.txt +0 -0
  398. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/src/python_docx_oss.egg-info/top_level.txt +0 -0
  399. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/__init__.py +0 -0
  400. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/conftest.py +0 -0
  401. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/dml/__init__.py +0 -0
  402. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/dml/test_color.py +0 -0
  403. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/fixtures/README.md +0 -0
  404. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/fixtures/comments/word-comments-rich.docx +0 -0
  405. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/fixtures/customxml/generate_fixture.py +0 -0
  406. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/fixtures/customxml/multiple-custom-xml-parts.docx +0 -0
  407. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/fixtures/documents/word-blank.docx +0 -0
  408. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/fixtures/drawing/word-floating-picture.docx +0 -0
  409. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/fixtures/fonts/word-east-asian-fonts.docx +0 -0
  410. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/fixtures/images/word-svg-image.docx +0 -0
  411. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/image/__init__.py +0 -0
  412. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/image/test_bmp.py +0 -0
  413. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/image/test_emf.py +0 -0
  414. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/image/test_gif.py +0 -0
  415. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/image/test_helpers.py +0 -0
  416. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/image/test_image.py +0 -0
  417. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/image/test_jpeg.py +0 -0
  418. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/image/test_png.py +0 -0
  419. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/image/test_svg.py +0 -0
  420. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/image/test_tiff.py +0 -0
  421. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/integration/__init__.py +0 -0
  422. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/integration/customxml/__init__.py +0 -0
  423. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/opc/__init__.py +0 -0
  424. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/opc/parts/__init__.py +0 -0
  425. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/opc/parts/test_coreprops.py +0 -0
  426. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/opc/parts/test_customprops.py +0 -0
  427. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/opc/test_coreprops.py +0 -0
  428. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/opc/test_customprops.py +0 -0
  429. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/opc/test_oxml.py +0 -0
  430. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/opc/test_package.py +0 -0
  431. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/opc/test_packuri.py +0 -0
  432. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/opc/test_part.py +0 -0
  433. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/opc/test_phys_pkg.py +0 -0
  434. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/opc/test_pkgreader.py +0 -0
  435. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/opc/test_pkgwriter.py +0 -0
  436. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/opc/test_rel.py +0 -0
  437. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/opc/unitdata/__init__.py +0 -0
  438. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/opc/unitdata/rels.py +0 -0
  439. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/opc/unitdata/types.py +0 -0
  440. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/__init__.py +0 -0
  441. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/parts/__init__.py +0 -0
  442. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/parts/test_document.py +0 -0
  443. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/parts/unitdata/__init__.py +0 -0
  444. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/parts/unitdata/document.py +0 -0
  445. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/test__init__.py +0 -0
  446. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/test_comments.py +0 -0
  447. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/test_document.py +0 -0
  448. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/test_ns.py +0 -0
  449. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/test_section.py +0 -0
  450. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/test_styles.py +0 -0
  451. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/test_table.py +0 -0
  452. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/text/__init__.py +0 -0
  453. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/unitdata/__init__.py +0 -0
  454. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/unitdata/dml.py +0 -0
  455. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/unitdata/numbering.py +0 -0
  456. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/unitdata/section.py +0 -0
  457. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/unitdata/shared.py +0 -0
  458. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/unitdata/styles.py +0 -0
  459. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/unitdata/table.py +0 -0
  460. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/oxml/unitdata/text.py +0 -0
  461. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/parts/__init__.py +0 -0
  462. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/parts/test_comments.py +0 -0
  463. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/parts/test_customxml.py +0 -0
  464. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/parts/test_document.py +0 -0
  465. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/parts/test_hdrftr.py +0 -0
  466. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/parts/test_image.py +0 -0
  467. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/parts/test_numbering.py +0 -0
  468. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/parts/test_settings.py +0 -0
  469. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/parts/test_story.py +0 -0
  470. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/parts/test_styles.py +0 -0
  471. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/styles/__init__.py +0 -0
  472. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/styles/test_latent.py +0 -0
  473. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/styles/test_style.py +0 -0
  474. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/styles/test_styles.py +0 -0
  475. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_api.py +0 -0
  476. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_blkcntnr.py +0 -0
  477. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_comments.py +0 -0
  478. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_document.py +0 -0
  479. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_drawing.py +0 -0
  480. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_enum.py +0 -0
  481. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/150-dpi.png +0 -0
  482. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/300-dpi.TIF +0 -0
  483. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/300-dpi.jpg +0 -0
  484. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/300-dpi.png +0 -0
  485. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/72-dpi.tiff +0 -0
  486. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/CVS_LOGO.WMF +0 -0
  487. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/blk-inner-content.docx +0 -0
  488. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/exif-420-dpi.jpg +0 -0
  489. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/expanded_docx/[Content_Types].xml +0 -0
  490. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/expanded_docx/_rels/.rels +0 -0
  491. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/expanded_docx/customXml/_rels/item1.xml.rels +0 -0
  492. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/expanded_docx/customXml/item1.xml +0 -0
  493. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/expanded_docx/customXml/itemProps1.xml +0 -0
  494. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/expanded_docx/docProps/app.xml +0 -0
  495. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/expanded_docx/docProps/core.xml +0 -0
  496. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/expanded_docx/docProps/thumbnail.jpeg +0 -0
  497. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/expanded_docx/word/_rels/document.xml.rels +0 -0
  498. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/expanded_docx/word/document.xml +0 -0
  499. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/expanded_docx/word/fontTable.xml +0 -0
  500. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/expanded_docx/word/numbering.xml +0 -0
  501. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/expanded_docx/word/settings.xml +0 -0
  502. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/expanded_docx/word/styles.xml +0 -0
  503. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/expanded_docx/word/stylesWithEffects.xml +0 -0
  504. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/expanded_docx/word/theme/theme1.xml +0 -0
  505. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/expanded_docx/word/webSettings.xml +0 -0
  506. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/having-images.docx +0 -0
  507. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/jfif-iguana.jpg +0 -0
  508. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/jpeg_without_app0_and_app1.jpg +0 -0
  509. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/little-endian.tif +0 -0
  510. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/monty-truth.png +0 -0
  511. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/python-icon.jpeg +0 -0
  512. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/python-icon.png +0 -0
  513. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/python-powered.png +0 -0
  514. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/python.bmp +0 -0
  515. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/sct-inner-content.docx +0 -0
  516. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/snippets/add-row-col.txt +0 -0
  517. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/snippets/inline.txt +0 -0
  518. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/snippets/new-tbl.txt +0 -0
  519. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/snippets/tbl-cells.txt +0 -0
  520. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/sonic.emf +0 -0
  521. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/sonic.gif +0 -0
  522. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_files/test.docx +0 -0
  523. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_package.py +0 -0
  524. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_sanitize.py +0 -0
  525. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_section.py +0 -0
  526. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_settings.py +0 -0
  527. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_shape.py +0 -0
  528. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_shared.py +0 -0
  529. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/test_table.py +0 -0
  530. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/text/__init__.py +0 -0
  531. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/text/test_font.py +0 -0
  532. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/text/test_hyperlink.py +0 -0
  533. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/text/test_pagebreak.py +0 -0
  534. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/text/test_paragraph.py +0 -0
  535. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/text/test_parfmt.py +0 -0
  536. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/text/test_run.py +0 -0
  537. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/text/test_tabstops.py +0 -0
  538. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/unitdata.py +0 -0
  539. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/unitutil/__init__.py +0 -0
  540. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/unitutil/cxml.py +0 -0
  541. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/unitutil/file.py +0 -0
  542. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tests/unitutil/mock.py +0 -0
  543. {python_docx_oss-0.3.1 → python_docx_oss-0.3.3}/tox.ini +0 -0
@@ -1,8 +1,20 @@
1
1
  ## Release History
2
2
 
3
- **Unreleased**
3
+ **0.3.3 (2026-09-10)**
4
4
 
5
- **0.3.1 (2026-09-08)**
5
+ - Switched PyPI distribution to GitHub Actions automated releases using PyPI Trusted Publishing (OIDC).
6
+ - Added support for workflow_dispatch triggers targeting TestPyPI and PyPI.
7
+ - Streamlined release validation, test gatekeeping, and distribution verification.
8
+
9
+ **0.3.2 (2026-09-08)**
10
+
11
+ - Restored the 0.0.12 architecture where OXML elements (`CT_R`, `CT_P`, `CT_Hyperlink`)
12
+ do not override lxml's Cython `_Element.text` descriptor, resolving text duplication
13
+ when calling `itertext()` on bare `lxml.etree._Element` parent nodes (such as revision
14
+ tags `w:ins`, `w:del`, and container tags like `w:txbxContent`).
15
+ - Standardized OXML rich-text extraction and assignment on `.texts`, while maintaining full
16
+ compatibility for public proxy APIs (`Paragraph.text`, `Run.text`, `Hyperlink.text`, `_Cell.text`).
17
+ - Documented the intentional upstream difference in the compatibility guide.
6
18
 
7
19
  - Fixed an issue where calling `itertext()` on oxml elements produced duplicated
8
20
  text due to overridden `.text` properties.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-docx-oss
3
- Version: 0.3.1
3
+ Version: 0.3.3
4
4
  Summary: Create, read, and update Microsoft Word .docx files.
5
5
  Author: Ethan St Lee
6
6
  License-Expression: MIT
@@ -155,6 +155,11 @@ available through `Document.add_float_picture()` and `Run.add_float_picture()`.
155
155
 
156
156
  - The project maintains broad compatibility with the public `python-docx` API while
157
157
  following its own versioning and product roadmap.
158
+ - Clean lxml integration: Low-level OXML elements avoid shadowing lxml's Cython
159
+ `_Element.text` descriptor (using `.texts` internally). This guarantees that standard
160
+ `element.itertext()` on parent elements and untyped revision nodes (`w:ins`, `w:del`,
161
+ `w:txbxContent`) never duplicates text, while high-level proxy APIs (`paragraph.text`,
162
+ `run.text`) remain fully compatible with `python-docx`.
158
163
  - Compatibility does not extend to every private or internal `python-docx` API. Test
159
164
  those integrations before migrating production systems.
160
165
  - The SDK focuses exclusively on DOCX. It is not a general XLSX/PPTX Office suite.
@@ -126,6 +126,11 @@ available through `Document.add_float_picture()` and `Run.add_float_picture()`.
126
126
 
127
127
  - The project maintains broad compatibility with the public `python-docx` API while
128
128
  following its own versioning and product roadmap.
129
+ - Clean lxml integration: Low-level OXML elements avoid shadowing lxml's Cython
130
+ `_Element.text` descriptor (using `.texts` internally). This guarantees that standard
131
+ `element.itertext()` on parent elements and untyped revision nodes (`w:ins`, `w:del`,
132
+ `w:txbxContent`) never duplicates text, while high-level proxy APIs (`paragraph.text`,
133
+ `run.text`) remain fully compatible with `python-docx`.
129
134
  - Compatibility does not extend to every private or internal `python-docx` API. Test
130
135
  those integrations before migrating production systems.
131
136
  - The SDK focuses exclusively on DOCX. It is not a general XLSX/PPTX Office suite.
@@ -43,6 +43,14 @@ public inherited API or its observable behavior. Each record must identify:
43
43
  * the ``python-docx-oss`` behavior and rationale; and
44
44
  * any migration action required by callers.
45
45
 
46
+ Preservation of lxml ``_Element.text`` and ``itertext()`` semantics
47
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
48
+
49
+ * **Affected API**: Low-level OXML element classes (``CT_P``, ``CT_R``, ``CT_Hyperlink`` in ``docx.oxml``) and observable ``element.itertext()`` / ``element.text`` behavior on XML elements.
50
+ * **Upstream baseline (v1.2.0)**: Upstream defined ``@property def text`` on ``CT_P``, ``CT_R``, and ``CT_Hyperlink`` to return concatenated run/paragraph text. Overriding the Cython descriptor ``_Element.text`` on ``ElementBase`` subclasses causes standard ``lxml`` C-level tree iteration (``itertext()``) to invoke the Python property. As a consequence, calling ``itertext()`` on parent elements or on bare ``lxml.etree._Element`` nodes (such as revision tags ``w:ins``, ``w:del``, or container tags like ``w:txbxContent``) visits both the container node and child ``<w:t>`` nodes, causing text to be duplicated (e.g., ``"Beta"`` becomes ``"BetaBeta"``).
51
+ * **python-docx-oss behavior and rationale**: ``python-docx-oss`` intentionally does not override the ``.text`` property on any ``BaseOxmlElement`` subclass. Rich-text extraction and assignment at the OXML element level is named ``.texts`` (e.g., ``_r.texts``, ``_p.texts``, ``_hyperlink.texts``). Public proxy classes (|Paragraph|, |Run|, |Hyperlink|, and |_Cell|) continue to expose their standard ``.text`` property, delegating internally to ``.texts``. This design preserves standard ``lxml`` descriptor semantics, ensuring that ``itertext()`` produces clean, single-occurrence text across all XML elements.
52
+ * **Migration action**: Callers using public proxy objects (such as ``paragraph.text`` or ``run.text``) require no changes. Callers interacting directly with low-level OXML element instances (e.g., ``run._r``) should use ``.texts`` instead of ``.text`` for rich-text assembly, or standard ``lxml`` methods like ``element.itertext()``.
53
+
46
54
  Additive APIs and capabilities do not require individual divergence records;
47
55
  they belong in the API documentation and Capability Matrix. Upstream baseline
48
56
  changes follow the :doc:`../dev/upstream-maintenance` policy.
@@ -13,7 +13,7 @@ from docx.api import Document
13
13
  if TYPE_CHECKING:
14
14
  from docx.opc.part import Part
15
15
 
16
- __version__ = "0.3.1"
16
+ __version__ = "0.3.3"
17
17
 
18
18
 
19
19
  __all__ = ["Document"]
@@ -37,9 +37,9 @@ class CT_Hyperlink(BaseOxmlElement):
37
37
  return self.xpath("./w:r/w:lastRenderedPageBreak")
38
38
 
39
39
  @property
40
- def text(self) -> str: # pyright: ignore[reportIncompatibleMethodOverride]
40
+ def texts(self) -> str:
41
41
  """The textual content of this hyperlink.
42
42
 
43
43
  `CT_Hyperlink` stores the hyperlink-text as one or more `w:r` children.
44
44
  """
45
- return "".join(r.text for r in self.xpath("w:r"))
45
+ return "".join(r.texts for r in self.xpath("w:r"))
@@ -93,13 +93,13 @@ class CT_P(BaseOxmlElement):
93
93
  pPr.style = style
94
94
 
95
95
  @property
96
- def text(self): # pyright: ignore[reportIncompatibleMethodOverride]
96
+ def texts(self) -> str:
97
97
  """The textual content of this paragraph.
98
98
 
99
99
  Inner-content child elements like `w:r` and `w:hyperlink` are translated to
100
100
  their text equivalent.
101
101
  """
102
- return "".join(e.text for e in self.xpath("w:r | w:hyperlink"))
102
+ return "".join(e.texts for e in self.xpath("w:r | w:hyperlink"))
103
103
 
104
104
  def _insert_pPr(self, pPr: CT_PPr) -> CT_PPr:
105
105
  self.insert(0, pPr)
@@ -127,29 +127,25 @@ class CT_R(BaseOxmlElement):
127
127
  rPr.style = style
128
128
 
129
129
  @property
130
- def text(self) -> str:
130
+ def texts(self) -> str:
131
131
  """The textual content of this run.
132
132
 
133
133
  Inner-content child elements like `w:tab` are translated to their text
134
134
  equivalent.
135
+
136
+ Note: We intentionally do NOT define `@property def text` on CT_R or any
137
+ other oxml element, because doing so overrides lxml's Cython descriptor
138
+ `_Element.text`, which corrupts lxml `itertext()` on parent elements (such
139
+ as bare `_Element` revision tags `w:ins`, `w:del`, etc.).
135
140
  """
136
141
  return "".join(
137
142
  str(e) for e in self.xpath("w:br | w:cr | w:noBreakHyphen | w:ptab | w:t | w:tab")
138
143
  )
139
144
 
140
- @text.setter
141
- def text(self, text: str): # pyright: ignore[reportIncompatibleMethodOverride]
142
- self.clear_content()
143
- _RunContentAppender.append_to_run_from_text(self, text)
144
-
145
- @property
146
- def texts(self) -> str:
147
- """Alias for `text` property for compatibility with python-docx-oss."""
148
- return self.text
149
-
150
145
  @texts.setter
151
146
  def texts(self, text: str):
152
- self.text = text
147
+ self.clear_content()
148
+ _RunContentAppender.append_to_run_from_text(self, text)
153
149
 
154
150
  def _insert_rPr(self, rPr: CT_RPr) -> CT_RPr:
155
151
  self.insert(0, rPr)
@@ -5,7 +5,7 @@
5
5
  from __future__ import annotations
6
6
 
7
7
  import re
8
- from typing import TYPE_CHECKING, Any, Callable, Iterator, Sequence, Type, TypeVar
8
+ from typing import TYPE_CHECKING, Any, Callable, Sequence, Type, TypeVar
9
9
 
10
10
  from lxml import etree
11
11
  from lxml.etree import ElementBase, _Element # pyright: ignore[reportPrivateUsage]
@@ -653,11 +653,6 @@ class ZeroOrOneChoice(_BaseChildElement):
653
653
  return "_remove_%s" % self._prop_name
654
654
 
655
655
 
656
- # -- raw lxml text/tail accessors, used to bypass `.text` property overrides --
657
- _raw_text = _Element.text.__get__
658
- _raw_tail = _Element.tail.__get__
659
-
660
-
661
656
  # -- lxml typing isn't quite right here, just ignore this error on _Element --
662
657
  class BaseOxmlElement(etree.ElementBase, metaclass=MetaOxmlElement):
663
658
  """Effective base class for all custom element classes.
@@ -688,22 +683,6 @@ class BaseOxmlElement(etree.ElementBase, metaclass=MetaOxmlElement):
688
683
  self.append(elm)
689
684
  return elm
690
685
 
691
- def itertext(self, tag: Any | None = None, *tags: Any, with_tail: bool = True) -> Iterator[str]:
692
- """Iterate over text content of this element and its descendants.
693
-
694
- Bypasses the overridden `.text` properties on custom oxml element classes (such as
695
- `CT_P`, `CT_R`, `CT_Hyperlink`), which would otherwise duplicate text, so standard
696
- lxml `itertext()` semantics are preserved.
697
- """
698
- for node in self.iter(tag, *tags):
699
- text = _raw_text(node)
700
- if text:
701
- yield text
702
- if with_tail and node is not self:
703
- tail = _raw_tail(node)
704
- if tail:
705
- yield tail
706
-
707
686
  def remove_all(self, *tagnames: str) -> None:
708
687
  """Remove child elements with tagname (e.g. "a:p") in `tagnames`."""
709
688
  for tagname in tagnames:
@@ -281,7 +281,7 @@ class _Cell(BlockItemContainer):
281
281
  tc.clear_content()
282
282
  p = tc.add_p()
283
283
  r = p.add_r()
284
- r.text = text
284
+ r.texts = text
285
285
 
286
286
  @property
287
287
  def vertical_alignment(self):
@@ -98,7 +98,7 @@ class Hyperlink(Parented):
98
98
  respectively. Note that rendered page-breaks can occur within a hyperlink but
99
99
  they are not reflected in this text.
100
100
  """
101
- return self._hyperlink.text
101
+ return self._hyperlink.texts
102
102
 
103
103
  @property
104
104
  def url(self) -> str:
@@ -160,7 +160,7 @@ class Paragraph(StoryChild):
160
160
  character is mapped to a line break. Paragraph-level formatting, such as style,
161
161
  is preserved. All run-level formatting, such as bold or italic, is removed.
162
162
  """
163
- return self._p.text
163
+ return self._p.texts
164
164
 
165
165
  @text.setter
166
166
  def text(self, text: str | None):
@@ -233,11 +233,11 @@ class Run(StoryChild):
233
233
  `<w:cr/>` element. Any existing run content is replaced. Run formatting is
234
234
  preserved.
235
235
  """
236
- return self._r.text
236
+ return self._r.texts
237
237
 
238
238
  @text.setter
239
239
  def text(self, text: str):
240
- self._r.text = text
240
+ self._r.texts = text
241
241
 
242
242
  @property
243
243
  def underline(self) -> bool | WD_UNDERLINE | None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-docx-oss
3
- Version: 0.3.1
3
+ Version: 0.3.3
4
4
  Summary: Create, read, and update Microsoft Word .docx files.
5
5
  Author: Ethan St Lee
6
6
  License-Expression: MIT
@@ -155,6 +155,11 @@ available through `Document.add_float_picture()` and `Run.add_float_picture()`.
155
155
 
156
156
  - The project maintains broad compatibility with the public `python-docx` API while
157
157
  following its own versioning and product roadmap.
158
+ - Clean lxml integration: Low-level OXML elements avoid shadowing lxml's Cython
159
+ `_Element.text` descriptor (using `.texts` internally). This guarantees that standard
160
+ `element.itertext()` on parent elements and untyped revision nodes (`w:ins`, `w:del`,
161
+ `w:txbxContent`) never duplicates text, while high-level proxy APIs (`paragraph.text`,
162
+ `run.text`) remain fully compatible with `python-docx`.
158
163
  - Compatibility does not extend to every private or internal `python-docx` API. Test
159
164
  those integrations before migrating production systems.
160
165
  - The SDK focuses exclusively on DOCX. It is not a general XLSX/PPTX Office suite.
@@ -97,7 +97,7 @@ class DescribeMultipleCustomXmlParts:
97
97
  replaced = _parts_by_name(reopened)["/customXml/item1.xml"]
98
98
 
99
99
  assert replaced.tag == "{urn:python-docx-oss:wrapper}wrapper"
100
- assert replaced.attrib["version"] == "1"
100
+ assert replaced.attrib["version"] == "1" # pyright: ignore[reportUnknownMemberType]
101
101
  assert len(replaced.items) == 1
102
102
  assert replaced.items[0].tag == f"{{{CUSTOMERS_NS}}}customers"
103
103
  assert len(replaced.items[0]) == 2
@@ -115,7 +115,7 @@ class DescribeWordDocumentRoundTrips:
115
115
  text.text = "Business link"
116
116
  run.append(text)
117
117
  hyperlink.append(run)
118
- paragraph._p.append(hyperlink)
118
+ paragraph._p.append(hyperlink) # pyright: ignore[reportPrivateUsage]
119
119
 
120
120
  new_target = "https://example.invalid/objects/new-id?position=begin"
121
121
  document.part.rels[relationship_id].target_ref = new_target
@@ -1,6 +1,7 @@
1
1
  """Test suite for docx.oxml.xmlchemy."""
2
2
 
3
3
  import pytest
4
+ from lxml import etree
4
5
 
5
6
  from docx.oxml.exceptions import InvalidXmlError
6
7
  from docx.oxml.ns import qn
@@ -48,7 +49,7 @@ class DescribeBaseOxmlElement:
48
49
  element.remove_all(*tagnames)
49
50
  assert element.xml == expected_xml
50
51
 
51
- def it_iterates_text_without_duplication_when_text_property_is_overridden(self):
52
+ def it_iterates_text_without_duplication_on_oxml_elements(self):
52
53
  elm = parse_xml(
53
54
  '<w:p xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">'
54
55
  "<w:r><w:t>foo</w:t></w:r>"
@@ -58,6 +59,24 @@ class DescribeBaseOxmlElement:
58
59
  assert "".join(elm.itertext()) == "foobar"
59
60
  assert list(elm.itertext(qn("w:t"))) == ["foo", "bar"]
60
61
 
62
+ def it_iterates_text_without_duplication_on_unregistered_bare_elements(self):
63
+ # Tags like w:ins, w:del, w:txbxContent are not registered in element_class_lookup
64
+ # and remain bare lxml.etree._Element instances.
65
+ ins = parse_xml(
66
+ '<w:ins xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"'
67
+ ' w:id="1" w:author="t" w:date="2026-01-01T00:00:00Z">'
68
+ "<w:r><w:t>Beta</w:t></w:r>"
69
+ "</w:ins>"
70
+ )
71
+ assert type(ins) is etree._Element
72
+ assert list(ins.itertext()) == ["Beta"]
73
+ assert "".join(ins.itertext()) == "Beta"
74
+
75
+ # Verify CT_R inside it has native None for .text and "Beta" for .texts
76
+ r = ins.findall(qn("w:r"))[0]
77
+ assert r.text is None
78
+ assert r.texts == "Beta"
79
+
61
80
  # fixtures ---------------------------------------------
62
81
 
63
82
  @pytest.fixture(
@@ -41,5 +41,6 @@ class DescribeCT_Hyperlink:
41
41
  rs = hyperlink.r_lst
42
42
 
43
43
  assert [type(r) for r in rs] == [CT_R, CT_R]
44
- assert rs[0].text == "blog"
45
- assert rs[1].text == " post"
44
+ assert rs[0].texts == "blog"
45
+ assert rs[1].texts == " post"
46
+ assert hyperlink.texts == "blog post"
@@ -38,18 +38,22 @@ class DescribeCT_R:
38
38
  cxml = 'w:r/(w:br,w:cr,w:noBreakHyphen,w:ptab,w:t"foobar",w:tab)'
39
39
  r = cast(CT_R, element(cxml))
40
40
 
41
- assert r.text == "\n\n-\tfoobar\t"
41
+ assert r.texts == "\n\n-\tfoobar\t"
42
42
 
43
- def it_provides_texts_alias_for_text(self):
43
+ def it_can_replace_its_text(self):
44
44
  r = cast(CT_R, element('w:r/w:t"alias"'))
45
45
 
46
46
  assert r.texts == "alias"
47
47
 
48
48
  r.texts = "updated"
49
49
 
50
- assert r.text == "updated"
50
+ assert r.texts == "updated"
51
51
 
52
52
  def it_iterates_text_without_duplication(self):
53
53
  r = cast(CT_R, element('w:r/(w:br,w:t"foo",w:cr,w:t"bar")'))
54
54
 
55
55
  assert "".join(r.itertext()) == "foobar"
56
+
57
+ def it_does_not_override_element_text_descriptor(self):
58
+ r = cast(CT_R, element('w:r/w:t"foo"'))
59
+ assert r.text is None
File without changes