python-docx-oss 0.0.11__tar.gz → 0.1.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.
Files changed (602) hide show
  1. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/MANIFEST.in +3 -2
  2. python_docx_oss-0.1.0/PKG-INFO +57 -0
  3. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/README.md +1 -1
  4. python_docx_oss-0.1.0/docs/_static/img/comment-parts.png +0 -0
  5. python_docx_oss-0.1.0/docs/api/comments.rst +27 -0
  6. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/conf.py +12 -0
  7. python_docx_oss-0.1.0/docs/dev/analysis/features/comments.rst +419 -0
  8. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/coreprops.rst +2 -2
  9. python_docx_oss-0.1.0/docs/dev/analysis/features/text/hyperlink.rst +383 -0
  10. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/text/index.rst +1 -0
  11. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/index.rst +1 -0
  12. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/index.rst +3 -0
  13. python_docx_oss-0.1.0/docs/user/comments.rst +168 -0
  14. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/user/install.rst +1 -1
  15. python_docx_oss-0.1.0/docs/user/tables.rst +202 -0
  16. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/_scratch/test_out.docx +0 -0
  17. python_docx_oss-0.1.0/features/blk-iter-inner-content.feature +24 -0
  18. python_docx_oss-0.1.0/features/cmt-mutations.feature +59 -0
  19. python_docx_oss-0.1.0/features/cmt-props.feature +35 -0
  20. python_docx_oss-0.1.0/features/doc-add-comment.feature +13 -0
  21. python_docx_oss-0.1.0/features/doc-comments.feature +36 -0
  22. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/environment.py +1 -6
  23. python_docx_oss-0.1.0/features/hlk-props.feature +54 -0
  24. python_docx_oss-0.1.0/features/par-access-inner-content.feature +49 -0
  25. python_docx_oss-0.1.0/features/pbk-split-para.feature +24 -0
  26. python_docx_oss-0.1.0/features/run-access-inner-content.feature +25 -0
  27. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/run-add-content.feature +1 -1
  28. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/sct-section.feature +5 -0
  29. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/api.py +1 -7
  30. python_docx_oss-0.1.0/features/steps/block.py +100 -0
  31. python_docx_oss-0.1.0/features/steps/comments.py +284 -0
  32. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/coreprops.py +19 -25
  33. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/document.py +4 -15
  34. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/font.py +10 -15
  35. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/hdrftr.py +1 -6
  36. python_docx_oss-0.1.0/features/steps/helpers.py +34 -0
  37. python_docx_oss-0.1.0/features/steps/hyperlink.py +116 -0
  38. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/image.py +1 -8
  39. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/numbering.py +1 -6
  40. python_docx_oss-0.1.0/features/steps/pagebreak.py +135 -0
  41. python_docx_oss-0.1.0/features/steps/paragraph.py +256 -0
  42. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/parfmt.py +2 -11
  43. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/section.py +46 -40
  44. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/settings.py +14 -18
  45. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/shape.py +5 -11
  46. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/shared.py +1 -6
  47. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/styles.py +4 -8
  48. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/table.py +153 -75
  49. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/tabstops.py +2 -7
  50. python_docx_oss-0.1.0/features/steps/test_files/blk-paras-and-tables.docx +0 -0
  51. python_docx_oss-0.1.0/features/steps/test_files/comments-rich-para.docx +0 -0
  52. python_docx_oss-0.1.0/features/steps/test_files/par-hlink-frags.docx +0 -0
  53. python_docx_oss-0.1.0/features/steps/test_files/par-hyperlinks.docx +0 -0
  54. python_docx_oss-0.1.0/features/steps/test_files/par-rendered-page-breaks.docx +0 -0
  55. python_docx_oss-0.1.0/features/steps/test_files/sct-inner-content.docx +0 -0
  56. python_docx_oss-0.1.0/features/steps/test_files/tbl-cell-props.docx +0 -0
  57. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/tbl-props.docx +0 -0
  58. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/text.py +46 -25
  59. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/tbl-cell-props.feature +11 -0
  60. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/tbl-row-props.feature +22 -0
  61. python_docx_oss-0.1.0/pyproject.toml +114 -0
  62. python_docx_oss-0.1.0/requirements-dev.txt +7 -0
  63. python_docx_oss-0.1.0/requirements-docs.txt +6 -0
  64. python_docx_oss-0.1.0/requirements-test.txt +8 -0
  65. python_docx_oss-0.1.0/requirements.txt +2 -0
  66. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/__init__.py +29 -8
  67. python_docx_oss-0.1.0/src/docx/api.py +37 -0
  68. python_docx_oss-0.1.0/src/docx/blkcntnr.py +101 -0
  69. python_docx_oss-0.1.0/src/docx/comments.py +163 -0
  70. python_docx_oss-0.1.0/src/docx/dml/color.py +112 -0
  71. python_docx_oss-0.1.0/src/docx/document.py +285 -0
  72. python_docx_oss-0.1.0/src/docx/drawing/__init__.py +59 -0
  73. python_docx_oss-0.1.0/src/docx/enum/base.py +150 -0
  74. python_docx_oss-0.1.0/src/docx/enum/dml.py +103 -0
  75. python_docx_oss-0.1.0/src/docx/enum/section.py +86 -0
  76. python_docx_oss-0.1.0/src/docx/enum/shape.py +19 -0
  77. python_docx_oss-0.1.0/src/docx/enum/style.py +452 -0
  78. python_docx_oss-0.1.0/src/docx/enum/table.py +136 -0
  79. python_docx_oss-0.1.0/src/docx/enum/text.py +367 -0
  80. python_docx_oss-0.1.0/src/docx/exceptions.py +18 -0
  81. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/image/__init__.py +7 -7
  82. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/image/bmp.py +8 -22
  83. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/image/constants.py +75 -91
  84. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/image/emf.py +1 -1
  85. python_docx_oss-0.1.0/src/docx/image/exceptions.py +13 -0
  86. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/image/gif.py +9 -19
  87. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/image/helpers.py +21 -33
  88. python_docx_oss-0.1.0/src/docx/image/image.py +237 -0
  89. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/image/jpeg.py +143 -175
  90. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/image/png.py +51 -105
  91. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/image/tiff.py +85 -149
  92. python_docx_oss-0.1.0/src/docx/opc/constants.py +307 -0
  93. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/opc/coreprops.py +32 -24
  94. python_docx_oss-0.1.0/src/docx/opc/exceptions.py +12 -0
  95. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/opc/oxml.py +73 -126
  96. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/opc/package.py +100 -110
  97. python_docx_oss-0.1.0/src/docx/opc/packuri.py +109 -0
  98. python_docx_oss-0.1.0/src/docx/opc/part.py +267 -0
  99. python_docx_oss-0.1.0/src/docx/opc/parts/coreprops.py +48 -0
  100. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/opc/phys_pkg.py +32 -71
  101. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/opc/pkgreader.py +64 -111
  102. python_docx_oss-0.1.0/src/docx/opc/pkgwriter.py +115 -0
  103. python_docx_oss-0.1.0/src/docx/opc/rel.py +169 -0
  104. python_docx_oss-0.1.0/src/docx/opc/shared.py +31 -0
  105. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/opc/spec.py +2 -7
  106. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/oxml/__init__.py +116 -126
  107. python_docx_oss-0.1.0/src/docx/oxml/comments.py +124 -0
  108. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/oxml/coreprops.py +91 -100
  109. python_docx_oss-0.1.0/src/docx/oxml/dml/CT_ExtensionList.py +48 -0
  110. python_docx_oss-0.1.0/src/docx/oxml/document.py +88 -0
  111. python_docx_oss-0.1.0/src/docx/oxml/drawing.py +11 -0
  112. python_docx_oss-0.1.0/src/docx/oxml/exceptions.py +10 -0
  113. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/oxml/ns.py +42 -46
  114. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/oxml/numbering.py +28 -54
  115. python_docx_oss-0.1.0/src/docx/oxml/parser.py +62 -0
  116. python_docx_oss-0.1.0/src/docx/oxml/section.py +537 -0
  117. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/oxml/settings.py +20 -11
  118. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/oxml/shape.py +197 -177
  119. python_docx_oss-0.1.0/src/docx/oxml/shared.py +52 -0
  120. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/oxml/simpletypes.py +148 -93
  121. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/oxml/styles.py +56 -110
  122. python_docx_oss-0.1.0/src/docx/oxml/table.py +977 -0
  123. python_docx_oss-0.1.0/src/docx/oxml/text/font.py +358 -0
  124. python_docx_oss-0.1.0/src/docx/oxml/text/hyperlink.py +45 -0
  125. python_docx_oss-0.1.0/src/docx/oxml/text/pagebreak.py +278 -0
  126. python_docx_oss-0.1.0/src/docx/oxml/text/paragraph.py +106 -0
  127. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/oxml/text/parfmt.py +107 -100
  128. python_docx_oss-0.1.0/src/docx/oxml/text/run.py +316 -0
  129. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/oxml/xmlchemy.py +239 -322
  130. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/package.py +36 -32
  131. python_docx_oss-0.1.0/src/docx/parts/comments.py +51 -0
  132. python_docx_oss-0.1.0/src/docx/parts/document.py +193 -0
  133. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/parts/hdrftr.py +14 -16
  134. python_docx_oss-0.1.0/src/docx/parts/image.py +80 -0
  135. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/parts/numbering.py +11 -26
  136. python_docx_oss-0.1.0/src/docx/parts/settings.py +50 -0
  137. python_docx_oss-0.1.0/src/docx/parts/story.py +113 -0
  138. python_docx_oss-0.1.0/src/docx/parts/styles.py +42 -0
  139. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/section.py +162 -126
  140. python_docx_oss-0.1.0/src/docx/settings.py +35 -0
  141. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/shape.py +34 -34
  142. python_docx_oss-0.1.0/src/docx/shared.py +382 -0
  143. python_docx_oss-0.1.0/src/docx/styles/__init__.py +40 -0
  144. python_docx_oss-0.1.0/src/docx/styles/latent.py +198 -0
  145. python_docx_oss-0.1.0/src/docx/styles/style.py +254 -0
  146. python_docx_oss-0.1.0/src/docx/styles/styles.py +136 -0
  147. python_docx_oss-0.1.0/src/docx/table.py +537 -0
  148. python_docx_oss-0.1.0/src/docx/templates/default-comments.xml +12 -0
  149. python_docx_oss-0.1.0/src/docx/text/font.py +466 -0
  150. python_docx_oss-0.1.0/src/docx/text/hyperlink.py +121 -0
  151. python_docx_oss-0.1.0/src/docx/text/pagebreak.py +104 -0
  152. python_docx_oss-0.1.0/src/docx/text/paragraph.py +173 -0
  153. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/text/parfmt.py +87 -100
  154. python_docx_oss-0.1.0/src/docx/text/run.py +272 -0
  155. python_docx_oss-0.1.0/src/docx/text/tabstops.py +123 -0
  156. python_docx_oss-0.1.0/src/docx/types.py +34 -0
  157. python_docx_oss-0.1.0/src/python_docx_oss.egg-info/PKG-INFO +57 -0
  158. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/python_docx_oss.egg-info/SOURCES.txt +178 -127
  159. python_docx_oss-0.1.0/src/python_docx_oss.egg-info/requires.txt +2 -0
  160. python_docx_oss-0.1.0/tests/conftest.py +21 -0
  161. python_docx_oss-0.1.0/tests/dml/test_color.py +132 -0
  162. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/image/test_bmp.py +7 -12
  163. python_docx_oss-0.1.0/tests/image/test_emf.py +41 -0
  164. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/image/test_gif.py +5 -8
  165. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/image/test_helpers.py +7 -12
  166. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/image/test_image.py +16 -23
  167. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/image/test_jpeg.py +51 -48
  168. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/image/test_png.py +29 -42
  169. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/image/test_svg.py +17 -18
  170. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/image/test_tiff.py +33 -48
  171. python_docx_oss-0.1.0/tests/opc/parts/test_coreprops.py +53 -0
  172. python_docx_oss-0.1.0/tests/opc/test_coreprops.py +188 -0
  173. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/opc/test_customprops.py +23 -27
  174. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/opc/test_oxml.py +7 -11
  175. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/opc/test_package.py +104 -102
  176. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/opc/test_packuri.py +4 -8
  177. python_docx_oss-0.1.0/tests/opc/test_part.py +443 -0
  178. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/opc/test_phys_pkg.py +20 -31
  179. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/opc/test_pkgreader.py +27 -46
  180. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/opc/test_pkgwriter.py +55 -49
  181. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/opc/test_rel.py +32 -31
  182. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/opc/unitdata/rels.py +14 -21
  183. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/opc/unitdata/types.py +1 -7
  184. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/oxml/parts/test_document.py +3 -12
  185. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/oxml/parts/unitdata/document.py +1 -5
  186. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/oxml/test__init__.py +10 -20
  187. python_docx_oss-0.1.0/tests/oxml/test_comments.py +31 -0
  188. python_docx_oss-0.1.0/tests/oxml/test_document.py +19 -0
  189. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/oxml/test_ns.py +2 -8
  190. python_docx_oss-0.1.0/tests/oxml/test_section.py +19 -0
  191. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/oxml/test_styles.py +3 -10
  192. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/oxml/test_table.py +250 -253
  193. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/oxml/test_xmlchemy.py +40 -73
  194. python_docx_oss-0.1.0/tests/oxml/text/test_hyperlink.py +45 -0
  195. python_docx_oss-0.1.0/tests/oxml/text/test_run.py +50 -0
  196. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/oxml/unitdata/numbering.py +1 -5
  197. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/oxml/unitdata/section.py +1 -5
  198. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/oxml/unitdata/shared.py +1 -5
  199. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/oxml/unitdata/styles.py +1 -5
  200. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/oxml/unitdata/text.py +1 -5
  201. python_docx_oss-0.1.0/tests/parts/test_comments.py +87 -0
  202. python_docx_oss-0.1.0/tests/parts/test_document.py +441 -0
  203. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/parts/test_hdrftr.py +7 -14
  204. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/parts/test_image.py +8 -15
  205. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/parts/test_numbering.py +4 -12
  206. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/parts/test_settings.py +3 -11
  207. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/parts/test_story.py +14 -20
  208. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/parts/test_styles.py +2 -8
  209. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/styles/test_latent.py +5 -11
  210. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/styles/test_style.py +28 -45
  211. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/styles/test_styles.py +10 -25
  212. python_docx_oss-0.1.0/tests/test_api.py +56 -0
  213. python_docx_oss-0.1.0/tests/test_blkcntnr.py +151 -0
  214. python_docx_oss-0.1.0/tests/test_comments.py +275 -0
  215. python_docx_oss-0.1.0/tests/test_document.py +447 -0
  216. python_docx_oss-0.1.0/tests/test_drawing.py +74 -0
  217. python_docx_oss-0.1.0/tests/test_enum.py +92 -0
  218. python_docx_oss-0.1.0/tests/test_files/blk-inner-content.docx +0 -0
  219. python_docx_oss-0.1.0/tests/test_files/jpeg_without_app0_and_app1.jpg +0 -0
  220. python_docx_oss-0.1.0/tests/test_files/sct-inner-content.docx +0 -0
  221. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/snippets/inline.txt +2 -2
  222. python_docx_oss-0.1.0/tests/test_files/sonic.emf +0 -0
  223. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_package.py +74 -82
  224. python_docx_oss-0.1.0/tests/test_section.py +877 -0
  225. python_docx_oss-0.1.0/tests/test_settings.py +48 -0
  226. python_docx_oss-0.1.0/tests/test_shape.py +129 -0
  227. python_docx_oss-0.1.0/tests/test_shared.py +121 -0
  228. python_docx_oss-0.1.0/tests/test_table.py +920 -0
  229. python_docx_oss-0.1.0/tests/text/__init__.py +0 -0
  230. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/text/test_font.py +236 -237
  231. python_docx_oss-0.1.0/tests/text/test_hyperlink.py +149 -0
  232. python_docx_oss-0.1.0/tests/text/test_pagebreak.py +141 -0
  233. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/text/test_paragraph.py +123 -36
  234. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/text/test_parfmt.py +3 -10
  235. python_docx_oss-0.1.0/tests/text/test_run.py +408 -0
  236. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/text/test_tabstops.py +4 -11
  237. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/unitdata.py +5 -11
  238. python_docx_oss-0.1.0/tests/unitutil/__init__.py +0 -0
  239. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/unitutil/cxml.py +26 -39
  240. python_docx_oss-0.1.0/tests/unitutil/file.py +56 -0
  241. python_docx_oss-0.1.0/tests/unitutil/mock.py +160 -0
  242. python_docx_oss-0.1.0/tox.ini +9 -0
  243. python_docx_oss-0.0.11/HISTORY.md +0 -61
  244. python_docx_oss-0.0.11/PKG-INFO +0 -151
  245. python_docx_oss-0.0.11/docx/api.py +0 -37
  246. python_docx_oss-0.0.11/docx/blkcntnr.py +0 -77
  247. python_docx_oss-0.0.11/docx/compat.py +0 -39
  248. python_docx_oss-0.0.11/docx/dml/color.py +0 -114
  249. python_docx_oss-0.0.11/docx/document.py +0 -214
  250. python_docx_oss-0.0.11/docx/enum/__init__.py +0 -17
  251. python_docx_oss-0.0.11/docx/enum/base.py +0 -371
  252. python_docx_oss-0.0.11/docx/enum/dml.py +0 -113
  253. python_docx_oss-0.0.11/docx/enum/section.py +0 -91
  254. python_docx_oss-0.0.11/docx/enum/shape.py +0 -23
  255. python_docx_oss-0.0.11/docx/enum/style.py +0 -196
  256. python_docx_oss-0.0.11/docx/enum/table.py +0 -147
  257. python_docx_oss-0.0.11/docx/enum/text.py +0 -279
  258. python_docx_oss-0.0.11/docx/exceptions.py +0 -27
  259. python_docx_oss-0.0.11/docx/image/exceptions.py +0 -23
  260. python_docx_oss-0.0.11/docx/image/image.py +0 -265
  261. python_docx_oss-0.0.11/docx/opc/compat.py +0 -49
  262. python_docx_oss-0.0.11/docx/opc/constants.py +0 -559
  263. python_docx_oss-0.0.11/docx/opc/exceptions.py +0 -19
  264. python_docx_oss-0.0.11/docx/opc/packuri.py +0 -118
  265. python_docx_oss-0.0.11/docx/opc/part.py +0 -245
  266. python_docx_oss-0.0.11/docx/opc/parts/coreprops.py +0 -51
  267. python_docx_oss-0.0.11/docx/opc/pkgwriter.py +0 -127
  268. python_docx_oss-0.0.11/docx/opc/rel.py +0 -181
  269. python_docx_oss-0.0.11/docx/opc/shared.py +0 -46
  270. python_docx_oss-0.0.11/docx/oxml/document.py +0 -69
  271. python_docx_oss-0.0.11/docx/oxml/exceptions.py +0 -16
  272. python_docx_oss-0.0.11/docx/oxml/section.py +0 -370
  273. python_docx_oss-0.0.11/docx/oxml/shared.py +0 -58
  274. python_docx_oss-0.0.11/docx/oxml/table.py +0 -948
  275. python_docx_oss-0.0.11/docx/oxml/text/font.py +0 -377
  276. python_docx_oss-0.0.11/docx/oxml/text/paragraph.py +0 -79
  277. python_docx_oss-0.0.11/docx/oxml/text/run.py +0 -164
  278. python_docx_oss-0.0.11/docx/parts/document.py +0 -181
  279. python_docx_oss-0.0.11/docx/parts/image.py +0 -88
  280. python_docx_oss-0.0.11/docx/parts/settings.py +0 -52
  281. python_docx_oss-0.0.11/docx/parts/story.py +0 -84
  282. python_docx_oss-0.0.11/docx/parts/styles.py +0 -53
  283. python_docx_oss-0.0.11/docx/settings.py +0 -28
  284. python_docx_oss-0.0.11/docx/shared.py +0 -259
  285. python_docx_oss-0.0.11/docx/styles/__init__.py +0 -48
  286. python_docx_oss-0.0.11/docx/styles/latent.py +0 -222
  287. python_docx_oss-0.0.11/docx/styles/style.py +0 -263
  288. python_docx_oss-0.0.11/docx/styles/styles.py +0 -150
  289. python_docx_oss-0.0.11/docx/table.py +0 -467
  290. python_docx_oss-0.0.11/docx/text/font.py +0 -424
  291. python_docx_oss-0.0.11/docx/text/paragraph.py +0 -142
  292. python_docx_oss-0.0.11/docx/text/run.py +0 -192
  293. python_docx_oss-0.0.11/docx/text/tabstops.py +0 -142
  294. python_docx_oss-0.0.11/features/run-access-content.feature +0 -9
  295. python_docx_oss-0.0.11/features/steps/block.py +0 -56
  296. python_docx_oss-0.0.11/features/steps/cell.py +0 -57
  297. python_docx_oss-0.0.11/features/steps/helpers.py +0 -42
  298. python_docx_oss-0.0.11/features/steps/paragraph.py +0 -173
  299. python_docx_oss-0.0.11/python_docx_oss.egg-info/PKG-INFO +0 -151
  300. python_docx_oss-0.0.11/python_docx_oss.egg-info/not-zip-safe +0 -1
  301. python_docx_oss-0.0.11/python_docx_oss.egg-info/requires.txt +0 -1
  302. python_docx_oss-0.0.11/setup.py +0 -79
  303. python_docx_oss-0.0.11/tests/dml/test_color.py +0 -149
  304. python_docx_oss-0.0.11/tests/image/test_emf.py +0 -38
  305. python_docx_oss-0.0.11/tests/opc/parts/test_coreprops.py +0 -53
  306. python_docx_oss-0.0.11/tests/opc/test_coreprops.py +0 -198
  307. python_docx_oss-0.0.11/tests/opc/test_part.py +0 -521
  308. python_docx_oss-0.0.11/tests/oxml/text/test_run.py +0 -65
  309. python_docx_oss-0.0.11/tests/parts/test_document.py +0 -333
  310. python_docx_oss-0.0.11/tests/test_api.py +0 -74
  311. python_docx_oss-0.0.11/tests/test_blkcntnr.py +0 -136
  312. python_docx_oss-0.0.11/tests/test_document.py +0 -406
  313. python_docx_oss-0.0.11/tests/test_enum.py +0 -102
  314. python_docx_oss-0.0.11/tests/test_section.py +0 -841
  315. python_docx_oss-0.0.11/tests/test_settings.py +0 -67
  316. python_docx_oss-0.0.11/tests/test_shape.py +0 -200
  317. python_docx_oss-0.0.11/tests/test_shared.py +0 -137
  318. python_docx_oss-0.0.11/tests/test_table.py +0 -1005
  319. python_docx_oss-0.0.11/tests/text/test_run.py +0 -359
  320. python_docx_oss-0.0.11/tests/unitutil/file.py +0 -61
  321. python_docx_oss-0.0.11/tests/unitutil/mock.py +0 -124
  322. python_docx_oss-0.0.11/tox.ini +0 -27
  323. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/LICENSE +0 -0
  324. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/Makefile +0 -0
  325. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/_static/.gitignore +0 -0
  326. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/_static/img/example-docx-01.png +0 -0
  327. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/_static/img/hdrftr-01.png +0 -0
  328. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/_static/img/hdrftr-02.png +0 -0
  329. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/_static/img/oss.png +0 -0
  330. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/_templates/layout.html +0 -0
  331. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/_templates/sidebarlinks.html +0 -0
  332. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/_themes/armstrong/LICENSE +0 -0
  333. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/_themes/armstrong/layout.html +0 -0
  334. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/_themes/armstrong/rtd-themes.conf +0 -0
  335. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/_themes/armstrong/static/rtd.css_t +0 -0
  336. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/_themes/armstrong/theme.conf +0 -0
  337. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/_themes/armstrong/theme.conf.orig +0 -0
  338. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/dml.rst +0 -0
  339. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/document.rst +0 -0
  340. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/enum/MsoColorType.rst +0 -0
  341. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/enum/MsoThemeColorIndex.rst +0 -0
  342. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/enum/WdAlignParagraph.rst +0 -0
  343. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/enum/WdBuiltinStyle.rst +0 -0
  344. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/enum/WdCellVerticalAlignment.rst +0 -0
  345. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/enum/WdColorIndex.rst +0 -0
  346. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/enum/WdLineSpacing.rst +0 -0
  347. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/enum/WdOrientation.rst +0 -0
  348. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/enum/WdRowAlignment.rst +0 -0
  349. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/enum/WdRowHeightRule.rst +0 -0
  350. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/enum/WdSectionStart.rst +0 -0
  351. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/enum/WdStyleType.rst +0 -0
  352. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/enum/WdTabAlignment.rst +0 -0
  353. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/enum/WdTabLeader.rst +0 -0
  354. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/enum/WdTableDirection.rst +0 -0
  355. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/enum/WdUnderline.rst +0 -0
  356. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/enum/index.rst +0 -0
  357. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/section.rst +0 -0
  358. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/settings.rst +0 -0
  359. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/shape.rst +0 -0
  360. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/shared.rst +0 -0
  361. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/style.rst +0 -0
  362. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/table.rst +0 -0
  363. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/api/text.rst +0 -0
  364. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/header.rst +0 -0
  365. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/numbering.rst +0 -0
  366. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/sections.rst +0 -0
  367. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/settings.rst +0 -0
  368. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/shapes/index.rst +0 -0
  369. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/shapes/picture.rst +0 -0
  370. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/shapes/shapes-inline-size.rst +0 -0
  371. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/shapes/shapes-inline.rst +0 -0
  372. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/styles/character-style.rst +0 -0
  373. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/styles/index.rst +0 -0
  374. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/styles/latent-styles.rst +0 -0
  375. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/styles/paragraph-style.rst +0 -0
  376. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/styles/style.rst +0 -0
  377. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/styles/styles.rst +0 -0
  378. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/table/cell-merge.rst +0 -0
  379. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/table/index.rst +0 -0
  380. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/table/table-cell.rst +0 -0
  381. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/table/table-props.rst +0 -0
  382. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/table/table-row.rst +0 -0
  383. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/text/breaks.rst +0 -0
  384. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/text/font-color.rst +0 -0
  385. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/text/font-highlight-color.rst +0 -0
  386. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/text/font.rst +0 -0
  387. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/text/paragraph-format.rst +0 -0
  388. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/text/run-content.rst +0 -0
  389. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/text/tab-stops.rst +0 -0
  390. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/features/text/underline.rst +0 -0
  391. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/schema/ct_body.rst +0 -0
  392. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/schema/ct_document.rst +0 -0
  393. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/dev/analysis/schema/ct_p.rst +0 -0
  394. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/requirements.txt +0 -0
  395. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/user/api-concepts.rst +0 -0
  396. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/user/custom-properties.rst +0 -0
  397. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/user/custom-xml.rst +0 -0
  398. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/user/documents.rst +0 -0
  399. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/user/hdrftr.rst +0 -0
  400. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/user/quickstart.rst +0 -0
  401. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/user/sections.rst +0 -0
  402. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/user/shapes.rst +0 -0
  403. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/user/styles-understanding.rst +0 -0
  404. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/user/styles-using.rst +0 -0
  405. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/docs/user/text.rst +0 -0
  406. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/api-open-document.feature +0 -0
  407. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/blk-add-paragraph.feature +0 -0
  408. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/blk-add-table.feature +0 -0
  409. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/doc-access-collections.feature +0 -0
  410. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/doc-access-sections.feature +0 -0
  411. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/doc-add-heading.feature +0 -0
  412. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/doc-add-page-break.feature +0 -0
  413. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/doc-add-paragraph.feature +0 -0
  414. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/doc-add-picture.feature +0 -0
  415. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/doc-add-section.feature +0 -0
  416. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/doc-add-table.feature +0 -0
  417. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/doc-coreprops.feature +0 -0
  418. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/doc-customprops.feature +0 -0
  419. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/doc-settings.feature +0 -0
  420. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/doc-styles.feature +0 -0
  421. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/hdr-header-footer.feature +0 -0
  422. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/img-characterize-image.feature +0 -0
  423. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/num-access-numbering-part.feature +0 -0
  424. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/par-access-parfmt.feature +0 -0
  425. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/par-add-run.feature +0 -0
  426. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/par-alignment-prop.feature +0 -0
  427. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/par-clear-paragraph.feature +0 -0
  428. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/par-insert-paragraph.feature +0 -0
  429. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/par-set-text.feature +0 -0
  430. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/par-style-prop.feature +0 -0
  431. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/run-access-font.feature +0 -0
  432. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/run-add-picture.feature +0 -0
  433. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/run-char-style.feature +0 -0
  434. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/run-clear-run.feature +0 -0
  435. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/run-enum-props.feature +0 -0
  436. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/shp-inline-shape-access.feature +0 -0
  437. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/shp-inline-shape-size.feature +0 -0
  438. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/customprops.py +0 -0
  439. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/blk-containing-table.docx +0 -0
  440. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/court-exif.jpg +0 -0
  441. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/doc-access-sections.docx +0 -0
  442. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/doc-add-section.docx +0 -0
  443. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/doc-coreprops.docx +0 -0
  444. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/doc-customprops-legacy.docx +0 -0
  445. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/doc-customprops.docx +0 -0
  446. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/doc-default.docx +0 -0
  447. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/doc-no-coreprops.docx +0 -0
  448. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/doc-no-customprops.docx +0 -0
  449. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/doc-odd-even-hdrs.docx +0 -0
  450. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/doc-word-default-blank.docx +0 -0
  451. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/fnt-color.docx +0 -0
  452. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/hdr-header-footer.docx +0 -0
  453. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/jfif-300-dpi.jpg +0 -0
  454. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/jpeg420exif.jpg +0 -0
  455. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/lena.bmp +0 -0
  456. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/lena.gif +0 -0
  457. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/lena.tif +0 -0
  458. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/lena_std.jpg +0 -0
  459. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/monty-truth.png +0 -0
  460. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/mountain.bmp +0 -0
  461. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/num-having-numbering-part.docx +0 -0
  462. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/par-alignment.docx +0 -0
  463. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/par-known-paragraphs.docx +0 -0
  464. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/par-known-styles.docx +0 -0
  465. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/python-icon.jpeg +0 -0
  466. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/run-char-style.docx +0 -0
  467. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/run-enumerated-props.docx +0 -0
  468. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/sample.tif +0 -0
  469. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/sct-first-page-hdrftr.docx +0 -0
  470. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/sct-section-props.docx +0 -0
  471. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/set-no-settings-part.docx +0 -0
  472. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/shp-inline-shape-access.docx +0 -0
  473. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/sty-behav-props.docx +0 -0
  474. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/sty-having-no-styles-part.docx +0 -0
  475. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/sty-having-styles-part.docx +0 -0
  476. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/sty-known-styles.docx +0 -0
  477. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/tab-stops.docx +0 -0
  478. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/tbl-2x2-table.docx +0 -0
  479. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/tbl-cell-access.docx +0 -0
  480. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/tbl-col-props.docx +0 -0
  481. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/tbl-having-applied-style.docx +0 -0
  482. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/tbl-having-tables.docx +0 -0
  483. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/tbl-on-off-props.docx +0 -0
  484. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/test.png +0 -0
  485. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/txt-font-highlight-color.docx +0 -0
  486. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/steps/test_files/txt-font-props.docx +0 -0
  487. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/sty-access-font.feature +0 -0
  488. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/sty-access-latent-styles.feature +0 -0
  489. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/sty-access-parfmt.feature +0 -0
  490. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/sty-add-style.feature +0 -0
  491. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/sty-delete-style.feature +0 -0
  492. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/sty-latent-add-del.feature +0 -0
  493. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/sty-latent-props.feature +0 -0
  494. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/sty-style-props.feature +0 -0
  495. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/tab-access-tabs.feature +0 -0
  496. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/tab-tabstop-props.feature +0 -0
  497. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/tbl-add-row-or-col.feature +0 -0
  498. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/tbl-cell-access.feature +0 -0
  499. /python_docx_oss-0.0.11/features/cel-add-table.feature → /python_docx_oss-0.1.0/features/tbl-cell-add-table.feature +0 -0
  500. /python_docx_oss-0.0.11/features/cel-text.feature → /python_docx_oss-0.1.0/features/tbl-cell-text.feature +0 -0
  501. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/tbl-col-props.feature +0 -0
  502. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/tbl-item-access.feature +0 -0
  503. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/tbl-merge-cells.feature +0 -0
  504. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/tbl-props.feature +0 -0
  505. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/tbl-style.feature +0 -0
  506. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/txt-add-break.feature +0 -0
  507. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/txt-font-color.feature +0 -0
  508. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/txt-font-props.feature +0 -0
  509. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/features/txt-parfmt-props.feature +0 -0
  510. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/setup.cfg +0 -0
  511. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/dml/__init__.py +0 -0
  512. {python_docx_oss-0.0.11/docx/opc → python_docx_oss-0.1.0/src/docx/enum}/__init__.py +0 -0
  513. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/image/svg.py +0 -0
  514. {python_docx_oss-0.0.11/docx/opc/parts → python_docx_oss-0.1.0/src/docx/opc}/__init__.py +0 -0
  515. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/opc/customprops.py +0 -0
  516. {python_docx_oss-0.0.11/docx/oxml/text → python_docx_oss-0.1.0/src/docx/opc/parts}/__init__.py +0 -0
  517. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/opc/parts/customprops.py +0 -0
  518. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/oxml/customprops.py +0 -0
  519. {python_docx_oss-0.0.11/docx/parts → python_docx_oss-0.1.0/src/docx/oxml/text}/__init__.py +0 -0
  520. {python_docx_oss-0.0.11/docx/text → python_docx_oss-0.1.0/src/docx/parts}/__init__.py +0 -0
  521. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/parts/customxml.py +0 -0
  522. /python_docx_oss-0.0.11/tests/__init__.py → /python_docx_oss-0.1.0/src/docx/py.typed +0 -0
  523. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-docx-template/[Content_Types].xml +0 -0
  524. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-docx-template/_rels/.rels +0 -0
  525. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-docx-template/customXml/_rels/item1.xml.rels +0 -0
  526. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-docx-template/customXml/item1.xml +0 -0
  527. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-docx-template/customXml/itemProps1.xml +0 -0
  528. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-docx-template/docProps/app.xml +0 -0
  529. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-docx-template/docProps/core.xml +0 -0
  530. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-docx-template/docProps/thumbnail.jpeg +0 -0
  531. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-docx-template/word/_rels/document.xml.rels +0 -0
  532. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-docx-template/word/document.xml +0 -0
  533. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-docx-template/word/fontTable.xml +0 -0
  534. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-docx-template/word/numbering.xml +0 -0
  535. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-docx-template/word/settings.xml +0 -0
  536. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-docx-template/word/styles.xml +0 -0
  537. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-docx-template/word/stylesWithEffects.xml +0 -0
  538. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-docx-template/word/theme/theme1.xml +0 -0
  539. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-docx-template/word/webSettings.xml +0 -0
  540. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-footer.xml +0 -0
  541. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-header.xml +0 -0
  542. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-numbering.xml +0 -0
  543. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-settings.xml +0 -0
  544. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default-styles.xml +0 -0
  545. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/docx/templates/default.docx +0 -0
  546. {python_docx_oss-0.0.11/tests/dml → python_docx_oss-0.1.0/src/docx/text}/__init__.py +0 -0
  547. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/python_docx_oss.egg-info/dependency_links.txt +0 -0
  548. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0/src}/python_docx_oss.egg-info/top_level.txt +0 -0
  549. {python_docx_oss-0.0.11/tests/image → python_docx_oss-0.1.0/tests}/__init__.py +0 -0
  550. {python_docx_oss-0.0.11/tests/opc → python_docx_oss-0.1.0/tests/dml}/__init__.py +0 -0
  551. {python_docx_oss-0.0.11/tests/opc/parts → python_docx_oss-0.1.0/tests/image}/__init__.py +0 -0
  552. {python_docx_oss-0.0.11/tests/opc/unitdata → python_docx_oss-0.1.0/tests/opc}/__init__.py +0 -0
  553. {python_docx_oss-0.0.11/tests/oxml → python_docx_oss-0.1.0/tests/opc/parts}/__init__.py +0 -0
  554. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/opc/parts/test_customprops.py +0 -0
  555. {python_docx_oss-0.0.11/tests/oxml/parts → python_docx_oss-0.1.0/tests/opc/unitdata}/__init__.py +0 -0
  556. {python_docx_oss-0.0.11/tests/oxml/parts/unitdata → python_docx_oss-0.1.0/tests/oxml}/__init__.py +0 -0
  557. {python_docx_oss-0.0.11/tests/oxml/text → python_docx_oss-0.1.0/tests/oxml/parts}/__init__.py +0 -0
  558. {python_docx_oss-0.0.11/tests/oxml → python_docx_oss-0.1.0/tests/oxml/parts}/unitdata/__init__.py +0 -0
  559. {python_docx_oss-0.0.11/tests/parts → python_docx_oss-0.1.0/tests/oxml/text}/__init__.py +0 -0
  560. {python_docx_oss-0.0.11/tests/styles → python_docx_oss-0.1.0/tests/oxml/unitdata}/__init__.py +0 -0
  561. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/oxml/unitdata/dml.py +0 -0
  562. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/oxml/unitdata/table.py +0 -0
  563. {python_docx_oss-0.0.11/tests/text → python_docx_oss-0.1.0/tests/parts}/__init__.py +0 -0
  564. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/parts/test_customxml.py +0 -0
  565. {python_docx_oss-0.0.11/tests/unitutil → python_docx_oss-0.1.0/tests/styles}/__init__.py +0 -0
  566. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/150-dpi.png +0 -0
  567. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/300-dpi.TIF +0 -0
  568. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/300-dpi.jpg +0 -0
  569. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/300-dpi.png +0 -0
  570. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/72-dpi.tiff +0 -0
  571. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/CVS_LOGO.WMF +0 -0
  572. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/exif-420-dpi.jpg +0 -0
  573. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/expanded_docx/[Content_Types].xml +0 -0
  574. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/expanded_docx/_rels/.rels +0 -0
  575. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/expanded_docx/customXml/_rels/item1.xml.rels +0 -0
  576. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/expanded_docx/customXml/item1.xml +0 -0
  577. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/expanded_docx/customXml/itemProps1.xml +0 -0
  578. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/expanded_docx/docProps/app.xml +0 -0
  579. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/expanded_docx/docProps/core.xml +0 -0
  580. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/expanded_docx/docProps/thumbnail.jpeg +0 -0
  581. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/expanded_docx/word/_rels/document.xml.rels +0 -0
  582. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/expanded_docx/word/document.xml +0 -0
  583. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/expanded_docx/word/fontTable.xml +0 -0
  584. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/expanded_docx/word/numbering.xml +0 -0
  585. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/expanded_docx/word/settings.xml +0 -0
  586. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/expanded_docx/word/styles.xml +0 -0
  587. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/expanded_docx/word/stylesWithEffects.xml +0 -0
  588. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/expanded_docx/word/theme/theme1.xml +0 -0
  589. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/expanded_docx/word/webSettings.xml +0 -0
  590. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/having-images.docx +0 -0
  591. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/jfif-iguana.jpg +0 -0
  592. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/little-endian.tif +0 -0
  593. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/monty-truth.png +0 -0
  594. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/python-icon.jpeg +0 -0
  595. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/python-icon.png +0 -0
  596. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/python-powered.png +0 -0
  597. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/python.bmp +0 -0
  598. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/snippets/add-row-col.txt +0 -0
  599. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/snippets/new-tbl.txt +0 -0
  600. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/snippets/tbl-cells.txt +0 -0
  601. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/sonic.gif +0 -0
  602. {python_docx_oss-0.0.11 → python_docx_oss-0.1.0}/tests/test_files/test.docx +0 -0
@@ -1,5 +1,6 @@
1
- include HISTORY.md LICENSE README.md tox.ini
2
- graft docx/templates
1
+ include HISTORY.rst LICENSE README.rst tox.ini
2
+ include requirements*.txt
3
+ graft src/docx/templates
3
4
  graft features
4
5
  graft tests
5
6
  graft docs
@@ -0,0 +1,57 @@
1
+ Metadata-Version: 2.4
2
+ Name: python-docx-oss
3
+ Version: 0.1.0
4
+ Summary: Create, read, and update Microsoft Word .docx files.
5
+ Author: Ethan St. Lee
6
+ License: MIT
7
+ Keywords: docx,office,openxml,word
8
+ Classifier: Development Status :: 5 - Production/Stable
9
+ Classifier: Environment :: Console
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Programming Language :: Python
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Topic :: Office/Business :: Office Suites
18
+ Classifier: Topic :: Software Development :: Libraries
19
+ Requires-Python: >=3.12
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE
22
+ Requires-Dist: lxml>=3.1.0
23
+ Requires-Dist: typing_extensions>=4.9.0
24
+ Dynamic: license-file
25
+
26
+ <p align="center">
27
+ <img src="https://raw.githubusercontent.com/lsaint/python-docx-oss/master/docs/_static/img/oss.png" width="400" alt="oss"/>
28
+ </p>
29
+
30
+ _As a Brazilian jiu-jitsu player, OSS means anything and everything. It's a term used in BJJ that is a way of greeting and demonstrating respect to others._
31
+
32
+ **_python-docx-oss_** is a Python library for CRUD Microsoft Word (.docx) files. It fork from [python-docx](https://github.com/python-openxml/python-docx).
33
+
34
+ <p>
35
+ <a href="https://pypi.org/project/python-docx-oss/"><img alt="PyPI" src="https://img.shields.io/pypi/v/python-docx-oss"></a>
36
+ <a href="https://pypi.org/project/python-docx-oss"> <img src="https://img.shields.io/pypi/pyversions/python-docx-oss.svg"/></a>
37
+ <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>
38
+ <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>
39
+ </p>
40
+
41
+ ______________________________________________________________________
42
+
43
+ ### FAQ
44
+
45
+ **Q: What's New?**
46
+
47
+ **A:** [HISTORY](https://github.com/lsaint/python-docx-oss/blob/master/HISTORY.md)
48
+
49
+ ______________________________________________________________________
50
+
51
+ More information is available in the [python-docx-oss documentation](https://python-docx-oss.readthedocs.io/en/latest/)
52
+
53
+ This project is based on the original work by [Steve Canny](https://github.com/scanny) and has been modified by [Ethan St. Lee](https://github.com/lsaint).
54
+
55
+ ### Donation
56
+
57
+ [https://lsaint.github.io/donation/](https://lsaint.github.io/donation/)
@@ -9,7 +9,7 @@ _As a Brazilian jiu-jitsu player, OSS means anything and everything. It's a term
9
9
  <p>
10
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
11
  <a href="https://pypi.org/project/python-docx-oss"> <img src="https://img.shields.io/pypi/pyversions/python-docx-oss.svg"/></a>
12
- <a href="https://github.com/psf/black"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-000000.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
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
14
  </p>
15
15
 
@@ -0,0 +1,27 @@
1
+
2
+ .. _comments_api:
3
+
4
+ Comment-related objects
5
+ =======================
6
+
7
+ .. currentmodule:: docx.comments
8
+
9
+
10
+ |Comments| objects
11
+ ------------------
12
+
13
+ .. autoclass:: Comments()
14
+ :members:
15
+ :inherited-members:
16
+ :exclude-members:
17
+ part
18
+
19
+
20
+ |Comment| objects
21
+ ------------------
22
+
23
+ .. autoclass:: Comment()
24
+ :members:
25
+ :inherited-members:
26
+ :exclude-members:
27
+ part
@@ -155,6 +155,18 @@ rst_epilog = """
155
155
  .. |True| replace:: :class:`True`
156
156
 
157
157
  .. |ValueError| replace:: :class:`ValueError`
158
+
159
+ .. |CharacterStyle| replace:: :class:`.CharacterStyle`
160
+
161
+ .. |Comment| replace:: :class:`.Comment`
162
+
163
+ .. |Comments| replace:: :class:`.Comments`
164
+
165
+ .. |Hyperlink| replace:: :class:`.Hyperlink`
166
+
167
+ .. |ParagraphStyle| replace:: :class:`.ParagraphStyle`
168
+
169
+ .. |RenderedPageBreak| replace:: :class:`.RenderedPageBreak`
158
170
  """
159
171
 
160
172
  # -- General configuration ---------------------------------------------------
@@ -0,0 +1,419 @@
1
+
2
+ Comments
3
+ ========
4
+
5
+ Word allows *comments* to be added to a document. This is an aspect of the *reviewing*
6
+ feature-set and is typically used by a second party to provide feedback to the author
7
+ without changing the document itself.
8
+
9
+ The procedure is simple:
10
+
11
+ - You select some range of text with the mouse or Shift+Arrow keys
12
+ - You press the *New Comment* button (Review toolbar)
13
+ - You type or paste in your comment
14
+
15
+ .. image:: /_static/img/comment-parts.png
16
+
17
+ **Comment Anatomy.** Each comment has two parts, the *comment-reference* and the
18
+ *comment-content*:
19
+
20
+ The *comment-refererence*, sometimes *comment-anchor*, is the text you selected before
21
+ pressing the *New Comment* button. It is a *range* in the document content delimited by
22
+ a start marker and an end marker, and containing the *id* of the comment that refers to
23
+ it.
24
+
25
+ The *comment-content* is whatever content you typed or pasted in. The content for each
26
+ comment is stored in the separate *comments-part* (part-name ``word/comments.xml``) as a
27
+ distinct comment object. Each comment has a unique id, allowing a comment reference to
28
+ be associated with its content and vice versa.
29
+
30
+ **Comment Reference.** The comment-reference is a *range*. A range must both start and
31
+ end at an even *run* boundary. Intuitively, a range corresponds to a *selection* of text
32
+ in the Word UI, one formed by dragging with the mouse or using the *Shift-Arrow* keys.
33
+
34
+ In general a range can span "run containers", such as paragraphs, such that the range
35
+ begins in one paragraph and ends in a later paragraph. However, a range must enclose
36
+ *contiguous* runs, such that a range that contains only two vertically adjacent cells in
37
+ a multi-column table is not possible (even though such a selection with the mouse is
38
+ possible).
39
+
40
+ **Comment Content.** Interestingly, although commonly used to contain a single line of
41
+ plain text, the comment-content can contain essentially any content that can appear in
42
+ the document body. This includes rich text with emphasis, runs with a different typeface
43
+ and size, both paragraph and character styles, hyperlinks, images, and tables. Note that
44
+ tables do not appear in the comment as displayed in the *comment-sidebar* although they
45
+ do apper in the *reviewing-pane*.
46
+
47
+ **Comment Metadata.** Each comment can be assigned *author*, *initals*, and *date*
48
+ metadata. In Word, these fields are assigned automatically based on values in ``Settings
49
+ > User`` of the installed Word application. These may be configured automatically in an
50
+ enterprise installation, based on the user account, but by default they are empty.
51
+
52
+ *author* metadata is required, although silently assigned the empty string by Word if
53
+ the user name is not configured. *initials* is optional, but always set by Word, to the
54
+ empty string if not configured. *date* is also optional, but always set by Word to the
55
+ date and time the comment was added (seconds resolution, UTC).
56
+
57
+ **Additional Features.** Later versions of Word allow a comment to be *resolved*. A
58
+ comment in this state will appear grayed-out in the Word UI. Later versions of Word also
59
+ allow a comment to be *replied to*, forming a *comment thread*. Neither of these
60
+ features is supported by the initial implementation of comments in *python-docx*.
61
+
62
+ The resolved-status and replies features are implemented as *extensions* and involve two
63
+ additional comment-related parts:
64
+
65
+ - `commentsExtended.xml` - contains completion (resolved) status and parent-id for
66
+ threading comment responses; keys to `w15:paraId` of comment paragraph in
67
+ `comments.xml`
68
+ - `commentsIds.xml` - maps `w16cid:paraId` to `w16cid:durableId`, not sure what that is
69
+ exactly.
70
+
71
+ **Applicability.** Note that comments cannot be added to a header or footer and cannot
72
+ be nested inside a comment itself. In general the *python-docx* API will not allow these
73
+ operations but if you outsmart it then the resulting comment will either be silently
74
+ removed or trigger a repair error when the document is loaded by Word.
75
+
76
+
77
+ Word Behavior
78
+ -------------
79
+
80
+ - A DOCX package does not contain a ``comments.xml`` part by default. It is added to the
81
+ package when the first comment is added to the document.
82
+
83
+ - A newly-created comment contains a single paragraph
84
+
85
+ - Word starts `w:id` at 0 and increments from there. It appears to use a
86
+ `max(comment_ids) + 1` algorithm rather than aggressively filling in id numbering
87
+ gaps.
88
+
89
+ - Word-behavior: looks like Word doesn't allow a "zero-length" comment reference; if you
90
+ insert a comment when no text is selected, the word prior to the insertion-point is
91
+ selected.
92
+
93
+ - Word allows a comment to be applied to a range that starts before any character and
94
+ ends after any later character. However, the XML range-markers can only be placed
95
+ between runs. Word accommodates this be breaking runs as necessary to start and stop
96
+ at the desired character positions.
97
+
98
+
99
+ MS API
100
+ ------
101
+
102
+ .. highlight:: python
103
+
104
+ **Document**::
105
+
106
+ Document.Comments
107
+
108
+ **Comments**
109
+
110
+ https://learn.microsoft.com/en-us/office/vba/api/word.comments::
111
+
112
+ Comments.Add(Range, Text) -> Comment
113
+
114
+ # -- retrieve comment by array idx, not comment_id key --
115
+ Comments.Item(idx: Long) -> Comment
116
+
117
+ Comments.Count() -> Long
118
+
119
+ # -- restrict visible comments to those by a particular reviewer
120
+ Comments.ShowBy = "Travis McGuillicuddy"
121
+
122
+ **Comment**
123
+
124
+ https://learn.microsoft.com/en-us/office/vba/api/word.comment::
125
+
126
+ # -- delete comment and all replies to it --
127
+ Comment.DeleteRecursively() -> void
128
+
129
+ # -- open OLE object embedded in comment for editing --
130
+ Comment.Edit() -> void
131
+
132
+ # -- get the "parent" comment when this comment is a reply --
133
+ Comment.Ancestor() -> Comment | Nothing
134
+
135
+ # -- author of this comment, with email and name fields --
136
+ Comment.Contact -> CoAuthor
137
+
138
+ Comment.Date -> Date
139
+ Comment.Done -> bool
140
+ Comment.IsInk -> bool
141
+
142
+ # -- content of the comment, contrast with `Reference` below --
143
+ Comment.Range -> Range
144
+
145
+ # -- content within document this comment refers to --
146
+ Comment.Reference -> Range
147
+
148
+ Comment.Replies -> Comments
149
+
150
+ # -- described in API docs like the same thing as `Reference` --
151
+ Comment.Scope -> Range
152
+
153
+
154
+ Candidate Protocol
155
+ ------------------
156
+
157
+ .. highlight:: python
158
+
159
+ The critical required reference for adding a comment is the *range* referred to by the
160
+ comment; i.e. the "selection" of text that is being commented on. Because this range
161
+ must start and end at an even run boundary, it is enough to specify the first and last
162
+ run in the range, where a single run can be both the start and end run::
163
+
164
+ >>> paragraph = document.add_paragraph("Hello, world!")
165
+ >>> document.add_comment(
166
+ ... runs=paragraph.runs,
167
+ ... text="I have this to say about that"
168
+ ... author="Ethan St. Lee",
169
+ ... initials="SC",
170
+ ... )
171
+ <docx.comments.Comment object at 0x02468ACE>
172
+
173
+ A single run can be provided when that is more convenient::
174
+
175
+ >>> paragraph = document.add_paragraph("Summary: ")
176
+ >>> run = paragraph.add_run("{{place-summary-here}}
177
+ >>> document.add_comment(
178
+ ... run, text="The AI model will replace this placeholder with a summary"
179
+ ... )
180
+ <docx.comments.Comment object at 0x02468ACE>
181
+
182
+ Note that `author` and `initials` are optional parameters; both default to the empty
183
+ string.
184
+
185
+ `text` is also an optional parameter and also defaults to the empty string. Omitting a
186
+ `text` argument (or passing `text=""`) produces a comment containing a single paragraph
187
+ you can immediately add runs to and add additional paragraphs after:
188
+
189
+ >>> paragraph = document.add_paragraph("Summary: ")
190
+ >>> run = paragraph.add_run("{{place-summary-here}}")
191
+ >>> comment = document.add_comment(run)
192
+ >>> paragraph = comment.paragraphs[0]
193
+ >>> paragraph.add_run("The ")
194
+ >>> paragraph.add_run("AI model").bold = True
195
+ >>> paragraph.add_run(" will replace this placeholder with a ")
196
+ >>> paragraph.add_run("summary").bold = True
197
+ <docx.comments.Comment object at 0x02468ACE>
198
+
199
+ A method directly on |Run| may also be convenient, since you will always have the first
200
+ run of the range in hand when adding a comment but may not have ready access to the
201
+ ``document`` object::
202
+
203
+ >>> runs = find_sequence_of_one_or_more_runs_to_comment_on()
204
+ >>> runs[0].add_comment(
205
+ ... last_run=runs[-1],
206
+ ... text="The AI model will replace this placeholder with a summary",
207
+ ... )
208
+ <docx.comments.Comment object at 0x02468ACE>
209
+
210
+ However, in this situation we would need to qualify the runs as being inside the
211
+ document part and not in a header or footer or comment, and perhaps other invalid
212
+ comment locations. I believe comments can be applied to footnotes and endnotes though.
213
+
214
+
215
+ Specimen XML
216
+ ------------
217
+
218
+ .. highlight:: xml
219
+
220
+ ``comments.xml`` (namespace declarations may vary)::
221
+
222
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
223
+ <w:comments
224
+ xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
225
+ xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
226
+ xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
227
+ xmlns:p="... others omitted for brevity ...">
228
+ >
229
+ <w:comment w:id="0" w:author="Ethan St. Lee" w:initials="SJC" w:date="2025-06-10T22:27:56Z">
230
+ <w:p>
231
+ <w:r>
232
+ <w:rPr>
233
+ <w:rStyle w:val="CommentReference"/>
234
+ </w:rPr>
235
+ <w:annotationRef/>
236
+ </w:r>
237
+ <w:r>
238
+ <w:t>I have this to say about that</w:t>
239
+ </w:r>
240
+ </w:p>
241
+ </w:comment>
242
+ </w:comments>
243
+
244
+
245
+ Comment reference in document body::
246
+
247
+ <w:p>
248
+ <w:commentRangeStart w:id="0"/>
249
+ <w:r>
250
+ <w:t>Hello, world!</w:t>
251
+ </w:r>
252
+ <w:commentRangeEnd w:id="0"/>
253
+ <w:r>
254
+ <w:rPr>
255
+ <w:rStyle w:val="CommentReference"/>
256
+ </w:rPr>
257
+ <w:commentReference w:id="0"/>
258
+ </w:r>
259
+ </w:p>
260
+
261
+
262
+ **Notes**
263
+
264
+ - `w:comment` is a *block-item* container, and can contain any content that can appear
265
+ in a document body or table cell, including both paragraphs and tables (and whatever
266
+ can go inside those, like images, hyperlinks, etc.
267
+
268
+ - Word places the `w:annotationRef`-containing run as the first run in the first
269
+ paragraph of the comment. I haven't been able to detect any behavior change caused by
270
+ leaving this out or placing it elsewhere in the comment content.
271
+
272
+ - Relationships referenced from within `w:comment` content are relationships *from the
273
+ comments part* to the image part, hyperlink, etc.
274
+
275
+ - `w:commentRangeStart` and `w:commentRangeEnd` elements are *optional*. The
276
+ authoritative position of the comment is the required `w:commentReference` element.
277
+ This means the *ending* location of a comment anchor can be efficiently found using
278
+ XPath.
279
+
280
+
281
+ Schema Excerpt
282
+ --------------
283
+
284
+ **Notes:**
285
+
286
+ - `commentRangeStart` and `commentRangeEnd` are both type `CT_MarkupRange` and both
287
+ belong to `EG_RunLevelElts` (peers of `w:r`) which gives them their positioning in the
288
+ document structure.
289
+
290
+ - These two markers can occur at the *block* level, at the *run* level, or at the *table
291
+ row* or *cell* level. However Word only seems to use them as peers of `w:r`. These can
292
+ occur as a sibling to:
293
+
294
+ - a *paragraph* (`w:p`)
295
+ - a *table* (`w:tbl`)
296
+ - a *run* (`w:r`)
297
+ - a *table row* (`w:tr`)
298
+ - a *table cell* (`w:tc`)
299
+
300
+ .. code-block:: xml
301
+
302
+ <!-- marker types that appear in `document.xml` to mark the referenced range -->
303
+
304
+ <xsd:element name="commentRangeStart" type="CT_MarkupRange"/>
305
+ <xsd:element name="commentRangeEnd" type="CT_MarkupRange"/>
306
+ <xsd:element name="commentReference" type="CT_Markup"/>
307
+
308
+ <xsd:complexType name="CT_MarkupRange">
309
+ <xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
310
+ <xsd:attribute name="displacedByCustomXml" type="ST_DisplacedByCustomXml" use="optional"/>
311
+ </xsd:complexType>
312
+
313
+ <xsd:simpleType name="ST_DisplacedByCustomXml">
314
+ <xsd:restriction base="xsd:string">
315
+ <xsd:enumeration value="next"/>
316
+ <xsd:enumeration value="prev"/>
317
+ </xsd:restriction>
318
+ </xsd:simpleType>
319
+
320
+ <xsd:complexType name="CT_Markup">
321
+ <xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
322
+ </xsd:complexType>
323
+
324
+ <!-- CT_Comment (individual comment in comments.xml) consolidated -->
325
+
326
+ <xsd:complexType name="CT_Comment"> <!-- denormalized -->
327
+ <xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
328
+ <xsd:attribute name="author" type="s:ST_String" use="required"/>
329
+ <xsd:attribute name="date" type="ST_DateTime" use="optional"/>
330
+ <xsd:attribute name="initials" type="s:ST_String" use="optional"/>
331
+
332
+ <xsd:sequence>
333
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
334
+ <xsd:element name="customXml" type="CT_CustomXmlBlock"/>
335
+ <xsd:element name="sdt" type="CT_SdtBlock"/>
336
+ <xsd:element name="p" type="CT_P" minOccurs="0" maxOccurs="unbounded"/>
337
+ <xsd:element name="tbl" type="CT_Tbl" minOccurs="0" maxOccurs="unbounded"/>
338
+ <xsd:group ref="EG_RunLevelElts" minOccurs="0" maxOccurs="unbounded"/>
339
+ <xsd:element name="altChunk" type="CT_AltChunk" minOccurs="0" maxOccurs="unbounded"/>
340
+ </xsd:choice>
341
+ </xsd:sequence>
342
+ </xsd:complexType>
343
+
344
+ <xsd:group name="EG_RunLevelElts">
345
+ <xsd:choice>
346
+ <xsd:element name="proofErr" minOccurs="0" type="CT_ProofErr"/>
347
+ <xsd:element name="permStart" minOccurs="0" type="CT_PermStart"/>
348
+ <xsd:element name="permEnd" minOccurs="0" type="CT_Perm"/>
349
+ <xsd:group ref="EG_RangeMarkupElements" minOccurs="0" maxOccurs="unbounded"/>
350
+ <xsd:element name="ins" type="CT_RunTrackChange" minOccurs="0"/>
351
+ <xsd:element name="del" type="CT_RunTrackChange" minOccurs="0"/>
352
+ <xsd:element name="moveFrom" type="CT_RunTrackChange"/>
353
+ <xsd:element name="moveTo" type="CT_RunTrackChange"/>
354
+ <xsd:group ref="EG_MathContent" minOccurs="0" maxOccurs="unbounded"/>
355
+ </xsd:choice>
356
+ </xsd:group>
357
+
358
+ <!-- referenced types -->
359
+
360
+ <xsd:complexType name="CT_Comment">
361
+ <xsd:complexContent>
362
+ <xsd:extension base="CT_TrackChange">
363
+ <xsd:sequence>
364
+ <xsd:group ref="EG_BlockLevelElts" minOccurs="0" maxOccurs="unbounded"/>
365
+ </xsd:sequence>
366
+ <xsd:attribute name="initials" type="s:ST_String" use="optional"/>
367
+ </xsd:extension>
368
+ </xsd:complexContent>
369
+ </xsd:complexType>
370
+
371
+ <xsd:complexType name="CT_TrackChange">
372
+ <xsd:complexContent>
373
+ <xsd:extension base="CT_Markup">
374
+ <xsd:attribute name="author" type="s:ST_String" use="required"/>
375
+ <xsd:attribute name="date" type="ST_DateTime" use="optional"/>
376
+ </xsd:extension>
377
+ </xsd:complexContent>
378
+ </xsd:complexType>
379
+
380
+ <xsd:complexType name="CT_Markup">
381
+ <xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
382
+ </xsd:complexType>
383
+
384
+ <xsd:group name="EG_BlockLevelElts">
385
+ <xsd:choice>
386
+ <xsd:group ref="EG_BlockLevelChunkElts" minOccurs="0" maxOccurs="unbounded"/>
387
+ <xsd:element name="altChunk" type="CT_AltChunk" minOccurs="0" maxOccurs="unbounded"/>
388
+ </xsd:choice>
389
+ </xsd:group>
390
+
391
+ <xsd:group name="EG_BlockLevelChunkElts">
392
+ <xsd:choice>
393
+ <xsd:group ref="EG_ContentBlockContent" minOccurs="0" maxOccurs="unbounded"/>
394
+ </xsd:choice>
395
+ </xsd:group>
396
+
397
+ <xsd:group name="EG_ContentBlockContent">
398
+ <xsd:choice>
399
+ <xsd:element name="customXml" type="CT_CustomXmlBlock"/>
400
+ <xsd:element name="sdt" type="CT_SdtBlock"/>
401
+ <xsd:element name="p" type="CT_P" minOccurs="0" maxOccurs="unbounded"/>
402
+ <xsd:element name="tbl" type="CT_Tbl" minOccurs="0" maxOccurs="unbounded"/>
403
+ <xsd:group ref="EG_RunLevelElts" minOccurs="0" maxOccurs="unbounded"/>
404
+ </xsd:choice>
405
+ </xsd:group>
406
+
407
+ <xsd:group name="EG_RunLevelElts">
408
+ <xsd:choice>
409
+ <xsd:element name="proofErr" minOccurs="0" type="CT_ProofErr"/>
410
+ <xsd:element name="permStart" minOccurs="0" type="CT_PermStart"/>
411
+ <xsd:element name="permEnd" minOccurs="0" type="CT_Perm"/>
412
+ <xsd:group ref="EG_RangeMarkupElements" minOccurs="0" maxOccurs="unbounded"/>
413
+ <xsd:element name="ins" type="CT_RunTrackChange" minOccurs="0"/>
414
+ <xsd:element name="del" type="CT_RunTrackChange" minOccurs="0"/>
415
+ <xsd:element name="moveFrom" type="CT_RunTrackChange"/>
416
+ <xsd:element name="moveTo" type="CT_RunTrackChange"/>
417
+ <xsd:group ref="EG_MathContent" minOccurs="0" maxOccurs="unbounded"/>
418
+ </xsd:choice>
419
+ </xsd:group>
@@ -115,7 +115,7 @@ core.xml produced by Microsoft Word::
115
115
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
116
116
  <dc:title>Core Document Properties Exploration</dc:title>
117
117
  <dc:subject>PowerPoint core document properties</dc:subject>
118
- <dc:creator>Steve Canny</dc:creator>
118
+ <dc:creator>Ethan St. Lee</dc:creator>
119
119
  <cp:keywords>powerpoint; open xml; dublin core; microsoft office</cp:keywords>
120
120
  <dc:description>
121
121
  One thing I'd like to discover is just how line wrapping is handled
@@ -123,7 +123,7 @@ core.xml produced by Microsoft Word::
123
123
  line._x000d__x000d_This is a second paragraph separated from the
124
124
  first by two line feeds.
125
125
  </dc:description>
126
- <cp:lastModifiedBy>Steve Canny</cp:lastModifiedBy>
126
+ <cp:lastModifiedBy>Ethan St. Lee</cp:lastModifiedBy>
127
127
  <cp:revision>2</cp:revision>
128
128
  <dcterms:created xsi:type="dcterms:W3CDTF">2013-04-06T06:03:36Z</dcterms:created>
129
129
  <dcterms:modified xsi:type="dcterms:W3CDTF">2013-06-15T06:09:18Z</dcterms:modified>