docvortex 0.5.4__tar.gz → 0.5.5__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 (833) hide show
  1. {docvortex-0.5.4 → docvortex-0.5.5}/PKG-INFO +1 -1
  2. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/codecs/html/contracts.py +2 -2
  3. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/codecs/html/materializer.py +2 -2
  4. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/codecs/html/parser.py +61 -8
  5. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/html/renderer.py +26 -21
  6. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/resources/html/docvortex.css +9 -9
  7. docvortex-0.5.5/src/docvortex/resources/html/docvortex.min.css +1 -0
  8. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/version.py +1 -1
  9. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex.egg-info/PKG-INFO +1 -1
  10. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_html.py +53 -0
  11. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_html_css_build.py +6 -1
  12. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_html_render.py +24 -13
  13. docvortex-0.5.4/src/docvortex/resources/html/docvortex.min.css +0 -1
  14. {docvortex-0.5.4 → docvortex-0.5.5}/Cargo.lock +0 -0
  15. {docvortex-0.5.4 → docvortex-0.5.5}/Cargo.toml +0 -0
  16. {docvortex-0.5.4 → docvortex-0.5.5}/LICENSE.md +0 -0
  17. {docvortex-0.5.4 → docvortex-0.5.5}/MANIFEST.in +0 -0
  18. {docvortex-0.5.4 → docvortex-0.5.5}/README.md +0 -0
  19. {docvortex-0.5.4 → docvortex-0.5.5}/demo/README.md +0 -0
  20. {docvortex-0.5.4 → docvortex-0.5.5}/demo/demo.py +0 -0
  21. {docvortex-0.5.4 → docvortex-0.5.5}/demo/ebook/epub_01.epub +0 -0
  22. {docvortex-0.5.4 → docvortex-0.5.5}/demo/ebook/epub_02.epub +0 -0
  23. {docvortex-0.5.4 → docvortex-0.5.5}/demo/ms_office_docs/README.md +0 -0
  24. {docvortex-0.5.4 → docvortex-0.5.5}/demo/ms_office_docs/docx_01.doc +0 -0
  25. {docvortex-0.5.4 → docvortex-0.5.5}/demo/ms_office_docs/docx_01.docx +0 -0
  26. {docvortex-0.5.4 → docvortex-0.5.5}/demo/ms_office_docs/pptx_01.ppt +0 -0
  27. {docvortex-0.5.4 → docvortex-0.5.5}/demo/ms_office_docs/pptx_01.pptx +0 -0
  28. {docvortex-0.5.4 → docvortex-0.5.5}/demo/ms_office_docs/rtf_01.rtf +0 -0
  29. {docvortex-0.5.4 → docvortex-0.5.5}/demo/ms_office_docs/xlsx_01.xls +0 -0
  30. {docvortex-0.5.4 → docvortex-0.5.5}/demo/ms_office_docs/xlsx_01.xlsx +0 -0
  31. {docvortex-0.5.4 → docvortex-0.5.5}/demo/ofd/ofd_01.ofd +0 -0
  32. {docvortex-0.5.4 → docvortex-0.5.5}/demo/open_office_docs/docx_01.odt +0 -0
  33. {docvortex-0.5.4 → docvortex-0.5.5}/demo/open_office_docs/pptx_01.odp +0 -0
  34. {docvortex-0.5.4 → docvortex-0.5.5}/demo/open_office_docs/xlsx_01.ods +0 -0
  35. {docvortex-0.5.4 → docvortex-0.5.5}/demo/pdfs/2407.00079v4_origi-10.pdf +0 -0
  36. {docvortex-0.5.4 → docvortex-0.5.5}/demo/pdfs/IEBM_A_2667169_O-5.pdf +0 -0
  37. {docvortex-0.5.4 → docvortex-0.5.5}/demo/pdfs/caibao1.pdf +0 -0
  38. {docvortex-0.5.4 → docvortex-0.5.5}/demo/pdfs/demo1.pdf +0 -0
  39. {docvortex-0.5.4 → docvortex-0.5.5}/demo/pdfs/demo2.pdf +0 -0
  40. {docvortex-0.5.4 → docvortex-0.5.5}/demo/pdfs/demo3.pdf +0 -0
  41. {docvortex-0.5.4 → docvortex-0.5.5}/demo/pdfs/demo4.pdf +0 -0
  42. {docvortex-0.5.4 → docvortex-0.5.5}/demo/pdfs/demo6.pdf +0 -0
  43. {docvortex-0.5.4 → docvortex-0.5.5}/demo/pdfs/mixed_elements_pages_03_06.pdf +0 -0
  44. {docvortex-0.5.4 → docvortex-0.5.5}/demo/pdfs/mixed_elements_pages_07_10.pdf +0 -0
  45. {docvortex-0.5.4 → docvortex-0.5.5}/demo/pdfs/mixed_elements_pages_11_15.pdf +0 -0
  46. {docvortex-0.5.4 → docvortex-0.5.5}/demo/pdfs/mixed_elements_pages_39_40.pdf +0 -0
  47. {docvortex-0.5.4 → docvortex-0.5.5}/demo/pdfs/small_ocr.pdf +0 -0
  48. {docvortex-0.5.4 → docvortex-0.5.5}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/207.pdf" +0 -0
  49. {docvortex-0.5.4 → docvortex-0.5.5}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/2072.pdf" +0 -0
  50. {docvortex-0.5.4 → docvortex-0.5.5}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/2073.pdf" +0 -0
  51. {docvortex-0.5.4 → docvortex-0.5.5}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/2074.pdf" +0 -0
  52. {docvortex-0.5.4 → docvortex-0.5.5}/demo/web_docs/html_01.html +0 -0
  53. {docvortex-0.5.4 → docvortex-0.5.5}/demo/web_docs/mhtml_01.mhtml +0 -0
  54. {docvortex-0.5.4 → docvortex-0.5.5}/docs/ARCHITECTURE.md +0 -0
  55. {docvortex-0.5.4 → docvortex-0.5.5}/docs/HTML_PROTOCOL.md +0 -0
  56. {docvortex-0.5.4 → docvortex-0.5.5}/docs/JSON_PROTOCOL.md +0 -0
  57. {docvortex-0.5.4 → docvortex-0.5.5}/docs/METADATA.md +0 -0
  58. {docvortex-0.5.4 → docvortex-0.5.5}/docs/PDF_FONTS.md +0 -0
  59. {docvortex-0.5.4 → docvortex-0.5.5}/docs/RENDER_OWNERSHIP.md +0 -0
  60. {docvortex-0.5.4 → docvortex-0.5.5}/docs/USAGE.md +0 -0
  61. {docvortex-0.5.4 → docvortex-0.5.5}/docs/flash-manual-annotations-2026-09-15.md +0 -0
  62. {docvortex-0.5.4 → docvortex-0.5.5}/docs/flash-round2-annotations-2026-09-15.md +0 -0
  63. {docvortex-0.5.4 → docvortex-0.5.5}/docs/flash-rule-generalization-2026-09-15.md +0 -0
  64. {docvortex-0.5.4 → docvortex-0.5.5}/docs/flash-spatial-layout-followup-2026-09-16.md +0 -0
  65. {docvortex-0.5.4 → docvortex-0.5.5}/docs/flash-spatial-layout-round3-2026-09-16.md +0 -0
  66. {docvortex-0.5.4 → docvortex-0.5.5}/docs/flash-title-coverage-2026-09-16.md +0 -0
  67. {docvortex-0.5.4 → docvortex-0.5.5}/docs/pdf-native-kernel-next.md +0 -0
  68. {docvortex-0.5.4 → docvortex-0.5.5}/docs/pdf-native-kernel-p4-execution.md +0 -0
  69. {docvortex-0.5.4 → docvortex-0.5.5}/docs/pdf-native-kernel.md +0 -0
  70. {docvortex-0.5.4 → docvortex-0.5.5}/docs/pdf-render-worker-leases.md +0 -0
  71. {docvortex-0.5.4 → docvortex-0.5.5}/docs/pdf-tight-spacing-2026-09-28.md +0 -0
  72. {docvortex-0.5.4 → docvortex-0.5.5}/docs/rust-acceleration.md +0 -0
  73. {docvortex-0.5.4 → docvortex-0.5.5}/docs/rust-pdf-round7.md +0 -0
  74. {docvortex-0.5.4 → docvortex-0.5.5}/docs/rust-pdf-stage11-classification-render.md +0 -0
  75. {docvortex-0.5.4 → docvortex-0.5.5}/docs/rust-pdf-stage12-geometry.md +0 -0
  76. {docvortex-0.5.4 → docvortex-0.5.5}/docs/rust-pdf-stage13-owned-geometry.md +0 -0
  77. {docvortex-0.5.4 → docvortex-0.5.5}/docs/rust-pdf-stage14-line-metrics.md +0 -0
  78. {docvortex-0.5.4 → docvortex-0.5.5}/docs/rust-pdf-stage15-table-candidates.md +0 -0
  79. {docvortex-0.5.4 → docvortex-0.5.5}/docs/rust-pdf-stage16-bitmap-crops.md +0 -0
  80. {docvortex-0.5.4 → docvortex-0.5.5}/docs/rust-pdf-stage17-inline-styles.md +0 -0
  81. {docvortex-0.5.4 → docvortex-0.5.5}/docs/rust-pdf-stage5-render.md +0 -0
  82. {docvortex-0.5.4 → docvortex-0.5.5}/docs/rust-pdf-stage6-text.md +0 -0
  83. {docvortex-0.5.4 → docvortex-0.5.5}/docs/rust-pdf-stage7-content.md +0 -0
  84. {docvortex-0.5.4 → docvortex-0.5.5}/docs/rust-pdf-stage9-inline.md +0 -0
  85. {docvortex-0.5.4 → docvortex-0.5.5}/docs/sdk-0.4.md +0 -0
  86. {docvortex-0.5.4 → docvortex-0.5.5}/pyproject.toml +0 -0
  87. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/Cargo.toml +0 -0
  88. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/annotation_geometry.rs +0 -0
  89. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/columns.rs +0 -0
  90. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/dedup.rs +0 -0
  91. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/extraction.rs +0 -0
  92. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/geometry.rs +0 -0
  93. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/geometry_lines.rs +0 -0
  94. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/geometry_risk.rs +0 -0
  95. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/geometry_runs.rs +0 -0
  96. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/geometry_style.rs +0 -0
  97. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/inline_pairs.rs +0 -0
  98. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/inline_styles.rs +0 -0
  99. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/lib.rs +0 -0
  100. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/note_index.rs +0 -0
  101. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/pixels.rs +0 -0
  102. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/row_geometry.rs +0 -0
  103. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/scripts.rs +0 -0
  104. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/spatial.rs +0 -0
  105. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/statistics.rs +0 -0
  106. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/table_candidates.rs +0 -0
  107. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/table_merge.rs +0 -0
  108. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/tables.rs +0 -0
  109. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/text_assignment.rs +0 -0
  110. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/text_classification.rs +0 -0
  111. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/text_content.rs +0 -0
  112. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/text_pipeline.rs +0 -0
  113. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/text_snapshot.rs +0 -0
  114. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/src/text_spacing.rs +0 -0
  115. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-core/tests/contracts.rs +0 -0
  116. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-pdfium/Cargo.toml +0 -0
  117. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-pdfium/src/classification.rs +0 -0
  118. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-pdfium/src/fonts.rs +0 -0
  119. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-pdfium/src/lib.rs +0 -0
  120. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-pdfium/src/objects.rs +0 -0
  121. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-pdfium/src/paths.rs +0 -0
  122. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-pdfium/src/text_colors.rs +0 -0
  123. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/Cargo.toml +0 -0
  124. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/src/classification.rs +0 -0
  125. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/src/conversion.rs +0 -0
  126. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/src/dedup.rs +0 -0
  127. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/src/fonts.rs +0 -0
  128. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/src/geometry.rs +0 -0
  129. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/src/geometry_document.rs +0 -0
  130. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/src/geometry_risk.rs +0 -0
  131. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/src/geometry_runs.rs +0 -0
  132. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/src/inline_styles.rs +0 -0
  133. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/src/lib.rs +0 -0
  134. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/src/pdfium.rs +0 -0
  135. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/src/pixels.rs +0 -0
  136. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/src/script_snapshot.rs +0 -0
  137. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/src/scripts.rs +0 -0
  138. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/src/snapshot.rs +0 -0
  139. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/src/spatial.rs +0 -0
  140. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/src/statistics.rs +0 -0
  141. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/src/table_candidates.rs +0 -0
  142. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/src/table_merge.rs +0 -0
  143. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/src/tables.rs +0 -0
  144. {docvortex-0.5.4 → docvortex-0.5.5}/rust/docvortex-python/src/text_pipeline.rs +0 -0
  145. {docvortex-0.5.4 → docvortex-0.5.5}/rust-toolchain.toml +0 -0
  146. {docvortex-0.5.4 → docvortex-0.5.5}/schemas/middle-2.0.json +0 -0
  147. {docvortex-0.5.4 → docvortex-0.5.5}/schemas/model-2.0.json +0 -0
  148. {docvortex-0.5.4 → docvortex-0.5.5}/setup.cfg +0 -0
  149. {docvortex-0.5.4 → docvortex-0.5.5}/setup.py +0 -0
  150. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/__init__.py +0 -0
  151. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/_compute_backend.py +0 -0
  152. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/__init__.py +0 -0
  153. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/__init__.py +0 -0
  154. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/_shared/__init__.py +0 -0
  155. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/_shared/hyperlink.py +0 -0
  156. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/_shared/image.py +0 -0
  157. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/_shared/markup/__init__.py +0 -0
  158. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/_shared/markup/anchors.py +0 -0
  159. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/_shared/markup/formula.py +0 -0
  160. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/_shared/markup/projector.py +0 -0
  161. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/_shared/markup/styles.py +0 -0
  162. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/_shared/mathml.py +0 -0
  163. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/_shared/names.py +0 -0
  164. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/_shared/xycut.py +0 -0
  165. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/contracts.py +0 -0
  166. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/csv.py +0 -0
  167. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/epub/__init__.py +0 -0
  168. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/epub/constants.py +0 -0
  169. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/epub/converter.py +0 -0
  170. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/epub/errors.py +0 -0
  171. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/epub/metadata.py +0 -0
  172. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/epub/package.py +0 -0
  173. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/epub/properties.py +0 -0
  174. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/epub/xhtml.py +0 -0
  175. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/html/__init__.py +0 -0
  176. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/html/anchors.py +0 -0
  177. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/html/constants.py +0 -0
  178. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/html/converter.py +0 -0
  179. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/html/document.py +0 -0
  180. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/html/errors.py +0 -0
  181. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/html/metadata.py +0 -0
  182. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/html/resources.py +0 -0
  183. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/html/selector.py +0 -0
  184. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/mhtml/__init__.py +0 -0
  185. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/mhtml/converter.py +0 -0
  186. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/mhtml/resources.py +0 -0
  187. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/models.py +0 -0
  188. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/ofd/__init__.py +0 -0
  189. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/ofd/assembly.py +0 -0
  190. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/ofd/constants.py +0 -0
  191. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/ofd/converter.py +0 -0
  192. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/ofd/errors.py +0 -0
  193. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/ofd/geometry.py +0 -0
  194. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/ofd/images.py +0 -0
  195. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/ofd/metadata.py +0 -0
  196. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/ofd/models.py +0 -0
  197. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/ofd/package.py +0 -0
  198. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/ofd/path.py +0 -0
  199. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/ofd/reading_order.py +0 -0
  200. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/ofd/resources.py +0 -0
  201. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/ofd/scene.py +0 -0
  202. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/ofd/table.py +0 -0
  203. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/ofd/text.py +0 -0
  204. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/ofd/vector.py +0 -0
  205. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/__init__.py +0 -0
  206. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/doc/__init__.py +0 -0
  207. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/doc/bookmarks.py +0 -0
  208. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/doc/doc_converter.py +0 -0
  209. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/doc/fib.py +0 -0
  210. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/doc/fields.py +0 -0
  211. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/doc/formatting.py +0 -0
  212. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/doc/images.py +0 -0
  213. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/doc/lists.py +0 -0
  214. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/doc/models.py +0 -0
  215. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/doc/parser.py +0 -0
  216. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/doc/pieces.py +0 -0
  217. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/doc/records.py +0 -0
  218. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/doc/sprm.py +0 -0
  219. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/doc/styles.py +0 -0
  220. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/docx/__init__.py +0 -0
  221. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/docx/context.py +0 -0
  222. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/docx/docx_converter.py +0 -0
  223. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/docx/equationxml.py +0 -0
  224. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/docx/fields.py +0 -0
  225. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/docx/formatting_types.py +0 -0
  226. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/docx/main.py +0 -0
  227. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/docx/numbering.py +0 -0
  228. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/docx/office_xml.py +0 -0
  229. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/docx/package_normalizer.py +0 -0
  230. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/docx/resources.py +0 -0
  231. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/docx/styles.py +0 -0
  232. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/docx/tables.py +0 -0
  233. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/equation/__init__.py +0 -0
  234. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/equation/image.py +0 -0
  235. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/equation/latex_dict.py +0 -0
  236. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/equation/mtef.py +0 -0
  237. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/equation/mtef_v5.py +0 -0
  238. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/equation/omml.py +0 -0
  239. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/equation/ooxml.py +0 -0
  240. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/errors.py +0 -0
  241. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/image.py +0 -0
  242. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/legacy/__init__.py +0 -0
  243. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/legacy/binary.py +0 -0
  244. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/legacy/officeart.py +0 -0
  245. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/legacy/ole.py +0 -0
  246. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/limits.py +0 -0
  247. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/metadata.py +0 -0
  248. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/odf/__init__.py +0 -0
  249. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/odf/chart.py +0 -0
  250. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/odf/constants.py +0 -0
  251. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/odf/converters.py +0 -0
  252. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/odf/errors.py +0 -0
  253. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/odf/metadata.py +0 -0
  254. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/odf/models.py +0 -0
  255. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/odf/package.py +0 -0
  256. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/odf/styles.py +0 -0
  257. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/odf/table.py +0 -0
  258. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/odf/text.py +0 -0
  259. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/ooxml_chart.py +0 -0
  260. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/opc.py +0 -0
  261. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/ppt/__init__.py +0 -0
  262. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/ppt/models.py +0 -0
  263. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/ppt/parser.py +0 -0
  264. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/ppt/ppt_converter.py +0 -0
  265. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/ppt/records.py +0 -0
  266. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/ppt/style_text.py +0 -0
  267. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/pptx/__init__.py +0 -0
  268. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/pptx/context.py +0 -0
  269. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/pptx/lists.py +0 -0
  270. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/pptx/main.py +0 -0
  271. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/pptx/package_normalizer.py +0 -0
  272. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/pptx/pptx_converter.py +0 -0
  273. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/pptx/resources.py +0 -0
  274. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/pptx/shapes.py +0 -0
  275. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/pptx/text_styles.py +0 -0
  276. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/pptx/titles.py +0 -0
  277. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/rich_text.py +0 -0
  278. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/rtf/__init__.py +0 -0
  279. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/rtf/converter.py +0 -0
  280. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/rtf/lexer.py +0 -0
  281. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/rtf/math.py +0 -0
  282. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/rtf/metadata.py +0 -0
  283. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/rtf/models.py +0 -0
  284. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/rtf/parser.py +0 -0
  285. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/spreadsheet/__init__.py +0 -0
  286. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/spreadsheet/html.py +0 -0
  287. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/spreadsheet/models.py +0 -0
  288. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/spreadsheet/projector.py +0 -0
  289. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/spreadsheet/region_discovery.py +0 -0
  290. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/streams.py +0 -0
  291. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/xls/__init__.py +0 -0
  292. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/xls/chart.py +0 -0
  293. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/xls/embedded_chart.py +0 -0
  294. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/xls/models.py +0 -0
  295. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/xls/number_format.py +0 -0
  296. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/xls/parser.py +0 -0
  297. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/xls/records.py +0 -0
  298. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/xls/strings.py +0 -0
  299. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/xls/xls_converter.py +0 -0
  300. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/xlsx/__init__.py +0 -0
  301. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/xlsx/main.py +0 -0
  302. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/xlsx/ooxml_ole.py +0 -0
  303. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/xlsx/package_normalizer.py +0 -0
  304. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/office/xlsx/xlsx_converter.py +0 -0
  305. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/__init__.py +0 -0
  306. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/_interval_candidates.py +0 -0
  307. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/_native_geometry.py +0 -0
  308. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/_native_table_merge.py +0 -0
  309. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/_ordered_statistics.py +0 -0
  310. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/_script_geometry.py +0 -0
  311. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/_table_recovery/__init__.py +0 -0
  312. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/_table_recovery/candidate.py +0 -0
  313. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/_table_recovery/contracts.py +0 -0
  314. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/_table_recovery/engine.py +0 -0
  315. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/_table_recovery/geometry.py +0 -0
  316. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/_table_recovery/rule_band.py +0 -0
  317. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_common.py +0 -0
  318. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_hybrid.py +0 -0
  319. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_multiline.py +0 -0
  320. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/_table_recovery/text.py +0 -0
  321. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/_table_recovery/text_grid.py +0 -0
  322. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/_table_recovery/vector.py +0 -0
  323. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/annotation_bands.py +0 -0
  324. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/auxiliary_text.py +0 -0
  325. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/char_geometry.py +0 -0
  326. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/code_blocks.py +0 -0
  327. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/formulas.py +0 -0
  328. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/geometry.py +0 -0
  329. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/graphics.py +0 -0
  330. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/index_blocks.py +0 -0
  331. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/inline/__init__.py +0 -0
  332. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/inline/common.py +0 -0
  333. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/inline/detection.py +0 -0
  334. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/inline/matching.py +0 -0
  335. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/inline/materialize.py +0 -0
  336. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/inline/owned_styles.py +0 -0
  337. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/inline/scripts.py +0 -0
  338. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/inline/spacing.py +0 -0
  339. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/inline/types.py +0 -0
  340. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/layout_evidence.py +0 -0
  341. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/line_layout.py +0 -0
  342. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/line_merging.py +0 -0
  343. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/models.py +0 -0
  344. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/native_text.py +0 -0
  345. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/pipeline.py +0 -0
  346. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/spatial_text.py +0 -0
  347. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/table_annotations.py +0 -0
  348. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/table_constants.py +0 -0
  349. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/table_detection.py +0 -0
  350. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/table_filled_grid.py +0 -0
  351. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/table_geometry.py +0 -0
  352. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/table_materialization.py +0 -0
  353. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/table_rows.py +0 -0
  354. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/table_rules.py +0 -0
  355. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/table_text_styles.py +0 -0
  356. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/tables.py +0 -0
  357. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/text_assembly/__init__.py +0 -0
  358. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/text_assembly/annotations.py +0 -0
  359. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/text_assembly/assembly.py +0 -0
  360. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/text_assembly/common.py +0 -0
  361. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/text_assembly/continuity.py +0 -0
  362. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/text_assembly/footnotes.py +0 -0
  363. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/text_assembly/merging.py +0 -0
  364. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/text_assembly/rows.py +0 -0
  365. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/text_blocks.py +0 -0
  366. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/text_roles.py +0 -0
  367. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/title_analysis/__init__.py +0 -0
  368. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/title_analysis/body_profile.py +0 -0
  369. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/title_analysis/common.py +0 -0
  370. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/title_analysis/compact_titles.py +0 -0
  371. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/title_analysis/document_profile.py +0 -0
  372. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/title_analysis/lane_titles.py +0 -0
  373. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/title_analysis/page_titles.py +0 -0
  374. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/title_analysis/prototype.py +0 -0
  375. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/title_analysis/structural.py +0 -0
  376. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/titles.py +0 -0
  377. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/typography.py +0 -0
  378. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/native/pdf/visual_annotations.py +0 -0
  379. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/analyzers/pdf.py +0 -0
  380. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/api.py +0 -0
  381. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/assets/__init__.py +0 -0
  382. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/assets/images.py +0 -0
  383. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/assets/store.py +0 -0
  384. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/cli.py +0 -0
  385. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/codecs/__init__.py +0 -0
  386. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/codecs/html/__init__.py +0 -0
  387. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/codecs/html/resources.py +0 -0
  388. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/codecs/json.py +0 -0
  389. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/content/__init__.py +0 -0
  390. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/content/inline.py +0 -0
  391. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/content/links.py +0 -0
  392. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/content/markup/__init__.py +0 -0
  393. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/content/markup/anchors.py +0 -0
  394. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/content/markup/formula.py +0 -0
  395. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/content/markup/projector.py +0 -0
  396. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/content/markup/styles.py +0 -0
  397. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/content/mathml.py +0 -0
  398. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/content/normalization.py +0 -0
  399. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/content/spans.py +0 -0
  400. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/content/table/__init__.py +0 -0
  401. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/content/table/blocks.py +0 -0
  402. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/content/table/content.py +0 -0
  403. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/content/table/document.py +0 -0
  404. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/content/table/html.py +0 -0
  405. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/content/table/models.py +0 -0
  406. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/content/table/rules.py +0 -0
  407. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/content/table/structure.py +0 -0
  408. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/content/text.py +0 -0
  409. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/content/tree.py +0 -0
  410. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/__init__.py +0 -0
  411. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/contracts.py +0 -0
  412. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/detection.py +0 -0
  413. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/filetypes.py +0 -0
  414. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/mhtml.py +0 -0
  415. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/page_range.py +0 -0
  416. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/__init__.py +0 -0
  417. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/_document.py +0 -0
  418. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/_object_bridge.py +0 -0
  419. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/classification_bridge.py +0 -0
  420. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/classify.py +0 -0
  421. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/constants.py +0 -0
  422. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/font_runtime.py +0 -0
  423. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/images.py +0 -0
  424. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/layout.py +0 -0
  425. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/metadata.py +0 -0
  426. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/native_annotations.py +0 -0
  427. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/native_contracts.py +0 -0
  428. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/native_coordinates.py +0 -0
  429. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/native_lifecycle.py +0 -0
  430. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/native_objects.py +0 -0
  431. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/native_text_geometry.py +0 -0
  432. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/pdfium.py +0 -0
  433. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/raster.py +0 -0
  434. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/render_session.py +0 -0
  435. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/snapshot.py +0 -0
  436. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/snapshot_bridge.py +0 -0
  437. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/text/__init__.py +0 -0
  438. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/text/_contracts.py +0 -0
  439. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/text/_pdfium_bridge.py +0 -0
  440. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/text/dedup.py +0 -0
  441. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/text/extract.py +0 -0
  442. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/text/geometry.py +0 -0
  443. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/text/groups.py +0 -0
  444. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/text/spacing.py +0 -0
  445. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/pdf/visuals.py +0 -0
  446. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/properties.py +0 -0
  447. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/document/source.py +0 -0
  448. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/errors.py +0 -0
  449. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/export/__init__.py +0 -0
  450. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/export/_images.py +0 -0
  451. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/export/bundle.py +0 -0
  452. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/export/files.py +0 -0
  453. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/export/middle.py +0 -0
  454. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/foundation/__init__.py +0 -0
  455. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/foundation/_coordinates.py +0 -0
  456. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/foundation/_geometry.py +0 -0
  457. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/foundation/_hyperlink.py +0 -0
  458. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/foundation/_image.py +0 -0
  459. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/foundation/_image_operations.py +0 -0
  460. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/foundation/_image_payload.py +0 -0
  461. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/foundation/_svg_raster.py +0 -0
  462. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/foundation/_text.py +0 -0
  463. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/foundation/image_encoding.py +0 -0
  464. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/foundation/language.py +0 -0
  465. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/foundation/magika.py +0 -0
  466. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/foundation/type_identity.py +0 -0
  467. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/foundation/xml_names.py +0 -0
  468. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/geometry.py +0 -0
  469. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/metadata.py +0 -0
  470. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/options.py +0 -0
  471. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/postprocess/__init__.py +0 -0
  472. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/postprocess/content.py +0 -0
  473. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/postprocess/document.py +0 -0
  474. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/postprocess/lists.py +0 -0
  475. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/postprocess/page_blocks.py +0 -0
  476. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/postprocess/pages.py +0 -0
  477. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/postprocess/paragraphs.py +0 -0
  478. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/postprocess/visual.py +0 -0
  479. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/public_api.py +0 -0
  480. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/__init__.py +0 -0
  481. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/__init__.py +0 -0
  482. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/common/__init__.py +0 -0
  483. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/common/context.py +0 -0
  484. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/common/html_table.py +0 -0
  485. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/common/index.py +0 -0
  486. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/common/list_items.py +0 -0
  487. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/common/planner.py +0 -0
  488. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/docx/__init__.py +0 -0
  489. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/docx/assets.py +0 -0
  490. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/docx/inline.py +0 -0
  491. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/docx/math.py +0 -0
  492. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/docx/renderer.py +0 -0
  493. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/docx/styles.py +0 -0
  494. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/docx/table.py +0 -0
  495. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/epub/__init__.py +0 -0
  496. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/epub/assets.py +0 -0
  497. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/epub/package.py +0 -0
  498. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/epub/renderer.py +0 -0
  499. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/html/__init__.py +0 -0
  500. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/html/inline.py +0 -0
  501. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/html/sanitizer.py +0 -0
  502. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/html/table.py +0 -0
  503. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/latex/__init__.py +0 -0
  504. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/latex/assets.py +0 -0
  505. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/latex/inline.py +0 -0
  506. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/latex/renderer.py +0 -0
  507. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/latex/table.py +0 -0
  508. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/markdown/__init__.py +0 -0
  509. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/markdown/assets.py +0 -0
  510. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/markdown/blocks.py +0 -0
  511. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/markdown/escaping.py +0 -0
  512. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/markdown/inline.py +0 -0
  513. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/markdown/renderer.py +0 -0
  514. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/markdown/table.py +0 -0
  515. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/pdf/__init__.py +0 -0
  516. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/pdf/assets.py +0 -0
  517. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/pdf/diagnostics.py +0 -0
  518. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/pdf/font_plan.py +0 -0
  519. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/pdf/formula.py +0 -0
  520. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/pdf/formula_layout.py +0 -0
  521. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/pdf/inline.py +0 -0
  522. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/pdf/original.py +0 -0
  523. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/pdf/pagination.py +0 -0
  524. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/pdf/paragraph.py +0 -0
  525. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/pdf/renderer.py +0 -0
  526. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/pdf/styles.py +0 -0
  527. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/pdf/table.py +0 -0
  528. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/pdf/table_content.py +0 -0
  529. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/pdf/table_layout.py +0 -0
  530. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/pdf/title_layout.py +0 -0
  531. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/structured_content/__init__.py +0 -0
  532. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/_internal/structured_content/renderer.py +0 -0
  533. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/api.py +0 -0
  534. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/contracts.py +0 -0
  535. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/docx.py +0 -0
  536. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/epub.py +0 -0
  537. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/fragments.py +0 -0
  538. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/html.py +0 -0
  539. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/latex.py +0 -0
  540. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/markdown.py +0 -0
  541. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/pdf.py +0 -0
  542. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/render/structured_content.py +0 -0
  543. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/resources/epub/docvortex.css +0 -0
  544. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/resources/fonts/DroidSansFallbackFull.ttf +0 -0
  545. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/resources/fonts/NOTICE +0 -0
  546. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/resources/fonts/manifest.json +0 -0
  547. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/resources/unicode/EquivalentUnifiedIdeograph-17.0.0.txt +0 -0
  548. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/result.py +0 -0
  549. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/schema.py +0 -0
  550. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex/visualization.py +0 -0
  551. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex.egg-info/SOURCES.txt +0 -0
  552. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex.egg-info/dependency_links.txt +0 -0
  553. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex.egg-info/entry_points.txt +0 -0
  554. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex.egg-info/not-zip-safe +0 -0
  555. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex.egg-info/requires.txt +0 -0
  556. {docvortex-0.5.4 → docvortex-0.5.5}/src/docvortex.egg-info/top_level.txt +0 -0
  557. {docvortex-0.5.4 → docvortex-0.5.5}/tests/benchmarks/compare_native_corpus.py +0 -0
  558. {docvortex-0.5.4 → docvortex-0.5.5}/tests/benchmarks/compare_pdf_revisions.py +0 -0
  559. {docvortex-0.5.4 → docvortex-0.5.5}/tests/benchmarks/flash_pdf.py +0 -0
  560. {docvortex-0.5.4 → docvortex-0.5.5}/tests/benchmarks/native_pdf_table.py +0 -0
  561. {docvortex-0.5.4 → docvortex-0.5.5}/tests/benchmarks/pdf_corpus.py +0 -0
  562. {docvortex-0.5.4 → docvortex-0.5.5}/tests/benchmarks/pdf_input.py +0 -0
  563. {docvortex-0.5.4 → docvortex-0.5.5}/tests/benchmarks/pdf_memory.py +0 -0
  564. {docvortex-0.5.4 → docvortex-0.5.5}/tests/benchmarks/pdf_render.py +0 -0
  565. {docvortex-0.5.4 → docvortex-0.5.5}/tests/benchmarks/pipeline.py +0 -0
  566. {docvortex-0.5.4 → docvortex-0.5.5}/tests/benchmarks/rust_pdf.py +0 -0
  567. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/evaluate_native_pdf_table_manifest.py +0 -0
  568. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/flash_layout_block_expectations.json +0 -0
  569. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/flash_layout_geometry_manifest.json +0 -0
  570. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/flash_layout_semantic_expectations.json +0 -0
  571. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/flash_manual_annotations.json +0 -0
  572. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/flash_manual_review_decisions.json +0 -0
  573. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/flash_reviewed_history.json +0 -0
  574. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/flash_round2_annotations.json +0 -0
  575. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/flash_round2_review_decisions.json +0 -0
  576. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/flash_round3_annotations.json +0 -0
  577. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/flash_round3_followup_review_decisions.json +0 -0
  578. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/flash_round3_review_decisions.json +0 -0
  579. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/flash_rule_generalization_review_decisions.json +0 -0
  580. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/flash_title_coverage_review_decisions.json +0 -0
  581. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/generate_synthetic_pdf_fixtures.py +0 -0
  582. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/native_pdf_table_cross_page_manifest.json +0 -0
  583. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/native_pdf_table_demo_manifest.json +0 -0
  584. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/native_pdf_table_script_truth.json +0 -0
  585. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/pdf_char_dedup.json +0 -0
  586. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/pdf_mixed_font_script_line.json +0 -0
  587. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/pdf_numeric_citations_review.json +0 -0
  588. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/pdf_tight_spacing_review_decisions.json +0 -0
  589. {docvortex-0.5.4 → docvortex-0.5.5}/tests/fixtures/rtf/semantic.rtf +0 -0
  590. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_architecture.py +0 -0
  591. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_benchmark_entrypoint.py +0 -0
  592. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_brand_protocol.py +0 -0
  593. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_cli_logging.py +0 -0
  594. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_complete_pipeline.py +0 -0
  595. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_compute_backend.py +0 -0
  596. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_converter_lifecycle.py +0 -0
  597. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_document_envelope.py +0 -0
  598. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_document_metadata.py +0 -0
  599. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_export_image_names.py +0 -0
  600. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_format_matrix.py +0 -0
  601. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_geometry_api.py +0 -0
  602. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_history_geometry_tools.py +0 -0
  603. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_html_namespace.py +0 -0
  604. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_magika_runtime.py +0 -0
  605. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_mixed_font_script_reference.py +0 -0
  606. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_model_tape.py +0 -0
  607. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_native_bitmap_crops.py +0 -0
  608. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_native_classification.py +0 -0
  609. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_native_font_runtime.py +0 -0
  610. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_native_inline_styles.py +0 -0
  611. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_native_parity.py +0 -0
  612. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_native_round3.py +0 -0
  613. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_native_round4.py +0 -0
  614. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_native_round5.py +0 -0
  615. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_native_round6.py +0 -0
  616. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_native_round7.py +0 -0
  617. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_native_statistics.py +0 -0
  618. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_native_table_candidates.py +0 -0
  619. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_native_text_pipeline.py +0 -0
  620. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_native_text_snapshot.py +0 -0
  621. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_pdf_analysis_api.py +0 -0
  622. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_pdf_cpu_evidence.py +0 -0
  623. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_pdf_font_geometry.py +0 -0
  624. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_pdf_font_runtime.py +0 -0
  625. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_pdf_model_text_normalization.py +0 -0
  626. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_pdf_numeric_citations.py +0 -0
  627. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_pdf_object_bridge.py +0 -0
  628. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_pdf_output_text.py +0 -0
  629. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_pdf_render_pool.py +0 -0
  630. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_pdf_render_session.py +0 -0
  631. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_pdf_snapshot.py +0 -0
  632. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_pdf_source_row_merging.py +0 -0
  633. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_pdf_symbol_normalization.py +0 -0
  634. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_pdf_tight_spacing.py +0 -0
  635. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_pdfium_bridge.py +0 -0
  636. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_public_export_api.py +0 -0
  637. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_public_image_api.py +0 -0
  638. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_public_pipeline.py +0 -0
  639. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_refactor_raster.py +0 -0
  640. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_refactor_rendering.py +0 -0
  641. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_refactor_resources.py +0 -0
  642. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_release_ci_gate.py +0 -0
  643. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_render_ownership.py +0 -0
  644. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_renderer_branding.py +0 -0
  645. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_shared_boundaries.py +0 -0
  646. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_system_font_pdf_pipeline.py +0 -0
  647. {docvortex-0.5.4 → docvortex-0.5.5}/tests/test_validated_geometry.py +0 -0
  648. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/_docx_equationxml_test_utils.py +0 -0
  649. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/_epub_test_utils.py +0 -0
  650. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/_flash_pdf_test_utils.py +0 -0
  651. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/_image_mtef_test_utils.py +0 -0
  652. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/_legacy_doc_test_utils.py +0 -0
  653. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/_legacy_ppt_test_utils.py +0 -0
  654. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/_legacy_xls_test_utils.py +0 -0
  655. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/_metafile_test_utils.py +0 -0
  656. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/_mhtml_test_utils.py +0 -0
  657. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/_mtef_test_utils.py +0 -0
  658. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/_mtef_v5_test_utils.py +0 -0
  659. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/_native_test_utils.py +0 -0
  660. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/_odf_test_utils.py +0 -0
  661. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/_ofd_test_utils.py +0 -0
  662. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/_office_image_mtef_test_utils.py +0 -0
  663. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/_ooxml_mtef_test_utils.py +0 -0
  664. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/_span_test_utils.py +0 -0
  665. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/flash_layout/annotated/connexin.pdf +0 -0
  666. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/flash_layout/annotated/fornax.pdf +0 -0
  667. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/flash_layout/annotated/frames_v1.pdf +0 -0
  668. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/flash_layout/annotated/frames_v2.pdf +0 -0
  669. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/flash_layout/annotated/k2_treap.pdf +0 -0
  670. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/flash_layout/annotated/mmlu_redux.pdf +0 -0
  671. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/flash_layout/annotated/nash_review.pdf +0 -0
  672. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/flash_layout/annotated/nougat.pdf +0 -0
  673. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/flash_layout/bloom_form_labels.pdf +0 -0
  674. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/flash_layout/journal_dual_caption.pdf +0 -0
  675. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/flash_layout/journal_layout_tables.pdf +0 -0
  676. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/flash_layout/math_display_formulas.pdf +0 -0
  677. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/flash_layout/mixed_text_layout_sample.pdf.xor +0 -0
  678. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/flash_layout/quantum_appendix_layout.pdf +0 -0
  679. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/flash_table_annotations_synthetic.pdf +0 -0
  680. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/metabolic_pathway_page_3.pdf +0 -0
  681. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/native_cjk_layout_synthetic.pdf +0 -0
  682. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/native_pdf_tables/annual_report_fundraising_projects_table.pdf +0 -0
  683. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/native_pdf_tables/annual_report_management_roles_table.pdf +0 -0
  684. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/native_pdf_tables/annual_report_research_projects_table.pdf +0 -0
  685. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/native_pdf_tables/conference_schedule_tables.pdf +0 -0
  686. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/native_pdf_tables/engineering_process_restrictions_table.pdf +0 -0
  687. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/native_pdf_tables/fund_asset_and_transaction_tables.pdf +0 -0
  688. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/native_pdf_tables/fund_manager_profile_table.pdf +0 -0
  689. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/native_pdf_tables/manufacturing_facilities_cross_page_table.pdf +0 -0
  690. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/native_pdf_tables/pollutant_discharge_tables.pdf +0 -0
  691. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/native_pdf_tables/procurement_contract_tables.pdf +0 -0
  692. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/native_pdf_tables/procurement_document_blank_page_tables.pdf +0 -0
  693. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/native_pdf_tables/quarterly_report_financial_tables.pdf +0 -0
  694. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/numeric_citations_introduction.pdf +0 -0
  695. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/pdfs/test.pdf +0 -0
  696. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_backend_architecture.py +0 -0
  697. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_backend_block_object_regressions.py +0 -0
  698. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_docx_assets.py +0 -0
  699. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_docx_complex_fields.py +0 -0
  700. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_docx_math.py +0 -0
  701. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_docx_render.py +0 -0
  702. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_docx_special_char_tables.py +0 -0
  703. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_docx_table.py +0 -0
  704. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_docx_table_context.py +0 -0
  705. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_docx_table_metafiles.py +0 -0
  706. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_emfplus_integration.py +0 -0
  707. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_epub_backlinks.py +0 -0
  708. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_epub_quoted_note_types.py +0 -0
  709. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_epub_render.py +0 -0
  710. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_bbox_grid_comparison.py +0 -0
  711. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_csv.py +0 -0
  712. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_docx_equationxml.py +0 -0
  713. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_epub.py +0 -0
  714. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_image_mtef.py +0 -0
  715. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_legacy_chart_data.py +0 -0
  716. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_legacy_doc.py +0 -0
  717. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_legacy_doc_mtef.py +0 -0
  718. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_legacy_ppt.py +0 -0
  719. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_legacy_xls.py +0 -0
  720. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_legacy_xls_ppt_mtef.py +0 -0
  721. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_manual_annotations.py +0 -0
  722. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_markup_anchors.py +0 -0
  723. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_mhtml.py +0 -0
  724. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_model.py +0 -0
  725. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_mtef_v5.py +0 -0
  726. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_odf.py +0 -0
  727. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_ofd.py +0 -0
  728. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_office_image_mtef.py +0 -0
  729. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_office_metafile.py +0 -0
  730. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_office_models.py +0 -0
  731. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_office_mtef_v5.py +0 -0
  732. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_office_package_normalizers.py +0 -0
  733. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_office_title_types.py +0 -0
  734. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_ooxml_mtef.py +0 -0
  735. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_auxiliary_text.py +0 -0
  736. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_char_geometry.py +0 -0
  737. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_code_blocks.py +0 -0
  738. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_document_profile.py +0 -0
  739. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_equation_images.py +0 -0
  740. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_extractor.py +0 -0
  741. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_formulas.py +0 -0
  742. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_graphics.py +0 -0
  743. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_index_blocks.py +0 -0
  744. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_layout_repairs.py +0 -0
  745. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_line_metadata.py +0 -0
  746. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_native_text.py +0 -0
  747. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_pipeline.py +0 -0
  748. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_reviewed_history.py +0 -0
  749. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_samples.py +0 -0
  750. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_scripts.py +0 -0
  751. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_semantics.py +0 -0
  752. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_short_tails.py +0 -0
  753. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_tables.py +0 -0
  754. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_text_blocks.py +0 -0
  755. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_text_visibility.py +0 -0
  756. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_titles.py +0 -0
  757. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_pdf_visual_annotations.py +0 -0
  758. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_round2_annotations.py +0 -0
  759. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_round3_annotations.py +0 -0
  760. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_rtf.py +0 -0
  761. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_rule_generalization.py +0 -0
  762. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_shared_helpers.py +0 -0
  763. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_spatial_evidence.py +0 -0
  764. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_flash_spreadsheet_projector.py +0 -0
  765. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_guess_suffix_ole2.py +0 -0
  766. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_guess_suffix_ooxml.py +0 -0
  767. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_html_security.py +0 -0
  768. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_hybrid_script_source_pdfs.py +0 -0
  769. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_latex_render.py +0 -0
  770. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_markdown_render.py +0 -0
  771. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_middle_json_block_models.py +0 -0
  772. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_middle_json_export.py +0 -0
  773. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_middle_json_validator.py +0 -0
  774. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_model_json.py +0 -0
  775. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_native_pdf_table.py +0 -0
  776. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_native_pdf_table_demo_manifest.py +0 -0
  777. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_native_pdf_table_manifest.py +0 -0
  778. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_native_pdf_table_pipeline.py +0 -0
  779. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_native_pdf_table_scripts.py +0 -0
  780. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_native_table_performance_equivalence.py +0 -0
  781. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_ofd_assembly.py +0 -0
  782. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_ofd_vector_tables.py +0 -0
  783. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_office_demo_exports.py +0 -0
  784. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_office_demo_pages.py +0 -0
  785. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_office_image_alt_text.py +0 -0
  786. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_office_parser_regressions.py +0 -0
  787. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_office_robust_fixtures.py +0 -0
  788. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_cjk_objects.py +0 -0
  789. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_cjk_style.py +0 -0
  790. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_cjk_wrapping.py +0 -0
  791. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_classify.py +0 -0
  792. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_demo_links.py +0 -0
  793. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_diagnostic_levels.py +0 -0
  794. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_document.py +0 -0
  795. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_formula_layout.py +0 -0
  796. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_object_clipping.py +0 -0
  797. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_original_layout.py +0 -0
  798. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_pagination.py +0 -0
  799. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_paragraph_cache.py +0 -0
  800. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_render.py +0 -0
  801. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_render_diagnostics.py +0 -0
  802. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_structured_tables.py +0 -0
  803. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_table_cache.py +0 -0
  804. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_table_round2.py +0 -0
  805. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_text_dedup.py +0 -0
  806. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_text_styles.py +0 -0
  807. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_title_font_plan.py +0 -0
  808. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_title_space.py +0 -0
  809. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_pdf_visualization.py +0 -0
  810. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_postprocess_page_blocks.py +0 -0
  811. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_postprocess_pages.py +0 -0
  812. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_postprocess_paragraphs.py +0 -0
  813. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_postprocess_visual.py +0 -0
  814. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_render_api.py +0 -0
  815. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_render_html_table.py +0 -0
  816. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_render_image_renderer.py +0 -0
  817. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_render_list_index_utils.py +0 -0
  818. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_structured_content_render.py +0 -0
  819. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_svg_raster.py +0 -0
  820. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_table_merge.py +0 -0
  821. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_table_merge_cell_merge.py +0 -0
  822. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_text_block_anchor.py +0 -0
  823. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_text_boundary_rules.py +0 -0
  824. {docvortex-0.5.4 → docvortex-0.5.5}/tests/unittest/test_text_utils.py +0 -0
  825. {docvortex-0.5.4 → docvortex-0.5.5}/tools/__init__.py +0 -0
  826. {docvortex-0.5.4 → docvortex-0.5.5}/tools/build_html_css.py +0 -0
  827. {docvortex-0.5.4 → docvortex-0.5.5}/tools/calibrate_pdf_geometry.py +0 -0
  828. {docvortex-0.5.4 → docvortex-0.5.5}/tools/capture_baseline.py +0 -0
  829. {docvortex-0.5.4 → docvortex-0.5.5}/tools/capture_platform_layout.py +0 -0
  830. {docvortex-0.5.4 → docvortex-0.5.5}/tools/compare_font_platforms.py +0 -0
  831. {docvortex-0.5.4 → docvortex-0.5.5}/tools/font_geometry.py +0 -0
  832. {docvortex-0.5.4 → docvortex-0.5.5}/tools/verify_native_abi.py +0 -0
  833. {docvortex-0.5.4 → docvortex-0.5.5}/tools/verify_native_wheel.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: docvortex
3
- Version: 0.5.4
3
+ Version: 0.5.5
4
4
  Summary: A fast, multi-format document parsing and conversion engine
5
5
  License-Expression: MIT
6
6
  Project-URL: Repository, https://github.com/myhloli/DocVortex
@@ -65,11 +65,11 @@ class RichVisualBodyWireSpec:
65
65
 
66
66
  @dataclass(frozen=True, slots=True)
67
67
  class FlowchartBodyWireSpec:
68
- """保存 flowchart 源码与可选 raster fallback。"""
68
+ """保存 flowchart 源码与可选原图(旧外壳中为 raster 回退图)。"""
69
69
 
70
70
  element: etree._Element
71
71
  source_element: etree._Element
72
- fallback_image: etree._Element | None
72
+ primary_image: etree._Element | None
73
73
 
74
74
 
75
75
  @dataclass(frozen=True, slots=True)
@@ -170,8 +170,8 @@ def _materialize_visual_body(
170
170
  "type": BlockType.IMAGE,
171
171
  "content": _flowchart_content(spec.source_element),
172
172
  }
173
- if spec.fallback_image is not None:
174
- block.update(_resolve_image_payload(spec.fallback_image, resources))
173
+ if spec.primary_image is not None:
174
+ block.update(_resolve_image_payload(spec.primary_image, resources))
175
175
  return block
176
176
  if isinstance(spec, TableBodyWireSpec):
177
177
  return _materialize_table(spec, resources, projector)
@@ -360,15 +360,58 @@ def _parse_table_body(body: etree._Element) -> TableBodyWireSpec:
360
360
 
361
361
 
362
362
  def _looks_like_flowchart_body(body: etree._Element) -> bool:
363
- """判断 body 是否使用 renderer 的 flowchart 固定外壳。"""
363
+ """判断 body 是否使用 renderer 新旧两种 flowchart 固定外壳。"""
364
364
  children = _element_children(body)
365
- return bool(children and local_name(children[0]) == "div" and "docvortex-flowchart" in _class_tokens(children[0]))
365
+ if children and local_name(children[0]) == "div" and "docvortex-flowchart" in _class_tokens(children[0]):
366
+ return True
367
+ return any(local_name(child) == "details" and "docvortex-flowchart-details" in _class_tokens(child) for child in children)
366
368
 
367
369
 
368
370
  def _parse_flowchart_body(body: etree._Element) -> FlowchartBodyWireSpec:
369
- """解析 flowchart canvas、可选 raster 和源码 details。"""
371
+ """解析当前外壳的原图与源码 details;旧外壳(canvas 宿主在 details 外)只读兼容。"""
370
372
  _validate_structural_text(body)
371
373
  children = _element_children(body)
374
+ if children and local_name(children[0]) == "div" and "docvortex-flowchart" in _class_tokens(children[0]):
375
+ return _parse_legacy_flowchart_body(body, children)
376
+ return _parse_current_flowchart_body(body, children)
377
+
378
+
379
+ def _parse_current_flowchart_body(body: etree._Element, children: list[etree._Element]) -> FlowchartBodyWireSpec:
380
+ """解析当前外壳:可选原图后跟 details(summary、canvas 宿主、源码)。"""
381
+ primary_image: etree._Element | None = None
382
+ if len(children) == 2:
383
+ primary_image, details = children
384
+ if local_name(primary_image) != "img" or _class_tokens(primary_image) != {"docvortex-image"}:
385
+ raise NonCanonicalWire
386
+ elif len(children) == 1:
387
+ details = children[0]
388
+ else:
389
+ raise NonCanonicalWire
390
+ if local_name(details) != "details" or _class_tokens(details) != {"docvortex-details", "docvortex-flowchart-details"}:
391
+ raise NonCanonicalWire
392
+ _validate_structural_text(details)
393
+ details_children = _element_children(details)
394
+ if len(details_children) != 3:
395
+ raise NonCanonicalWire
396
+ summary, host, source = details_children
397
+ _validate_flowchart_summary(summary)
398
+ if local_name(host) != "div" or _class_tokens(host) != {"docvortex-flowchart"}:
399
+ raise NonCanonicalWire
400
+ _validate_structural_text(host)
401
+ host_children = _element_children(host)
402
+ if len(host_children) != 1:
403
+ raise NonCanonicalWire
404
+ canvas = host_children[0]
405
+ if local_name(canvas) != "div" or _class_tokens(canvas) != {"docvortex-flowchart-canvas"}:
406
+ raise NonCanonicalWire
407
+ _validate_structural_text(canvas)
408
+ if _element_children(canvas):
409
+ raise NonCanonicalWire
410
+ return FlowchartBodyWireSpec(body, _validate_flowchart_source(source), primary_image)
411
+
412
+
413
+ def _parse_legacy_flowchart_body(body: etree._Element, children: list[etree._Element]) -> FlowchartBodyWireSpec:
414
+ """兼容读取旧外壳:canvas 宿主在 details 之前,raster 为宿主内回退图。"""
372
415
  if len(children) != 2:
373
416
  raise NonCanonicalWire
374
417
  display, details = children
@@ -385,10 +428,10 @@ def _parse_flowchart_body(body: etree._Element) -> FlowchartBodyWireSpec:
385
428
  _validate_structural_text(canvas)
386
429
  if _element_children(canvas):
387
430
  raise NonCanonicalWire
388
- fallback_image = None
431
+ primary_image: etree._Element | None = None
389
432
  if len(display_children) == 2:
390
- fallback_image = display_children[1]
391
- if local_name(fallback_image) != "img" or _class_tokens(fallback_image) != {"docvortex-flowchart-fallback"}:
433
+ primary_image = display_children[1]
434
+ if local_name(primary_image) != "img" or _class_tokens(primary_image) != {"docvortex-flowchart-fallback"}:
392
435
  raise NonCanonicalWire
393
436
  if local_name(details) != "details" or _class_tokens(details) != {"docvortex-details", "docvortex-flowchart-details"}:
394
437
  raise NonCanonicalWire
@@ -397,19 +440,29 @@ def _parse_flowchart_body(body: etree._Element) -> FlowchartBodyWireSpec:
397
440
  if len(details_children) != 2:
398
441
  raise NonCanonicalWire
399
442
  summary, source = details_children
443
+ _validate_flowchart_summary(summary)
444
+ return FlowchartBodyWireSpec(body, _validate_flowchart_source(source), primary_image)
445
+
446
+
447
+ def _validate_flowchart_summary(summary: etree._Element) -> None:
448
+ """校验新标题与历史 source 标题,保持旧 HTML 可回读。"""
400
449
  if (
401
450
  local_name(summary) != "summary"
402
451
  or _element_children(summary)
403
- or " ".join(summary.itertext()).strip() != "flowchart source"
452
+ or " ".join(summary.itertext()).strip() not in {"flowchart", "flowchart source"}
404
453
  ):
405
454
  raise NonCanonicalWire
455
+
456
+
457
+ def _validate_flowchart_source(source: etree._Element) -> etree._Element:
458
+ """校验源码 pre 结构并返回其唯一 code 载荷。"""
406
459
  if local_name(source) != "pre" or _class_tokens(source) != {"docvortex-flowchart-source"}:
407
460
  raise NonCanonicalWire
408
461
  _validate_structural_text(source)
409
462
  code_children = _element_children(source)
410
463
  if len(code_children) != 1 or local_name(code_children[0]) != "code" or _element_children(code_children[0]):
411
464
  raise NonCanonicalWire
412
- return FlowchartBodyWireSpec(body, code_children[0], fallback_image)
465
+ return code_children[0]
413
466
 
414
467
 
415
468
  def _parse_rich_visual_body(body: etree._Element, parent_type: BlockType, sub_type: str) -> RichVisualBodyWireSpec:
@@ -455,19 +455,20 @@ class _HtmlRenderer:
455
455
  return _wrap_visual_body("".join(parts), block, "image")
456
456
 
457
457
  def _render_flowchart_body(self, block: ImageBodyBlock, mermaid_source: str) -> str:
458
- """输出 Mermaid canvas,并保留 raster 与源码两级失败回退。"""
458
+ """原图作为主视图,折叠区展示 Mermaid 图;无原图时保留失败源码回退。"""
459
459
  source = self._safe_block_image_source(block)
460
460
  escaped_source = html.escape(_replace_html_controls(mermaid_source), quote=False)
461
- fallback = self._render_image(source, alt="flowchart", class_name="docvortex-flowchart-fallback") if source else ""
462
- fallback_class = " docvortex-flowchart--has-raster" if fallback else ""
463
- details_open = "" if fallback else " open"
461
+ image = self._render_image(source, alt="flowchart", class_name="docvortex-image") if source else ""
462
+ details_open = "" if image else " open"
463
+ source_hidden = " hidden" if image else ""
464
464
  return (
465
- f'<div class="docvortex-flowchart{fallback_class}" data-mermaid-state="pending">'
466
- '<div class="docvortex-flowchart-canvas" role="img" aria-label="flowchart"></div>'
467
- f"{fallback}</div>"
465
+ f"{image}"
468
466
  f'<details class="docvortex-details docvortex-flowchart-details"{details_open}>'
469
- "<summary>flowchart source</summary>"
470
- f'<pre class="docvortex-flowchart-source"><code>{escaped_source}</code></pre>'
467
+ "<summary>flowchart</summary>"
468
+ '<div class="docvortex-flowchart" data-mermaid-state="pending">'
469
+ '<div class="docvortex-flowchart-canvas" role="img" aria-label="flowchart"></div>'
470
+ "</div>"
471
+ f'<pre class="docvortex-flowchart-source"{source_hidden}><code>{escaped_source}</code></pre>'
471
472
  "</details>"
472
473
  )
473
474
 
@@ -984,16 +985,14 @@ document.addEventListener('DOMContentLoaded', function () {{
984
985
 
985
986
 
986
987
  def _mermaid_head() -> str:
987
- """返回固定 Mermaid 入口和逐图安全渲染、失败回退脚本。"""
988
+ """返回固定 Mermaid 入口和折叠展开后按需安全渲染脚本。"""
988
989
  return f"""<script defer src="{_MERMAID_URL}"
989
990
  integrity="{_MERMAID_INTEGRITY}" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
990
991
  <script>
991
992
  function markDocVortexMermaidError(host) {{
992
993
  host.dataset.mermaidState = 'error';
993
- if (!host.classList.contains('docvortex-flowchart--has-raster')) {{
994
- var details = host.nextElementSibling;
995
- if (details && details.classList.contains('docvortex-flowchart-details')) details.open = true;
996
- }}
994
+ var canvas = host.querySelector('.docvortex-flowchart-canvas');
995
+ if (canvas) canvas.textContent = 'Flowchart unavailable';
997
996
  }}
998
997
  document.addEventListener('DOMContentLoaded', function () {{
999
998
  var root = document.querySelector('.docvortex-document');
@@ -1017,15 +1016,16 @@ document.addEventListener('DOMContentLoaded', function () {{
1017
1016
  hosts.forEach(markDocVortexMermaidError);
1018
1017
  return;
1019
1018
  }}
1020
- (async function () {{
1021
- for (var index = 0; index < hosts.length; index += 1) {{
1022
- var host = hosts[index];
1023
- var details = host.nextElementSibling;
1024
- var source = details && details.querySelector('.docvortex-flowchart-source code');
1019
+ hosts.forEach(function (host, index) {{
1020
+ var details = host.closest('details');
1021
+ // 仅在详情展开后读取隐藏源码并渲染一次。
1022
+ var render = async function () {{
1023
+ if (host.dataset.mermaidState !== 'pending') return;
1024
+ var source = details ? details.querySelector('.docvortex-flowchart-source code') : null;
1025
1025
  var canvas = host.querySelector('.docvortex-flowchart-canvas');
1026
1026
  if (!source || !canvas) {{
1027
1027
  markDocVortexMermaidError(host);
1028
- continue;
1028
+ return;
1029
1029
  }}
1030
1030
  var renderId = 'docvortex-mermaid-' + index;
1031
1031
  while (document.getElementById(renderId)) renderId += '-x';
@@ -1037,8 +1037,13 @@ document.addEventListener('DOMContentLoaded', function () {{
1037
1037
  }} catch (_error) {{
1038
1038
  markDocVortexMermaidError(host);
1039
1039
  }}
1040
+ }};
1041
+ if (details && !details.open) {{
1042
+ details.addEventListener('toggle', function () {{ if (details.open) render(); }});
1043
+ }} else {{
1044
+ render();
1040
1045
  }}
1041
- }})();
1046
+ }});
1042
1047
  }});
1043
1048
  </script>"""
1044
1049
 
@@ -277,9 +277,9 @@
277
277
  margin-inline: 0;
278
278
  }
279
279
 
280
- /* Mermaid 成功后替换 raster;无 JS、加载或语法失败时保留图片/源码回退。 */
280
+ /* 原图恒为主视图;折叠 details 只展示按需渲染的 Mermaid 图。 */
281
281
  .docvortex-document .docvortex-flowchart {
282
- margin: 1rem 0;
282
+ margin: 1rem 0 0.5rem;
283
283
  max-width: 100%;
284
284
  overflow-x: auto;
285
285
  }
@@ -297,23 +297,23 @@
297
297
  max-width: 100%;
298
298
  }
299
299
 
300
- .docvortex-document .docvortex-flowchart-fallback {
301
- display: block;
302
- margin-inline: 0;
303
- }
304
-
305
300
  .docvortex-document .docvortex-flowchart[data-mermaid-state="rendered"] .docvortex-flowchart-canvas {
306
301
  display: block;
307
302
  }
308
303
 
309
- .docvortex-document .docvortex-flowchart[data-mermaid-state="rendered"] .docvortex-flowchart-fallback {
310
- display: none;
304
+ .docvortex-document .docvortex-flowchart[data-mermaid-state="error"] .docvortex-flowchart-canvas {
305
+ display: block;
311
306
  }
312
307
 
313
308
  .docvortex-document .docvortex-flowchart-details {
314
309
  max-width: 100%;
315
310
  }
316
311
 
312
+ .docvortex-document .docvortex-flowchart-source[hidden],
313
+ .docvortex-document .docvortex-flowchart[data-mermaid-state="rendered"] + .docvortex-flowchart-source {
314
+ display: none;
315
+ }
316
+
317
317
  .docvortex-document .docvortex-flowchart-source {
318
318
  max-height: 24rem;
319
319
  text-align: left;
@@ -0,0 +1 @@
1
+ .docvortex-html-body{background:#ffffff;margin:0}.docvortex-html-body>.docvortex-document{margin:0 auto;max-width:60rem;min-height:100vh;padding:2rem}.docvortex-document{--docvortex-accent:#0b6fc2;--docvortex-accent-hover:#075a9c;--docvortex-background:#ffffff;--docvortex-border:#d1d5db;--docvortex-muted:#6b7280;--docvortex-surface:#f8fafc;--docvortex-text:#1f2937;background:var(--docvortex-background);box-sizing:border-box;color:var(--docvortex-text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:16px;line-height:1.65;overflow-wrap:break-word;width:100%}.docvortex-document *,.docvortex-document *::before,.docvortex-document *::after{box-sizing:inherit}.docvortex-document :is(h1,h2,h3,h4,h5,h6){color:var(--docvortex-text);font-weight:600;line-height:1.3;margin:1.5em 0 0.65em}.docvortex-document h1{font-size:2rem}.docvortex-document h2{font-size:1.5rem}.docvortex-document h3{font-size:1.25rem}.docvortex-document h4{font-size:1.125rem}.docvortex-document h5{font-size:1rem}.docvortex-document h6{color:var(--docvortex-muted);font-size:0.875rem}.docvortex-document .docvortex-block:first-child>:first-child,.docvortex-document .docvortex-page>.docvortex-block:first-child>:first-child{margin-top:0}.docvortex-document p{margin:0 0 1rem}.docvortex-document :is(strong,b){font-weight:700}.docvortex-document :is(s,del){color:var(--docvortex-muted)}.docvortex-document a{color:var(--docvortex-accent);text-decoration:none;text-underline-offset:0.15em}.docvortex-document a:hover{color:var(--docvortex-accent-hover);text-decoration:underline}.docvortex-document a:focus-visible{border-radius:0.15rem;outline:2px solid var(--docvortex-accent);outline-offset:2px}.docvortex-document blockquote{background:var(--docvortex-surface);border-left:0.25rem solid var(--docvortex-accent);color:var(--docvortex-muted);margin:1rem 0;padding:0.75rem 1rem}.docvortex-document blockquote>:first-child{margin-top:0}.docvortex-document blockquote>:last-child{margin-bottom:0}.docvortex-document :is(ol,ul){margin:0 0 1rem;padding-left:1.75rem}.docvortex-document ul{list-style:disc}.docvortex-document ul ul{list-style:circle}.docvortex-document ul ul ul{list-style:square}.docvortex-document ol{list-style:decimal}.docvortex-document :is(ol,ul) ol{list-style-type:lower-roman}.docvortex-document :is(ol,ul) :is(ol,ul) ol{list-style-type:lower-alpha}.docvortex-document li + li{margin-top:0.25rem}.docvortex-document li>:is(ol,ul){margin-bottom:0;margin-top:0.25rem}.docvortex-document .docvortex-list--explicit{list-style:none;padding-left:1.5rem}.docvortex-document .docvortex-list--unmarked{list-style:none;padding-left:0}.docvortex-document .docvortex-list-item--explicit{align-items:start;display:grid;gap:0.5em;grid-template-columns:max-content minmax(0,1fr)}.docvortex-document .docvortex-list-item--orphan{display:grid;grid-template-columns:0 minmax(0,1fr);list-style:none}.docvortex-document .docvortex-list-item--markerless{list-style:none}.docvortex-document .docvortex-list-marker{font-variant-numeric:tabular-nums;text-align:right;user-select:none;white-space:pre}.docvortex-document .docvortex-list-content{min-width:0}.docvortex-document .docvortex-list-item--orphan>.docvortex-list-marker{visibility:hidden}.docvortex-document .docvortex-list-item--orphan>:is(ol,ul),.docvortex-document .docvortex-list-item--explicit>:is(ol,ul){grid-column:2;margin-bottom:0}.docvortex-document .docvortex-index,.docvortex-document .docvortex-index ul{list-style:none;padding-left:0}.docvortex-document .docvortex-index ul ul{padding-left:1.5rem}.docvortex-document .docvortex-index a{overflow-wrap:anywhere}.docvortex-document table{border-collapse:collapse;border-spacing:0;display:block;margin:1rem 0;max-width:100%;overflow-x:auto;width:100%}.docvortex-document :is(th,td){border:1px solid var(--docvortex-border);padding:0.5rem 0.75rem;text-align:left;vertical-align:top}.docvortex-document th{background:var(--docvortex-surface);font-weight:600}.docvortex-document caption{color:var(--docvortex-muted);margin-bottom:0.5rem;text-align:left}.docvortex-document :is(th,td).docvortex-align-left{text-align:left}.docvortex-document :is(th,td).docvortex-align-center{text-align:center}.docvortex-document :is(th,td).docvortex-align-right{text-align:right}.docvortex-document img{height:auto;max-width:100%}.docvortex-document .docvortex-figure{margin:1.5rem 0;max-width:100%}.docvortex-document .docvortex-figure>img,.docvortex-document .docvortex-visual-body>img{display:block;margin-inline:0}.docvortex-document .docvortex-flowchart{margin:1rem 0 0.5rem;max-width:100%;overflow-x:auto}.docvortex-document .docvortex-flowchart-canvas{display:none;min-width:0;text-align:left}.docvortex-document .docvortex-flowchart-canvas svg{display:block;height:auto;margin-inline:0;max-width:100%}.docvortex-document .docvortex-flowchart[data-mermaid-state="rendered"] .docvortex-flowchart-canvas{display:block}.docvortex-document .docvortex-flowchart[data-mermaid-state="error"] .docvortex-flowchart-canvas{display:block}.docvortex-document .docvortex-flowchart-details{max-width:100%}.docvortex-document .docvortex-flowchart-source[hidden],.docvortex-document .docvortex-flowchart[data-mermaid-state="rendered"] + .docvortex-flowchart-source{display:none}.docvortex-document .docvortex-flowchart-source{max-height:24rem;text-align:left;white-space:pre}.docvortex-document .docvortex-caption{color:var(--docvortex-muted);font-size:0.9em;margin-top:0.5rem;text-align:left}.docvortex-document .docvortex-footnote,.docvortex-document .docvortex-page-footnote{color:var(--docvortex-muted);font-size:0.875em;margin-top:0.4rem;text-align:left}.docvortex-document .docvortex-details{border:1px solid var(--docvortex-border);border-radius:0.375rem;margin:1rem 0;padding:0.65rem 0.85rem}.docvortex-document .docvortex-details>summary{cursor:pointer;font-weight:600}.docvortex-document .docvortex-page-aux{color:var(--docvortex-muted);font-size:0.875rem}.docvortex-document code,.docvortex-document pre,.docvortex-document .docvortex-algorithm{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}.docvortex-document code{background:var(--docvortex-surface);border-radius:0.25rem;font-size:0.875em;padding:0.15em 0.35em}.docvortex-document pre{background:var(--docvortex-surface);border:1px solid var(--docvortex-border);border-radius:0.375rem;line-height:1.5;margin:1rem 0;max-width:100%;overflow:auto;padding:1rem;tab-size:4;white-space:pre}.docvortex-document pre>code{background:transparent;border-radius:0;display:inline;font-size:inherit;line-height:inherit;padding:0;white-space:inherit}.docvortex-document :is(code,pre)[class*="language-"]{color:#374151;text-align:left;text-shadow:none;word-break:normal;word-spacing:normal}.docvortex-document .token.comment,.docvortex-document .token.prolog,.docvortex-document .token.doctype,.docvortex-document .token.cdata{color:#6b7280}.docvortex-document .token.punctuation{color:#374151}.docvortex-document .token.namespace{opacity:0.75}.docvortex-document .token.keyword,.docvortex-document .token.operator,.docvortex-document .token.important,.docvortex-document .token.atrule{color:#7c3aed}.docvortex-document .token.string,.docvortex-document .token.attr-value,.docvortex-document .token.regex,.docvortex-document .token.url{color:#047857}.docvortex-document .token.number,.docvortex-document .token.boolean,.docvortex-document .token.constant,.docvortex-document .token.property,.docvortex-document .token.symbol{color:#0369a1}.docvortex-document .token.tag,.docvortex-document .token.selector,.docvortex-document .token.builtin{color:#b45309}.docvortex-document .token.function,.docvortex-document .token.class-name,.docvortex-document .token.attr-name{color:#be123c}.docvortex-document .token.important,.docvortex-document .token.bold{font-weight:700}.docvortex-document .token.italic{font-style:italic}.docvortex-document .token.inserted{background:#ecfdf5;color:#047857}.docvortex-document .token.deleted{background:#fff1f2;color:#be123c}.docvortex-document .token.entity{cursor:help}.docvortex-document .docvortex-algorithm{max-width:100%;overflow-x:auto;tab-size:4;white-space:pre-wrap;word-break:normal}.docvortex-document .docvortex-table-text,.docvortex-document .docvortex-raw-fallback{overflow:auto;tab-size:4;white-space:pre-wrap;word-break:break-word}.docvortex-document .docvortex-table-text{white-space:pre}.docvortex-document .docvortex-raw-fallback{border-left:0.2rem solid var(--docvortex-border);color:var(--docvortex-muted)}.docvortex-document .docvortex-math{overflow-wrap:anywhere}.docvortex-document .docvortex-math--block{display:block;margin:1rem 0;max-width:100%;overflow-x:auto;overflow-y:hidden;text-align:center}.docvortex-document mjx-container[display="true"]{max-width:100%;overflow-x:auto;overflow-y:hidden}.docvortex-document .docvortex-preserve-whitespace{white-space:pre-wrap}.docvortex-document .docvortex-text-emphasis{-webkit-text-emphasis:dot;-webkit-text-emphasis-position:under right;text-emphasis:dot;text-emphasis-position:under right}.docvortex-document .docvortex-page{min-width:0;position:relative}.docvortex-document--full .docvortex-page{min-height:1.5rem}.docvortex-document .docvortex-page-break{background:transparent;border:0;border-top:1px dashed var(--docvortex-border);height:0;margin:2rem 0}@media screen and (max-width:40rem){.docvortex-html-body>.docvortex-document{padding:1rem}.docvortex-document h1{font-size:1.75rem}.docvortex-document :is(th,td){padding:0.4rem 0.55rem}}@media print{.docvortex-html-body{background:#ffffff}.docvortex-html-body>.docvortex-document{max-width:none;min-height:0;padding:0}.docvortex-document .docvortex-page-break{display:none}.docvortex-document--full .docvortex-page{break-after:page;page-break-after:always}.docvortex-document--full .docvortex-page:last-child{break-after:auto;page-break-after:auto}.docvortex-document .docvortex-figure{break-inside:avoid;page-break-inside:avoid}.docvortex-document table{display:table;overflow:visible}.docvortex-document pre{overflow:visible;white-space:pre-wrap;word-break:break-word}}
@@ -1,3 +1,3 @@
1
- __version__ = "0.5.4"
1
+ __version__ = "0.5.5"
2
2
 
3
3
  __all__ = ["__version__"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: docvortex
3
- Version: 0.5.4
3
+ Version: 0.5.5
4
4
  Summary: A fast, multi-format document parsing and conversion engine
5
5
  License-Expression: MIT
6
6
  Project-URL: Repository, https://github.com/myhloli/DocVortex
@@ -1383,6 +1383,59 @@ def test_html_versioned_wire_roundtrips_canonical_visual_body_variants() -> None
1383
1383
  assert bodies[4].content == "" and bodies[4].image_url is None
1384
1384
 
1385
1385
 
1386
+ def test_html_versioned_wire_decodes_legacy_flowchart_shell_exactly() -> None:
1387
+ """验证旧外壳(canvas 宿主在 details 外、raster 为回退图)仍走 exact 解码。"""
1388
+ source = MiddleJson.model_validate(
1389
+ {
1390
+ "pages": [
1391
+ {
1392
+ "page_idx": 0,
1393
+ "blocks": [
1394
+ {
1395
+ "type": "image",
1396
+ "index": 0,
1397
+ "sub_type": "flowchart",
1398
+ "content": [
1399
+ {
1400
+ "type": "image_body",
1401
+ "index": 0,
1402
+ "content": "```mermaid\ngraph TD\nA-->B\n```",
1403
+ "image_url": "https://example.com/flow.png",
1404
+ }
1405
+ ],
1406
+ }
1407
+ ],
1408
+ }
1409
+ ],
1410
+ "is_full_document": True,
1411
+ "metadata": {"file_suffix": "html", "producer": {"name": "docvortex", "version": "0.2.0"}},
1412
+ "schema": "docvortex.middle",
1413
+ "schema_version": "2.0",
1414
+ }
1415
+ )
1416
+ soup = BeautifulSoup(render_html(source, standalone=False), "html.parser")
1417
+ # 把当前外壳重排回旧外壳:canvas 宿主移出 details,原图降级为宿主内回退图。
1418
+ details = soup.select_one("details.docvortex-flowchart-details")
1419
+ host = details.select_one(".docvortex-flowchart")
1420
+ image = soup.select_one("img.docvortex-image")
1421
+ host["class"] = ["docvortex-flowchart", "docvortex-flowchart--has-raster"]
1422
+ image["class"] = ["docvortex-flowchart-fallback"]
1423
+ host.append(image)
1424
+ details.insert_before(host.extract())
1425
+ details.summary.string = "flowchart source"
1426
+ details.select_one(".docvortex-flowchart-source").attrs.pop("hidden")
1427
+
1428
+ document = html_document_module.parse_html_document(str(soup).encode())
1429
+ decode_result = decode_docvortex_html_wire(document.body, HtmlResourceContext(document.source_context))
1430
+ middle, _ = analyze_native_test_document(str(soup).encode(), file_suffix="html")
1431
+ block = middle.pages[0].blocks[0]
1432
+
1433
+ assert decode_result.blocks is not None and decode_result.fallback_reason is None
1434
+ assert str(block.type) == "image" and block.sub_type == "flowchart"
1435
+ assert block.content[0].content == "```mermaid\ngraph TD\nA-->B\n```"
1436
+ assert block.content[0].image_url == "https://example.com/flow.png"
1437
+
1438
+
1386
1439
  def test_html_versioned_wire_distinguishes_index_carrier_from_inline_link() -> None:
1387
1440
  """验证未链接目录项中的普通 anchor 不会被误认为 renderer 目录外壳。"""
1388
1441
  source = MiddleJson.model_validate(
@@ -28,8 +28,13 @@ def test_visual_bodies_captions_and_footnotes_align_left() -> None:
28
28
  ".docvortex-document .docvortex-figure > img,\n"
29
29
  ".docvortex-document .docvortex-visual-body > img {\n display: block;\n margin-inline: 0;\n}"
30
30
  ) in source
31
- assert ".docvortex-document .docvortex-flowchart {\n margin: 1rem 0;" in source
31
+ assert ".docvortex-document .docvortex-flowchart {\n margin: 1rem 0 0.5rem;" in source
32
32
  assert ".docvortex-document .docvortex-flowchart-canvas {\n display: none;\n min-width: 0;\n text-align: left;" in source
33
+ assert (
34
+ '.docvortex-document .docvortex-flowchart-source[hidden],\n'
35
+ '.docvortex-document .docvortex-flowchart[data-mermaid-state="rendered"] + .docvortex-flowchart-source {\n'
36
+ ' display: none;\n}'
37
+ ) in source
33
38
  assert (
34
39
  ".docvortex-document .docvortex-caption {\n"
35
40
  " color: var(--docvortex-muted);\n"
@@ -601,22 +601,27 @@ def test_visual_child_order_image_details_and_asset_precedence() -> None:
601
601
  assert len(soup.select(".docvortex-caption")) == 2
602
602
 
603
603
 
604
- def test_mermaid_flowchart_uses_live_canvas_raster_fallback_and_safe_config() -> None:
605
- """验证受限 Mermaid 源生成 canvas,并保留 raster、源码和固定安全运行时。"""
604
+ def test_mermaid_flowchart_keeps_raster_primary_and_lazy_details_render() -> None:
605
+ """验证原图为主视图,折叠区只显示图且隐藏源码供按需渲染。"""
606
606
  source_text = '%% comment\ngraph LR\n A["<script>alert(1)</script>"] --> B'
607
607
  middle = _middle(_page(0, _flowchart(_mermaid_fence(source_text))))
608
608
  fragment = render_html(middle, standalone=False)
609
609
  standalone = render_html(middle)
610
610
  soup = BeautifulSoup(fragment, "html.parser")
611
611
 
612
- host = soup.select_one(".docvortex-flowchart")
612
+ image = soup.select_one("img.docvortex-image")
613
+ assert image is not None and image["src"].startswith("data:image/png")
614
+ assert image.find_parent("details") is None
615
+ details = soup.select_one("details.docvortex-flowchart-details")
616
+ assert "open" not in details.attrs
617
+ assert details.summary.get_text(strip=True) == "flowchart"
618
+ assert [child.name for child in details.find_all(recursive=False)] == ["summary", "div", "pre"]
619
+ host = details.select_one(".docvortex-flowchart")
613
620
  assert host["data-mermaid-state"] == "pending"
614
- assert "docvortex-flowchart--has-raster" in host["class"]
615
621
  assert host.select_one('.docvortex-flowchart-canvas[role="img"]') is not None
616
- assert host.select_one(".docvortex-flowchart-fallback")["src"].startswith("data:image/png")
617
- details = host.find_next_sibling("details")
618
- assert "open" not in details.attrs
619
- assert details.select_one(".docvortex-flowchart-source code").get_text() == source_text
622
+ hidden_source = details.select_one(".docvortex-flowchart-source")
623
+ assert hidden_source.has_attr("hidden")
624
+ assert hidden_source.code.get_text() == source_text
620
625
  assert soup.find("script") is None
621
626
  assert "mermaid@" not in fragment
622
627
  assert "mermaid@11.16.1/dist/mermaid.min.js" in standalone
@@ -626,10 +631,13 @@ def test_mermaid_flowchart_uses_live_canvas_raster_fallback_and_safe_config() ->
626
631
  assert "maxTextSize: 50000" in standalone and "maxEdges: 500" in standalone
627
632
  assert "flowchart: {htmlLabels: false, useMaxWidth: true}" in standalone
628
633
  assert "bindFunctions" not in standalone
634
+ assert "addEventListener('toggle'" in standalone
635
+ assert "closest('details')" in standalone
636
+ assert "Flowchart unavailable" in standalone
629
637
 
630
638
 
631
- def test_mermaid_flowchart_without_raster_opens_source_fallback() -> None:
632
- """验证无 raster 的有效 flowchart 默认展开源码,等待或替代浏览器渲染。"""
639
+ def test_mermaid_flowchart_without_raster_opens_diagram() -> None:
640
+ """验证无原图时源码作为渲染失败回退,成功渲染后由 CSS 隐藏。"""
633
641
  soup = BeautifulSoup(
634
642
  render_html(
635
643
  _middle(_page(0, _flowchart(_mermaid_fence("flowchart TD\n A --> B"), with_raster=False))),
@@ -639,9 +647,12 @@ def test_mermaid_flowchart_without_raster_opens_source_fallback() -> None:
639
647
  )
640
648
 
641
649
  host = soup.select_one(".docvortex-flowchart")
642
- assert "docvortex-flowchart--has-raster" not in host.get("class", [])
643
- assert host.select_one("img") is None
644
- assert "open" in host.find_next_sibling("details").attrs
650
+ details = host.find_parent("details")
651
+ assert details is not None and "docvortex-flowchart-details" in details.get("class", [])
652
+ assert details.summary.get_text(strip=True) == "flowchart"
653
+ assert not details.select_one(".docvortex-flowchart-source").has_attr("hidden")
654
+ assert soup.select_one("img") is None
655
+ assert "open" in details.attrs
645
656
 
646
657
 
647
658
  @pytest.mark.parametrize(
@@ -1 +0,0 @@
1
- .docvortex-html-body{background:#ffffff;margin:0}.docvortex-html-body>.docvortex-document{margin:0 auto;max-width:60rem;min-height:100vh;padding:2rem}.docvortex-document{--docvortex-accent:#0b6fc2;--docvortex-accent-hover:#075a9c;--docvortex-background:#ffffff;--docvortex-border:#d1d5db;--docvortex-muted:#6b7280;--docvortex-surface:#f8fafc;--docvortex-text:#1f2937;background:var(--docvortex-background);box-sizing:border-box;color:var(--docvortex-text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:16px;line-height:1.65;overflow-wrap:break-word;width:100%}.docvortex-document *,.docvortex-document *::before,.docvortex-document *::after{box-sizing:inherit}.docvortex-document :is(h1,h2,h3,h4,h5,h6){color:var(--docvortex-text);font-weight:600;line-height:1.3;margin:1.5em 0 0.65em}.docvortex-document h1{font-size:2rem}.docvortex-document h2{font-size:1.5rem}.docvortex-document h3{font-size:1.25rem}.docvortex-document h4{font-size:1.125rem}.docvortex-document h5{font-size:1rem}.docvortex-document h6{color:var(--docvortex-muted);font-size:0.875rem}.docvortex-document .docvortex-block:first-child>:first-child,.docvortex-document .docvortex-page>.docvortex-block:first-child>:first-child{margin-top:0}.docvortex-document p{margin:0 0 1rem}.docvortex-document :is(strong,b){font-weight:700}.docvortex-document :is(s,del){color:var(--docvortex-muted)}.docvortex-document a{color:var(--docvortex-accent);text-decoration:none;text-underline-offset:0.15em}.docvortex-document a:hover{color:var(--docvortex-accent-hover);text-decoration:underline}.docvortex-document a:focus-visible{border-radius:0.15rem;outline:2px solid var(--docvortex-accent);outline-offset:2px}.docvortex-document blockquote{background:var(--docvortex-surface);border-left:0.25rem solid var(--docvortex-accent);color:var(--docvortex-muted);margin:1rem 0;padding:0.75rem 1rem}.docvortex-document blockquote>:first-child{margin-top:0}.docvortex-document blockquote>:last-child{margin-bottom:0}.docvortex-document :is(ol,ul){margin:0 0 1rem;padding-left:1.75rem}.docvortex-document ul{list-style:disc}.docvortex-document ul ul{list-style:circle}.docvortex-document ul ul ul{list-style:square}.docvortex-document ol{list-style:decimal}.docvortex-document :is(ol,ul) ol{list-style-type:lower-roman}.docvortex-document :is(ol,ul) :is(ol,ul) ol{list-style-type:lower-alpha}.docvortex-document li + li{margin-top:0.25rem}.docvortex-document li>:is(ol,ul){margin-bottom:0;margin-top:0.25rem}.docvortex-document .docvortex-list--explicit{list-style:none;padding-left:1.5rem}.docvortex-document .docvortex-list--unmarked{list-style:none;padding-left:0}.docvortex-document .docvortex-list-item--explicit{align-items:start;display:grid;gap:0.5em;grid-template-columns:max-content minmax(0,1fr)}.docvortex-document .docvortex-list-item--orphan{display:grid;grid-template-columns:0 minmax(0,1fr);list-style:none}.docvortex-document .docvortex-list-item--markerless{list-style:none}.docvortex-document .docvortex-list-marker{font-variant-numeric:tabular-nums;text-align:right;user-select:none;white-space:pre}.docvortex-document .docvortex-list-content{min-width:0}.docvortex-document .docvortex-list-item--orphan>.docvortex-list-marker{visibility:hidden}.docvortex-document .docvortex-list-item--orphan>:is(ol,ul),.docvortex-document .docvortex-list-item--explicit>:is(ol,ul){grid-column:2;margin-bottom:0}.docvortex-document .docvortex-index,.docvortex-document .docvortex-index ul{list-style:none;padding-left:0}.docvortex-document .docvortex-index ul ul{padding-left:1.5rem}.docvortex-document .docvortex-index a{overflow-wrap:anywhere}.docvortex-document table{border-collapse:collapse;border-spacing:0;display:block;margin:1rem 0;max-width:100%;overflow-x:auto;width:100%}.docvortex-document :is(th,td){border:1px solid var(--docvortex-border);padding:0.5rem 0.75rem;text-align:left;vertical-align:top}.docvortex-document th{background:var(--docvortex-surface);font-weight:600}.docvortex-document caption{color:var(--docvortex-muted);margin-bottom:0.5rem;text-align:left}.docvortex-document :is(th,td).docvortex-align-left{text-align:left}.docvortex-document :is(th,td).docvortex-align-center{text-align:center}.docvortex-document :is(th,td).docvortex-align-right{text-align:right}.docvortex-document img{height:auto;max-width:100%}.docvortex-document .docvortex-figure{margin:1.5rem 0;max-width:100%}.docvortex-document .docvortex-figure>img,.docvortex-document .docvortex-visual-body>img{display:block;margin-inline:0}.docvortex-document .docvortex-flowchart{margin:1rem 0;max-width:100%;overflow-x:auto}.docvortex-document .docvortex-flowchart-canvas{display:none;min-width:0;text-align:left}.docvortex-document .docvortex-flowchart-canvas svg{display:block;height:auto;margin-inline:0;max-width:100%}.docvortex-document .docvortex-flowchart-fallback{display:block;margin-inline:0}.docvortex-document .docvortex-flowchart[data-mermaid-state="rendered"] .docvortex-flowchart-canvas{display:block}.docvortex-document .docvortex-flowchart[data-mermaid-state="rendered"] .docvortex-flowchart-fallback{display:none}.docvortex-document .docvortex-flowchart-details{max-width:100%}.docvortex-document .docvortex-flowchart-source{max-height:24rem;text-align:left;white-space:pre}.docvortex-document .docvortex-caption{color:var(--docvortex-muted);font-size:0.9em;margin-top:0.5rem;text-align:left}.docvortex-document .docvortex-footnote,.docvortex-document .docvortex-page-footnote{color:var(--docvortex-muted);font-size:0.875em;margin-top:0.4rem;text-align:left}.docvortex-document .docvortex-details{border:1px solid var(--docvortex-border);border-radius:0.375rem;margin:1rem 0;padding:0.65rem 0.85rem}.docvortex-document .docvortex-details>summary{cursor:pointer;font-weight:600}.docvortex-document .docvortex-page-aux{color:var(--docvortex-muted);font-size:0.875rem}.docvortex-document code,.docvortex-document pre,.docvortex-document .docvortex-algorithm{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}.docvortex-document code{background:var(--docvortex-surface);border-radius:0.25rem;font-size:0.875em;padding:0.15em 0.35em}.docvortex-document pre{background:var(--docvortex-surface);border:1px solid var(--docvortex-border);border-radius:0.375rem;line-height:1.5;margin:1rem 0;max-width:100%;overflow:auto;padding:1rem;tab-size:4;white-space:pre}.docvortex-document pre>code{background:transparent;border-radius:0;display:inline;font-size:inherit;line-height:inherit;padding:0;white-space:inherit}.docvortex-document :is(code,pre)[class*="language-"]{color:#374151;text-align:left;text-shadow:none;word-break:normal;word-spacing:normal}.docvortex-document .token.comment,.docvortex-document .token.prolog,.docvortex-document .token.doctype,.docvortex-document .token.cdata{color:#6b7280}.docvortex-document .token.punctuation{color:#374151}.docvortex-document .token.namespace{opacity:0.75}.docvortex-document .token.keyword,.docvortex-document .token.operator,.docvortex-document .token.important,.docvortex-document .token.atrule{color:#7c3aed}.docvortex-document .token.string,.docvortex-document .token.attr-value,.docvortex-document .token.regex,.docvortex-document .token.url{color:#047857}.docvortex-document .token.number,.docvortex-document .token.boolean,.docvortex-document .token.constant,.docvortex-document .token.property,.docvortex-document .token.symbol{color:#0369a1}.docvortex-document .token.tag,.docvortex-document .token.selector,.docvortex-document .token.builtin{color:#b45309}.docvortex-document .token.function,.docvortex-document .token.class-name,.docvortex-document .token.attr-name{color:#be123c}.docvortex-document .token.important,.docvortex-document .token.bold{font-weight:700}.docvortex-document .token.italic{font-style:italic}.docvortex-document .token.inserted{background:#ecfdf5;color:#047857}.docvortex-document .token.deleted{background:#fff1f2;color:#be123c}.docvortex-document .token.entity{cursor:help}.docvortex-document .docvortex-algorithm{max-width:100%;overflow-x:auto;tab-size:4;white-space:pre-wrap;word-break:normal}.docvortex-document .docvortex-table-text,.docvortex-document .docvortex-raw-fallback{overflow:auto;tab-size:4;white-space:pre-wrap;word-break:break-word}.docvortex-document .docvortex-table-text{white-space:pre}.docvortex-document .docvortex-raw-fallback{border-left:0.2rem solid var(--docvortex-border);color:var(--docvortex-muted)}.docvortex-document .docvortex-math{overflow-wrap:anywhere}.docvortex-document .docvortex-math--block{display:block;margin:1rem 0;max-width:100%;overflow-x:auto;overflow-y:hidden;text-align:center}.docvortex-document mjx-container[display="true"]{max-width:100%;overflow-x:auto;overflow-y:hidden}.docvortex-document .docvortex-preserve-whitespace{white-space:pre-wrap}.docvortex-document .docvortex-text-emphasis{-webkit-text-emphasis:dot;-webkit-text-emphasis-position:under right;text-emphasis:dot;text-emphasis-position:under right}.docvortex-document .docvortex-page{min-width:0;position:relative}.docvortex-document--full .docvortex-page{min-height:1.5rem}.docvortex-document .docvortex-page-break{background:transparent;border:0;border-top:1px dashed var(--docvortex-border);height:0;margin:2rem 0}@media screen and (max-width:40rem){.docvortex-html-body>.docvortex-document{padding:1rem}.docvortex-document h1{font-size:1.75rem}.docvortex-document :is(th,td){padding:0.4rem 0.55rem}}@media print{.docvortex-html-body{background:#ffffff}.docvortex-html-body>.docvortex-document{max-width:none;min-height:0;padding:0}.docvortex-document .docvortex-page-break{display:none}.docvortex-document--full .docvortex-page{break-after:page;page-break-after:always}.docvortex-document--full .docvortex-page:last-child{break-after:auto;page-break-after:auto}.docvortex-document .docvortex-figure{break-inside:avoid;page-break-inside:avoid}.docvortex-document table{display:table;overflow:visible}.docvortex-document pre{overflow:visible;white-space:pre-wrap;word-break:break-word}}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes