BabelDOC 0.5.20__tar.gz → 0.5.22__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 (317) hide show
  1. {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/ISSUE_TEMPLATE/bug_report.yaml +4 -0
  2. {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/ISSUE_TEMPLATE/feature_request.yaml +9 -0
  3. {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/workflows/codeql.yml +2 -2
  4. {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/workflows/docs.yml +1 -1
  5. {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/workflows/pr-lint.yml +2 -2
  6. {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/workflows/publish-to-pypi.yml +3 -3
  7. {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/workflows/test.yml +1 -1
  8. {babeldoc-0.5.20 → babeldoc-0.5.22}/PKG-INFO +2 -2
  9. {babeldoc-0.5.20 → babeldoc-0.5.22}/README.md +1 -1
  10. babeldoc-0.5.22/babeldoc/__init__.py +1 -0
  11. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/assets/assets.py +142 -5
  12. babeldoc-0.5.22/babeldoc/assets/embedding_assets_metadata.py +1460 -0
  13. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/const.py +1 -1
  14. babeldoc-0.5.22/babeldoc/format/pdf/babelpdf/cmap.py +147 -0
  15. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/frontend/il_creater.py +3 -1
  16. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/main.py +1 -1
  17. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/pdffont.py +23 -0
  18. babeldoc-0.5.22/babeldoc/tools/generate_cmap_metadata.py +73 -0
  19. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/CONTRIBUTOR_REWARD.md +3 -4
  20. {babeldoc-0.5.20 → babeldoc-0.5.22}/pyproject.toml +2 -2
  21. babeldoc-0.5.20/babeldoc/__init__.py +0 -1
  22. babeldoc-0.5.20/babeldoc/assets/embedding_assets_metadata.py +0 -720
  23. {babeldoc-0.5.20 → babeldoc-0.5.22}/.cursorignore +0 -0
  24. {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/PULL_REQUEST_TEMPLATE/pr_form.yml +0 -0
  25. {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  26. {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/dependabot.yml +0 -0
  27. {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/labels.yml +0 -0
  28. {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/release-drafter.yml +0 -0
  29. {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/workflows/labeler.yml +0 -0
  30. {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/workflows/lint.yml +0 -0
  31. {babeldoc-0.5.20 → babeldoc-0.5.22}/.gitignore +0 -0
  32. {babeldoc-0.5.20 → babeldoc-0.5.22}/.pre-commit-config.yaml +0 -0
  33. {babeldoc-0.5.20 → babeldoc-0.5.22}/LICENSE +0 -0
  34. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/asynchronize/__init__.py +0 -0
  35. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/babeldoc_exception/BabelDOCException.py +0 -0
  36. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/babeldoc_exception/__init__.py +0 -0
  37. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/README.md +0 -0
  38. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/__init__.py +0 -0
  39. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/base_doclayout.py +0 -0
  40. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/doclayout.py +0 -0
  41. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/rpc_doclayout.py +0 -0
  42. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/rpc_doclayout2.py +0 -0
  43. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/rpc_doclayout3.py +0 -0
  44. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/rpc_doclayout4.py +0 -0
  45. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/rpc_doclayout5.py +0 -0
  46. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/rpc_doclayout6.py +0 -0
  47. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/rpc_doclayout7.py +0 -0
  48. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/table_detection/rapidocr.py +0 -0
  49. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/__init__.py +0 -0
  50. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/__init__.py +0 -0
  51. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/babelpdf/base14.py +0 -0
  52. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/babelpdf/cidfont.py +0 -0
  53. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/babelpdf/encoding.py +0 -0
  54. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/babelpdf/utils.py +0 -0
  55. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/babelpdf/win_core.py +0 -0
  56. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/converter.py +0 -0
  57. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/__init__.py +0 -0
  58. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/backend/__init__.py +0 -0
  59. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/backend/pdf_creater.py +0 -0
  60. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/frontend/__init__.py +0 -0
  61. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/il_version_1.py +0 -0
  62. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/il_version_1.rnc +0 -0
  63. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/il_version_1.rng +0 -0
  64. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/il_version_1.xsd +0 -0
  65. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/__init__.py +0 -0
  66. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/add_debug_information.py +0 -0
  67. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/automatic_term_extractor.py +0 -0
  68. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/detect_scanned_file.py +0 -0
  69. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/il_translator.py +0 -0
  70. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/il_translator_llm_only.py +0 -0
  71. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/layout_parser.py +0 -0
  72. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/paragraph_finder.py +0 -0
  73. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/remove_descent.py +0 -0
  74. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/styles_and_formulas.py +0 -0
  75. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/table_parser.py +0 -0
  76. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/typesetting.py +0 -0
  77. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/__init__.py +0 -0
  78. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/extract_char.py +0 -0
  79. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/fontmap.py +0 -0
  80. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/formular_helper.py +0 -0
  81. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/layout_helper.py +0 -0
  82. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/matrix_helper.py +0 -0
  83. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/mupdf_helper.py +0 -0
  84. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/paragraph_helper.py +0 -0
  85. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/spatial_analyzer.py +0 -0
  86. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/style_helper.py +0 -0
  87. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/zstd_helper.py +0 -0
  88. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/xml_converter.py +0 -0
  89. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/high_level.py +0 -0
  90. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/pdfinterp.py +0 -0
  91. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/result_merger.py +0 -0
  92. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/split_manager.py +0 -0
  93. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/translation_config.py +0 -0
  94. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/glossary.py +0 -0
  95. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/LICENSE +0 -0
  96. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/__init__.py +0 -0
  97. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/_saslprep.py +0 -0
  98. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/arcfour.py +0 -0
  99. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/ascii85.py +0 -0
  100. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/casting.py +0 -0
  101. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/ccitt.py +0 -0
  102. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/78-EUC-H.pickle.gz +0 -0
  103. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/78-EUC-V.pickle.gz +0 -0
  104. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/78-H.pickle.gz +0 -0
  105. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/78-RKSJ-H.pickle.gz +0 -0
  106. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/78-RKSJ-V.pickle.gz +0 -0
  107. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/78-V.pickle.gz +0 -0
  108. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/78ms-RKSJ-H.pickle.gz +0 -0
  109. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/78ms-RKSJ-V.pickle.gz +0 -0
  110. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/83pv-RKSJ-H.pickle.gz +0 -0
  111. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/83pv-RKSJ-V.pickle.gz +0 -0
  112. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/90ms-RKSJ-H.pickle.gz +0 -0
  113. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/90ms-RKSJ-V.pickle.gz +0 -0
  114. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/90msp-RKSJ-H.pickle.gz +0 -0
  115. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/90msp-RKSJ-V.pickle.gz +0 -0
  116. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/90pv-RKSJ-H.pickle.gz +0 -0
  117. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/90pv-RKSJ-V.pickle.gz +0 -0
  118. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Add-H.pickle.gz +0 -0
  119. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Add-RKSJ-H.pickle.gz +0 -0
  120. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Add-RKSJ-V.pickle.gz +0 -0
  121. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Add-V.pickle.gz +0 -0
  122. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/B5-H.pickle.gz +0 -0
  123. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/B5-V.pickle.gz +0 -0
  124. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/B5pc-H.pickle.gz +0 -0
  125. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/B5pc-V.pickle.gz +0 -0
  126. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/CNS-EUC-H.pickle.gz +0 -0
  127. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/CNS-EUC-V.pickle.gz +0 -0
  128. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/CNS1-H.pickle.gz +0 -0
  129. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/CNS1-V.pickle.gz +0 -0
  130. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/CNS2-H.pickle.gz +0 -0
  131. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/CNS2-V.pickle.gz +0 -0
  132. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/ETHK-B5-H.pickle.gz +0 -0
  133. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/ETHK-B5-V.pickle.gz +0 -0
  134. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/ETen-B5-H.pickle.gz +0 -0
  135. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/ETen-B5-V.pickle.gz +0 -0
  136. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/ETenms-B5-H.pickle.gz +0 -0
  137. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/ETenms-B5-V.pickle.gz +0 -0
  138. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/EUC-H.pickle.gz +0 -0
  139. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/EUC-V.pickle.gz +0 -0
  140. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Ext-H.pickle.gz +0 -0
  141. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Ext-RKSJ-H.pickle.gz +0 -0
  142. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Ext-RKSJ-V.pickle.gz +0 -0
  143. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Ext-V.pickle.gz +0 -0
  144. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GB-EUC-H.pickle.gz +0 -0
  145. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GB-EUC-V.pickle.gz +0 -0
  146. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GB-H.pickle.gz +0 -0
  147. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GB-V.pickle.gz +0 -0
  148. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBK-EUC-H.pickle.gz +0 -0
  149. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBK-EUC-V.pickle.gz +0 -0
  150. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBK2K-H.pickle.gz +0 -0
  151. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBK2K-V.pickle.gz +0 -0
  152. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBKp-EUC-H.pickle.gz +0 -0
  153. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBKp-EUC-V.pickle.gz +0 -0
  154. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBT-EUC-H.pickle.gz +0 -0
  155. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBT-EUC-V.pickle.gz +0 -0
  156. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBT-H.pickle.gz +0 -0
  157. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBT-V.pickle.gz +0 -0
  158. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBTpc-EUC-H.pickle.gz +0 -0
  159. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBTpc-EUC-V.pickle.gz +0 -0
  160. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBpc-EUC-H.pickle.gz +0 -0
  161. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBpc-EUC-V.pickle.gz +0 -0
  162. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/H.pickle.gz +0 -0
  163. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKdla-B5-H.pickle.gz +0 -0
  164. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKdla-B5-V.pickle.gz +0 -0
  165. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKdlb-B5-H.pickle.gz +0 -0
  166. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKdlb-B5-V.pickle.gz +0 -0
  167. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKgccs-B5-H.pickle.gz +0 -0
  168. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKgccs-B5-V.pickle.gz +0 -0
  169. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKm314-B5-H.pickle.gz +0 -0
  170. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKm314-B5-V.pickle.gz +0 -0
  171. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKm471-B5-H.pickle.gz +0 -0
  172. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKm471-B5-V.pickle.gz +0 -0
  173. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKscs-B5-H.pickle.gz +0 -0
  174. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKscs-B5-V.pickle.gz +0 -0
  175. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Hankaku-H.pickle.gz +0 -0
  176. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Hankaku-V.pickle.gz +0 -0
  177. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Hiragana-H.pickle.gz +0 -0
  178. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Hiragana-V.pickle.gz +0 -0
  179. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSC-EUC-H.pickle.gz +0 -0
  180. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSC-EUC-V.pickle.gz +0 -0
  181. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSC-H.pickle.gz +0 -0
  182. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSC-Johab-H.pickle.gz +0 -0
  183. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSC-Johab-V.pickle.gz +0 -0
  184. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSC-V.pickle.gz +0 -0
  185. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSCms-UHC-H.pickle.gz +0 -0
  186. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSCms-UHC-HW-H.pickle.gz +0 -0
  187. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSCms-UHC-HW-V.pickle.gz +0 -0
  188. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSCms-UHC-V.pickle.gz +0 -0
  189. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSCpc-EUC-H.pickle.gz +0 -0
  190. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSCpc-EUC-V.pickle.gz +0 -0
  191. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Katakana-H.pickle.gz +0 -0
  192. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Katakana-V.pickle.gz +0 -0
  193. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/NWP-H.pickle.gz +0 -0
  194. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/NWP-V.pickle.gz +0 -0
  195. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/README.txt +0 -0
  196. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/RKSJ-H.pickle.gz +0 -0
  197. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/RKSJ-V.pickle.gz +0 -0
  198. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Roman-H.pickle.gz +0 -0
  199. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Roman-V.pickle.gz +0 -0
  200. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniCNS-UCS2-H.pickle.gz +0 -0
  201. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniCNS-UCS2-V.pickle.gz +0 -0
  202. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniCNS-UTF16-H.pickle.gz +0 -0
  203. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniCNS-UTF16-V.pickle.gz +0 -0
  204. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniCNS-UTF32-H.pickle.gz +0 -0
  205. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniCNS-UTF32-V.pickle.gz +0 -0
  206. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniCNS-UTF8-H.pickle.gz +0 -0
  207. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniCNS-UTF8-V.pickle.gz +0 -0
  208. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniGB-UCS2-H.pickle.gz +0 -0
  209. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniGB-UCS2-V.pickle.gz +0 -0
  210. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniGB-UTF16-H.pickle.gz +0 -0
  211. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniGB-UTF16-V.pickle.gz +0 -0
  212. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniGB-UTF32-H.pickle.gz +0 -0
  213. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniGB-UTF32-V.pickle.gz +0 -0
  214. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniGB-UTF8-H.pickle.gz +0 -0
  215. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniGB-UTF8-V.pickle.gz +0 -0
  216. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS-UCS2-H.pickle.gz +0 -0
  217. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS-UCS2-HW-H.pickle.gz +0 -0
  218. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS-UCS2-HW-V.pickle.gz +0 -0
  219. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS-UCS2-V.pickle.gz +0 -0
  220. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS-UTF16-H.pickle.gz +0 -0
  221. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS-UTF16-V.pickle.gz +0 -0
  222. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS-UTF32-H.pickle.gz +0 -0
  223. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS-UTF32-V.pickle.gz +0 -0
  224. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS-UTF8-H.pickle.gz +0 -0
  225. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS-UTF8-V.pickle.gz +0 -0
  226. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS2004-UTF16-H.pickle.gz +0 -0
  227. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS2004-UTF16-V.pickle.gz +0 -0
  228. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS2004-UTF32-H.pickle.gz +0 -0
  229. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS2004-UTF32-V.pickle.gz +0 -0
  230. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS2004-UTF8-H.pickle.gz +0 -0
  231. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS2004-UTF8-V.pickle.gz +0 -0
  232. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJISX0213-UTF32-H.pickle.gz +0 -0
  233. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJISX0213-UTF32-V.pickle.gz +0 -0
  234. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJISX02132004-UTF32-H.pickle.gz +0 -0
  235. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJISX02132004-UTF32-V.pickle.gz +0 -0
  236. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniKS-UCS2-H.pickle.gz +0 -0
  237. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniKS-UCS2-V.pickle.gz +0 -0
  238. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniKS-UTF16-H.pickle.gz +0 -0
  239. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniKS-UTF16-V.pickle.gz +0 -0
  240. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniKS-UTF32-H.pickle.gz +0 -0
  241. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniKS-UTF32-V.pickle.gz +0 -0
  242. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniKS-UTF8-H.pickle.gz +0 -0
  243. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniKS-UTF8-V.pickle.gz +0 -0
  244. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/V.pickle.gz +0 -0
  245. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/WP-Symbol-H.pickle.gz +0 -0
  246. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/WP-Symbol-V.pickle.gz +0 -0
  247. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/to-unicode-Adobe-CNS1.pickle.gz +0 -0
  248. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/to-unicode-Adobe-GB1.pickle.gz +0 -0
  249. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/to-unicode-Adobe-Japan1.pickle.gz +0 -0
  250. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/to-unicode-Adobe-Korea1.pickle.gz +0 -0
  251. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmapdb.py +0 -0
  252. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/converter.py +0 -0
  253. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/data_structures.py +0 -0
  254. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/encodingdb.py +0 -0
  255. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/fontmetrics.py +0 -0
  256. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/glyphlist.py +0 -0
  257. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/high_level.py +0 -0
  258. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/image.py +0 -0
  259. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/jbig2.py +0 -0
  260. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/latin_enc.py +0 -0
  261. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/layout.py +0 -0
  262. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/lzw.py +0 -0
  263. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/pdfcolor.py +0 -0
  264. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/pdfdevice.py +0 -0
  265. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/pdfdocument.py +0 -0
  266. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/pdfexceptions.py +0 -0
  267. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/pdfinterp.py +0 -0
  268. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/pdfpage.py +0 -0
  269. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/pdfparser.py +0 -0
  270. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/pdftypes.py +0 -0
  271. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/psexceptions.py +0 -0
  272. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/psparser.py +0 -0
  273. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/py.typed +0 -0
  274. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/runlength.py +0 -0
  275. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/settings.py +0 -0
  276. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/utils.py +0 -0
  277. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/progress_monitor.py +0 -0
  278. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/tools/generate_font_metadata.py +0 -0
  279. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/tools/italic_assistance.py +0 -0
  280. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/tools/italic_recognize_tool.py +0 -0
  281. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/translator/__init__.py +0 -0
  282. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/translator/cache.py +0 -0
  283. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/translator/translator.py +0 -0
  284. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/utils/__init__.py +0 -0
  285. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/utils/atomic_integer.py +0 -0
  286. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/utils/memory.py +0 -0
  287. {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/utils/priority_thread_pool_executor.py +0 -0
  288. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/CODE_OF_CONDUCT.md +0 -0
  289. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/CONTRIBUTING.md +0 -0
  290. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md +0 -0
  291. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/ImplementationDetails/ILTranslator/ILTranslator.md +0 -0
  292. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/ImplementationDetails/PDFCreation/PDFCreation.md +0 -0
  293. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/ImplementationDetails/PDFParsing/PDFParsing.md +0 -0
  294. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md +0 -0
  295. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/ImplementationDetails/README.md +0 -0
  296. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/ImplementationDetails/StylesAndFormulas/StylesAndFormulas.md +0 -0
  297. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/ImplementationDetails/Typesetting/Typesetting.md +0 -0
  298. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/README.md +0 -0
  299. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/deploy.sh +0 -0
  300. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/example/demo_glossary.csv +0 -0
  301. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-banner.png +0 -0
  302. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.png +0 -0
  303. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.svg +0 -0
  304. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-big-logo-with-transparent-background.png +0 -0
  305. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-big-logo-with-transparent-background.svg +0 -0
  306. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-big-logo.png +0 -0
  307. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-contributor_reward_example.png +0 -0
  308. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-preview.gif +0 -0
  309. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-small-logo-with-transparent-background.png +0 -0
  310. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-small-logo-with-transparent-background.svg +0 -0
  311. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-small-logo.png +0 -0
  312. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/index.md +0 -0
  313. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/intro-to-pdf-object.md +0 -0
  314. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/requirements.txt +0 -0
  315. {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/supported_languages.md +0 -0
  316. {babeldoc-0.5.20 → babeldoc-0.5.22}/mkdocs.yml +0 -0
  317. {babeldoc-0.5.20 → babeldoc-0.5.22}/tests/test_translation_cache_cleanup.py +0 -0
@@ -28,7 +28,11 @@ body:
28
28
  attributes:
29
29
  value: |
30
30
  Thank you for using **BabelDOC** and helping us improve it! 🙏
31
+ Please confirm again that the above checklist items have been carefully executed! (If you have not carefully executed them, the issue will be closed directly without any response)
31
32
 
33
+ Please also note:
34
+ - If you are using a downstream project like pdf2zh-next, please submit an issue directly to the downstream application. Only when you confirm that this issue is a problem with the core library of BabelDOC, submit this issue.
35
+ - The CLI is only used for debugging purposes, we do not provide any technical support for CLI usage.
32
36
  - type: textarea
33
37
  id: environment
34
38
  attributes:
@@ -16,6 +16,15 @@ body:
16
16
  required: true
17
17
  - label: I have fully read and understood the [README](https://github.com/funstory-ai/BabelDOC/blob/main/README.md)
18
18
  required: true
19
+ - label: This feature is not related to BabelDOC CLI. The CLI is only used for debugging purposes, we do not accept any feature requests related to the CLI.
20
+ required: true
21
+
22
+ - type: markdown
23
+ attributes:
24
+ value: |
25
+ 如果您想自部署 BabelDOC,请使用 [PDFMathTranslate-next](https://github.com/PDFMathTranslate-next/PDFMathTranslate-next) 代替。若其功能无法满足,请向 [PDFMathTranslate-next](https://github.com/PDFMathTranslate-next/PDFMathTranslate-next) 提交功能请求。
26
+ If you wish to self-host BabelDOC, please use [PDFMathTranslate-next](https://github.com/PDFMathTranslate-next/PDFMathTranslate-next) instead. If its features do not meet your needs, please submit a feature request to [PDFMathTranslate-next](https://github.com/PDFMathTranslate-next/PDFMathTranslate-next).
27
+
19
28
 
20
29
  - type: textarea
21
30
  id: describe
@@ -59,7 +59,7 @@ jobs:
59
59
 
60
60
  # Initializes the CodeQL tools for scanning.
61
61
  - name: Initialize CodeQL
62
- uses: github/codeql-action/init@v3
62
+ uses: github/codeql-action/init@v4
63
63
  with:
64
64
  languages: ${{ matrix.language }}
65
65
  build-mode: ${{ matrix.build-mode }}
@@ -87,6 +87,6 @@ jobs:
87
87
  exit 1
88
88
 
89
89
  - name: Perform CodeQL Analysis
90
- uses: github/codeql-action/analyze@v3
90
+ uses: github/codeql-action/analyze@v4
91
91
  with:
92
92
  category: "/language:${{matrix.language}}"
@@ -17,7 +17,7 @@ jobs:
17
17
  git config user.name github-actions[bot]
18
18
  git config user.email 41898282+github-actions[bot]@users.noreply.github.com
19
19
  - name: Setup uv with Python 3.12
20
- uses: astral-sh/setup-uv@4959332f0f014c5280e7eac8b70c90cb574c9f9b # v6.6.0
20
+ uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7.1.2
21
21
  with:
22
22
  python-version: "3.12"
23
23
  enable-cache: true
@@ -12,7 +12,7 @@ jobs:
12
12
  - uses: actions/checkout@v5
13
13
 
14
14
  - name: Install Python
15
- uses: actions/setup-python@v5
15
+ uses: actions/setup-python@v6
16
16
  with:
17
17
  python-version: '3.11'
18
18
 
@@ -20,7 +20,7 @@ jobs:
20
20
  run: pip install ruff
21
21
 
22
22
  - name: Install reviewdog
23
- uses: reviewdog/action-setup@e04ffabe3898a0af8d0fb1af00c188831c4b5893 # v1.3.2
23
+ uses: reviewdog/action-setup@d8edfce3dd5e1ec6978745e801f9c50b5ef80252 # v1.4.0
24
24
  with:
25
25
  reviewdog_version: latest
26
26
 
@@ -35,7 +35,7 @@ jobs:
35
35
  token: ${{ secrets.GITHUB_TOKEN }}
36
36
 
37
37
  - name: Setup uv with Python 3.12
38
- uses: astral-sh/setup-uv@4959332f0f014c5280e7eac8b70c90cb574c9f9b # v6.6.0
38
+ uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7.1.2
39
39
  with:
40
40
  python-version: "3.12"
41
41
  enable-cache: true
@@ -96,7 +96,7 @@ jobs:
96
96
  path: dist/
97
97
 
98
98
  - name: Publish distribution 📦 to PyPI
99
- uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # v1.12.4
99
+ uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
100
100
 
101
101
  publish-to-testpypi:
102
102
  name: Publish Python 🐍 distribution 📦 to TestPyPI
@@ -120,7 +120,7 @@ jobs:
120
120
  path: dist/
121
121
 
122
122
  - name: Publish distribution 📦 to TestPyPI
123
- uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # v1.12.4
123
+ uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
124
124
  with:
125
125
  repository-url: https://test.pypi.org/legacy/
126
126
 
@@ -28,7 +28,7 @@ jobs:
28
28
  path: ~/.cache/babeldoc
29
29
  key: babeldoc-assets-${{ hashFiles('babeldoc/assets/embedding_assets_metadata.py') }}
30
30
  - name: Setup uv with Python ${{ matrix.python-version }}
31
- uses: astral-sh/setup-uv@4959332f0f014c5280e7eac8b70c90cb574c9f9b # v6.6.0
31
+ uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7.1.2
32
32
  with:
33
33
  python-version: ${{ matrix.python-version }}
34
34
  enable-cache: true
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: BabelDOC
3
- Version: 0.5.20
3
+ Version: 0.5.22
4
4
  Summary: Yet Another Document Translator
5
5
  Project-URL: Homepage, https://github.com/funstory-ai/BabelDOC
6
6
  Project-URL: Issues, https://github.com/funstory-ai/BabelDOC/issues
@@ -91,7 +91,7 @@ Description-Content-Type: text/markdown
91
91
  PDF scientific paper translation and bilingual comparison library.
92
92
 
93
93
  - **Online Service**: Beta version launched [Immersive Translate - BabelDOC](https://app.immersivetranslate.com/babel-doc/) Free usage quota is available; please refer to the FAQ section on the page for details.
94
- - **Self-deployment**: [PDFMathTranslate 2.0](https://github.com/PDFMathTranslate/PDFMathTranslate-next) support for BabelDOC, available for self-deployment + WebUI with more translation services.
94
+ - **Self-deployment**: [PDFMathTranslate-next](https://github.com/PDFMathTranslate-next/PDFMathTranslate-next) support for BabelDOC, available for self-deployment + WebUI with more translation services.
95
95
  - Provides a simple [command line interface](#getting-started).
96
96
  - Provides a [Python API](#python-api).
97
97
  - Mainly designed to be embedded into other programs, but can also be used directly for simple translation tasks.
@@ -35,7 +35,7 @@
35
35
  PDF scientific paper translation and bilingual comparison library.
36
36
 
37
37
  - **Online Service**: Beta version launched [Immersive Translate - BabelDOC](https://app.immersivetranslate.com/babel-doc/) Free usage quota is available; please refer to the FAQ section on the page for details.
38
- - **Self-deployment**: [PDFMathTranslate 2.0](https://github.com/PDFMathTranslate/PDFMathTranslate-next) support for BabelDOC, available for self-deployment + WebUI with more translation services.
38
+ - **Self-deployment**: [PDFMathTranslate-next](https://github.com/PDFMathTranslate-next/PDFMathTranslate-next) support for BabelDOC, available for self-deployment + WebUI with more translation services.
39
39
  - Provides a simple [command line interface](#getting-started).
40
40
  - Provides a [Python API](#python-api).
41
41
  - Mainly designed to be embedded into other programs, but can also be used directly for simple translation tasks.
@@ -0,0 +1 @@
1
+ __version__ = "0.5.22"
@@ -1,5 +1,6 @@
1
1
  import asyncio
2
2
  import hashlib
3
+ import json
3
4
  import logging
4
5
  import threading
5
6
  import zipfile
@@ -7,6 +8,8 @@ from pathlib import Path
7
8
 
8
9
  import httpx
9
10
  from babeldoc.assets import embedding_assets_metadata
11
+ from babeldoc.assets.embedding_assets_metadata import CMAP_METADATA
12
+ from babeldoc.assets.embedding_assets_metadata import CMAP_URL_BY_UPSTREAM
10
13
  from babeldoc.assets.embedding_assets_metadata import DOC_LAYOUT_ONNX_MODEL_URL
11
14
  from babeldoc.assets.embedding_assets_metadata import (
12
15
  DOCLAYOUT_YOLO_DOCSTRUCTBENCH_IMGSZ1024ONNX_SHA3_256,
@@ -27,6 +30,11 @@ from tenacity import wait_exponential
27
30
  logger = logging.getLogger(__name__)
28
31
 
29
32
 
33
+ _FASTEST_FONT_UPSTREAM_LOCK = asyncio.Lock()
34
+ _FASTEST_FONT_UPSTREAM: str | None = None
35
+ _FASTEST_FONT_METADATA: dict | None = None
36
+
37
+
30
38
  class ResultContainer:
31
39
  def __init__(self):
32
40
  self.result = None
@@ -140,9 +148,10 @@ async def get_font_metadata(
140
148
  return upstream, response.json()
141
149
 
142
150
 
143
- async def get_fastest_upstream_for_font(
144
- client: httpx.AsyncClient | None = None, exclude_upstream: list[str] = None
145
- ):
151
+ async def _get_fastest_upstream_for_font_internal(
152
+ client: httpx.AsyncClient | None = None, exclude_upstream: list[str] | None = None
153
+ ) -> tuple[str | None, dict | None]:
154
+ """Find the fastest upstream for font metadata without using cached result."""
146
155
  tasks: list[asyncio.Task[tuple[str, dict]]] = []
147
156
  for upstream in FONT_METADATA_URL:
148
157
  if exclude_upstream and upstream in exclude_upstream:
@@ -161,6 +170,34 @@ async def get_fastest_upstream_for_font(
161
170
  return None, None
162
171
 
163
172
 
173
+ async def get_fastest_upstream_for_font(
174
+ client: httpx.AsyncClient | None = None, exclude_upstream: list[str] | None = None
175
+ ) -> tuple[str | None, dict | None]:
176
+ """Get the fastest upstream for font metadata with cached result.
177
+
178
+ The cached upstream is only used when exclude_upstream is None.
179
+ """
180
+ global _FASTEST_FONT_UPSTREAM, _FASTEST_FONT_METADATA
181
+
182
+ if exclude_upstream is None and _FASTEST_FONT_UPSTREAM is not None:
183
+ return _FASTEST_FONT_UPSTREAM, _FASTEST_FONT_METADATA
184
+
185
+ if exclude_upstream is not None:
186
+ # Do not use or update cache when exclude_upstream is provided.
187
+ return await _get_fastest_upstream_for_font_internal(client, exclude_upstream)
188
+
189
+ async with _FASTEST_FONT_UPSTREAM_LOCK:
190
+ if _FASTEST_FONT_UPSTREAM is not None:
191
+ return _FASTEST_FONT_UPSTREAM, _FASTEST_FONT_METADATA
192
+
193
+ upstream, metadata = await _get_fastest_upstream_for_font_internal(client)
194
+ if upstream is not None:
195
+ _FASTEST_FONT_UPSTREAM = upstream
196
+ _FASTEST_FONT_METADATA = metadata
197
+ logger.info(f"Fastest font upstream determined: {upstream}")
198
+ return upstream, metadata
199
+
200
+
164
201
  async def get_fastest_upstream_for_model(client: httpx.AsyncClient | None = None):
165
202
  return await get_fastest_upstream_for_font(client, exclude_upstream=["github"])
166
203
 
@@ -289,6 +326,72 @@ def get_font_and_metadata(font_file_name: str):
289
326
  return run_coro(get_font_and_metadata_async(font_file_name))
290
327
 
291
328
 
329
+ async def get_cmap_file_path_async(
330
+ name: str, client: httpx.AsyncClient | None = None
331
+ ) -> Path:
332
+ """Get cached cmap file path, downloading it if necessary."""
333
+ if name.endswith(".json"):
334
+ file_name = name
335
+ else:
336
+ file_name = f"{name}.json"
337
+
338
+ if file_name not in CMAP_METADATA:
339
+ logger.critical(f"CMap {file_name} not found in CMAP_METADATA")
340
+ exit(1)
341
+
342
+ meta = CMAP_METADATA[file_name]
343
+ cache_file_path = get_cache_file_path(file_name, "cmap")
344
+ if verify_file(cache_file_path, meta["sha3_256"]):
345
+ return cache_file_path
346
+
347
+ logger.info(f"CMap {cache_file_path} not found or corrupted, downloading...")
348
+ await download_cmap_file_async(file_name, client)
349
+ if not verify_file(cache_file_path, meta["sha3_256"]):
350
+ logger.critical(f"Failed to verify downloaded cmap file: {cache_file_path}")
351
+ exit(1)
352
+ return cache_file_path
353
+
354
+
355
+ async def download_cmap_file_async(
356
+ file_name: str, client: httpx.AsyncClient | None = None
357
+ ) -> Path:
358
+ """Download a single cmap file to cache directory."""
359
+ if file_name not in CMAP_METADATA:
360
+ logger.critical(f"CMap {file_name} not found in CMAP_METADATA")
361
+ exit(1)
362
+
363
+ fastest_upstream, _ = await get_fastest_upstream_for_font(client)
364
+ if fastest_upstream is None:
365
+ logger.critical("Failed to get fastest upstream for cmap")
366
+ exit(1)
367
+
368
+ if fastest_upstream not in CMAP_URL_BY_UPSTREAM:
369
+ logger.critical(f"Invalid fastest upstream for cmap: {fastest_upstream}")
370
+ exit(1)
371
+
372
+ url = CMAP_URL_BY_UPSTREAM[fastest_upstream](file_name)
373
+ cache_file_path = get_cache_file_path(file_name, "cmap")
374
+ sha3_256 = CMAP_METADATA[file_name]["sha3_256"]
375
+ await download_file(client, url, cache_file_path, sha3_256)
376
+ return cache_file_path
377
+
378
+
379
+ async def get_cmap_data_async(
380
+ name: str, client: httpx.AsyncClient | None = None
381
+ ) -> dict:
382
+ """Load cmap json data from cached file, downloading it if necessary."""
383
+ path = await get_cmap_file_path_async(name, client)
384
+ return json.loads(path.read_text())
385
+
386
+
387
+ def get_cmap_file_path(name: str):
388
+ return run_coro(get_cmap_file_path_async(name))
389
+
390
+
391
+ def get_cmap_data(name: str):
392
+ return run_coro(get_cmap_data_async(name))
393
+
394
+
292
395
  def get_font_family(lang_code: str):
293
396
  font_family = embedding_assets_metadata.get_font_family(lang_code)
294
397
  return font_family
@@ -322,6 +425,31 @@ async def download_all_fonts_async(client: httpx.AsyncClient | None = None):
322
425
  await asyncio.gather(*font_tasks)
323
426
 
324
427
 
428
+ async def download_all_cmaps_async(client: httpx.AsyncClient | None = None):
429
+ """Download all cmap files defined in CMAP_METADATA."""
430
+ for cmap_file_name, meta in CMAP_METADATA.items():
431
+ if not verify_file(
432
+ get_cache_file_path(cmap_file_name, "cmap"),
433
+ meta["sha3_256"],
434
+ ):
435
+ break
436
+ else:
437
+ logger.debug("All cmaps are already downloaded")
438
+ return
439
+
440
+ fastest_upstream, _ = await get_fastest_upstream_for_font(client)
441
+ if fastest_upstream is None:
442
+ logger.error("Failed to get fastest upstream for cmap")
443
+ exit(1)
444
+ logger.info(f"Downloading cmaps from {fastest_upstream}")
445
+
446
+ cmap_tasks = [
447
+ asyncio.create_task(get_cmap_file_path_async(cmap_file_name, client))
448
+ for cmap_file_name in CMAP_METADATA
449
+ ]
450
+ await asyncio.gather(*cmap_tasks)
451
+
452
+
325
453
  async def async_warmup():
326
454
  logger.info("Downloading all assets...")
327
455
  from tiktoken import encoding_for_model
@@ -333,7 +461,8 @@ async def async_warmup():
333
461
  get_table_detection_rapidocr_model_path_async(client)
334
462
  )
335
463
  font_tasks = asyncio.create_task(download_all_fonts_async(client))
336
- await asyncio.gather(onnx_task, onnx_task2, font_tasks)
464
+ cmap_tasks = asyncio.create_task(download_all_cmaps_async(client))
465
+ await asyncio.gather(onnx_task, onnx_task2, font_tasks, cmap_tasks)
337
466
 
338
467
 
339
468
  def warmup():
@@ -341,10 +470,11 @@ def warmup():
341
470
 
342
471
 
343
472
  def generate_all_assets_file_list():
344
- result = {}
473
+ result: dict[str, list[dict[str, str]]] = {}
345
474
  result["fonts"] = []
346
475
  result["models"] = []
347
476
  result["tiktoken"] = []
477
+ result["cmap"] = []
348
478
  for font_file_name in EMBEDDING_FONT_METADATA:
349
479
  result["fonts"].append(
350
480
  {
@@ -352,6 +482,13 @@ def generate_all_assets_file_list():
352
482
  "sha3_256": EMBEDDING_FONT_METADATA[font_file_name]["sha3_256"],
353
483
  }
354
484
  )
485
+ for cmap_file_name in CMAP_METADATA:
486
+ result["cmap"].append(
487
+ {
488
+ "name": cmap_file_name,
489
+ "sha3_256": CMAP_METADATA[cmap_file_name]["sha3_256"],
490
+ }
491
+ )
355
492
  for tiktoken_file, sha3_256 in TIKTOKEN_CACHES.items():
356
493
  result["tiktoken"].append(
357
494
  {