docx4j 0.1.0__py3-none-any.whl

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 (256) hide show
  1. docx4j-0.1.0.dist-info/METADATA +246 -0
  2. docx4j-0.1.0.dist-info/RECORD +256 -0
  3. docx4j-0.1.0.dist-info/WHEEL +4 -0
  4. docx4j-0.1.0.dist-info/licenses/LICENSE +202 -0
  5. docx4j-0.1.0.dist-info/licenses/NOTICE +41 -0
  6. docx4j_py/__init__.py +3007 -0
  7. docx4j_py/child.py +894 -0
  8. docx4j_py/customxml/__init__.py +95 -0
  9. docx4j_py/customxml/el.py +63 -0
  10. docx4j_py/dml/__init__.py +2146 -0
  11. docx4j_py/dml/chart/__init__.py +6138 -0
  12. docx4j_py/dml/chart/el.py +1875 -0
  13. docx4j_py/dml/chart_drawing/__init__.py +602 -0
  14. docx4j_py/dml/chart_drawing/el.py +287 -0
  15. docx4j_py/dml/compatibility/__init__.py +63 -0
  16. docx4j_py/dml/compatibility/el.py +54 -0
  17. docx4j_py/dml/diagram/__init__.py +3420 -0
  18. docx4j_py/dml/diagram/el.py +704 -0
  19. docx4j_py/dml/locked_canvas/__init__.py +50 -0
  20. docx4j_py/dml/locked_canvas/el.py +54 -0
  21. docx4j_py/dml/main/__init__.py +11378 -0
  22. docx4j_py/dml/main/el.py +2864 -0
  23. docx4j_py/dml/picture/__init__.py +115 -0
  24. docx4j_py/dml/picture/el.py +101 -0
  25. docx4j_py/dml/spreadsheet_drawing/__init__.py +820 -0
  26. docx4j_py/dml/spreadsheet_drawing/el.py +337 -0
  27. docx4j_py/dml/wordprocessing_drawing/__init__.py +717 -0
  28. docx4j_py/dml/wordprocessing_drawing/el.py +195 -0
  29. docx4j_py/docprops/__init__.py +414 -0
  30. docx4j_py/docprops/core/__init__.py +221 -0
  31. docx4j_py/docprops/core/el.py +54 -0
  32. docx4j_py/docprops/custom/__init__.py +345 -0
  33. docx4j_py/docprops/custom/el.py +63 -0
  34. docx4j_py/docprops/dc/__init__.py +642 -0
  35. docx4j_py/docprops/dc/el.py +189 -0
  36. docx4j_py/docprops/dcmitype/__init__.py +54 -0
  37. docx4j_py/docprops/dcmitype/el.py +47 -0
  38. docx4j_py/docprops/dcterms/__init__.py +1195 -0
  39. docx4j_py/docprops/dcterms/el.py +342 -0
  40. docx4j_py/docprops/extended/__init__.py +304 -0
  41. docx4j_py/docprops/extended/el.py +90 -0
  42. docx4j_py/docprops/variant_types/__init__.py +1011 -0
  43. docx4j_py/docprops/variant_types/el.py +360 -0
  44. docx4j_py/docx/__init__.py +178 -0
  45. docx4j_py/docx/_base.py +193 -0
  46. docx4j_py/docx/comments.py +246 -0
  47. docx4j_py/docx/coreprops.py +344 -0
  48. docx4j_py/docx/document.py +264 -0
  49. docx4j_py/docx/enums.py +420 -0
  50. docx4j_py/docx/section.py +605 -0
  51. docx4j_py/docx/settings.py +77 -0
  52. docx4j_py/docx/shape.py +235 -0
  53. docx4j_py/docx/shared.py +192 -0
  54. docx4j_py/docx/styles.py +565 -0
  55. docx4j_py/docx/table.py +853 -0
  56. docx4j_py/docx/text.py +1839 -0
  57. docx4j_py/el_index.py +147 -0
  58. docx4j_py/fragments.py +263 -0
  59. docx4j_py/inkml/__init__.py +1428 -0
  60. docx4j_py/inkml/el.py +273 -0
  61. docx4j_py/math/__init__.py +2875 -0
  62. docx4j_py/math/el.py +1055 -0
  63. docx4j_py/mathml/__init__.py +868 -0
  64. docx4j_py/mathml/el.py +450 -0
  65. docx4j_py/mce/__init__.py +171 -0
  66. docx4j_py/mce/el.py +72 -0
  67. docx4j_py/model/__init__.py +16 -0
  68. docx4j_py/model/content/__init__.py +553 -0
  69. docx4j_py/model/content/addresses.py +610 -0
  70. docx4j_py/model/content/api_script.py +1275 -0
  71. docx4j_py/model/content/body.py +1295 -0
  72. docx4j_py/model/content/comments.py +1266 -0
  73. docx4j_py/model/content/compatibility.py +270 -0
  74. docx4j_py/model/content/controls.py +1094 -0
  75. docx4j_py/model/content/describe.py +466 -0
  76. docx4j_py/model/content/enums.py +215 -0
  77. docx4j_py/model/content/errors.py +160 -0
  78. docx4j_py/model/content/font.py +307 -0
  79. docx4j_py/model/content/lists.py +1186 -0
  80. docx4j_py/model/content/ooxml.py +469 -0
  81. docx4j_py/model/content/paragraph.py +1661 -0
  82. docx4j_py/model/content/picture.py +619 -0
  83. docx4j_py/model/content/range.py +491 -0
  84. docx4j_py/model/content/reports.py +1130 -0
  85. docx4j_py/model/content/styles.py +692 -0
  86. docx4j_py/model/content/table.py +1035 -0
  87. docx4j_py/model/content/text_model.py +722 -0
  88. docx4j_py/model/content/tracked_change.py +850 -0
  89. docx4j_py/model/content/tracking.py +1149 -0
  90. docx4j_py/model/content/trial.py +579 -0
  91. docx4j_py/model/customxml/__init__.py +144 -0
  92. docx4j_py/model/customxml/bindings.py +497 -0
  93. docx4j_py/model/customxml/insert.py +216 -0
  94. docx4j_py/model/customxml/kinds.py +682 -0
  95. docx4j_py/model/customxml/mapping.py +249 -0
  96. docx4j_py/model/customxml/nodes.py +720 -0
  97. docx4j_py/model/customxml/parts.py +735 -0
  98. docx4j_py/model/customxml/template.py +898 -0
  99. docx4j_py/model/customxml/xpath.py +184 -0
  100. docx4j_py/model/fonts/__init__.py +162 -0
  101. docx4j_py/model/fonts/data.py +216 -0
  102. docx4j_py/model/fonts/default_theme.py +95 -0
  103. docx4j_py/model/fonts/fallback.py +328 -0
  104. docx4j_py/model/fonts/fonts_in_use.py +238 -0
  105. docx4j_py/model/fonts/language_tags.py +100 -0
  106. docx4j_py/model/fonts/mapper.py +769 -0
  107. docx4j_py/model/fonts/physical_font.py +83 -0
  108. docx4j_py/model/fonts/registry.py +140 -0
  109. docx4j_py/model/fonts/run_font_selector.py +661 -0
  110. docx4j_py/model/fonts/scripts.py +167 -0
  111. docx4j_py/model/fonts/theme_fonts.py +125 -0
  112. docx4j_py/model/listnumbering/__init__.py +79 -0
  113. docx4j_py/model/listnumbering/definitions.py +862 -0
  114. docx4j_py/model/listnumbering/emulator.py +1049 -0
  115. docx4j_py/model/listnumbering/formats.py +438 -0
  116. docx4j_py/model/markdown/__init__.py +111 -0
  117. docx4j_py/model/markdown/export.py +1071 -0
  118. docx4j_py/model/markdown/importer.py +774 -0
  119. docx4j_py/model/property_catalogue.py +1126 -0
  120. docx4j_py/model/property_resolver.py +731 -0
  121. docx4j_py/model/sessions.py +362 -0
  122. docx4j_py/model/style_util.py +561 -0
  123. docx4j_py/namespaces.py +384 -0
  124. docx4j_py/oart/__init__.py +1358 -0
  125. docx4j_py/oart/animation_2018/__init__.py +116 -0
  126. docx4j_py/oart/animation_2018/el.py +54 -0
  127. docx4j_py/oart/animation_model3d_2018/__init__.py +117 -0
  128. docx4j_py/oart/animation_model3d_2018/el.py +85 -0
  129. docx4j_py/oart/chart_2007/__init__.py +175 -0
  130. docx4j_py/oart/chart_2007/el.py +119 -0
  131. docx4j_py/oart/chart_2012/__init__.py +589 -0
  132. docx4j_py/oart/chart_2012/el.py +436 -0
  133. docx4j_py/oart/chart_2014/__init__.py +342 -0
  134. docx4j_py/oart/chart_2014/el.py +197 -0
  135. docx4j_py/oart/chart_2017_03/__init__.py +79 -0
  136. docx4j_py/oart/chart_2017_03/el.py +63 -0
  137. docx4j_py/oart/chart_ac_2014/__init__.py +50 -0
  138. docx4j_py/oart/chart_ac_2014/el.py +54 -0
  139. docx4j_py/oart/chart_drawing_2010/__init__.py +159 -0
  140. docx4j_py/oart/chart_drawing_2010/el.py +112 -0
  141. docx4j_py/oart/chart_style_2012/__init__.py +1105 -0
  142. docx4j_py/oart/chart_style_2012/el.py +370 -0
  143. docx4j_py/oart/chartex_2014/__init__.py +3077 -0
  144. docx4j_py/oart/chartex_2014/el.py +954 -0
  145. docx4j_py/oart/command_2013/__init__.py +683 -0
  146. docx4j_py/oart/command_2013/el.py +163 -0
  147. docx4j_py/oart/decorative_2017/__init__.py +63 -0
  148. docx4j_py/oart/decorative_2017/el.py +54 -0
  149. docx4j_py/oart/diagram_2008/__init__.py +267 -0
  150. docx4j_py/oart/diagram_2008/el.py +188 -0
  151. docx4j_py/oart/diagram_2010/__init__.py +72 -0
  152. docx4j_py/oart/diagram_2010/el.py +63 -0
  153. docx4j_py/oart/diagram_2016_11/__init__.py +161 -0
  154. docx4j_py/oart/diagram_2016_11/el.py +72 -0
  155. docx4j_py/oart/diagram_2016_12/__init__.py +60 -0
  156. docx4j_py/oart/diagram_2016_12/el.py +63 -0
  157. docx4j_py/oart/hyperlink_color_2018/__init__.py +69 -0
  158. docx4j_py/oart/hyperlink_color_2018/el.py +54 -0
  159. docx4j_py/oart/ink_action_2014/__init__.py +335 -0
  160. docx4j_py/oart/ink_action_2014/el.py +110 -0
  161. docx4j_py/oart/main_2010/__init__.py +1422 -0
  162. docx4j_py/oart/main_2010/el.py +497 -0
  163. docx4j_py/oart/main_2012/__init__.py +261 -0
  164. docx4j_py/oart/main_2012/el.py +81 -0
  165. docx4j_py/oart/main_2014/__init__.py +140 -0
  166. docx4j_py/oart/main_2014/el.py +90 -0
  167. docx4j_py/oart/main_2016_11/__init__.py +64 -0
  168. docx4j_py/oart/main_2016_11/el.py +54 -0
  169. docx4j_py/oart/model3d_2017/__init__.py +702 -0
  170. docx4j_py/oart/model3d_2017/el.py +315 -0
  171. docx4j_py/oart/picture_2010/__init__.py +60 -0
  172. docx4j_py/oart/picture_2010/el.py +63 -0
  173. docx4j_py/oart/spreadsheet_drawing_2010/__init__.py +159 -0
  174. docx4j_py/oart/spreadsheet_drawing_2010/el.py +112 -0
  175. docx4j_py/oart/svg_2016/__init__.py +71 -0
  176. docx4j_py/oart/svg_2016/el.py +54 -0
  177. docx4j_py/oart/theme_2012/__init__.py +91 -0
  178. docx4j_py/oart/theme_2012/el.py +65 -0
  179. docx4j_py/openpackaging/__init__.py +222 -0
  180. docx4j_py/openpackaging/api.py +59 -0
  181. docx4j_py/openpackaging/content_types.py +508 -0
  182. docx4j_py/openpackaging/exceptions.py +47 -0
  183. docx4j_py/openpackaging/load.py +256 -0
  184. docx4j_py/openpackaging/mce.py +165 -0
  185. docx4j_py/openpackaging/packages/__init__.py +28 -0
  186. docx4j_py/openpackaging/packages/opc_package.py +465 -0
  187. docx4j_py/openpackaging/packages/wordprocessingml_package.py +459 -0
  188. docx4j_py/openpackaging/part_name.py +263 -0
  189. docx4j_py/openpackaging/parts/__init__.py +54 -0
  190. docx4j_py/openpackaging/parts/binary_part.py +189 -0
  191. docx4j_py/openpackaging/parts/default_xml_part.py +171 -0
  192. docx4j_py/openpackaging/parts/dml.py +244 -0
  193. docx4j_py/openpackaging/parts/docprops.py +127 -0
  194. docx4j_py/openpackaging/parts/namespaces.py +153 -0
  195. docx4j_py/openpackaging/parts/part.py +194 -0
  196. docx4j_py/openpackaging/parts/parts_map.py +75 -0
  197. docx4j_py/openpackaging/parts/registry.py +311 -0
  198. docx4j_py/openpackaging/parts/relationships_part.py +438 -0
  199. docx4j_py/openpackaging/parts/wml/__init__.py +621 -0
  200. docx4j_py/openpackaging/parts/wml/comments.py +353 -0
  201. docx4j_py/openpackaging/parts/xml_part.py +397 -0
  202. docx4j_py/openpackaging/resources.py +35 -0
  203. docx4j_py/openpackaging/save.py +100 -0
  204. docx4j_py/openpackaging/stores.py +602 -0
  205. docx4j_py/py.typed +0 -0
  206. docx4j_py/relationships/__init__.py +98 -0
  207. docx4j_py/relationships/el.py +63 -0
  208. docx4j_py/resources/KnownStyles.xml +2225 -0
  209. docx4j_py/resources/__init__.py +10 -0
  210. docx4j_py/resources/fonts/__init__.py +9 -0
  211. docx4j_py/resources/fonts/families.json +754 -0
  212. docx4j_py/resources/fonts/registry.json +183 -0
  213. docx4j_py/resources/fonts/substitutions.json +2649 -0
  214. docx4j_py/resources/fonts/theme-2007.xml +2 -0
  215. docx4j_py/resources/fonts/theme-2013.xml +2 -0
  216. docx4j_py/resources/fonts/theme-2023.xml +2 -0
  217. docx4j_py/resources/openpackaging/__init__.py +6 -0
  218. docx4j_py/resources/openpackaging/fontTable.xml +2 -0
  219. docx4j_py/resources/openpackaging/numbering.xml +208 -0
  220. docx4j_py/resources/openpackaging/styles.xml +497 -0
  221. docx4j_py/resources/warmup_document.xml +168 -0
  222. docx4j_py/resources/warmup_styles.xml +48 -0
  223. docx4j_py/runtime.py +235 -0
  224. docx4j_py/shared_types/__init__.py +67 -0
  225. docx4j_py/shared_types/el.py +47 -0
  226. docx4j_py/traversal.py +537 -0
  227. docx4j_py/w14/__init__.py +1714 -0
  228. docx4j_py/w14/el.py +604 -0
  229. docx4j_py/w15/__init__.py +358 -0
  230. docx4j_py/w15/el.py +207 -0
  231. docx4j_py/w15symex/__init__.py +71 -0
  232. docx4j_py/w15symex/el.py +54 -0
  233. docx4j_py/w16cid/__init__.py +96 -0
  234. docx4j_py/w16cid/el.py +63 -0
  235. docx4j_py/wml/__init__.py +23326 -0
  236. docx4j_py/wml/builders.py +730 -0
  237. docx4j_py/wml/el.py +5880 -0
  238. docx4j_py/wml/pictures.py +371 -0
  239. docx4j_py/wml/sdt.py +465 -0
  240. docx4j_py/wne/__init__.py +614 -0
  241. docx4j_py/wne/el.py +208 -0
  242. docx4j_py/word/__init__.py +114 -0
  243. docx4j_py/word/msink/__init__.py +345 -0
  244. docx4j_py/word/msink/el.py +78 -0
  245. docx4j_py/word/wp14/__init__.py +140 -0
  246. docx4j_py/word/wp14/el.py +81 -0
  247. docx4j_py/word/wp15/__init__.py +79 -0
  248. docx4j_py/word/wp15/el.py +54 -0
  249. docx4j_py/word/wpc/__init__.py +130 -0
  250. docx4j_py/word/wpc/el.py +94 -0
  251. docx4j_py/word/wpg/__init__.py +179 -0
  252. docx4j_py/word/wpg/el.py +128 -0
  253. docx4j_py/word/wps/__init__.py +215 -0
  254. docx4j_py/word/wps/el.py +137 -0
  255. docx4j_py/xml_ns/__init__.py +50 -0
  256. docx4j_py/xml_ns/el.py +47 -0
@@ -0,0 +1,246 @@
1
+ Metadata-Version: 2.5
2
+ Name: docx4j
3
+ Version: 0.1.0
4
+ Summary: docx4j for Python: ECMA-376 WordprocessingML as typed objects, the Open Packaging engine, and a content API in Office JS's vocabulary with a python-docx facade
5
+ Project-URL: Homepage, https://github.com/plutext/docx4j-python
6
+ Project-URL: Source, https://github.com/plutext/docx4j-python
7
+ Project-URL: Changelog, https://github.com/plutext/docx4j-python/blob/main/CHANGELOG.md
8
+ Project-URL: Issues, https://github.com/plutext/docx4j-python/issues
9
+ Project-URL: docx4j, https://www.docx4java.org
10
+ Author-email: Plutext Pty Ltd <jharrop@plutext.com>
11
+ License-Expression: Apache-2.0
12
+ License-File: LICENSE
13
+ License-File: NOTICE
14
+ Keywords: agents,docx,docx4j,mcp,office-open-xml,ooxml,python-docx,wordprocessingml
15
+ Classifier: Development Status :: 3 - Alpha
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
22
+ Classifier: Topic :: Office/Business :: Office Suites
23
+ Classifier: Topic :: Text Processing :: Markup :: XML
24
+ Classifier: Typing :: Typed
25
+ Requires-Python: >=3.12
26
+ Requires-Dist: docx4j-xsdata[lxml]<26.3,>=26.2.1
27
+ Requires-Dist: markdown-it-py>=3.0
28
+ Provides-Extra: baseline
29
+ Requires-Dist: xsdata[cli,lxml]==26.2; extra == 'baseline'
30
+ Provides-Extra: dev
31
+ Requires-Dist: docx4j-xsdata[cli,lxml]<26.3,>=26.2.1; extra == 'dev'
32
+ Requires-Dist: pytest; extra == 'dev'
33
+ Provides-Extra: parity
34
+ Requires-Dist: python-docx==1.2.0; extra == 'parity'
35
+ Description-Content-Type: text/markdown
36
+
37
+ # docx4j for Python
38
+
39
+ [docx4j](https://www.docx4java.org) for Python: the whole of ECMA-376 WordprocessingML as typed
40
+ objects, generated from docx4j's own schema tree; docx4j's Open Packaging engine written by hand
41
+ over them (`.docx` in, typed parts and relationships, `.docx` out, every part you did not touch
42
+ written back byte for byte); a content API in the vocabulary of Office JS's `Word.Body`,
43
+ `Paragraph`, `Range`, `Table`, comments, tracked changes and lists, built for agents; and a
44
+ python-docx facade so code already written runs. The classes carry docx4j's names (`P`, `R`,
45
+ `PPr`, `Tbl`, `Document`, `Styles`), so fifteen years of docx4j documentation and examples read
46
+ across; the design is the same as [docx4j-core-ts](https://github.com/plutext/docx4j-core-ts).
47
+
48
+ ```
49
+ pip install docx4j
50
+ ```
51
+
52
+ The distribution is `docx4j`; the import name is `docx4j_py`, as `python-docx` imports as
53
+ `docx`. Python 3.12 or later.
54
+
55
+ ## Open, edit, save
56
+
57
+ ```python
58
+ from docx4j_py import load
59
+
60
+ pkg = load("in.docx") # a WordprocessingMLPackage
61
+ body = pkg.body # Word.Body over word/document.xml
62
+
63
+ print(body.text) # a paragraph per line
64
+ for paragraph in body.paragraphs: # tables and content controls descended into
65
+ print(paragraph.style, paragraph.text)
66
+
67
+ title = body.insert_paragraph("Report", location="Start", style="Heading 1")
68
+ title.alignment = "Centered"
69
+ hit = body.search("quick brown fox")[0] # matches span runs freely
70
+ hit.font.italic = True # the runs are split at the boundaries
71
+ hit.insert_text("slow red fox") # Replace is a Range's default location
72
+ body.paragraphs[-1].insert_paragraph("The end.") # After is a Paragraph's
73
+
74
+ pkg.save("out.docx") # only the parts you touched are re-marshalled
75
+ ```
76
+
77
+ A part that is never touched is written back byte for byte; reading a part's `contents` --- which
78
+ `pkg.body` does for `word/document.xml` --- marks it for re-marshalling, and a re-marshalled part
79
+ is canonically identical to its source. Nothing is dropped silently: what lenient parsing could
80
+ not place is reported per part (`part.skipped`), and `LoadOptions(strict=True)` raises instead.
81
+
82
+ From nothing:
83
+
84
+ ```python
85
+ from docx4j_py import create_package
86
+
87
+ pkg = create_package() # docx4j's createPackage: A4, one section, the default styles
88
+ body = pkg.body
89
+ body.insert_paragraph("Created by docx4j", style="Heading 1")
90
+ paragraph = body.insert_paragraph("One paragraph, three runs")
91
+ paragraph.search("three runs")[0].font.italic = True
92
+ table = body.insert_table(3, 2, values=[["Name", "Value"], ["a", "1"]], style="TableGrid")
93
+ table.header_row_count = 1
94
+ table.add_rows(1, values=[["b", "2"]])
95
+ pkg.save("hello.docx")
96
+ ```
97
+
98
+ ## For agents
99
+
100
+ An agent cannot hold a Python object across tool calls, and a 200-page document does not fit in
101
+ its context window. So the API gives it **addresses** --- strings that survive an edit --- and
102
+ **budgets** on everything it reads. Four calls are the loop: read the outline, find the text,
103
+ edit by address, check the report.
104
+
105
+ ```python
106
+ from docx4j_py import load
107
+
108
+ pkg = load("in.docx")
109
+
110
+ outline = pkg.outline() # small, structured, enough to choose an address from
111
+ outline.to_markdown() # the cheapest thing to show a model
112
+ outline.to_json() # under 64 KB for a 200-page document
113
+
114
+ hits = pkg.find("quick brown fox") # matches with their addresses and 40 characters either side
115
+ hits[0].address, hits[0].snippet # ('w14:5A2B1C3D', '… over the quick brown fox, which …')
116
+
117
+ paragraph = pkg.paragraph_at(hits[0].address) # 'w14:5A2B1C3D', 'body/3', or contains='Chapter 1'
118
+ paragraph.insert_paragraph("Added by an agent.", location="After")
119
+
120
+ pkg.last_change.to_json() # what that call did, for the tool result
121
+ pkg.save("out.docx")
122
+ ```
123
+
124
+ `w14:5A2B1C3D` is the `w14:paraId` Word writes and survives every edit; `body/3` is the ordinal.
125
+ Every mutating call records a `ChangeReport`; `pkg.dry_run()` applies calls to a copy and throws
126
+ it away; `describe()` reads what the document offers (its styles, page, parts, authors) without
127
+ unmarshalling anything; every error carries a `code` and a `hint` naming what to do instead.
128
+
129
+ An agent should leave the trail Word already has: tracked changes for what it did, and a comment
130
+ for why, where the human who opens the document will see them.
131
+
132
+ ```python
133
+ from docx4j_py import load
134
+ from docx4j_py.model.content import Author
135
+
136
+ pkg = load("in.docx")
137
+ pkg.author = Author("Claude", initials="C", email="claude@example.com")
138
+ pkg.change_tracking_mode = "TrackAll" # every edit from here is a revision
139
+
140
+ count = pkg.body.replace_text("document", "report") # a w:del and a w:ins per hit
141
+ pkg.find("report")[0].range(pkg.body).insert_comment(
142
+ "Changed 'document' to 'report': the brief asks for a report."
143
+ )
144
+ [c.to_dict() for c in pkg.get_tracked_changes()] # for the tool result
145
+ pkg.body.to_markdown(view="markup") # {--deleted--}{++inserted++}{>>a comment<<}
146
+ pkg.save("out.docx")
147
+ ```
148
+
149
+ Markdown goes both ways: `pkg.to_markdown(addresses=True)` puts each block's address in an HTML
150
+ comment before it, and `body.insert_markdown(text)` writes CommonMark plus GFM tables through the
151
+ document's own styles, creating the numbering part when there is none.
152
+
153
+ ## python-docx code runs
154
+
155
+ `docx4j_py.docx` is a structural subset of python-docx's public API --- python-docx's names and
156
+ semantics, this engine underneath. Its promise is a committed member list derived from
157
+ python-docx 1.2.0: 305 of 312 members, the rest refused with a reason each. python-docx is not a
158
+ dependency.
159
+
160
+ ```python
161
+ from docx4j_py.docx import Document, Pt
162
+
163
+ doc = Document("in.docx") # or Document() for a new one
164
+ doc.add_heading("Report", level=1) # a built-in style it lacks is defined
165
+ p = doc.add_paragraph("Plain, ")
166
+ p.add_run("bold").bold = True
167
+ p.runs[1].font.size = Pt(14)
168
+ doc.add_table(rows=2, cols=2, style="Table Grid").cell(0, 0).text = "a"
169
+ for paragraph in doc.paragraphs:
170
+ print(paragraph.style.name, paragraph.text)
171
+
172
+ print(doc.package.last_change.to_dict()) # what python-docx does not have: a ChangeReport,
173
+ doc.save("out.docx") # parts untouched byte for byte, the typed tree
174
+ ```
175
+
176
+ ## The object model and the engine
177
+
178
+ Every element has a constructor in its namespace's `el` module, with `p`, `r`, `t` and `tbl` as
179
+ sugar; `wml(...)` parses a fragment with docx4j's prefixes declared; `to_xml` is the inverse.
180
+ The tree stays reachable from every view (`paragraph.element` is the typed `P`).
181
+
182
+ ```python
183
+ from docx4j_py.wml import el, p, r, to_xml, wml
184
+
185
+ para = p("Hello ", r("World", bold=True), style="Heading1")
186
+ same = wml('<w:p><w:pPr><w:pStyle w:val="Heading1"/></w:pPr><w:r><w:t>Hello</w:t></w:r></w:p>')
187
+ print(to_xml(el.p(content=[el.r(content=[el.t("Hello World")])]), pretty=True))
188
+ ```
189
+
190
+ Under `docx4j_py.openpackaging`: `OpcPackage`, `WordprocessingMLPackage`, `PartName`,
191
+ `ContentTypeManager`, `RelationshipsPart`, the typed WordprocessingML parts, `PartStore` and
192
+ `PartSink` (zip, directory, memory, flat OPC); `docx4j_py.model` has docx4j's `PropertyResolver`,
193
+ `StyleUtil`, numbering emulator and font selection, with zero differences on docx4j's 45 parity
194
+ goldens.
195
+
196
+ ```python
197
+ from docx4j_py import load
198
+ from docx4j_py.openpackaging import LoadOptions, MemoryPartSink
199
+ from docx4j_py.wml import warm_up
200
+
201
+ warm_up() # a server does this once, before the first request
202
+ with load("in.docx", options=LoadOptions(strict=True)) as pkg:
203
+ settings = pkg.get_part("/word/settings.xml").contents # typed, lazily, on first access
204
+ pkg.save_to(MemoryPartSink())
205
+ ```
206
+
207
+ ## What is and is not in 0.1
208
+
209
+ **WordprocessingML only.** `.pptx` and `.xlsx` load and save through the generic OPC path (every
210
+ part byte for byte), but nothing in them is typed: PresentationML and SpreadsheetML are
211
+ [CR-001 Phase D](https://github.com/plutext/docx4j-python/blob/main/docs/change-requests/CR-001-object-model.md)
212
+ (the object model) and
213
+ [CR-002 Phase C](https://github.com/plutext/docx4j-python/blob/main/docs/change-requests/CR-002-engine.md)
214
+ (the engine), and their content APIs are CR-004 and CR-005. Everything is synchronous.
215
+
216
+ **The wheel is large for pure Python** --- about 1 MB compressed, 238 modules, 6 MB installed
217
+ --- because it is the whole of WordprocessingML and what it embeds (DrawingML, OMML, VML, the
218
+ `w14` to `w16` extensions) as typed classes, 148,000 lines of generated code. Importing
219
+ `docx4j_py` imports all of it, about 0.6 s once per process; a long-running process is the
220
+ intended host.
221
+
222
+ What `0.x` promises, surface by surface:
223
+
224
+ | Surface | Stability in `0.x` |
225
+ |---|---|
226
+ | `docx4j_py.load`, `create_package`, `WordprocessingMLPackage`, the parts, `PartStore` / `PartSink` | Stable: docx4j's names and behaviour; departures are recorded in CR-002 section 12.3 |
227
+ | The content API (`Body`, `Paragraph`, `Range`, `Table`, ..., the agent surface, markdown) | Stable in shape: Office JS's vocabulary is borrowed, not invented; a member may be added in a minor, none renamed |
228
+ | `docx4j_py.docx`, the python-docx facade | Stable: its promise is the committed member list, 305 of 312 |
229
+ | The generated model (`docx4j_py.wml` and the rest, `el`) | Regenerates with the schema; class and field names are docx4j's and do not move, but a schema refresh adds fields and classes in a minor |
230
+ | `docx4j_py.model` (resolver, `StyleUtil`, fonts, numbering) | Stable: docx4j's, zero differences on the goldens |
231
+
232
+ ## Links
233
+
234
+ - Repository: <https://github.com/plutext/docx4j-python> --- the full README, with the whole
235
+ content API, the audit trail, lists, custom XML templates and `to_api_script` shown
236
+ - The design, as change requests: [CR-001](https://github.com/plutext/docx4j-python/blob/main/docs/change-requests/CR-001-object-model.md)
237
+ the object model, [CR-002](https://github.com/plutext/docx4j-python/blob/main/docs/change-requests/CR-002-engine.md)
238
+ the engine, [CR-003](https://github.com/plutext/docx4j-python/blob/main/docs/change-requests/CR-003-content-api.md)
239
+ the content API
240
+ - [docx4j](https://www.docx4java.org), the Java original, and
241
+ [docx4j-core-ts](https://github.com/plutext/docx4j-core-ts), the TypeScript engine of the same design
242
+ - [Changelog](https://github.com/plutext/docx4j-python/blob/main/CHANGELOG.md)
243
+
244
+ Apache-2.0, as docx4j is; the generated model imports
245
+ [docx4j-xsdata](https://pypi.org/project/docx4j-xsdata/), a fork of xsdata (MIT). Every fence
246
+ above is executed by the test suite (`tests/test_readme.py`).
@@ -0,0 +1,256 @@
1
+ docx4j_py/__init__.py,sha256=dvUVcJSiSKA1-t7vnhyv6Foo0iTWaJWcIAC934npuYU,100205
2
+ docx4j_py/child.py,sha256=2mnyvFhs5bF34qdQmVy5gEq0mNG6apfZVrIawJdYq6o,33570
3
+ docx4j_py/el_index.py,sha256=UEIy2rg384SPagtxU5QgszaII751PD0CpO76CS5jq80,11215
4
+ docx4j_py/fragments.py,sha256=HA_9MGgMptC5IzCNNNGdrq2QTK0n_X76SmHkf-OtteU,10497
5
+ docx4j_py/namespaces.py,sha256=eRXJwYHiB6Fut_35JKio3kbVb4Kiq88648_oRb_244I,18650
6
+ docx4j_py/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ docx4j_py/runtime.py,sha256=Aq7Z0g2POuzyhVIvYbnRY-novKKH4xg6rzGxrb3pPeA,8959
8
+ docx4j_py/traversal.py,sha256=HB98QTHNq1yRTr7I-Dxy9TYe6At1x1i8lJOL--YEC7E,20572
9
+ docx4j_py/customxml/__init__.py,sha256=vcaURnXA9RZ7IlMqj7tcFInYIm6A8JfnsOYdX7Z7Fxo,2961
10
+ docx4j_py/customxml/el.py,sha256=bBk9ftGHerfWypitvcumh1uwI-E9z_TCf6SNvFjORw8,2379
11
+ docx4j_py/dml/__init__.py,sha256=fpH_feuPYf68-OkQ_5LpfZxQr-E_XbBP1a2xrzvmKSQ,79274
12
+ docx4j_py/dml/chart/__init__.py,sha256=_VDGSOu9crqXbCuuJl68N7kpCmrtGyaamyjDB4zgqeM,171184
13
+ docx4j_py/dml/chart/el.py,sha256=Y99FozJAf1vLF9BbQJRengNv3ojb8tlovhb_7JS3QT4,89479
14
+ docx4j_py/dml/chart_drawing/__init__.py,sha256=erx0ZWEKBIylw5cXslHrUUp8cv9NJQqSVo12j3SuMmE,18471
15
+ docx4j_py/dml/chart_drawing/el.py,sha256=WxuMaeYyNWwT4OWdyYZYL2EQhMyPBH6jhXDxj6Sy8Qs,14882
16
+ docx4j_py/dml/compatibility/__init__.py,sha256=-QUlhrvhtY6LqLi3eDgvbIOIyVWCf5X-TCmMBFB-N1k,2000
17
+ docx4j_py/dml/compatibility/el.py,sha256=Lri3nQ1PN3Q1Wk_kTsIdLWV3RVNfyQWsqljaW02QNmI,1956
18
+ docx4j_py/dml/diagram/__init__.py,sha256=25dL86DQmywv_Ux8CHSKnYJWOXk2YO1Nl2wnz_BSYBA,89305
19
+ docx4j_py/dml/diagram/el.py,sha256=3iu9MVBIoSPNXHrwrMOdQB6qOa8btAyjKy62qi7vizw,34640
20
+ docx4j_py/dml/locked_canvas/__init__.py,sha256=bj6Axw3UUbvScmvQBxwD0eAoBII8Udjw-eHKGCJ3Ozo,1784
21
+ docx4j_py/dml/locked_canvas/el.py,sha256=kMBcWOtyeRBMh1F_npRjPVoVtohmOpY7spoQcuUTSXg,1937
22
+ docx4j_py/dml/main/__init__.py,sha256=EnUOFZzixWjPhd3h8FCUzqpSl2feIQm_JvuWU6kqz_0,332338
23
+ docx4j_py/dml/main/el.py,sha256=MShFlKnlwFTFGAzCH94RTcr0SshlBf6-3Fl4EYUyftg,144230
24
+ docx4j_py/dml/picture/__init__.py,sha256=Rm85YovH1tP1UcBMRGNE1Fj96X_6TbxIy6xa86B5snI,3578
25
+ docx4j_py/dml/picture/el.py,sha256=AaYSJThKfhKgZ9rCPHU3RCski0DHaqali5rAIOKeJic,4309
26
+ docx4j_py/dml/spreadsheet_drawing/__init__.py,sha256=PSWsEkDvrSuumiuepdmmngSVF_8y0BdI1pMwmTO01vk,25550
27
+ docx4j_py/dml/spreadsheet_drawing/el.py,sha256=L7VkBvA14mA8_NeN6vywTo1Q4fVZWYHZq409MXUGngo,18339
28
+ docx4j_py/dml/wordprocessing_drawing/__init__.py,sha256=TawPMA4YVAnXBkeTl8Xcd0oMM8QYcV9eK3j-NRdtlls,19768
29
+ docx4j_py/dml/wordprocessing_drawing/el.py,sha256=ymJIjgkwGlT3CA0fuO82Ip3ipi-jbIUAGeuy90kY9TE,9830
30
+ docx4j_py/docprops/__init__.py,sha256=u2QxsbvjNBKc86A4tP00ObCCPLF6eFZgOr9c60F3Bpc,13117
31
+ docx4j_py/docprops/core/__init__.py,sha256=2fsBUH-tCSaFX3LMVyxy6iavI6JC-npDYd9Xk3Vmf1g,6407
32
+ docx4j_py/docprops/core/el.py,sha256=zn6euJyvlKKVoSWcoC3D3f0fCDRz0ceztLqmgxQkC8U,1999
33
+ docx4j_py/docprops/custom/__init__.py,sha256=eDB8LG7jokt_XWlqJR2nkrebz15Jnhf4SXfV1AApuJA,11702
34
+ docx4j_py/docprops/custom/el.py,sha256=cDCh8Uvp4u7_8yh0bR8UOr5GUGnikASMDl4ScPtc_1Q,2513
35
+ docx4j_py/docprops/dc/__init__.py,sha256=1Jj4bBbHGLfREEOIQ7kP1LEzbgkp_h6xj6wCFlRtqj4,18566
36
+ docx4j_py/docprops/dc/el.py,sha256=n5chD-8gkGFfMTVWlcBHbNwPGUZK2asJVtisUZ6NuCo,6782
37
+ docx4j_py/docprops/dcmitype/__init__.py,sha256=EH7Orcm7LcHDwi5SMukawDhRYkR2ccAPq55TNTWwFz8,1777
38
+ docx4j_py/docprops/dcmitype/el.py,sha256=otWFDoxF7D_kW11-x1piHMyNtZmPAiSHnmVGupJsu6I,1326
39
+ docx4j_py/docprops/dcterms/__init__.py,sha256=pIXxbal3d8aePE_bgAtZCJ7UuqEntO2Y2LjuW3cCmfc,29856
40
+ docx4j_py/docprops/dcterms/el.py,sha256=chS0Wz6ys1biJmVH7N_Yr6mTKrM8xsebxQO9qkV5o3U,13199
41
+ docx4j_py/docprops/extended/__init__.py,sha256=k1QY1kmUpKc755-U78NAD4RAl7UNeJyJJ0yik779TBk,7744
42
+ docx4j_py/docprops/extended/el.py,sha256=1m7miygIXG1onNeuEvr3TN6tWHEZ3bCcIijDlacU1HI,4242
43
+ docx4j_py/docprops/variant_types/__init__.py,sha256=hLGncmjIPi_RomkUJ0LmWZbMZHdW1ZfCl56HkPs84wA,31292
44
+ docx4j_py/docprops/variant_types/el.py,sha256=9LyzLvuUQZGcPVj2tzYImOWk7cQ69aB1MKPrllBKF3o,18069
45
+ docx4j_py/docx/__init__.py,sha256=sNpa6PVc3a7Cm2FXkRgQQ_aWUj25rWd-_yAdsqfuSTM,4927
46
+ docx4j_py/docx/_base.py,sha256=llwhFGl5XGOYfRSeeHZ_qI1MrzwWTbphMNS37ZB4jas,7631
47
+ docx4j_py/docx/comments.py,sha256=YMcmH7pUSVBgYea3GbBgAMMVR9hKdtKSEZpqzdxS6dw,9034
48
+ docx4j_py/docx/coreprops.py,sha256=yaB3IVc2FIankxYOuNtJWSYi2NzmvEpDpvEKFodotdk,11330
49
+ docx4j_py/docx/document.py,sha256=_npaM4t0ZUplGsKMQqM60G1917hqOXh9nE--xopR9Pk,10491
50
+ docx4j_py/docx/enums.py,sha256=osCuA_y0D0lUKEo4gAmb2DbTdinkzSgzYd0vo_UPnzo,14621
51
+ docx4j_py/docx/section.py,sha256=mtz2i1A5QLgNvv7j2afrvI7BjyG4hNcrvPJPkX1qq_k,22247
52
+ docx4j_py/docx/settings.py,sha256=jTTIdgKjy8S4gunvOCym-1rDsh3AxKZo4iq-G8AcMMM,2739
53
+ docx4j_py/docx/shape.py,sha256=yfUsNLNgycbp1uOJNGFbSey60FP7p3e34RF4sAvvPaw,8374
54
+ docx4j_py/docx/shared.py,sha256=NhW7Ov4IEqiqLoLoBiaCHPpGnnm1ww_jRQIuPCBa65U,6133
55
+ docx4j_py/docx/styles.py,sha256=q0qYtxFEA7IacqE8qOG2MzDWm3upRZ80U0-9MTkAoT0,20755
56
+ docx4j_py/docx/table.py,sha256=mCZuekHFzoFhyo94C4CozcU6mxHT-KcOZHv2KsfkxVQ,30725
57
+ docx4j_py/docx/text.py,sha256=MNArWSsQ64I4CiPtcTbSwdVcdpb2KVNx6MTo5wqlooA,65309
58
+ docx4j_py/inkml/__init__.py,sha256=uyfKN_X03fHb6iqYc2x2K5ilhMVgeO3xYA5fBIylX_U,35152
59
+ docx4j_py/inkml/el.py,sha256=M-XV9txIyB5oD0BR5FQkS9SUUGxerYEs3xDprQhCVEg,11634
60
+ docx4j_py/math/__init__.py,sha256=qmp37hynt_GulvPxPC0rqh_xYZupsB-NN1Fi9BIzPJw,87494
61
+ docx4j_py/math/el.py,sha256=SgaMaxQStpXcazIakFWp7gLltepBwybGoMxY_YhkUmE,46228
62
+ docx4j_py/mathml/__init__.py,sha256=8Inxi0yPGNAxdPrQl1HKBA6BYyYjIJJvgJqVLEwj_PU,24633
63
+ docx4j_py/mathml/el.py,sha256=ur5WZleZ9s4HY494Lge7Cm0c2xmCcgSwBhzMgcWtJpw,14880
64
+ docx4j_py/mce/__init__.py,sha256=z7e6xrTiAiq7m2jPQUhSCVGttzomcQVawabW3a1-1nY,5120
65
+ docx4j_py/mce/el.py,sha256=U3k0KvnlC6kFJQ8YL7fWEzSatkOXC7niUqcLc_eiySY,2995
66
+ docx4j_py/model/__init__.py,sha256=AyavQbREkkEty6ZjoEr2kPSr8g3P0B0zgexrTGgIgZw,729
67
+ docx4j_py/model/property_catalogue.py,sha256=xarcPI-3ZmU_sKzc2y6k6Vuo7s2eO8PpFCCl4WZbitE,41617
68
+ docx4j_py/model/property_resolver.py,sha256=ovoWYdUlWBFXUEwTO1JJsw11QoAQivps-uTy5_09LYk,30438
69
+ docx4j_py/model/sessions.py,sha256=7N3xt-VFhAHHJmmB_UPgFH531pdhdM7RP8fIWX9cEno,14008
70
+ docx4j_py/model/style_util.py,sha256=SHYRjhfa_MT1muWFiG0_lznrXbrhWmVOhXUj9gKvFN4,19994
71
+ docx4j_py/model/content/__init__.py,sha256=of9oRff_py2I3WdTrvEOQqUnIdU5PtfBgIueGkcWZd8,21536
72
+ docx4j_py/model/content/addresses.py,sha256=p1ooeqpgy_oA0FEddnpQlTVg_sjuC5a3pUX6ZT6PTQU,22463
73
+ docx4j_py/model/content/api_script.py,sha256=GwB0A6w5iG8oZbDJyHJFQRbubj0x3zyi7IIr-oNskv4,50116
74
+ docx4j_py/model/content/body.py,sha256=ZMCGPN5Bdf49xyG1qc3hHs5RtBJMj8W8CaQHKuLD4Kk,53632
75
+ docx4j_py/model/content/comments.py,sha256=IxZ9zgcOXZANuNLDFGfr4U4PxbEF1Vi19raDYBoY1QE,49763
76
+ docx4j_py/model/content/compatibility.py,sha256=XJrvS5toup9W1OulketcFClO4pL7M8VOUS5lP93kyxM,10133
77
+ docx4j_py/model/content/controls.py,sha256=N_e9EjdhYa8JRcxMIknSTasO3gzQhDovt9VIJni37uw,43583
78
+ docx4j_py/model/content/describe.py,sha256=FFGi9B461z7of-7KMQwNfeV5AfYJQe8vRQatrcSKzks,17179
79
+ docx4j_py/model/content/enums.py,sha256=jiTlqRxNC-nbYYLEylTDmUK4FNkMkUb3IG47x0nc8iY,6516
80
+ docx4j_py/model/content/errors.py,sha256=twf4Z1dKJWpvGd4gWQr1x8EsRmibWvonR6IR9smBJXw,6406
81
+ docx4j_py/model/content/font.py,sha256=H6a0qtZ0sbWZlvNF9Bc3AJ69zbW85ivPfITxQghyZm4,12254
82
+ docx4j_py/model/content/lists.py,sha256=048HJMJmCRDsMqom-f1YoeKr8ssx2xb-ci4yABAHwxM,48167
83
+ docx4j_py/model/content/ooxml.py,sha256=pVZBCEW0nbMTZ0kkL9Rf0AwcHIk71FkAtXXeIkk4eYU,18019
84
+ docx4j_py/model/content/paragraph.py,sha256=BzkzJnIz_tH8gQlr6csrwcUNmu0WIxPBPm_lXssV21g,68352
85
+ docx4j_py/model/content/picture.py,sha256=l0yi6g0gBFjbC9t1Bok8YLggd7JsuzPMHsxIyPQgpfU,24108
86
+ docx4j_py/model/content/range.py,sha256=KJQSAZGwE54cQjuKNxW5YlRXLE1kgaHKvcI76e7avcU,19958
87
+ docx4j_py/model/content/reports.py,sha256=en2vBDpjAxFQ5TduZBS5MDE_LLx6nUGImCxAzV6m6L4,40762
88
+ docx4j_py/model/content/styles.py,sha256=bJF9o3iiQsDOf58r_8Xi_w-4d7eDswVxVx9MoYPfJPA,34443
89
+ docx4j_py/model/content/table.py,sha256=0AQEcZVPKoOEUO9J7CTxZf7TeVNKXa-8jpOyM-eEBGM,40284
90
+ docx4j_py/model/content/text_model.py,sha256=11AWW8r9_9Xfr_XqPWAbAlCylKO6g3sMZiyTHX4nBww,26605
91
+ docx4j_py/model/content/tracked_change.py,sha256=ZVE04tQUSBrmRVyFI0-0u8fHEFTyK-aejnPFSZiPNzw,32903
92
+ docx4j_py/model/content/tracking.py,sha256=DptwefPrTR6sFk7gZS03vTt3Csj2GXWOuSZgGs5Ft_0,43801
93
+ docx4j_py/model/content/trial.py,sha256=lW2lOx_sSGsXd34aHUiWZPmRSGYpUqsWHdfpbTdDlpI,23629
94
+ docx4j_py/model/customxml/__init__.py,sha256=jT75Reim5mUwBY8mAigPgxbhmFcLsihzORpIJiR3cKM,4630
95
+ docx4j_py/model/customxml/bindings.py,sha256=fDL3lHm7IS-86G33tGlhpBaHEOYkXdaB2CTHLjLwutQ,19102
96
+ docx4j_py/model/customxml/insert.py,sha256=NkxIOZBU0r8JCa0JPSaNLrPXthUyoRY1YsqzhLwydY0,8449
97
+ docx4j_py/model/customxml/kinds.py,sha256=c1gPyVyZc8BJxWBvLykkTrcGoIkxJ3jiSmRLapwxY-k,26345
98
+ docx4j_py/model/customxml/mapping.py,sha256=48Up5HmQvA9fqIUAE3Y9YPLZ2w1Vq1JMjvleLTpsE4w,10568
99
+ docx4j_py/model/customxml/nodes.py,sha256=Hsck0cNT-FseQHJuZlb20H8LK8WCHnHJGA8hJ5006AE,27868
100
+ docx4j_py/model/customxml/parts.py,sha256=7RGGwLeGYLs--Zsl_EZ_k4SkX07BgxJVbza07qzNb4I,31125
101
+ docx4j_py/model/customxml/template.py,sha256=0PGb89UGbdhPQIxwDaTbdMv1qCyKwOfbmbvdpA6lOdI,35191
102
+ docx4j_py/model/customxml/xpath.py,sha256=1JxxXHk_g2ZwHrpb3ZqDAsT1ANov0GgkNt5hp4JbOwk,6588
103
+ docx4j_py/model/fonts/__init__.py,sha256=OUutUbWu3TVLrtGoUjFz-IaJ0hxILo3FsOlKiLyTHfU,4433
104
+ docx4j_py/model/fonts/data.py,sha256=mHbEHwtok8Ql-zMDqBPgK8J9i6ipZrNB7GNNWYKZRlE,6581
105
+ docx4j_py/model/fonts/default_theme.py,sha256=Y_gU6Kp5XhCjWj12JVvlgq0g2ONLEGFPOHuNmIZkwD0,3584
106
+ docx4j_py/model/fonts/fallback.py,sha256=mZZqhZoBGFuRiH7fjRmc1aqPIEsXqjaJyZbZHz7FiDI,11687
107
+ docx4j_py/model/fonts/fonts_in_use.py,sha256=3zLflgTOm0pZxMmeVhZIKdXXu6KG44yyeZ6jop-f0Dg,9854
108
+ docx4j_py/model/fonts/language_tags.py,sha256=4xk-eanLeshLtthSPsLmUqkMoR1j6k1Z1FpF1R-maQ0,3821
109
+ docx4j_py/model/fonts/mapper.py,sha256=8wYpd2Xewjn7e36ybdy17EBnL6NqsqosICCMXR2tKRQ,31358
110
+ docx4j_py/model/fonts/physical_font.py,sha256=gDFHZYPD8foq87_IUl_UkoR_hHM8SwbU9jvT1MUOr3Q,3433
111
+ docx4j_py/model/fonts/registry.py,sha256=eAPOoVYiOWHnbfAOp6ROwJp8_MX5Uv7Za5V2PrkFf6Q,5120
112
+ docx4j_py/model/fonts/run_font_selector.py,sha256=CvGXeg9y9Wz50ZJXM3qdcr42f0JUU4QQzElBVyUNlKQ,27852
113
+ docx4j_py/model/fonts/scripts.py,sha256=zltf31AsxUbh42LIlULtJP63sGa7uo_4UJtPu4gorqs,5953
114
+ docx4j_py/model/fonts/theme_fonts.py,sha256=ATvXBXcssDW-PSFJHb--7-3Hoc631u10gaZWL7UFhCc,4920
115
+ docx4j_py/model/listnumbering/__init__.py,sha256=5T-8u-YaWLYk5WU328PH1HKjq_EZzhSTIt4zd4Uy2-k,2300
116
+ docx4j_py/model/listnumbering/definitions.py,sha256=SB2Q9_tanZ-G2X9-iu_ydleScXTeeNNDo0EUwbfT86c,34330
117
+ docx4j_py/model/listnumbering/emulator.py,sha256=rOs0VGmuW6mRaBWsyms03ROXxSp26F6uSOJhL40rs0M,41671
118
+ docx4j_py/model/listnumbering/formats.py,sha256=hJk-FytO1gVHxjjK7hUYnVx9VktStEiZLx1IaTZSohQ,15421
119
+ docx4j_py/model/markdown/__init__.py,sha256=ZBlkdpPyRUwzVROKyTP6w3zftqSrPDxASeTZJTfa2Ko,3788
120
+ docx4j_py/model/markdown/export.py,sha256=4IdsJZ6AlrzMKmH61BPK8gC01OsKz5T73fZUlGkdSag,41347
121
+ docx4j_py/model/markdown/importer.py,sha256=Dc20ha2VQwDdg6hYpL9PMSpbDBn06gwS2pXNuVB0AD0,32795
122
+ docx4j_py/oart/__init__.py,sha256=KgKYDLP8Q0nLVV4Niq2sEWRmwX1pxv6Wou-RDO6BclQ,54451
123
+ docx4j_py/oart/animation_2018/__init__.py,sha256=UIG8UbkrO0-DmqgG2kQIzy-7E5s6PCm8f2OLxCVYFE0,3335
124
+ docx4j_py/oart/animation_2018/el.py,sha256=UfNUGiazFdWRd9hDWr8-xXk3uBtxA5hFr1yIXuf_-1E,1950
125
+ docx4j_py/oart/animation_model3d_2018/__init__.py,sha256=WWYDtj17U2EElOX6Ge5HNwGcDjOpNd7N6plISROFIdg,3635
126
+ docx4j_py/oart/animation_model3d_2018/el.py,sha256=3i4y6LtiCfXenLkaaE2_kFjuH6d8OfURe-2KRZti07o,3630
127
+ docx4j_py/oart/chart_2007/__init__.py,sha256=KR8IXM2YgIa0zm6tW5lx18pQduEgyC_R8kOReYTpIdI,5093
128
+ docx4j_py/oart/chart_2007/el.py,sha256=gwMCURl1BB_IV9061rNHS2nYkG5yQE9Q9mdRI3JFGHI,5366
129
+ docx4j_py/oart/chart_2012/__init__.py,sha256=qgk9Ufvc0OZB-_Zmzc8LPsDCDNNKRS8nXJTXjvto-DI,16224
130
+ docx4j_py/oart/chart_2012/el.py,sha256=QYN16M4K3HrQ-18NivS845kKshXc-SLCdv_R3M7z3GI,22221
131
+ docx4j_py/oart/chart_2014/__init__.py,sha256=CssJAMQ8jR1lFq_kV9m2kMBcKYllQQYnu6VqQk08xOs,9682
132
+ docx4j_py/oart/chart_2014/el.py,sha256=pEykwS2ZtLqy7wkkyxEJcjItbec3rYQiZpBsmSs8gkA,9656
133
+ docx4j_py/oart/chart_2017_03/__init__.py,sha256=3GwUdwkHnY5AvlodKgamxPtN2q7Lede0_ZTWs1e4pbw,2470
134
+ docx4j_py/oart/chart_2017_03/el.py,sha256=ZRRROmbX6weQ4YSjK-axt6UvGcu6hrFW-qsZvSNuUqI,2536
135
+ docx4j_py/oart/chart_ac_2014/__init__.py,sha256=WAM7L03JbQlkxLSTyIe-l9Zm3NBeIBq8uTO78335UIw,1785
136
+ docx4j_py/oart/chart_ac_2014/el.py,sha256=Cu3riLfbIN3W_OF2Yg7LsdhNm7PIdSMxyo8DZFP1jX8,1949
137
+ docx4j_py/oart/chart_drawing_2010/__init__.py,sha256=bt2Zif6jxT7d1CR0b3V3vxyKCWcu0dHy7-aE7Yls4Eg,4968
138
+ docx4j_py/oart/chart_drawing_2010/el.py,sha256=kNuC0dl5AKJAMSHqtTVAA6TB0qp2iLDJKeWDUZltm1g,5395
139
+ docx4j_py/oart/chart_style_2012/__init__.py,sha256=aWuntM3QZrSoM5tJ4cdFe7npvocEfFEozgcGKlKkr48,36317
140
+ docx4j_py/oart/chart_style_2012/el.py,sha256=UHRpSAp3BfDXfJronN9ig0ioepJ9RF5yJUJ7ZByztiA,18681
141
+ docx4j_py/oart/chartex_2014/__init__.py,sha256=DqERW8O7MlFQA2eMmI26jTdj8ehpGBso8CxSYqf3KNs,80731
142
+ docx4j_py/oart/chartex_2014/el.py,sha256=OxuYNjLHS7pZAepKM2PszPF-julECPfHH9UEdMENc14,52291
143
+ docx4j_py/oart/command_2013/__init__.py,sha256=mi_T3c4T6nKjwFQK5ti9WlXFFNwppi6anEIkBaR4nbY,17548
144
+ docx4j_py/oart/command_2013/el.py,sha256=aD1SRtdpkKEqynov5almqNyZ2dEWKIqUy_XBgTvkaS8,8515
145
+ docx4j_py/oart/decorative_2017/__init__.py,sha256=485KwdDJ5Fna5IlbxghKPHHr5d9nFN0J32HQinDXApM,2006
146
+ docx4j_py/oart/decorative_2017/el.py,sha256=Ly2arjOkkMdUuOazK0I2oc0fokOCjKKi5ZCIIpRtq4s,1911
147
+ docx4j_py/oart/diagram_2008/__init__.py,sha256=JiR449_uqOpbcuhQiYap6ESE-4jASmzcGlVpxHb2U4I,7908
148
+ docx4j_py/oart/diagram_2008/el.py,sha256=Iz-P8OZ3yNB6Q7p9TGWbzcuUWMfhchLsmPFKfGiPRkM,8865
149
+ docx4j_py/oart/diagram_2010/__init__.py,sha256=ZZsltyt8XGNLSlIfWsDek_dci1AImlhjGGEUyCleynU,2327
150
+ docx4j_py/oart/diagram_2010/el.py,sha256=snuYuYIqANyJqioIBpBWCQKZEzXDeWdfgtn87cg4jOM,2393
151
+ docx4j_py/oart/diagram_2016_11/__init__.py,sha256=HIRvhH9QXmBkquDVQscGcJ-l_LEA7dC2u-6Q-Brxnfo,4920
152
+ docx4j_py/oart/diagram_2016_11/el.py,sha256=ab85MJoSifYmQpgATcSUuHnpaEHeEsZT3Fny9Y5yROI,3050
153
+ docx4j_py/oart/diagram_2016_12/__init__.py,sha256=BzCFUfuPwJfDxo2SlTD3BciaucMZmHDPV2kkCkBQn1c,1998
154
+ docx4j_py/oart/diagram_2016_12/el.py,sha256=A-QZSP4WrYELo6woUHUTQ2zC7xFspqwOZWUo8GlwT68,2270
155
+ docx4j_py/oart/hyperlink_color_2018/__init__.py,sha256=3cwiknMgn33C-CVWzTWCZ3gr-lPYJfBg18GZsjPE2iA,2132
156
+ docx4j_py/oart/hyperlink_color_2018/el.py,sha256=UEP0eAQmUKDqQ6j5QQAyGOYlRxNQfqPDlKnV1aRJJR4,1923
157
+ docx4j_py/oart/ink_action_2014/__init__.py,sha256=d8ZwtHeOHvetXAZy5--Yb3bxri7bNufsK9_TPa7UgcM,9340
158
+ docx4j_py/oart/ink_action_2014/el.py,sha256=Fga1oIUMpg0o7MApJMAJxxcCos_cpNqTICSs_4FNG0o,4876
159
+ docx4j_py/oart/main_2010/__init__.py,sha256=9v5xaCrr3sDlT-djzfoQuiHmkiDjTpvWxhMkum8OcNw,39256
160
+ docx4j_py/oart/main_2010/el.py,sha256=bqT8CsqtEKaiIxLlt0NGJXpqX1EqLl_mUmJTXzowBp8,28985
161
+ docx4j_py/oart/main_2012/__init__.py,sha256=glsA3f3fklaxSPdxxDdAHCjghYrKBqtDClEIy4QPwjU,7008
162
+ docx4j_py/oart/main_2012/el.py,sha256=ZgtQrGspuzZmMzz4eH94zAjhsn_8J1ociK35vJGw5d8,3338
163
+ docx4j_py/oart/main_2014/__init__.py,sha256=pNJREyv9xqziHukj-Q2e4oWVwTSGYru4Ge5bs9wnpog,4015
164
+ docx4j_py/oart/main_2014/el.py,sha256=RWM0FAbeZOvfq2zNUBiG2OY7yLGpx5zYTrv1t7A1MIM,3460
165
+ docx4j_py/oart/main_2016_11/__init__.py,sha256=Fgm0HLfIsp6gsOpDSwBoj8IsFNF_y_bGa4fGmZDzZN4,2145
166
+ docx4j_py/oart/main_2016_11/el.py,sha256=LIVzRf1MrpVuPWTi-bvmTegmWY9dCnENo9pSUuA7EnU,1926
167
+ docx4j_py/oart/model3d_2017/__init__.py,sha256=2jTFQc82Bk2RoeEdkwNX35bg-89rQn-Dc0EGZcWYzPw,20033
168
+ docx4j_py/oart/model3d_2017/el.py,sha256=nABJIw1jt3EsHih6XqWO5u6mhb8a5l8hD5I8WmxpGZ0,14948
169
+ docx4j_py/oart/picture_2010/__init__.py,sha256=8Lfp6o9e5s8uoesntooXxROn9afRUQbDSLcOTMN-6t0,1989
170
+ docx4j_py/oart/picture_2010/el.py,sha256=xc5Ao4arb5CWQPsu0yUY389CY7NfKr4ctyk8m5QPBBM,2216
171
+ docx4j_py/oart/spreadsheet_drawing_2010/__init__.py,sha256=nubBnM-piKeFIlkQeuDnfw7OOyO5bydvcQe-4s9QYJ8,5012
172
+ docx4j_py/oart/spreadsheet_drawing_2010/el.py,sha256=1jvRjEEFHuThU2FK419NTN-Dm8vF1iz3hiOsgeiaGlg,5523
173
+ docx4j_py/oart/svg_2016/__init__.py,sha256=HBFYUtcoxAPY7FSr08rWEjOCZuPXLFmZBs4y1E8JkBo,2287
174
+ docx4j_py/oart/svg_2016/el.py,sha256=XLPWSp4ELZ6XP6b8HGPZysLadDf5i1pKx1lFoobe-Iw,1831
175
+ docx4j_py/oart/theme_2012/__init__.py,sha256=aRjYQGTe-ru7NCPhGrzLi9dB5oMOIauEWT-mw2rDq0A,2916
176
+ docx4j_py/oart/theme_2012/el.py,sha256=WOYfIBta5nrxIpI7LB2QFBxcSXjZqeBXoSTnqphOqkM,2414
177
+ docx4j_py/openpackaging/__init__.py,sha256=qXzwVLGrYtQc6fFeZtRI1ahh4IJUOS0DosdTqnY8xMg,6113
178
+ docx4j_py/openpackaging/api.py,sha256=_aAeKGC5N8cVSMp3H-xzauAhKrOnBS0rp33k9O_I_ro,2059
179
+ docx4j_py/openpackaging/content_types.py,sha256=e4tuZVSNPr77sk7VNIrdp9LN3XdCqWsMqRm-M9mJFmo,21936
180
+ docx4j_py/openpackaging/exceptions.py,sha256=w9sRDCqmDNaXkwpotIeWKRgzDnSoN_MS-jf8UnWBKaU,1645
181
+ docx4j_py/openpackaging/load.py,sha256=WVIo7JWv-ClI4f6crTtn7w-FsugWWdb-9Q29SBr8jRQ,10457
182
+ docx4j_py/openpackaging/mce.py,sha256=Yu-j4qUVVVRZd3yr7zs08k9umDZ6HUbps2b5hbLs7bI,6348
183
+ docx4j_py/openpackaging/part_name.py,sha256=W51_6CUrGrmhDRsFBdj-M2zGCXCriVr82p-_Lp81nno,10520
184
+ docx4j_py/openpackaging/resources.py,sha256=G2QCsQdOHKkihEX5osDiMn8EN_TABrO6JN4Yl270GBw,1443
185
+ docx4j_py/openpackaging/save.py,sha256=58en3TRpA9kcrn3DANLaSssfOiFdkxAlmkjUcAHITvU,3717
186
+ docx4j_py/openpackaging/stores.py,sha256=BX5Tn-acu4AXoL2fGP-4rY_P0fRXQz3tfmUnn7LclLU,21107
187
+ docx4j_py/openpackaging/packages/__init__.py,sha256=MF6n8vBn51XZWtx-35cPs7zldL4NEzPUh3np_EgOC-s,755
188
+ docx4j_py/openpackaging/packages/opc_package.py,sha256=PivAA5yRPeH7LcKC19hcGlA3x-Xol54R8Gs_THWNe8c,19443
189
+ docx4j_py/openpackaging/packages/wordprocessingml_package.py,sha256=o7yMWX-sKKF7PIGHNx3GBvAUOCVWTg441i6dqhTA6Io,19466
190
+ docx4j_py/openpackaging/parts/__init__.py,sha256=ri2U312r_qE506PgUP7dy9UbcAlrNkYy1lpQ7Fsq6h0,1461
191
+ docx4j_py/openpackaging/parts/binary_part.py,sha256=X4BP_7SS9kzKB8tBNdpAl_wEXFMfAxCQtz-_LhZsFw0,6299
192
+ docx4j_py/openpackaging/parts/default_xml_part.py,sha256=KWx9D0OAXjqcLjkrEkJgspaNY1pQi2k35XJsQkzO7-U,6532
193
+ docx4j_py/openpackaging/parts/dml.py,sha256=st-V1c4UxRTA9qogJ_OT6iQLh4FVm3LbNXdezdQwPMo,7711
194
+ docx4j_py/openpackaging/parts/docprops.py,sha256=CQ3hYT0chXkbflcVpgeKowNgLfOw_8w3c1T-8CJNS9Q,4558
195
+ docx4j_py/openpackaging/parts/namespaces.py,sha256=Yuq75drGJNGA0b8YPP_YWJinle18zwKKuxV_cFeoUpI,7262
196
+ docx4j_py/openpackaging/parts/part.py,sha256=_pxFBnqOBuJIBabrNo5dddsggrWGWoPRbIqf2TnURk8,7557
197
+ docx4j_py/openpackaging/parts/parts_map.py,sha256=U7Et1J1ADXCp0nWGFk6md0QXYSlGVKzFHYfvClm-8tc,2715
198
+ docx4j_py/openpackaging/parts/registry.py,sha256=8yndLxfd4qngZ-Qr3gJq8q-9m4dUzhL5HwZOmmb0Pxc,13269
199
+ docx4j_py/openpackaging/parts/relationships_part.py,sha256=o848wwC6NNnxE4y5hMhxo_4m4bDCn2OL_OdoCj7UjKo,16978
200
+ docx4j_py/openpackaging/parts/xml_part.py,sha256=pXnIKLmdwzIhD8JLFucslNQDVjdpUdpcJrtMHy6fgZg,16038
201
+ docx4j_py/openpackaging/parts/wml/__init__.py,sha256=aZVNULqVoyaGBeWSnmfANB64KEwIafFvxMJWNaBQiEA,22609
202
+ docx4j_py/openpackaging/parts/wml/comments.py,sha256=7nlG3PkdPmA5EcjRNA6UA4eNPfICRvISDp10_hocAKw,13373
203
+ docx4j_py/relationships/__init__.py,sha256=Gk7v0DjoskseDnK-5XsBINzMdS1ZuAbIiq0H05WEMHE,2835
204
+ docx4j_py/relationships/el.py,sha256=3babfgiPnOvyCapv2L-tWBCwxutHZ7donwt8ePmgD8A,2461
205
+ docx4j_py/resources/KnownStyles.xml,sha256=uUG6lPpalG4Xf4_jVeJYdFlYi8_UGBdVSCzh1x2f8Ac,77893
206
+ docx4j_py/resources/__init__.py,sha256=VU41ir3T4ONvWNFNLHDAJhBoG6MSxomzTiqhxmWabKo,577
207
+ docx4j_py/resources/warmup_document.xml,sha256=QWG0IubxNsOQcAlRL7nPvyqj5BQgHBa0jwlgaHwA2k8,7531
208
+ docx4j_py/resources/warmup_styles.xml,sha256=qxbPZegOzNd17V5OWTzyHVmp-v6p4VM0Pj--stWcfvg,3018
209
+ docx4j_py/resources/fonts/__init__.py,sha256=rLeR90t5qqrE7VhdcCZpYKRfDleSEIZlVc8SNr4giA8,503
210
+ docx4j_py/resources/fonts/families.json,sha256=bwBVJtnbt86zUg5MRjaKKimPUa7UP-GgiZPSPMbqh90,15485
211
+ docx4j_py/resources/fonts/registry.json,sha256=Me3baAnwE8TACFuV1-qBxx6LE9cgFnIyQL6YomUPyR4,3162
212
+ docx4j_py/resources/fonts/substitutions.json,sha256=7FqFbMilvlC0TrE5jB1ND0GMoFW3Grj4GheXvACaFaU,114346
213
+ docx4j_py/resources/fonts/theme-2007.xml,sha256=jhLM0ZQExYOW-7FgSZiZNO5bA0kX-OECYfwcXBqo0yI,8384
214
+ docx4j_py/resources/fonts/theme-2013.xml,sha256=rdE0ORJ23dXvXfj8fGxkQQmbWxDZww8FJdS1Ip78cYo,8390
215
+ docx4j_py/resources/fonts/theme-2023.xml,sha256=psoDW6x1-npTiV3OsgJ_urydHCcM7lJ2EkOr-fSRQfo,8717
216
+ docx4j_py/resources/openpackaging/__init__.py,sha256=LFhx26OPdbi2X2PmGzRdI_6oYxnN66Ax8eFUfZj6HzM,300
217
+ docx4j_py/resources/openpackaging/fontTable.xml,sha256=gNPQZ1kkfr079Lr2XPUkNbZVyoqtQrRLuCqRBoaA4R4,38017
218
+ docx4j_py/resources/openpackaging/numbering.xml,sha256=ddxoWTSeX1JLtf7Apa8tOyBbrU-dnMXIHTfJ5Ju4YdQ,6932
219
+ docx4j_py/resources/openpackaging/styles.xml,sha256=lu8PDNQEe3nYyA48WbAkvnrq0YjFhDDjMFOmmV6Nohk,17319
220
+ docx4j_py/shared_types/__init__.py,sha256=6kuLs9NgA03AfUYSNJ6OTQYouZWAqpHhVflCvFuNtII,1919
221
+ docx4j_py/shared_types/el.py,sha256=FnmsVzcyb_R7cwox0UVoNKIx-CACzc9piX_Fhh9txO8,1390
222
+ docx4j_py/w14/__init__.py,sha256=6V5TFrSlw661pu4utDdbsbEhzRsuGeXxQYLtB-P0ln0,49958
223
+ docx4j_py/w14/el.py,sha256=0R4SOCQTvCGUn1_UJJ33x3vA11X-EEUyZ41G1XSRbTk,28552
224
+ docx4j_py/w15/__init__.py,sha256=L2LrGeFLgGzaYyCGOAgdHYaAL7m13e1mwiG_YtKSFaM,9959
225
+ docx4j_py/w15/el.py,sha256=SY-9kE05dns3-SD-aWmSB7RIm8O3yiGPp4lQGc_-yz8,9425
226
+ docx4j_py/w15symex/__init__.py,sha256=QWNZx52c2T_zHw00VJqEseSgcZSCDmSCQ6MnqLHvP8I,2250
227
+ docx4j_py/w15symex/el.py,sha256=xJ0_-jZhbA-iwHMxr_-X6WzgAOdfwPVMN6jUSgYgPN8,1788
228
+ docx4j_py/w16cid/__init__.py,sha256=nklpFFnECvBzo8Jz2tYSakIzboJq8vbaHC1gtgEE7SM,2973
229
+ docx4j_py/w16cid/el.py,sha256=CDe1bi9HeEFKypUTndgjkBTj4DcFhT3w_mdi83vLpPA,2295
230
+ docx4j_py/wml/__init__.py,sha256=S9kcidC7r6bChGX_lFPAZzwegVGdezN2LDF7qeXhzSI,753515
231
+ docx4j_py/wml/builders.py,sha256=AkET8Ad1HilDu0MgjSkS-zri2D0wmpiSMX0IYHOkgsI,26468
232
+ docx4j_py/wml/el.py,sha256=PvxbHEbntkkRkHBIp-eh5D3iS46QXiJmkWDqatD4msw,325758
233
+ docx4j_py/wml/pictures.py,sha256=nA1MjYKXQtdyKgTTfY7iQsj5pN7hpUa_2SSXibiXRCo,14956
234
+ docx4j_py/wml/sdt.py,sha256=2caYazf4hj8xNu6OGu-ZXjf48EK2vH1CJGgX86dOAFU,15616
235
+ docx4j_py/wne/__init__.py,sha256=qLM9QqFUoWyAmJsuvRlY03sz5yThxPKjOgnEpOUDPu0,17373
236
+ docx4j_py/wne/el.py,sha256=jHKuHLAb6cGMp42QYdxEi-sBw7Gejs_fYYqoJ0cEKtg,8417
237
+ docx4j_py/word/__init__.py,sha256=Fgwz60GwgwQtdy4lU0lCtMIYfRSbzAFzaPBoDKGftfg,3575
238
+ docx4j_py/word/msink/__init__.py,sha256=m9jEsWpeEXbP5H3d3Rn5JLQuWAe3slPBOwBwe2p8sfo,9315
239
+ docx4j_py/word/msink/el.py,sha256=hu3nAQxIRETsZKpmNRvEv8Dva7DathzoIroRLJBGgFc,2857
240
+ docx4j_py/word/wp14/__init__.py,sha256=PQbRRC6oof-qtcoyGehHCxD23c_ouVah5fjxVZV-XzA,4034
241
+ docx4j_py/word/wp14/el.py,sha256=1W448jS2jAq6H6oFPn2Yokh8wXo35iwNib_mGebzcjQ,3492
242
+ docx4j_py/word/wp15/__init__.py,sha256=Hbc7UataGXSjVv19UWPIKingAg1qh79gtxqPDecF4Fs,2385
243
+ docx4j_py/word/wp15/el.py,sha256=Lgs3n9R8v-drwZ9O9rjD-PAOR3Y-3NlmN3Y88zyMgBE,1907
244
+ docx4j_py/word/wpc/__init__.py,sha256=xN2Z0QelCSia7_Num-ZrcqY6ReBGrx2JIcxUFA5RgbA,4488
245
+ docx4j_py/word/wpc/el.py,sha256=araiBLwMpnYNbMl9oL8z6tuNoksh8vqTbQ_DaRRsI90,3955
246
+ docx4j_py/word/wpg/__init__.py,sha256=U9GwM6IPrjfotSw5LKb99dEoQnl3oQ5R6KUyDR3RBUE,6010
247
+ docx4j_py/word/wpg/el.py,sha256=9_iin_OWoyfKcUYsYvLtHoJZVRES3j6wy5MnWg8I-Oc,6179
248
+ docx4j_py/word/wps/__init__.py,sha256=v3QwgOdA6wLz1jFZiuoXWamtlpCZ_dz9D27_7Zc4dAY,6771
249
+ docx4j_py/word/wps/el.py,sha256=qQO6QcSBsHEmdnYajyegi430aD7Qo5MgGbYWJPk18Ig,6577
250
+ docx4j_py/xml_ns/__init__.py,sha256=1w6C4zzuX5V4wzejDIGIk9Ed943qvmpAOiaqZr-aGOU,1585
251
+ docx4j_py/xml_ns/el.py,sha256=qGkO6i4pzdH4SOfUMHk6xHtsmVWe4N0_P8GrzOwG824,1320
252
+ docx4j-0.1.0.dist-info/METADATA,sha256=EwB5WSzWMxMwbWVtZ5bQPXC--VQ7MGfyL1NLKoMZFmg,12489
253
+ docx4j-0.1.0.dist-info/WHEEL,sha256=THafob7ofN-NsuMN7Mg4qZyHaQI7KkD-QlcQatYhXPo,87
254
+ docx4j-0.1.0.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
255
+ docx4j-0.1.0.dist-info/licenses/NOTICE,sha256=T1JVTyiFGNVGGnY3zgCbrqyzEzlCCBMadt-8dD53iik,2588
256
+ docx4j-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.32.3
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any