python-docx-oss 0.0.10__tar.gz → 0.0.11__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 (472) hide show
  1. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/HISTORY.md +4 -0
  2. {python_docx_oss-0.0.10/python_docx_oss.egg-info → python_docx_oss-0.0.11}/PKG-INFO +11 -3
  3. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/README.md +6 -2
  4. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/__init__.py +1 -1
  5. python_docx_oss-0.0.11/docx/image/svg.py +118 -0
  6. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11/python_docx_oss.egg-info}/PKG-INFO +11 -3
  7. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/image/test_svg.py +38 -0
  8. python_docx_oss-0.0.10/docx/image/svg.py +0 -65
  9. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/LICENSE +0 -0
  10. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/MANIFEST.in +0 -0
  11. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/Makefile +0 -0
  12. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/_static/.gitignore +0 -0
  13. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/_static/img/example-docx-01.png +0 -0
  14. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/_static/img/hdrftr-01.png +0 -0
  15. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/_static/img/hdrftr-02.png +0 -0
  16. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/_static/img/oss.png +0 -0
  17. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/_templates/layout.html +0 -0
  18. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/_templates/sidebarlinks.html +0 -0
  19. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/_themes/armstrong/LICENSE +0 -0
  20. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/_themes/armstrong/layout.html +0 -0
  21. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/_themes/armstrong/rtd-themes.conf +0 -0
  22. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/_themes/armstrong/static/rtd.css_t +0 -0
  23. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/_themes/armstrong/theme.conf +0 -0
  24. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/_themes/armstrong/theme.conf.orig +0 -0
  25. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/dml.rst +0 -0
  26. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/document.rst +0 -0
  27. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/enum/MsoColorType.rst +0 -0
  28. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/enum/MsoThemeColorIndex.rst +0 -0
  29. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/enum/WdAlignParagraph.rst +0 -0
  30. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/enum/WdBuiltinStyle.rst +0 -0
  31. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/enum/WdCellVerticalAlignment.rst +0 -0
  32. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/enum/WdColorIndex.rst +0 -0
  33. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/enum/WdLineSpacing.rst +0 -0
  34. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/enum/WdOrientation.rst +0 -0
  35. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/enum/WdRowAlignment.rst +0 -0
  36. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/enum/WdRowHeightRule.rst +0 -0
  37. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/enum/WdSectionStart.rst +0 -0
  38. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/enum/WdStyleType.rst +0 -0
  39. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/enum/WdTabAlignment.rst +0 -0
  40. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/enum/WdTabLeader.rst +0 -0
  41. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/enum/WdTableDirection.rst +0 -0
  42. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/enum/WdUnderline.rst +0 -0
  43. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/enum/index.rst +0 -0
  44. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/section.rst +0 -0
  45. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/settings.rst +0 -0
  46. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/shape.rst +0 -0
  47. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/shared.rst +0 -0
  48. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/style.rst +0 -0
  49. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/table.rst +0 -0
  50. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/api/text.rst +0 -0
  51. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/conf.py +0 -0
  52. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/coreprops.rst +0 -0
  53. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/header.rst +0 -0
  54. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/numbering.rst +0 -0
  55. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/sections.rst +0 -0
  56. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/settings.rst +0 -0
  57. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/shapes/index.rst +0 -0
  58. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/shapes/picture.rst +0 -0
  59. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/shapes/shapes-inline-size.rst +0 -0
  60. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/shapes/shapes-inline.rst +0 -0
  61. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/styles/character-style.rst +0 -0
  62. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/styles/index.rst +0 -0
  63. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/styles/latent-styles.rst +0 -0
  64. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/styles/paragraph-style.rst +0 -0
  65. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/styles/style.rst +0 -0
  66. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/styles/styles.rst +0 -0
  67. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/table/cell-merge.rst +0 -0
  68. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/table/index.rst +0 -0
  69. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/table/table-cell.rst +0 -0
  70. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/table/table-props.rst +0 -0
  71. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/table/table-row.rst +0 -0
  72. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/text/breaks.rst +0 -0
  73. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/text/font-color.rst +0 -0
  74. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/text/font-highlight-color.rst +0 -0
  75. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/text/font.rst +0 -0
  76. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/text/index.rst +0 -0
  77. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/text/paragraph-format.rst +0 -0
  78. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/text/run-content.rst +0 -0
  79. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/text/tab-stops.rst +0 -0
  80. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/features/text/underline.rst +0 -0
  81. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/index.rst +0 -0
  82. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/schema/ct_body.rst +0 -0
  83. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/schema/ct_document.rst +0 -0
  84. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/dev/analysis/schema/ct_p.rst +0 -0
  85. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/index.rst +0 -0
  86. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/requirements.txt +0 -0
  87. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/user/api-concepts.rst +0 -0
  88. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/user/custom-properties.rst +0 -0
  89. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/user/custom-xml.rst +0 -0
  90. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/user/documents.rst +0 -0
  91. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/user/hdrftr.rst +0 -0
  92. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/user/install.rst +0 -0
  93. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/user/quickstart.rst +0 -0
  94. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/user/sections.rst +0 -0
  95. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/user/shapes.rst +0 -0
  96. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/user/styles-understanding.rst +0 -0
  97. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/user/styles-using.rst +0 -0
  98. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docs/user/text.rst +0 -0
  99. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/api.py +0 -0
  100. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/blkcntnr.py +0 -0
  101. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/compat.py +0 -0
  102. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/dml/__init__.py +0 -0
  103. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/dml/color.py +0 -0
  104. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/document.py +0 -0
  105. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/enum/__init__.py +0 -0
  106. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/enum/base.py +0 -0
  107. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/enum/dml.py +0 -0
  108. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/enum/section.py +0 -0
  109. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/enum/shape.py +0 -0
  110. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/enum/style.py +0 -0
  111. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/enum/table.py +0 -0
  112. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/enum/text.py +0 -0
  113. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/exceptions.py +0 -0
  114. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/image/__init__.py +0 -0
  115. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/image/bmp.py +0 -0
  116. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/image/constants.py +0 -0
  117. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/image/emf.py +0 -0
  118. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/image/exceptions.py +0 -0
  119. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/image/gif.py +0 -0
  120. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/image/helpers.py +0 -0
  121. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/image/image.py +0 -0
  122. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/image/jpeg.py +0 -0
  123. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/image/png.py +0 -0
  124. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/image/tiff.py +0 -0
  125. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/opc/__init__.py +0 -0
  126. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/opc/compat.py +0 -0
  127. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/opc/constants.py +0 -0
  128. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/opc/coreprops.py +0 -0
  129. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/opc/customprops.py +0 -0
  130. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/opc/exceptions.py +0 -0
  131. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/opc/oxml.py +0 -0
  132. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/opc/package.py +0 -0
  133. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/opc/packuri.py +0 -0
  134. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/opc/part.py +0 -0
  135. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/opc/parts/__init__.py +0 -0
  136. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/opc/parts/coreprops.py +0 -0
  137. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/opc/parts/customprops.py +0 -0
  138. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/opc/phys_pkg.py +0 -0
  139. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/opc/pkgreader.py +0 -0
  140. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/opc/pkgwriter.py +0 -0
  141. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/opc/rel.py +0 -0
  142. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/opc/shared.py +0 -0
  143. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/opc/spec.py +0 -0
  144. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/oxml/__init__.py +0 -0
  145. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/oxml/coreprops.py +0 -0
  146. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/oxml/customprops.py +0 -0
  147. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/oxml/document.py +0 -0
  148. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/oxml/exceptions.py +0 -0
  149. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/oxml/ns.py +0 -0
  150. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/oxml/numbering.py +0 -0
  151. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/oxml/section.py +0 -0
  152. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/oxml/settings.py +0 -0
  153. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/oxml/shape.py +0 -0
  154. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/oxml/shared.py +0 -0
  155. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/oxml/simpletypes.py +0 -0
  156. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/oxml/styles.py +0 -0
  157. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/oxml/table.py +0 -0
  158. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/oxml/text/__init__.py +0 -0
  159. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/oxml/text/font.py +0 -0
  160. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/oxml/text/paragraph.py +0 -0
  161. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/oxml/text/parfmt.py +0 -0
  162. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/oxml/text/run.py +0 -0
  163. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/oxml/xmlchemy.py +0 -0
  164. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/package.py +0 -0
  165. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/parts/__init__.py +0 -0
  166. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/parts/customxml.py +0 -0
  167. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/parts/document.py +0 -0
  168. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/parts/hdrftr.py +0 -0
  169. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/parts/image.py +0 -0
  170. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/parts/numbering.py +0 -0
  171. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/parts/settings.py +0 -0
  172. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/parts/story.py +0 -0
  173. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/parts/styles.py +0 -0
  174. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/section.py +0 -0
  175. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/settings.py +0 -0
  176. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/shape.py +0 -0
  177. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/shared.py +0 -0
  178. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/styles/__init__.py +0 -0
  179. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/styles/latent.py +0 -0
  180. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/styles/style.py +0 -0
  181. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/styles/styles.py +0 -0
  182. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/table.py +0 -0
  183. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-docx-template/[Content_Types].xml +0 -0
  184. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-docx-template/_rels/.rels +0 -0
  185. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-docx-template/customXml/_rels/item1.xml.rels +0 -0
  186. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-docx-template/customXml/item1.xml +0 -0
  187. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-docx-template/customXml/itemProps1.xml +0 -0
  188. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-docx-template/docProps/app.xml +0 -0
  189. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-docx-template/docProps/core.xml +0 -0
  190. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-docx-template/docProps/thumbnail.jpeg +0 -0
  191. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-docx-template/word/_rels/document.xml.rels +0 -0
  192. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-docx-template/word/document.xml +0 -0
  193. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-docx-template/word/fontTable.xml +0 -0
  194. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-docx-template/word/numbering.xml +0 -0
  195. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-docx-template/word/settings.xml +0 -0
  196. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-docx-template/word/styles.xml +0 -0
  197. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-docx-template/word/stylesWithEffects.xml +0 -0
  198. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-docx-template/word/theme/theme1.xml +0 -0
  199. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-docx-template/word/webSettings.xml +0 -0
  200. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-footer.xml +0 -0
  201. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-header.xml +0 -0
  202. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-numbering.xml +0 -0
  203. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-settings.xml +0 -0
  204. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default-styles.xml +0 -0
  205. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/templates/default.docx +0 -0
  206. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/text/__init__.py +0 -0
  207. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/text/font.py +0 -0
  208. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/text/paragraph.py +0 -0
  209. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/text/parfmt.py +0 -0
  210. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/text/run.py +0 -0
  211. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/docx/text/tabstops.py +0 -0
  212. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/_scratch/test_out.docx +0 -0
  213. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/api-open-document.feature +0 -0
  214. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/blk-add-paragraph.feature +0 -0
  215. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/blk-add-table.feature +0 -0
  216. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/cel-add-table.feature +0 -0
  217. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/cel-text.feature +0 -0
  218. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/doc-access-collections.feature +0 -0
  219. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/doc-access-sections.feature +0 -0
  220. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/doc-add-heading.feature +0 -0
  221. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/doc-add-page-break.feature +0 -0
  222. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/doc-add-paragraph.feature +0 -0
  223. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/doc-add-picture.feature +0 -0
  224. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/doc-add-section.feature +0 -0
  225. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/doc-add-table.feature +0 -0
  226. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/doc-coreprops.feature +0 -0
  227. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/doc-customprops.feature +0 -0
  228. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/doc-settings.feature +0 -0
  229. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/doc-styles.feature +0 -0
  230. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/environment.py +0 -0
  231. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/hdr-header-footer.feature +0 -0
  232. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/img-characterize-image.feature +0 -0
  233. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/num-access-numbering-part.feature +0 -0
  234. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/par-access-parfmt.feature +0 -0
  235. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/par-add-run.feature +0 -0
  236. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/par-alignment-prop.feature +0 -0
  237. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/par-clear-paragraph.feature +0 -0
  238. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/par-insert-paragraph.feature +0 -0
  239. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/par-set-text.feature +0 -0
  240. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/par-style-prop.feature +0 -0
  241. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/run-access-content.feature +0 -0
  242. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/run-access-font.feature +0 -0
  243. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/run-add-content.feature +0 -0
  244. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/run-add-picture.feature +0 -0
  245. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/run-char-style.feature +0 -0
  246. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/run-clear-run.feature +0 -0
  247. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/run-enum-props.feature +0 -0
  248. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/sct-section.feature +0 -0
  249. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/shp-inline-shape-access.feature +0 -0
  250. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/shp-inline-shape-size.feature +0 -0
  251. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/api.py +0 -0
  252. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/block.py +0 -0
  253. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/cell.py +0 -0
  254. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/coreprops.py +0 -0
  255. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/customprops.py +0 -0
  256. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/document.py +0 -0
  257. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/font.py +0 -0
  258. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/hdrftr.py +0 -0
  259. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/helpers.py +0 -0
  260. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/image.py +0 -0
  261. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/numbering.py +0 -0
  262. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/paragraph.py +0 -0
  263. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/parfmt.py +0 -0
  264. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/section.py +0 -0
  265. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/settings.py +0 -0
  266. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/shape.py +0 -0
  267. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/shared.py +0 -0
  268. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/styles.py +0 -0
  269. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/table.py +0 -0
  270. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/tabstops.py +0 -0
  271. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/blk-containing-table.docx +0 -0
  272. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/court-exif.jpg +0 -0
  273. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/doc-access-sections.docx +0 -0
  274. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/doc-add-section.docx +0 -0
  275. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/doc-coreprops.docx +0 -0
  276. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/doc-customprops-legacy.docx +0 -0
  277. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/doc-customprops.docx +0 -0
  278. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/doc-default.docx +0 -0
  279. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/doc-no-coreprops.docx +0 -0
  280. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/doc-no-customprops.docx +0 -0
  281. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/doc-odd-even-hdrs.docx +0 -0
  282. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/doc-word-default-blank.docx +0 -0
  283. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/fnt-color.docx +0 -0
  284. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/hdr-header-footer.docx +0 -0
  285. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/jfif-300-dpi.jpg +0 -0
  286. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/jpeg420exif.jpg +0 -0
  287. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/lena.bmp +0 -0
  288. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/lena.gif +0 -0
  289. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/lena.tif +0 -0
  290. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/lena_std.jpg +0 -0
  291. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/monty-truth.png +0 -0
  292. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/mountain.bmp +0 -0
  293. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/num-having-numbering-part.docx +0 -0
  294. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/par-alignment.docx +0 -0
  295. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/par-known-paragraphs.docx +0 -0
  296. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/par-known-styles.docx +0 -0
  297. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/python-icon.jpeg +0 -0
  298. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/run-char-style.docx +0 -0
  299. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/run-enumerated-props.docx +0 -0
  300. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/sample.tif +0 -0
  301. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/sct-first-page-hdrftr.docx +0 -0
  302. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/sct-section-props.docx +0 -0
  303. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/set-no-settings-part.docx +0 -0
  304. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/shp-inline-shape-access.docx +0 -0
  305. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/sty-behav-props.docx +0 -0
  306. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/sty-having-no-styles-part.docx +0 -0
  307. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/sty-having-styles-part.docx +0 -0
  308. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/sty-known-styles.docx +0 -0
  309. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/tab-stops.docx +0 -0
  310. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/tbl-2x2-table.docx +0 -0
  311. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/tbl-cell-access.docx +0 -0
  312. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/tbl-col-props.docx +0 -0
  313. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/tbl-having-applied-style.docx +0 -0
  314. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/tbl-having-tables.docx +0 -0
  315. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/tbl-on-off-props.docx +0 -0
  316. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/tbl-props.docx +0 -0
  317. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/test.png +0 -0
  318. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/txt-font-highlight-color.docx +0 -0
  319. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/test_files/txt-font-props.docx +0 -0
  320. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/steps/text.py +0 -0
  321. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/sty-access-font.feature +0 -0
  322. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/sty-access-latent-styles.feature +0 -0
  323. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/sty-access-parfmt.feature +0 -0
  324. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/sty-add-style.feature +0 -0
  325. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/sty-delete-style.feature +0 -0
  326. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/sty-latent-add-del.feature +0 -0
  327. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/sty-latent-props.feature +0 -0
  328. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/sty-style-props.feature +0 -0
  329. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/tab-access-tabs.feature +0 -0
  330. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/tab-tabstop-props.feature +0 -0
  331. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/tbl-add-row-or-col.feature +0 -0
  332. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/tbl-cell-access.feature +0 -0
  333. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/tbl-cell-props.feature +0 -0
  334. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/tbl-col-props.feature +0 -0
  335. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/tbl-item-access.feature +0 -0
  336. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/tbl-merge-cells.feature +0 -0
  337. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/tbl-props.feature +0 -0
  338. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/tbl-row-props.feature +0 -0
  339. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/tbl-style.feature +0 -0
  340. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/txt-add-break.feature +0 -0
  341. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/txt-font-color.feature +0 -0
  342. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/txt-font-props.feature +0 -0
  343. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/features/txt-parfmt-props.feature +0 -0
  344. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/python_docx_oss.egg-info/SOURCES.txt +0 -0
  345. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/python_docx_oss.egg-info/dependency_links.txt +0 -0
  346. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/python_docx_oss.egg-info/not-zip-safe +0 -0
  347. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/python_docx_oss.egg-info/requires.txt +0 -0
  348. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/python_docx_oss.egg-info/top_level.txt +0 -0
  349. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/setup.cfg +0 -0
  350. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/setup.py +0 -0
  351. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/__init__.py +0 -0
  352. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/dml/__init__.py +0 -0
  353. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/dml/test_color.py +0 -0
  354. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/image/__init__.py +0 -0
  355. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/image/test_bmp.py +0 -0
  356. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/image/test_emf.py +0 -0
  357. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/image/test_gif.py +0 -0
  358. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/image/test_helpers.py +0 -0
  359. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/image/test_image.py +0 -0
  360. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/image/test_jpeg.py +0 -0
  361. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/image/test_png.py +0 -0
  362. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/image/test_tiff.py +0 -0
  363. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/opc/__init__.py +0 -0
  364. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/opc/parts/__init__.py +0 -0
  365. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/opc/parts/test_coreprops.py +0 -0
  366. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/opc/parts/test_customprops.py +0 -0
  367. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/opc/test_coreprops.py +0 -0
  368. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/opc/test_customprops.py +0 -0
  369. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/opc/test_oxml.py +0 -0
  370. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/opc/test_package.py +0 -0
  371. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/opc/test_packuri.py +0 -0
  372. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/opc/test_part.py +0 -0
  373. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/opc/test_phys_pkg.py +0 -0
  374. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/opc/test_pkgreader.py +0 -0
  375. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/opc/test_pkgwriter.py +0 -0
  376. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/opc/test_rel.py +0 -0
  377. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/opc/unitdata/__init__.py +0 -0
  378. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/opc/unitdata/rels.py +0 -0
  379. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/opc/unitdata/types.py +0 -0
  380. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/oxml/__init__.py +0 -0
  381. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/oxml/parts/__init__.py +0 -0
  382. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/oxml/parts/test_document.py +0 -0
  383. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/oxml/parts/unitdata/__init__.py +0 -0
  384. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/oxml/parts/unitdata/document.py +0 -0
  385. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/oxml/test__init__.py +0 -0
  386. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/oxml/test_ns.py +0 -0
  387. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/oxml/test_styles.py +0 -0
  388. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/oxml/test_table.py +0 -0
  389. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/oxml/test_xmlchemy.py +0 -0
  390. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/oxml/text/__init__.py +0 -0
  391. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/oxml/text/test_run.py +0 -0
  392. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/oxml/unitdata/__init__.py +0 -0
  393. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/oxml/unitdata/dml.py +0 -0
  394. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/oxml/unitdata/numbering.py +0 -0
  395. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/oxml/unitdata/section.py +0 -0
  396. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/oxml/unitdata/shared.py +0 -0
  397. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/oxml/unitdata/styles.py +0 -0
  398. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/oxml/unitdata/table.py +0 -0
  399. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/oxml/unitdata/text.py +0 -0
  400. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/parts/__init__.py +0 -0
  401. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/parts/test_customxml.py +0 -0
  402. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/parts/test_document.py +0 -0
  403. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/parts/test_hdrftr.py +0 -0
  404. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/parts/test_image.py +0 -0
  405. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/parts/test_numbering.py +0 -0
  406. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/parts/test_settings.py +0 -0
  407. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/parts/test_story.py +0 -0
  408. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/parts/test_styles.py +0 -0
  409. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/styles/__init__.py +0 -0
  410. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/styles/test_latent.py +0 -0
  411. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/styles/test_style.py +0 -0
  412. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/styles/test_styles.py +0 -0
  413. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_api.py +0 -0
  414. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_blkcntnr.py +0 -0
  415. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_document.py +0 -0
  416. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_enum.py +0 -0
  417. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/150-dpi.png +0 -0
  418. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/300-dpi.TIF +0 -0
  419. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/300-dpi.jpg +0 -0
  420. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/300-dpi.png +0 -0
  421. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/72-dpi.tiff +0 -0
  422. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/CVS_LOGO.WMF +0 -0
  423. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/exif-420-dpi.jpg +0 -0
  424. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/expanded_docx/[Content_Types].xml +0 -0
  425. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/expanded_docx/_rels/.rels +0 -0
  426. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/expanded_docx/customXml/_rels/item1.xml.rels +0 -0
  427. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/expanded_docx/customXml/item1.xml +0 -0
  428. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/expanded_docx/customXml/itemProps1.xml +0 -0
  429. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/expanded_docx/docProps/app.xml +0 -0
  430. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/expanded_docx/docProps/core.xml +0 -0
  431. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/expanded_docx/docProps/thumbnail.jpeg +0 -0
  432. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/expanded_docx/word/_rels/document.xml.rels +0 -0
  433. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/expanded_docx/word/document.xml +0 -0
  434. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/expanded_docx/word/fontTable.xml +0 -0
  435. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/expanded_docx/word/numbering.xml +0 -0
  436. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/expanded_docx/word/settings.xml +0 -0
  437. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/expanded_docx/word/styles.xml +0 -0
  438. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/expanded_docx/word/stylesWithEffects.xml +0 -0
  439. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/expanded_docx/word/theme/theme1.xml +0 -0
  440. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/expanded_docx/word/webSettings.xml +0 -0
  441. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/having-images.docx +0 -0
  442. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/jfif-iguana.jpg +0 -0
  443. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/little-endian.tif +0 -0
  444. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/monty-truth.png +0 -0
  445. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/python-icon.jpeg +0 -0
  446. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/python-icon.png +0 -0
  447. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/python-powered.png +0 -0
  448. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/python.bmp +0 -0
  449. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/snippets/add-row-col.txt +0 -0
  450. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/snippets/inline.txt +0 -0
  451. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/snippets/new-tbl.txt +0 -0
  452. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/snippets/tbl-cells.txt +0 -0
  453. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/sonic.gif +0 -0
  454. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_files/test.docx +0 -0
  455. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_package.py +0 -0
  456. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_section.py +0 -0
  457. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_settings.py +0 -0
  458. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_shape.py +0 -0
  459. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_shared.py +0 -0
  460. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/test_table.py +0 -0
  461. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/text/__init__.py +0 -0
  462. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/text/test_font.py +0 -0
  463. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/text/test_paragraph.py +0 -0
  464. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/text/test_parfmt.py +0 -0
  465. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/text/test_run.py +0 -0
  466. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/text/test_tabstops.py +0 -0
  467. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/unitdata.py +0 -0
  468. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/unitutil/__init__.py +0 -0
  469. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/unitutil/cxml.py +0 -0
  470. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/unitutil/file.py +0 -0
  471. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tests/unitutil/mock.py +0 -0
  472. {python_docx_oss-0.0.10 → python_docx_oss-0.0.11}/tox.ini +0 -0
@@ -1,5 +1,9 @@
1
1
  ## Release History
2
2
 
3
+ 0.0.11 (2025-11-17)
4
+
5
+ - round-float viewbox and enhance svg unit parsing #31
6
+
3
7
  **0.0.10 (2025-11-13)**
4
8
 
5
9
  - Fix modern bool representations in .docx files. #29
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-docx-oss
3
- Version: 0.0.10
3
+ Version: 0.0.11
4
4
  Summary: CRUD Microsoft Word .docx files.
5
5
  Home-page: https://github.com/lsaint/python-docx-oss
6
6
  Author: Ethan St. Lee
@@ -69,7 +69,7 @@ _As a Brazilian jiu-jitsu player, OSS means anything and everything. It's a term
69
69
  <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>
70
70
  </p>
71
71
 
72
- ---
72
+ ______________________________________________________________________
73
73
 
74
74
  ### FAQ
75
75
 
@@ -77,15 +77,23 @@ _As a Brazilian jiu-jitsu player, OSS means anything and everything. It's a term
77
77
 
78
78
  **A:** [HISTORY](https://github.com/lsaint/python-docx-oss/blob/master/HISTORY.md)
79
79
 
80
- ---
80
+ ______________________________________________________________________
81
81
 
82
82
  More information is available in the [python-docx-oss documentation](https://python-docx-oss.readthedocs.io/en/latest/)
83
83
 
84
84
  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).
85
85
 
86
+ ### Donation
87
+
88
+ [https://lsaint.github.io/donation/](https://lsaint.github.io/donation/)
89
+
86
90
 
87
91
  ## Release History
88
92
 
93
+ 0.0.11 (2025-11-17)
94
+
95
+ - round-float viewbox and enhance svg unit parsing #31
96
+
89
97
  **0.0.10 (2025-11-13)**
90
98
 
91
99
  - Fix modern bool representations in .docx files. #29
@@ -13,7 +13,7 @@ _As a Brazilian jiu-jitsu player, OSS means anything and everything. It's a term
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
 
16
- ---
16
+ ______________________________________________________________________
17
17
 
18
18
  ### FAQ
19
19
 
@@ -21,8 +21,12 @@ _As a Brazilian jiu-jitsu player, OSS means anything and everything. It's a term
21
21
 
22
22
  **A:** [HISTORY](https://github.com/lsaint/python-docx-oss/blob/master/HISTORY.md)
23
23
 
24
- ---
24
+ ______________________________________________________________________
25
25
 
26
26
  More information is available in the [python-docx-oss documentation](https://python-docx-oss.readthedocs.io/en/latest/)
27
27
 
28
28
  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).
29
+
30
+ ### Donation
31
+
32
+ [https://lsaint.github.io/donation/](https://lsaint.github.io/donation/)
@@ -12,7 +12,7 @@ from docx.parts.numbering import NumberingPart
12
12
  from docx.parts.settings import SettingsPart
13
13
  from docx.parts.styles import StylesPart # noqa
14
14
 
15
- __version__ = "0.0.10"
15
+ __version__ = "0.0.11"
16
16
 
17
17
 
18
18
  # register custom Part classes with opc package reader
@@ -0,0 +1,118 @@
1
+ import re
2
+ import xml.etree.ElementTree as ET
3
+
4
+ from .constants import MIME_TYPE
5
+ from .image import BaseImageHeader
6
+
7
+ BASE_PX = 72
8
+
9
+
10
+ class Svg(BaseImageHeader):
11
+ """
12
+ Image header parser for SVG images.
13
+ """
14
+
15
+ @classmethod
16
+ def from_stream(cls, stream):
17
+ """
18
+ Return |Svg| instance having header properties parsed from SVG image
19
+ in *stream*.
20
+ """
21
+ px_width, px_height = cls._dimensions_from_stream(stream)
22
+ return cls(px_width, px_height, BASE_PX, BASE_PX)
23
+
24
+ @property
25
+ def content_type(self):
26
+ """
27
+ MIME content type for this image, unconditionally `image/svg+xml` for
28
+ SVG images.
29
+ """
30
+ return MIME_TYPE.SVG
31
+
32
+ @property
33
+ def default_ext(self):
34
+ """
35
+ Default filename extension, always 'svg' for SVG images.
36
+ """
37
+ return "svg"
38
+
39
+ @classmethod
40
+ def _parse_svg_unit_value(cls, value_str: str) -> float:
41
+ """
42
+ Parse an SVG length value and return it in points (which are 1/72 of an inch).
43
+ Handles units like px, pt, cm, mm, in, pc.
44
+ """
45
+ if not value_str:
46
+ return 0.0
47
+
48
+ value_str = value_str.strip().lower()
49
+
50
+ # Regex to separate the numeric value from the unit, allowing for spaces
51
+ match = re.match(r"^(-?\d*\.?\d+)\s*([a-z%]*)$", value_str)
52
+ if not match:
53
+ # Handle case where there is no unit (treat as px, as per SVG spec)
54
+ try:
55
+ return float(value_str)
56
+ except ValueError:
57
+ return 0.0
58
+
59
+ value, unit = match.groups()
60
+ numeric_value = float(value)
61
+
62
+ # ---conversion factors to points (assuming 72 DPI, where 1pt = 1px)---
63
+ # This matches the existing behavior of the Svg class.
64
+ # 1 inch = BASE_PX points
65
+ # 1 cm = 1/2.54 inch = BASE_PX/2.54 points
66
+ # 1 mm = 1/25.4 inch = BASE_PX/25.4 points
67
+ # 1 pc = 12 points
68
+ # 1 px = 1 point (at BASE_PX DPI)
69
+
70
+ if unit in ("pt", "px", ""):
71
+ return numeric_value
72
+ elif unit == "in":
73
+ return numeric_value * float(BASE_PX)
74
+ elif unit == "pc":
75
+ return numeric_value * 12.0
76
+ elif unit == "cm":
77
+ return numeric_value * float(BASE_PX) / 2.54
78
+ elif unit == "mm":
79
+ return numeric_value * float(BASE_PX) / 25.4
80
+ # ---treat other units as px for now---
81
+ else:
82
+ return numeric_value
83
+
84
+ @classmethod
85
+ def _dimensions_from_stream(cls, stream):
86
+ stream.seek(0)
87
+ data = stream.read()
88
+ root = ET.fromstring(data)
89
+
90
+ width_str = root.attrib.get("width")
91
+ height_str = root.attrib.get("height")
92
+
93
+ if width_str and height_str:
94
+ width = round(cls._parse_svg_unit_value(width_str))
95
+ height = round(cls._parse_svg_unit_value(height_str))
96
+ return width, height
97
+
98
+ if root.attrib.get("viewBox"):
99
+ return cls._calculate_scaled_dimensions(root.attrib["viewBox"])
100
+
101
+ return 0, 0
102
+
103
+ @classmethod
104
+ def _calculate_scaled_dimensions(
105
+ cls, viewbox: str, base_px: int = BASE_PX
106
+ ) -> tuple[int, int]:
107
+ _, _, logical_width, logical_height = map(float, viewbox.split())
108
+
109
+ aspect_ratio = logical_width / logical_height
110
+
111
+ if aspect_ratio >= 1:
112
+ final_width = base_px
113
+ final_height = base_px / aspect_ratio
114
+ else:
115
+ final_height = base_px
116
+ final_width = base_px * aspect_ratio
117
+
118
+ return round(final_width), round(final_height)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-docx-oss
3
- Version: 0.0.10
3
+ Version: 0.0.11
4
4
  Summary: CRUD Microsoft Word .docx files.
5
5
  Home-page: https://github.com/lsaint/python-docx-oss
6
6
  Author: Ethan St. Lee
@@ -69,7 +69,7 @@ _As a Brazilian jiu-jitsu player, OSS means anything and everything. It's a term
69
69
  <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>
70
70
  </p>
71
71
 
72
- ---
72
+ ______________________________________________________________________
73
73
 
74
74
  ### FAQ
75
75
 
@@ -77,15 +77,23 @@ _As a Brazilian jiu-jitsu player, OSS means anything and everything. It's a term
77
77
 
78
78
  **A:** [HISTORY](https://github.com/lsaint/python-docx-oss/blob/master/HISTORY.md)
79
79
 
80
- ---
80
+ ______________________________________________________________________
81
81
 
82
82
  More information is available in the [python-docx-oss documentation](https://python-docx-oss.readthedocs.io/en/latest/)
83
83
 
84
84
  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).
85
85
 
86
+ ### Donation
87
+
88
+ [https://lsaint.github.io/donation/](https://lsaint.github.io/donation/)
89
+
86
90
 
87
91
  ## Release History
88
92
 
93
+ 0.0.11 (2025-11-17)
94
+
95
+ - round-float viewbox and enhance svg unit parsing #31
96
+
89
97
  **0.0.10 (2025-11-13)**
90
98
 
91
99
  - Fix modern bool representations in .docx files. #29
@@ -25,6 +25,7 @@ def svg_with_viewbox():
25
25
  ("0 0 400 200", 72, 36, 72), # Landscape
26
26
  ("0 0 200 400", 100, 200, 200), # Portrait
27
27
  ("0 0 100 100", 50, 50, 50), # Square
28
+ ("0 0 100.5 100.5", 50, 50, 50), # Float
28
29
  ]
29
30
  )
30
31
  def viewbox_data(request):
@@ -35,13 +36,49 @@ def viewbox_data(request):
35
36
  @pytest.fixture(
36
37
  params=[
37
38
  (b'<svg width="200" height="100"/>', 200, 100),
39
+ (b'<svg width="200.5" height="100.5"/>', 200, 100), # round-half-to-even
38
40
  (b'<svg viewBox="0 0 400 200"/>', BASE_PX, BASE_PX // 2),
41
+ (b'<svg viewBox="0 0 400.5 200.5"/>', BASE_PX, 36),
42
+ (b'<svg width="1in" height="0.5in"/>', 72, 36),
43
+ (b'<svg width="2.54cm" height="1.27cm"/>', 72, 36),
44
+ (b'<svg width="25.4mm" height="12.7mm"/>', 72, 36),
45
+ (b'<svg width="6pc" height="3pc"/>', 72, 36),
46
+ (b'<svg width="72pt" height="36pt"/>', 72, 36),
47
+ (b'<svg width="96px" height="48px"/>', 96, 48),
48
+ (b"<svg/>", 0, 0),
39
49
  ]
40
50
  )
41
51
  def svg_stream_data(request):
42
52
  return request.param
43
53
 
44
54
 
55
+ @pytest.fixture(
56
+ params=[
57
+ ("100", 100.0),
58
+ ("150.5", 150.5),
59
+ ("100pt", 100.0),
60
+ ("100px", 100.0),
61
+ ("1in", 72.0),
62
+ ("1pc", 12.0),
63
+ ("2.54cm", 72.0),
64
+ ("25.4mm", 72.0),
65
+ (" 150.5 px ", 150.5),
66
+ ("-20.5", -20.5),
67
+ ("", 0.0),
68
+ ("invalid", 0.0),
69
+ ("12em", 12.0), # fallback to px
70
+ ]
71
+ )
72
+ def unit_value_data(request):
73
+ """Fixture for different SVG unit value strings."""
74
+ return request.param
75
+
76
+
77
+ def test_parse_svg_unit_value(unit_value_data):
78
+ value_str, expected_value = unit_value_data
79
+ assert Svg._parse_svg_unit_value(value_str) == pytest.approx(expected_value)
80
+
81
+
45
82
  def test_dimensions_from_stream(svg_stream_data):
46
83
  stream_data, expected_width, expected_height = svg_stream_data
47
84
  stream = io.BytesIO(stream_data)
@@ -55,3 +92,4 @@ def test_calculate_scaled_dimensions(viewbox_data):
55
92
  width, height = Svg._calculate_scaled_dimensions(viewbox, base_px)
56
93
  assert width == expected_width
57
94
  assert height == expected_height
95
+
@@ -1,65 +0,0 @@
1
- import xml.etree.ElementTree as ET
2
-
3
- from .constants import MIME_TYPE
4
- from .image import BaseImageHeader
5
-
6
- BASE_PX = 72
7
-
8
-
9
- class Svg(BaseImageHeader):
10
- """
11
- Image header parser for SVG images.
12
- """
13
-
14
- @classmethod
15
- def from_stream(cls, stream):
16
- """
17
- Return |Svg| instance having header properties parsed from SVG image
18
- in *stream*.
19
- """
20
- px_width, px_height = cls._dimensions_from_stream(stream)
21
- return cls(px_width, px_height, 72, 72)
22
-
23
- @property
24
- def content_type(self):
25
- """
26
- MIME content type for this image, unconditionally `image/svg+xml` for
27
- SVG images.
28
- """
29
- return MIME_TYPE.SVG
30
-
31
- @property
32
- def default_ext(self):
33
- """
34
- Default filename extension, always 'svg' for SVG images.
35
- """
36
- return "svg"
37
-
38
- @classmethod
39
- def _dimensions_from_stream(cls, stream):
40
- stream.seek(0)
41
- data = stream.read()
42
- root = ET.fromstring(data)
43
- if root.attrib.get("width") is None:
44
- return cls._calculate_scaled_dimensions(root.attrib["viewBox"])
45
-
46
- width = int(float(root.attrib["width"].replace("pt", "")))
47
- height = int(float(root.attrib["height"].replace("pt", "")))
48
- return width, height
49
-
50
- @classmethod
51
- def _calculate_scaled_dimensions(
52
- cls, viewbox: str, base_px: int = BASE_PX
53
- ) -> tuple[int, int]:
54
- _, _, logical_width, logical_height = map(int, viewbox.split())
55
-
56
- aspect_ratio = logical_width / logical_height
57
-
58
- if aspect_ratio >= 1:
59
- final_width = base_px
60
- final_height = base_px / aspect_ratio
61
- else:
62
- final_height = base_px
63
- final_width = base_px * aspect_ratio
64
-
65
- return int(final_width), int(final_height)