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.
- {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/ISSUE_TEMPLATE/bug_report.yaml +4 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/ISSUE_TEMPLATE/feature_request.yaml +9 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/workflows/codeql.yml +2 -2
- {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/workflows/docs.yml +1 -1
- {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/workflows/pr-lint.yml +2 -2
- {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/workflows/publish-to-pypi.yml +3 -3
- {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/workflows/test.yml +1 -1
- {babeldoc-0.5.20 → babeldoc-0.5.22}/PKG-INFO +2 -2
- {babeldoc-0.5.20 → babeldoc-0.5.22}/README.md +1 -1
- babeldoc-0.5.22/babeldoc/__init__.py +1 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/assets/assets.py +142 -5
- babeldoc-0.5.22/babeldoc/assets/embedding_assets_metadata.py +1460 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/const.py +1 -1
- babeldoc-0.5.22/babeldoc/format/pdf/babelpdf/cmap.py +147 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/frontend/il_creater.py +3 -1
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/main.py +1 -1
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/pdffont.py +23 -0
- babeldoc-0.5.22/babeldoc/tools/generate_cmap_metadata.py +73 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/CONTRIBUTOR_REWARD.md +3 -4
- {babeldoc-0.5.20 → babeldoc-0.5.22}/pyproject.toml +2 -2
- babeldoc-0.5.20/babeldoc/__init__.py +0 -1
- babeldoc-0.5.20/babeldoc/assets/embedding_assets_metadata.py +0 -720
- {babeldoc-0.5.20 → babeldoc-0.5.22}/.cursorignore +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/PULL_REQUEST_TEMPLATE/pr_form.yml +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/dependabot.yml +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/labels.yml +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/release-drafter.yml +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/workflows/labeler.yml +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/.github/workflows/lint.yml +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/.gitignore +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/.pre-commit-config.yaml +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/LICENSE +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/asynchronize/__init__.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/babeldoc_exception/BabelDOCException.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/babeldoc_exception/__init__.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/README.md +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/__init__.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/base_doclayout.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/doclayout.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/rpc_doclayout.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/rpc_doclayout2.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/rpc_doclayout3.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/rpc_doclayout4.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/rpc_doclayout5.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/rpc_doclayout6.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/rpc_doclayout7.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/docvision/table_detection/rapidocr.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/__init__.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/__init__.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/babelpdf/base14.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/babelpdf/cidfont.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/babelpdf/encoding.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/babelpdf/utils.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/babelpdf/win_core.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/converter.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/__init__.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/backend/__init__.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/backend/pdf_creater.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/frontend/__init__.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/il_version_1.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/il_version_1.rnc +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/il_version_1.rng +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/il_version_1.xsd +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/__init__.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/add_debug_information.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/automatic_term_extractor.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/detect_scanned_file.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/il_translator.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/il_translator_llm_only.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/layout_parser.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/paragraph_finder.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/remove_descent.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/styles_and_formulas.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/table_parser.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/midend/typesetting.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/__init__.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/extract_char.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/fontmap.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/formular_helper.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/layout_helper.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/matrix_helper.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/mupdf_helper.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/paragraph_helper.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/spatial_analyzer.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/style_helper.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/utils/zstd_helper.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/document_il/xml_converter.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/high_level.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/pdfinterp.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/result_merger.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/split_manager.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/format/pdf/translation_config.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/glossary.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/LICENSE +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/__init__.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/_saslprep.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/arcfour.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/ascii85.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/casting.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/ccitt.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/78-EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/78-EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/78-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/78-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/78-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/78-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/78ms-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/78ms-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/83pv-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/83pv-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/90ms-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/90ms-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/90msp-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/90msp-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/90pv-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/90pv-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Add-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Add-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Add-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Add-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/B5-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/B5-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/B5pc-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/B5pc-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/CNS-EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/CNS-EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/CNS1-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/CNS1-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/CNS2-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/CNS2-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/ETHK-B5-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/ETHK-B5-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/ETen-B5-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/ETen-B5-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/ETenms-B5-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/ETenms-B5-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Ext-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Ext-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Ext-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Ext-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GB-EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GB-EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GB-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GB-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBK-EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBK-EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBK2K-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBK2K-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBKp-EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBKp-EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBT-EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBT-EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBT-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBT-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBTpc-EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBTpc-EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBpc-EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/GBpc-EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKdla-B5-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKdla-B5-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKdlb-B5-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKdlb-B5-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKgccs-B5-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKgccs-B5-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKm314-B5-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKm314-B5-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKm471-B5-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKm471-B5-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKscs-B5-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/HKscs-B5-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Hankaku-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Hankaku-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Hiragana-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Hiragana-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSC-EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSC-EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSC-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSC-Johab-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSC-Johab-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSC-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSCms-UHC-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSCms-UHC-HW-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSCms-UHC-HW-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSCms-UHC-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSCpc-EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/KSCpc-EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Katakana-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Katakana-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/NWP-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/NWP-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/README.txt +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Roman-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/Roman-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniCNS-UCS2-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniCNS-UCS2-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniCNS-UTF16-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniCNS-UTF16-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniCNS-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniCNS-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniCNS-UTF8-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniCNS-UTF8-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniGB-UCS2-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniGB-UCS2-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniGB-UTF16-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniGB-UTF16-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniGB-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniGB-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniGB-UTF8-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniGB-UTF8-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS-UCS2-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS-UCS2-HW-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS-UCS2-HW-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS-UCS2-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS-UTF16-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS-UTF16-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS-UTF8-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS-UTF8-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS2004-UTF16-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS2004-UTF16-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS2004-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS2004-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS2004-UTF8-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJIS2004-UTF8-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJISX0213-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJISX0213-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJISX02132004-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniJISX02132004-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniKS-UCS2-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniKS-UCS2-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniKS-UTF16-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniKS-UTF16-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniKS-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniKS-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniKS-UTF8-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/UniKS-UTF8-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/WP-Symbol-H.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/WP-Symbol-V.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/to-unicode-Adobe-CNS1.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/to-unicode-Adobe-GB1.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/to-unicode-Adobe-Japan1.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmap/to-unicode-Adobe-Korea1.pickle.gz +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/cmapdb.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/converter.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/data_structures.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/encodingdb.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/fontmetrics.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/glyphlist.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/high_level.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/image.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/jbig2.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/latin_enc.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/layout.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/lzw.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/pdfcolor.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/pdfdevice.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/pdfdocument.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/pdfexceptions.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/pdfinterp.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/pdfpage.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/pdfparser.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/pdftypes.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/psexceptions.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/psparser.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/py.typed +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/runlength.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/settings.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/pdfminer/utils.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/progress_monitor.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/tools/generate_font_metadata.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/tools/italic_assistance.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/tools/italic_recognize_tool.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/translator/__init__.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/translator/cache.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/translator/translator.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/utils/__init__.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/utils/atomic_integer.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/utils/memory.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/babeldoc/utils/priority_thread_pool_executor.py +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/CODE_OF_CONDUCT.md +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/CONTRIBUTING.md +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/ImplementationDetails/ILTranslator/ILTranslator.md +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/ImplementationDetails/PDFCreation/PDFCreation.md +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/ImplementationDetails/PDFParsing/PDFParsing.md +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/ImplementationDetails/README.md +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/ImplementationDetails/StylesAndFormulas/StylesAndFormulas.md +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/ImplementationDetails/Typesetting/Typesetting.md +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/README.md +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/deploy.sh +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/example/demo_glossary.csv +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-banner.png +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.png +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.svg +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-big-logo-with-transparent-background.png +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-big-logo-with-transparent-background.svg +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-big-logo.png +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-contributor_reward_example.png +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-preview.gif +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-small-logo-with-transparent-background.png +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-small-logo-with-transparent-background.svg +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/images/babeldoc-small-logo.png +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/index.md +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/intro-to-pdf-object.md +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/requirements.txt +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/docs/supported_languages.md +0 -0
- {babeldoc-0.5.20 → babeldoc-0.5.22}/mkdocs.yml +0 -0
- {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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
{
|