BabelDOC 0.3.21__tar.gz → 0.3.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.3.21 → babeldoc-0.3.22}/PKG-INFO +1 -1
- babeldoc-0.3.22/babeldoc/__init__.py +1 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/asynchronize/__init__.py +1 -1
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/const.py +1 -1
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/frontend/il_creater.py +3 -1
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/translator/translator.py +13 -6
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/high_level.py +1 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/main.py +1 -1
- {babeldoc-0.3.21 → babeldoc-0.3.22}/pyproject.toml +2 -2
- {babeldoc-0.3.21 → babeldoc-0.3.22}/uv.lock +1 -1
- babeldoc-0.3.21/babeldoc/__init__.py +0 -1
- {babeldoc-0.3.21 → babeldoc-0.3.22}/.cursorignore +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/PULL_REQUEST_TEMPLATE/pr_form.yml +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/dependabot.yml +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/labels.yml +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/release-drafter.yml +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/workflows/codeql.yml +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/workflows/docs.yml +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/workflows/labeler.yml +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/workflows/lint.yml +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/workflows/pr-lint.yml +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/workflows/publish-to-pypi.yml +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/workflows/test.yml +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/.gitignore +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/.pre-commit-config.yaml +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/LICENSE +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/README.md +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/assets/assets.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/assets/embedding_assets_metadata.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/converter.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/__init__.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/babeldoc_exception/BabelDOCException.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/backend/__init__.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/backend/pdf_creater.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/frontend/__init__.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/il_version_1.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/il_version_1.rnc +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/il_version_1.rng +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/il_version_1.xsd +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/__init__.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/add_debug_information.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/detect_scanned_file.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/il_translator.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/il_translator_llm_only.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/layout_parser.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/paragraph_finder.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/remove_descent.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/styles_and_formulas.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/table_parser.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/typesetting.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/translator/__init__.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/translator/cache.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/utils/atomic_integer.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/utils/fontmap.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/utils/layout_helper.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/utils/priority_thread_pool_executor.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/utils/style_helper.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/xml_converter.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/docvision/README.md +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/docvision/__init__.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/docvision/doclayout.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/docvision/rpc_doclayout.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/docvision/table_detection/rapidocr.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/format/office/__init__.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/pdfinterp.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/progress_monitor.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/result_merger.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/split_manager.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/tools/generate_font_metadata.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/tools/italic_assistance.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/tools/italic_recognize_tool.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/translation_config.py +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/CODE_OF_CONDUCT.md +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/CONTRIBUTING.md +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/CONTRIBUTOR_REWARD.md +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/ImplementationDetails/ILTranslator/ILTranslator.md +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/ImplementationDetails/PDFCreation/PDFCreation.md +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/ImplementationDetails/PDFParsing/PDFParsing.md +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/ImplementationDetails/README.md +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/ImplementationDetails/StylesAndFormulas/StylesAndFormulas.md +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/ImplementationDetails/Typesetting/Typesetting.md +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/README.md +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/deploy.sh +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-banner.png +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.png +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.svg +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-big-logo-with-transparent-background.png +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-big-logo-with-transparent-background.svg +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-big-logo.png +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-contributor_reward_example.png +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-preview.gif +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-small-logo-with-transparent-background.png +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-small-logo-with-transparent-background.svg +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-small-logo.png +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/index.md +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/intro-to-pdf-object.md +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/requirements.txt +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/mkdocs.yml +0 -0
- {babeldoc-0.3.21 → babeldoc-0.3.22}/tests/test_translation_config.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.3.22"
|
|
@@ -23,7 +23,7 @@ class AsyncCallback:
|
|
|
23
23
|
self.loop.call_soon_threadsafe(self.queue.put_nowait, args)
|
|
24
24
|
|
|
25
25
|
# Add a small delay to release the GIL, ensuring the event loop has time to process messages
|
|
26
|
-
time.sleep(0.
|
|
26
|
+
time.sleep(0.1)
|
|
27
27
|
|
|
28
28
|
def finished_callback(self, *args, **kwargs):
|
|
29
29
|
# Whenever a finished is called, add to the queue as with step, but also set finished to True, so __anext__
|
|
@@ -346,6 +346,7 @@ def parse_font_file(doc, idx, encoding, differences):
|
|
|
346
346
|
bbox_list = []
|
|
347
347
|
data = doc.xref_stream(idx)
|
|
348
348
|
face = freetype.Face(BytesIO(data))
|
|
349
|
+
scale = 1000 / face.units_per_EM
|
|
349
350
|
for charmap in face.charmaps:
|
|
350
351
|
if charmap.encoding_name == "FT_ENCODING_ADOBE_CUSTOM":
|
|
351
352
|
face.select_charmap(freetype.FT_ENCODING_ADOBE_CUSTOM)
|
|
@@ -354,7 +355,8 @@ def parse_font_file(doc, idx, encoding, differences):
|
|
|
354
355
|
if differences:
|
|
355
356
|
for code, name in differences:
|
|
356
357
|
bbox_list[code] = get_name_cbox(face, name.encode("U8"))
|
|
357
|
-
|
|
358
|
+
norm_bbox_list = [[v * scale for v in box] for box in bbox_list]
|
|
359
|
+
return norm_bbox_list
|
|
358
360
|
|
|
359
361
|
|
|
360
362
|
def parse_encoding(obj_str):
|
|
@@ -215,9 +215,7 @@ class OpenAITranslator(BaseTranslator):
|
|
|
215
215
|
**self.options,
|
|
216
216
|
messages=self.prompt(text),
|
|
217
217
|
)
|
|
218
|
-
self.
|
|
219
|
-
self.prompt_token_count.inc(response.usage.prompt_tokens)
|
|
220
|
-
self.completion_token_count.inc(response.usage.completion_tokens)
|
|
218
|
+
self.update_token_count(response)
|
|
221
219
|
return response.choices[0].message.content.strip()
|
|
222
220
|
|
|
223
221
|
def prompt(self, text):
|
|
@@ -255,11 +253,20 @@ class OpenAITranslator(BaseTranslator):
|
|
|
255
253
|
},
|
|
256
254
|
],
|
|
257
255
|
)
|
|
258
|
-
self.
|
|
259
|
-
self.prompt_token_count.inc(response.usage.prompt_tokens)
|
|
260
|
-
self.completion_token_count.inc(response.usage.completion_tokens)
|
|
256
|
+
self.update_token_count(response)
|
|
261
257
|
return response.choices[0].message.content.strip()
|
|
262
258
|
|
|
259
|
+
def update_token_count(self, response):
|
|
260
|
+
try:
|
|
261
|
+
if response.usage and response.usage.total_tokens:
|
|
262
|
+
self.token_count.inc(response.usage.total_tokens)
|
|
263
|
+
if response.usage and response.usage.prompt_tokens:
|
|
264
|
+
self.prompt_token_count.inc(response.usage.prompt_tokens)
|
|
265
|
+
if response.usage and response.usage.completion_tokens:
|
|
266
|
+
self.completion_token_count.inc(response.usage.completion_tokens)
|
|
267
|
+
except Exception as e:
|
|
268
|
+
logger.exception("Error updating token count")
|
|
269
|
+
|
|
263
270
|
def get_formular_placeholder(self, placeholder_id: int):
|
|
264
271
|
return "{{v" + str(placeholder_id) + "}}"
|
|
265
272
|
return "{{" + str(placeholder_id) + "}}"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "BabelDOC"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.22"
|
|
4
4
|
description = "Yet Another Document Translator"
|
|
5
5
|
license = "AGPL-3.0"
|
|
6
6
|
readme = "README.md"
|
|
@@ -149,7 +149,7 @@ pythonpath = [".", "src"]
|
|
|
149
149
|
testpaths = ["tests"]
|
|
150
150
|
|
|
151
151
|
[bumpver]
|
|
152
|
-
current_version = "0.3.
|
|
152
|
+
current_version = "0.3.22"
|
|
153
153
|
version_pattern = "MAJOR.MINOR.PATCH[.PYTAGNUM]"
|
|
154
154
|
|
|
155
155
|
[bumpver.file_patterns]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.3.21"
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/babeldoc_exception/BabelDOCException.py
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/utils/priority_thread_pool_executor.py
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{babeldoc-0.3.21 → babeldoc-0.3.22}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{babeldoc-0.3.21 → babeldoc-0.3.22}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md
RENAMED
|
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
|
{babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-big-logo-with-transparent-background.png
RENAMED
|
File without changes
|
{babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-big-logo-with-transparent-background.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-small-logo-with-transparent-background.png
RENAMED
|
File without changes
|
{babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-small-logo-with-transparent-background.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|