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.
Files changed (103) hide show
  1. {babeldoc-0.3.21 → babeldoc-0.3.22}/PKG-INFO +1 -1
  2. babeldoc-0.3.22/babeldoc/__init__.py +1 -0
  3. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/asynchronize/__init__.py +1 -1
  4. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/const.py +1 -1
  5. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/frontend/il_creater.py +3 -1
  6. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/translator/translator.py +13 -6
  7. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/high_level.py +1 -0
  8. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/main.py +1 -1
  9. {babeldoc-0.3.21 → babeldoc-0.3.22}/pyproject.toml +2 -2
  10. {babeldoc-0.3.21 → babeldoc-0.3.22}/uv.lock +1 -1
  11. babeldoc-0.3.21/babeldoc/__init__.py +0 -1
  12. {babeldoc-0.3.21 → babeldoc-0.3.22}/.cursorignore +0 -0
  13. {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  14. {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  15. {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/PULL_REQUEST_TEMPLATE/pr_form.yml +0 -0
  16. {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/dependabot.yml +0 -0
  17. {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/labels.yml +0 -0
  18. {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/release-drafter.yml +0 -0
  19. {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/workflows/codeql.yml +0 -0
  20. {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/workflows/docs.yml +0 -0
  21. {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/workflows/labeler.yml +0 -0
  22. {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/workflows/lint.yml +0 -0
  23. {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/workflows/pr-lint.yml +0 -0
  24. {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/workflows/publish-to-pypi.yml +0 -0
  25. {babeldoc-0.3.21 → babeldoc-0.3.22}/.github/workflows/test.yml +0 -0
  26. {babeldoc-0.3.21 → babeldoc-0.3.22}/.gitignore +0 -0
  27. {babeldoc-0.3.21 → babeldoc-0.3.22}/.pre-commit-config.yaml +0 -0
  28. {babeldoc-0.3.21 → babeldoc-0.3.22}/LICENSE +0 -0
  29. {babeldoc-0.3.21 → babeldoc-0.3.22}/README.md +0 -0
  30. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/assets/assets.py +0 -0
  31. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/assets/embedding_assets_metadata.py +0 -0
  32. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/converter.py +0 -0
  33. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/__init__.py +0 -0
  34. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/babeldoc_exception/BabelDOCException.py +0 -0
  35. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/backend/__init__.py +0 -0
  36. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/backend/pdf_creater.py +0 -0
  37. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/frontend/__init__.py +0 -0
  38. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/il_version_1.py +0 -0
  39. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/il_version_1.rnc +0 -0
  40. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/il_version_1.rng +0 -0
  41. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/il_version_1.xsd +0 -0
  42. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/__init__.py +0 -0
  43. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/add_debug_information.py +0 -0
  44. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/detect_scanned_file.py +0 -0
  45. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/il_translator.py +0 -0
  46. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/il_translator_llm_only.py +0 -0
  47. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/layout_parser.py +0 -0
  48. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/paragraph_finder.py +0 -0
  49. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/remove_descent.py +0 -0
  50. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/styles_and_formulas.py +0 -0
  51. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/table_parser.py +0 -0
  52. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/midend/typesetting.py +0 -0
  53. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/translator/__init__.py +0 -0
  54. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/translator/cache.py +0 -0
  55. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/utils/atomic_integer.py +0 -0
  56. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/utils/fontmap.py +0 -0
  57. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/utils/layout_helper.py +0 -0
  58. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/utils/priority_thread_pool_executor.py +0 -0
  59. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/utils/style_helper.py +0 -0
  60. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/document_il/xml_converter.py +0 -0
  61. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/docvision/README.md +0 -0
  62. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/docvision/__init__.py +0 -0
  63. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/docvision/doclayout.py +0 -0
  64. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/docvision/rpc_doclayout.py +0 -0
  65. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/docvision/table_detection/rapidocr.py +0 -0
  66. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/format/office/__init__.py +0 -0
  67. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/pdfinterp.py +0 -0
  68. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/progress_monitor.py +0 -0
  69. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/result_merger.py +0 -0
  70. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/split_manager.py +0 -0
  71. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/tools/generate_font_metadata.py +0 -0
  72. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/tools/italic_assistance.py +0 -0
  73. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/tools/italic_recognize_tool.py +0 -0
  74. {babeldoc-0.3.21 → babeldoc-0.3.22}/babeldoc/translation_config.py +0 -0
  75. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/CODE_OF_CONDUCT.md +0 -0
  76. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/CONTRIBUTING.md +0 -0
  77. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/CONTRIBUTOR_REWARD.md +0 -0
  78. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md +0 -0
  79. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/ImplementationDetails/ILTranslator/ILTranslator.md +0 -0
  80. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/ImplementationDetails/PDFCreation/PDFCreation.md +0 -0
  81. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/ImplementationDetails/PDFParsing/PDFParsing.md +0 -0
  82. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md +0 -0
  83. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/ImplementationDetails/README.md +0 -0
  84. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/ImplementationDetails/StylesAndFormulas/StylesAndFormulas.md +0 -0
  85. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/ImplementationDetails/Typesetting/Typesetting.md +0 -0
  86. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/README.md +0 -0
  87. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/deploy.sh +0 -0
  88. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-banner.png +0 -0
  89. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.png +0 -0
  90. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.svg +0 -0
  91. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-big-logo-with-transparent-background.png +0 -0
  92. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-big-logo-with-transparent-background.svg +0 -0
  93. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-big-logo.png +0 -0
  94. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-contributor_reward_example.png +0 -0
  95. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-preview.gif +0 -0
  96. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-small-logo-with-transparent-background.png +0 -0
  97. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-small-logo-with-transparent-background.svg +0 -0
  98. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/images/babeldoc-small-logo.png +0 -0
  99. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/index.md +0 -0
  100. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/intro-to-pdf-object.md +0 -0
  101. {babeldoc-0.3.21 → babeldoc-0.3.22}/docs/requirements.txt +0 -0
  102. {babeldoc-0.3.21 → babeldoc-0.3.22}/mkdocs.yml +0 -0
  103. {babeldoc-0.3.21 → babeldoc-0.3.22}/tests/test_translation_config.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: BabelDOC
3
- Version: 0.3.21
3
+ Version: 0.3.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
@@ -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.01)
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__
@@ -3,7 +3,7 @@ import shutil
3
3
  import subprocess
4
4
  from pathlib import Path
5
5
 
6
- __version__ = "0.3.21"
6
+ __version__ = "0.3.22"
7
7
 
8
8
  CACHE_FOLDER = Path.home() / ".cache" / "babeldoc"
9
9
 
@@ -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
- return bbox_list
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.token_count.inc(response.usage.total_tokens)
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.token_count.inc(response.usage.total_tokens)
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) + "}}"
@@ -548,6 +548,7 @@ def do_translate(
548
548
 
549
549
  except Exception as e:
550
550
  logger.exception(f"translate error: {e}")
551
+ pm.disable = False
551
552
  pm.translate_error(e)
552
553
  raise
553
554
  finally:
@@ -23,7 +23,7 @@ from babeldoc.translation_config import TranslationConfig
23
23
  from babeldoc.translation_config import WatermarkOutputMode
24
24
 
25
25
  logger = logging.getLogger(__name__)
26
- __version__ = "0.3.21"
26
+ __version__ = "0.3.22"
27
27
 
28
28
 
29
29
  def create_parser():
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "BabelDOC"
3
- version = "0.3.21"
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.21"
152
+ current_version = "0.3.22"
153
153
  version_pattern = "MAJOR.MINOR.PATCH[.PYTAGNUM]"
154
154
 
155
155
  [bumpver.file_patterns]
@@ -48,7 +48,7 @@ wheels = [
48
48
 
49
49
  [[package]]
50
50
  name = "babeldoc"
51
- version = "0.3.21"
51
+ version = "0.3.22"
52
52
  source = { editable = "." }
53
53
  dependencies = [
54
54
  { name = "bitstring" },
@@ -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