txt2ebook 0.1.138__tar.gz → 0.1.139__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 (110) hide show
  1. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/CHANGELOG.md +8 -0
  2. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/PKG-INFO +2 -2
  3. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/pyproject.toml +2 -2
  4. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/formats/typ.py +5 -2
  5. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/parser.py +2 -2
  6. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/tokenizer.py +20 -5
  7. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/uv.lock +35 -35
  8. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/.coveragerc +0 -0
  9. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/.gitignore +0 -0
  10. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/.pre-commit-config.yaml +0 -0
  11. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/.python-version +0 -0
  12. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/CONTRIBUTING.md +0 -0
  13. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/LICENSE.md +0 -0
  14. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/README.md +0 -0
  15. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/docs/Makefile +0 -0
  16. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/docs/make.bat +0 -0
  17. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/docs/source/CHANGELOG.md +0 -0
  18. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/docs/source/CONTRIBUTING.md +0 -0
  19. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/docs/source/LICENSE.md +0 -0
  20. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/docs/source/README.md +0 -0
  21. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/docs/source/_static/logo.png +0 -0
  22. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/docs/source/conf.py +0 -0
  23. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/docs/source/index.rst +0 -0
  24. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/docs/source/txt2ebook.formats.rst +0 -0
  25. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/docs/source/txt2ebook.helpers.rst +0 -0
  26. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/docs/source/txt2ebook.models.rst +0 -0
  27. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/docs/source/txt2ebook.parsers.rst +0 -0
  28. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/docs/source/txt2ebook.rst +0 -0
  29. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/noxfile.py +0 -0
  30. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/__init__.py +0 -0
  31. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/__main__.py +0 -0
  32. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/cli.py +0 -0
  33. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/exceptions.py +0 -0
  34. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/formats/__init__.py +0 -0
  35. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/formats/base.py +0 -0
  36. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/formats/epub.py +0 -0
  37. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/formats/gmi.py +0 -0
  38. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/formats/md.py +0 -0
  39. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/formats/pdf.py +0 -0
  40. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/formats/templates/__init__.py +0 -0
  41. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/formats/templates/epub/__init__.py +0 -0
  42. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/formats/templates/epub/clean.css +0 -0
  43. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/formats/templates/epub/condense.css +0 -0
  44. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/formats/templates/epub/noindent.css +0 -0
  45. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/formats/tex.py +0 -0
  46. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/formats/txt.py +0 -0
  47. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/helpers/__init__.py +0 -0
  48. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/languages/__init__.py +0 -0
  49. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/languages/en.py +0 -0
  50. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/languages/zh_cn.py +0 -0
  51. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/languages/zh_tw.py +0 -0
  52. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/locales/en/LC_MESSAGES/txt2ebook.mo +0 -0
  53. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/locales/en/LC_MESSAGES/txt2ebook.po +0 -0
  54. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/locales/txt2ebook.pot +0 -0
  55. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/locales/zh-cn/LC_MESSAGES/txt2ebook.mo +0 -0
  56. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/locales/zh-cn/LC_MESSAGES/txt2ebook.po +0 -0
  57. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/locales/zh-tw/LC_MESSAGES/txt2ebook.mo +0 -0
  58. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/locales/zh-tw/LC_MESSAGES/txt2ebook.po +0 -0
  59. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/models/__init__.py +0 -0
  60. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/models/book.py +0 -0
  61. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/models/chapter.py +0 -0
  62. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/models/volume.py +0 -0
  63. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/subcommands/__init__.py +0 -0
  64. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/subcommands/env.py +0 -0
  65. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/subcommands/epub.py +0 -0
  66. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/subcommands/gmi.py +0 -0
  67. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/subcommands/massage.py +0 -0
  68. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/subcommands/md.py +0 -0
  69. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/subcommands/parse.py +0 -0
  70. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/subcommands/pdf.py +0 -0
  71. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/subcommands/tex.py +0 -0
  72. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/subcommands/typ.py +0 -0
  73. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/src/txt2ebook/zh_utils.py +0 -0
  74. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/__init__.py +0 -0
  75. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/conftest.py +0 -0
  76. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/fixtures/empty_file.txt +0 -0
  77. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/fixtures/missing_chapters.txt +0 -0
  78. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/fixtures/sample.txt +0 -0
  79. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/fixtures/sample_all_headers.txt +0 -0
  80. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/fixtures/sample_long_headers.txt +0 -0
  81. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/fixtures/sample_remove_wrapping.txt +0 -0
  82. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/fixtures/sample_unsorted_headers.txt +0 -0
  83. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/fixtures/sample_with_issues.txt +0 -0
  84. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/fixtures/sample_with_metadata.txt +0 -0
  85. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_epub_writer.py +0 -0
  86. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_filename_format_flag.py +0 -0
  87. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_format_option.py +0 -0
  88. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_header_number_flag.py +0 -0
  89. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_input_file_arg.py +0 -0
  90. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_language_option.py +0 -0
  91. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_output_file_arg.py +0 -0
  92. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_overwrite_flag.py +0 -0
  93. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_parser.py +0 -0
  94. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_purge_flag.py +0 -0
  95. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_quiet_flag.py +0 -0
  96. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_raise_warnings.py +0 -0
  97. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_sort_volume_and_chapter_flag.py +0 -0
  98. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_split_volume_and_chapter_flag.py +0 -0
  99. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_subcommand_env.py +0 -0
  100. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_subcommand_epub.py +0 -0
  101. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_subcommand_massage.py +0 -0
  102. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_test_parsing_flag.py +0 -0
  103. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_tokenizer.py +0 -0
  104. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_translator_option.py +0 -0
  105. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_txt2ebook.py +0 -0
  106. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_verbose_flag.py +0 -0
  107. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_volume_page_flag.py +0 -0
  108. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_zh_utils_zh_halfwidth_to_fullwidth.py +0 -0
  109. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_zh_utils_zh_numeric.py +0 -0
  110. {txt2ebook-0.1.138 → txt2ebook-0.1.139}/tests/test_zh_utils_zh_words_to_numbers.py +0 -0
@@ -7,6 +7,14 @@ and this project adheres to [0-based versioning](https://0ver.org/).
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## v0.1.139 (2025-05-11)
11
+
12
+ - Bump deps
13
+ - Bump typst to 0.13.2
14
+ - Ensure indentation for first paragraph for typ doc
15
+ - Refactor content tokenization to handle metadata blocks correctly.
16
+ - Remove field() from Parser attributes
17
+
10
18
  ## v0.1.138 (2025-05-04)
11
19
 
12
20
  - Bump deps
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: txt2ebook
3
- Version: 0.1.138
3
+ Version: 0.1.139
4
4
  Summary: CLI tool to convert txt file to ebook format
5
5
  Project-URL: Homepage, https://github.com/kianmeng/txt2ebook
6
6
  Project-URL: Repository, https://github.com/kianmeng/txt2ebook
@@ -38,7 +38,7 @@ Requires-Dist: pypandoc~=1.11
38
38
  Requires-Dist: regex<2022,>=2021.11.10
39
39
  Requires-Dist: reportlab<5,>=4.0.0
40
40
  Requires-Dist: typing-extensions<5,>=4.5.0
41
- Requires-Dist: typst<0.13,>=0.12.0
41
+ Requires-Dist: typst>=0.13.0
42
42
  Description-Content-Type: text/markdown
43
43
 
44
44
  # txt2ebook
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "txt2ebook"
3
- version = "0.1.138"
3
+ version = "0.1.139"
4
4
  description = "CLI tool to convert txt file to ebook format"
5
5
  authors = [{ name = "Kian-Meng Ang", email = "kianmeng@cpan.org" }]
6
6
  requires-python = "~=3.9"
@@ -40,7 +40,7 @@ dependencies = [
40
40
  "pypandoc~=1.11",
41
41
  "typing-extensions>=4.5.0,<5",
42
42
  "reportlab>=4.0.0,<5",
43
- "typst>=0.12.0,<0.13",
43
+ "typst>=0.13.0",
44
44
  "importlib-resources>=6.1.1,<7",
45
45
  "pylatex>=1.4.2,<2",
46
46
  "lxml>=5.2.2,<6",
@@ -113,8 +113,11 @@ class TypWriter(BaseWriter):
113
113
  ]
114
114
 
115
115
  #set par(
116
- first-line-indent: 2em,
117
- justify: true
116
+ first-line-indent: (
117
+ amount: 2em,
118
+ all:true,
119
+ ),
120
+ justify: true,
118
121
  )
119
122
 
120
123
  #set text(
@@ -35,8 +35,8 @@ logger = logging.getLogger(__name__)
35
35
  class Parser:
36
36
  """Parser class to massage and parse a text content."""
37
37
 
38
- raw_content: str = field()
39
- config: argparse.Namespace = field()
38
+ raw_content: str
39
+ config: argparse.Namespace
40
40
 
41
41
  def __init__(self, raw_content: str, config: argparse.Namespace) -> None:
42
42
  """Set the constructor for the Parser."""
@@ -171,12 +171,27 @@ class Tokenizer:
171
171
 
172
172
 
173
173
  def _tokenize_content(self) -> None:
174
- # TODO: split by metadata and content
175
- content = self.raw_content.split(f"{self.metadata_marker}\n\n")[1]
176
- content = content.strip(self.config.paragraph_separator)
177
- lines = content.split(self.config.paragraph_separator)
174
+ # Determine the actual content part, after any metadata block
175
+ metadata_block_re = (
176
+ rf"^(?:{self.metadata_marker})\n(.*)\n(?:{self.metadata_marker})$"
177
+ )
178
+ match = re.search(
179
+ metadata_block_re, self.raw_content, re.MULTILINE | re.DOTALL
180
+ )
178
181
 
179
- if len(lines) <= 1:
182
+ if match:
183
+ # Content starts after the matched metadata block
184
+ content_str = self.raw_content[match.end(0) :]
185
+ else:
186
+ # No metadata block found according to the pattern,
187
+ # so assume all raw_content is the actual content.
188
+ # _extract_metadata would have already logged/warned if metadata was expected.
189
+ content_str = self.raw_content
190
+
191
+ content_str = content_str.strip(self.config.paragraph_separator)
192
+ lines = content_str.split(self.config.paragraph_separator)
193
+
194
+ if len(lines) <= 1 and content_str: # Avoid warning for empty content
180
195
  msg = (
181
196
  "Cannot split content by "
182
197
  f"{repr(self.config.paragraph_separator)}. "
@@ -952,11 +952,11 @@ wheels = [
952
952
 
953
953
  [[package]]
954
954
  name = "platformdirs"
955
- version = "4.3.7"
955
+ version = "4.3.8"
956
956
  source = { registry = "https://pypi.org/simple" }
957
- sdist = { url = "https://files.pythonhosted.org/packages/b6/2d/7d512a3913d60623e7eb945c6d1b4f0bddf1d0b7ada5225274c87e5b53d1/platformdirs-4.3.7.tar.gz", hash = "sha256:eb437d586b6a0986388f0d6f74aa0cde27b48d0e3d66843640bfb6bdcdb6e351", size = 21291, upload-time = "2025-03-19T20:36:10.989Z" }
957
+ sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload-time = "2025-05-07T22:47:42.121Z" }
958
958
  wheels = [
959
- { url = "https://files.pythonhosted.org/packages/6d/45/59578566b3275b8fd9157885918fcd0c4d74162928a5310926887b856a51/platformdirs-4.3.7-py3-none-any.whl", hash = "sha256:a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94", size = 18499, upload-time = "2025-03-19T20:36:09.038Z" },
959
+ { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" },
960
960
  ]
961
961
 
962
962
  [[package]]
@@ -1023,7 +1023,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/6d/a8/10cf6b955b5fa1943
1023
1023
 
1024
1024
  [[package]]
1025
1025
  name = "pylint"
1026
- version = "3.3.6"
1026
+ version = "3.3.7"
1027
1027
  source = { registry = "https://pypi.org/simple" }
1028
1028
  dependencies = [
1029
1029
  { name = "astroid" },
@@ -1036,9 +1036,9 @@ dependencies = [
1036
1036
  { name = "tomlkit" },
1037
1037
  { name = "typing-extensions", marker = "python_full_version < '3.10'" },
1038
1038
  ]
1039
- sdist = { url = "https://files.pythonhosted.org/packages/69/a7/113d02340afb9dcbb0c8b25454e9538cd08f0ebf3e510df4ed916caa1a89/pylint-3.3.6.tar.gz", hash = "sha256:b634a041aac33706d56a0d217e6587228c66427e20ec21a019bc4cdee48c040a", size = 1519586, upload-time = "2025-03-20T11:25:38.207Z" }
1039
+ sdist = { url = "https://files.pythonhosted.org/packages/1c/e4/83e487d3ddd64ab27749b66137b26dc0c5b5c161be680e6beffdc99070b3/pylint-3.3.7.tar.gz", hash = "sha256:2b11de8bde49f9c5059452e0c310c079c746a0a8eeaa789e5aa966ecc23e4559", size = 1520709, upload-time = "2025-05-04T17:07:51.089Z" }
1040
1040
  wheels = [
1041
- { url = "https://files.pythonhosted.org/packages/31/21/9537fc94aee9ec7316a230a49895266cf02d78aa29b0a2efbc39566e0935/pylint-3.3.6-py3-none-any.whl", hash = "sha256:8b7c2d3e86ae3f94fb27703d521dd0b9b6b378775991f504d7c3a6275aa0a6a6", size = 522462, upload-time = "2025-03-20T11:25:36.13Z" },
1041
+ { url = "https://files.pythonhosted.org/packages/e8/83/bff755d09e31b5d25cc7fdc4bf3915d1a404e181f1abf0359af376845c24/pylint-3.3.7-py3-none-any.whl", hash = "sha256:43860aafefce92fca4cf6b61fe199cdc5ae54ea28f9bf4cd49de267b5195803d", size = 522565, upload-time = "2025-05-04T17:07:48.714Z" },
1042
1042
  ]
1043
1043
 
1044
1044
  [[package]]
@@ -1256,11 +1256,11 @@ sdist = { url = "https://files.pythonhosted.org/packages/c8/48/609b5463da485943d
1256
1256
 
1257
1257
  [[package]]
1258
1258
  name = "setuptools"
1259
- version = "80.3.0"
1259
+ version = "80.3.1"
1260
1260
  source = { registry = "https://pypi.org/simple" }
1261
- sdist = { url = "https://files.pythonhosted.org/packages/51/6c/a3f892949418b5b9aced7396919c75ffb57e38f08b712b565f5eb10677ee/setuptools-80.3.0.tar.gz", hash = "sha256:ec8308eb180b2312062b1c5523204acf872cd8b0a9e6c2ae76431b22bc4065d7", size = 1314475, upload-time = "2025-05-03T09:17:32.334Z" }
1261
+ sdist = { url = "https://files.pythonhosted.org/packages/70/dc/3976b322de9d2e87ed0007cf04cc7553969b6c7b3f48a565d0333748fbcd/setuptools-80.3.1.tar.gz", hash = "sha256:31e2c58dbb67c99c289f51c16d899afedae292b978f8051efaf6262d8212f927", size = 1315082, upload-time = "2025-05-04T18:47:04.397Z" }
1262
1262
  wheels = [
1263
- { url = "https://files.pythonhosted.org/packages/e6/61/a6239ff35d64e55def020335626894895847cc6659c0f8e1b676c58aad3b/setuptools-80.3.0-py3-none-any.whl", hash = "sha256:a65cffc4fb86167e3020b3ef58e08226baad8b29a3b34ce2c9d07e901bac481d", size = 1200273, upload-time = "2025-05-03T09:17:29.995Z" },
1263
+ { url = "https://files.pythonhosted.org/packages/53/7e/5d8af3317ddbf9519b687bd1c39d8737fde07d97f54df65553faca5cffb1/setuptools-80.3.1-py3-none-any.whl", hash = "sha256:ea8e00d7992054c4c592aeb892f6ad51fe1b4d90cc6947cc45c45717c40ec537", size = 1201172, upload-time = "2025-05-04T18:47:02.575Z" },
1264
1264
  ]
1265
1265
 
1266
1266
  [[package]]
@@ -1274,11 +1274,11 @@ wheels = [
1274
1274
 
1275
1275
  [[package]]
1276
1276
  name = "snowballstemmer"
1277
- version = "2.2.0"
1277
+ version = "3.0.0.1"
1278
1278
  source = { registry = "https://pypi.org/simple" }
1279
- sdist = { url = "https://files.pythonhosted.org/packages/44/7b/af302bebf22c749c56c9c3e8ae13190b5b5db37a33d9068652e8f73b7089/snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1", size = 86699, upload-time = "2021-11-16T18:38:38.009Z" }
1279
+ sdist = { url = "https://files.pythonhosted.org/packages/71/81/f47e97c9850c529ab233fd1cd8319e0e5a1cfae49c87c49ab2fd0a19c744/snowballstemmer-3.0.0.1.tar.gz", hash = "sha256:1d09493a5ecc85fb5b433674e9c83fcd41c6739b6979ce4b54e81a40ec078342", size = 105321, upload-time = "2025-05-08T12:30:36.516Z" }
1280
1280
  wheels = [
1281
- { url = "https://files.pythonhosted.org/packages/ed/dc/c02e01294f7265e63a7315fe086dd1df7dacb9f840a804da846b96d01b96/snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a", size = 93002, upload-time = "2021-11-16T18:38:34.792Z" },
1281
+ { url = "https://files.pythonhosted.org/packages/17/29/38d0cd1c958894aa042433a1515b7dab49a0a79b39df953b30b7ded716ce/snowballstemmer-3.0.0.1-py3-none-any.whl", hash = "sha256:d1cdabc06fb492e80620d9e2c44d39e67cfda290b2aaef8718b0691079443b10", size = 103250, upload-time = "2025-05-08T12:30:34.651Z" },
1282
1282
  ]
1283
1283
 
1284
1284
  [[package]]
@@ -1468,7 +1468,7 @@ wheels = [
1468
1468
 
1469
1469
  [[package]]
1470
1470
  name = "txt2ebook"
1471
- version = "0.1.137"
1471
+ version = "0.1.138"
1472
1472
  source = { editable = "." }
1473
1473
  dependencies = [
1474
1474
  { name = "bs4" },
@@ -1523,7 +1523,7 @@ requires-dist = [
1523
1523
  { name = "regex", specifier = ">=2021.11.10,<2022" },
1524
1524
  { name = "reportlab", specifier = ">=4.0.0,<5" },
1525
1525
  { name = "typing-extensions", specifier = ">=4.5.0,<5" },
1526
- { name = "typst", specifier = ">=0.12.0,<0.13" },
1526
+ { name = "typst", specifier = ">=0.13.0" },
1527
1527
  ]
1528
1528
 
1529
1529
  [package.metadata.requires-dev]
@@ -1560,26 +1560,26 @@ wheels = [
1560
1560
 
1561
1561
  [[package]]
1562
1562
  name = "typst"
1563
- version = "0.12.3"
1563
+ version = "0.13.2"
1564
1564
  source = { registry = "https://pypi.org/simple" }
1565
- sdist = { url = "https://files.pythonhosted.org/packages/42/9c/cf4ad9ec3590b57560d95108d86066fd640fa34798a7b82b75f16bfd358a/typst-0.12.3.tar.gz", hash = "sha256:f787ee1de602a930ae2e2840f2f95870d5a2e72b324011deddad2deb1a7a7462", size = 38482, upload-time = "2025-01-22T14:45:25.444Z" }
1565
+ sdist = { url = "https://files.pythonhosted.org/packages/90/84/e6c135449a9df3e1d5b81156db2decd84a089439212f2d0a1f754a558d3f/typst-0.13.2.tar.gz", hash = "sha256:ee84c54886bf1c1890dd064819d9d2e332e1ae1fff89a3615fae429b239305a4", size = 38968, upload-time = "2025-03-20T09:58:28.364Z" }
1566
1566
  wheels = [
1567
- { url = "https://files.pythonhosted.org/packages/38/bd/499f6adf9d82ed6d326d6f82d8b7cc8fc101fb64bfff4d8e0e19311d0f03/typst-0.12.3-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:8f299e718fa2f3c147150e17a9000b4cd4a5dc7f7d246bfb07bd76e964b48472", size = 17580752, upload-time = "2025-01-22T14:44:14.87Z" },
1568
- { url = "https://files.pythonhosted.org/packages/15/ba/bf56b1419ff2c002b1fd78de1cfdc4caa69c8ca1ec57d5d2f4a8b2885521/typst-0.12.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:dc128e86bca069dc63117598733db3a8f36f05bd0fd1bcea5619b383fb5db48b", size = 17566507, upload-time = "2025-01-22T14:44:21.159Z" },
1569
- { url = "https://files.pythonhosted.org/packages/f9/9e/1eb9d3f08852ffc126ffb534cdfd72bf34dc51dff9e6bda5944d57d433cb/typst-0.12.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55e97343b9713c450d06069f43f9cae05549ebd030b6b5b0a8ec8d0cfae00014", size = 20977611, upload-time = "2025-01-22T14:44:25.491Z" },
1570
- { url = "https://files.pythonhosted.org/packages/77/14/7514c926b157d10c02eb6acabc4882f08391acf420d6f816aa5b12eb5878/typst-0.12.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2fb3f66d5755b2d41c8ef98bbe80ff1bde41c1fb173629e26cb3a4db96cd1334", size = 20697871, upload-time = "2025-01-22T14:44:29.213Z" },
1571
- { url = "https://files.pythonhosted.org/packages/c7/5e/7d8b4b50bf28531a18641364117d362e56ac3450ebb3f1f2cb7ec374eaa7/typst-0.12.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5524f7bb1a2c4275fe52931d76d1c883dc62c69bf79c087dd554680b1ce4b0ea", size = 21224627, upload-time = "2025-01-22T14:44:33.667Z" },
1572
- { url = "https://files.pythonhosted.org/packages/d7/9c/3bd302dc8231e4f79839d03bce2ac047d7be636b4ea61aa5b4d8a2da2f90/typst-0.12.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e8f7626bdbace3266f4871b8ed400dd0eda169381cfc2857806106be62138bbf", size = 22469980, upload-time = "2025-01-22T14:44:38.183Z" },
1573
- { url = "https://files.pythonhosted.org/packages/c6/2c/390869064b26e4c0bcb136667b9dec21433bffbe7baa7b3dde1a8b2bb85b/typst-0.12.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f43d2d9a965b0b8b4284caaa2436c512814807ea96738526f0bd126160672e5", size = 20527365, upload-time = "2025-01-22T14:44:42.99Z" },
1574
- { url = "https://files.pythonhosted.org/packages/73/55/892eaecd01cea1f6217f1c811e9d217958822b12633f5bceb6cd6ce521fe/typst-0.12.3-cp313-cp313t-win_amd64.whl", hash = "sha256:8c0b175aeace0503c902ced71d171d40925e907f6b44bfac8502083d30a62b68", size = 16569556, upload-time = "2025-01-22T14:44:49.294Z" },
1575
- { url = "https://files.pythonhosted.org/packages/51/f7/809c9d56f630c6fdbd7beaddfd887b6f1496801be451886b8a30a1044696/typst-0.12.3-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:615d448f5c0ddd609b73fd326e2873b524ebf9e982ecc3fe7ec8fdc194ecfdce", size = 17587460, upload-time = "2025-01-22T14:44:53.405Z" },
1576
- { url = "https://files.pythonhosted.org/packages/6f/88/049c251b2717928edfcb715c628672fdaf3a9be2be141e04b95fd7281384/typst-0.12.3-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:55201d4655bb07a9f7c97db6ee55cf2240a934cabad19d97d07e15fc7826450b", size = 17568151, upload-time = "2025-01-22T14:44:56.385Z" },
1577
- { url = "https://files.pythonhosted.org/packages/4e/45/dac17d3e21372ed389685cf6ae5c842d5dc59016c3b0ac210ae32f27ec77/typst-0.12.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6088dfde2e918a21a7e1500e0eb395dad271572bd05099604f010c63f51a57dd", size = 20987726, upload-time = "2025-01-22T14:45:00.845Z" },
1578
- { url = "https://files.pythonhosted.org/packages/04/0f/bc0b40198386667801b4fe16eb4dc2dc42cf41cb5195aa65a77ad4763cab/typst-0.12.3-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f940481bb23a16d8f9c8755e8013a1a12d461686a8b690b86f1ac4c1c65c3b33", size = 20704938, upload-time = "2025-01-22T14:45:05.556Z" },
1579
- { url = "https://files.pythonhosted.org/packages/c2/1e/88c4d74e4125bd6ee6aefa4c27918b1e0070a69ddb6cf729ae739633b52d/typst-0.12.3-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2362f5e3603601532f82081657659d039a60cc803a3daf452c4432e580d53e86", size = 21234794, upload-time = "2025-01-22T14:45:09.912Z" },
1580
- { url = "https://files.pythonhosted.org/packages/e2/35/0af78cafbecc7b290987fe98cb8fac706f444054be9e08a122de6c251329/typst-0.12.3-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f3e1c6fddac3843a0b4a4cd5c0984de4c60400c6b6a6a1e1659f33f53e5ca665", size = 22476145, upload-time = "2025-01-22T14:45:13.547Z" },
1581
- { url = "https://files.pythonhosted.org/packages/96/ca/3473456de6f9b57c550f1742a7590401d9a035d4605b70dc3eff0c892a15/typst-0.12.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:faef8d2348b1dd395fc4630670a73d1f7cf48ea875ea171a22d841b64fdc1339", size = 20532553, upload-time = "2025-01-22T14:45:17.204Z" },
1582
- { url = "https://files.pythonhosted.org/packages/0c/cf/b72f277772054a0f5099a3fccb9c11b3be22ada6c8228696a983b4068972/typst-0.12.3-cp38-abi3-win_amd64.whl", hash = "sha256:da600e59825ebcf485f89c826383955cfc60c70540a2cbc623d11800be7792c4", size = 16571073, upload-time = "2025-01-22T14:45:22.596Z" },
1567
+ { url = "https://files.pythonhosted.org/packages/fe/69/bb21498c2386ff2973620013452aba3316d36edd09028f19e7a8b92efe39/typst-0.13.2-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:1bd26a9f51fb2cf72a071034642c2cd0aec0236ed5f379e4a0c3aa07fd40ef90", size = 18655258, upload-time = "2025-03-20T09:57:39.983Z" },
1568
+ { url = "https://files.pythonhosted.org/packages/94/7a/393693dbe8e51b3aea0ba0247a21019900c6b537a579e84ec60cc17e5620/typst-0.13.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:81f201740cfe2e04dde3f69d7f08358b78be942c0e7c889abc6c6fe89c3a4f2c", size = 18177502, upload-time = "2025-03-20T09:57:43.136Z" },
1569
+ { url = "https://files.pythonhosted.org/packages/01/2e/af7f9a7dbc98b79bee1011a745966fafd12a4fefb56c523e10d1082344c9/typst-0.13.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7845dcb07e1d1f569810db64d5efb5b657598a25f73b03dccad1034d0684c6f0", size = 21694339, upload-time = "2025-03-20T09:57:46.266Z" },
1570
+ { url = "https://files.pythonhosted.org/packages/39/57/77bb34c270cfb1ec97a428fb2a7e3250bcc5110921187d7a14b946e4a113/typst-0.13.2-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3f360cd431e41477653c150da18a62474b20b5538d5082c120283b60bf2c896f", size = 21850319, upload-time = "2025-03-20T09:57:49.41Z" },
1571
+ { url = "https://files.pythonhosted.org/packages/31/60/5a5beeb27d3b2cf9d0f8c90428805bf7cb941d2e90cad877fa0c7a1550c3/typst-0.13.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4980a85f9d2b6e0fea267cf337c2a88e905dad10996feb1617bbffa68bc26555", size = 22129592, upload-time = "2025-03-20T09:57:52.583Z" },
1572
+ { url = "https://files.pythonhosted.org/packages/b0/41/1e0fb06ef071cd7cdade9bb5b708427fa7d4c100a08404b9a3a966f22a9d/typst-0.13.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dfa3f33592a3d156cf039510046f495cc41130ee5613998d641d5141e82d81e6", size = 23435078, upload-time = "2025-03-20T09:57:55.999Z" },
1573
+ { url = "https://files.pythonhosted.org/packages/2e/c6/bad2e9e4198315d929f29e6f26ba93f3318d870f797109327d3e0328b97a/typst-0.13.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:789138b066982abffdc8d360493499188d64d7ef59aea998dda606df9d452128", size = 21703895, upload-time = "2025-03-20T09:57:58.841Z" },
1574
+ { url = "https://files.pythonhosted.org/packages/d3/91/e495f896cdf701470633bbf99056d48385b2e8e41290406e3e711aca15c2/typst-0.13.2-cp313-cp313t-win_amd64.whl", hash = "sha256:be1ae603d07c2f406778a3c3b80484b69ed68a33c67bd56ac930af5ec7243497", size = 17444943, upload-time = "2025-03-20T09:58:01.702Z" },
1575
+ { url = "https://files.pythonhosted.org/packages/fe/0f/38514b1ac2f2194d1e10dd08bcfcf0f97918d0b742999399451811419c26/typst-0.13.2-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:6d3c5e9372fbfc4b8176fafb5cac35d29693e437b8e15f91cc00523ddd071569", size = 18668206, upload-time = "2025-03-20T09:58:04.461Z" },
1576
+ { url = "https://files.pythonhosted.org/packages/a0/e2/fc210e0a1436c261f2fa442550054218c3318eeba40abd383c47b06b0c94/typst-0.13.2-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:cd4d880e94b91028184cd167dda4e950264a8ea628841a48842d3e8453558a95", size = 18184589, upload-time = "2025-03-20T09:58:08.162Z" },
1577
+ { url = "https://files.pythonhosted.org/packages/10/c9/0028a05bcaae0fbf6ef4e987784db5e23b0981a5d5fb5a89b1c95b7107b1/typst-0.13.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6abf9352540af30bcbb1687e4d00f0d0e7115db27db1b71b901df15abaf2086a", size = 21700856, upload-time = "2025-03-20T09:58:11.161Z" },
1578
+ { url = "https://files.pythonhosted.org/packages/2a/64/c03db1f6824a2c7792d7ce5ede7e8e28db05dc63000cb748f84ac8539f94/typst-0.13.2-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d558ee6fb449714955297b026cc2f567f44c991b6b7d32d8ba5262150f267603", size = 21852362, upload-time = "2025-03-20T09:58:14.593Z" },
1579
+ { url = "https://files.pythonhosted.org/packages/43/d1/fe1170f1692fc9f4fcfd61b4447be75e7b1b8653b55cb80737919bcc0df7/typst-0.13.2-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0b9e542d136741df846f15ed23e110475d4c82e1f0f29ab948cd3344bcc8181e", size = 22136479, upload-time = "2025-03-20T09:58:17.434Z" },
1580
+ { url = "https://files.pythonhosted.org/packages/15/9f/9c056dbbff5a57e58a666cf576dd7053086f5826e5552796ad45d23202c5/typst-0.13.2-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3939b7cc16abc0f753015c886f8173f3a0a289ebc828d886c0f2284415d20490", size = 23443993, upload-time = "2025-03-20T09:58:20.575Z" },
1581
+ { url = "https://files.pythonhosted.org/packages/23/aa/4a774bb4b31ff5865e4aeafe26180c58d76ba6eebd688690b4bc63197bb1/typst-0.13.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c2a78e01b897e3075b6bc01b0bf7738ae110550394d7be1ec51de178ccd5e8c", size = 21712749, upload-time = "2025-03-20T09:58:23.536Z" },
1582
+ { url = "https://files.pythonhosted.org/packages/a6/81/3a2bb633622c81c03b1ab7de0b7dc82ed44f9f0e2d65699f3d0c357a043e/typst-0.13.2-cp38-abi3-win_amd64.whl", hash = "sha256:897829e5ddfad5ace94f3f378ce7c6d580b78402af92e66eed5b28cb98186b57", size = 17446971, upload-time = "2025-03-20T09:58:26.39Z" },
1583
1583
  ]
1584
1584
 
1585
1585
  [[package]]
@@ -1593,16 +1593,16 @@ wheels = [
1593
1593
 
1594
1594
  [[package]]
1595
1595
  name = "virtualenv"
1596
- version = "20.30.0"
1596
+ version = "20.31.2"
1597
1597
  source = { registry = "https://pypi.org/simple" }
1598
1598
  dependencies = [
1599
1599
  { name = "distlib" },
1600
1600
  { name = "filelock" },
1601
1601
  { name = "platformdirs" },
1602
1602
  ]
1603
- sdist = { url = "https://files.pythonhosted.org/packages/38/e0/633e369b91bbc664df47dcb5454b6c7cf441e8f5b9d0c250ce9f0546401e/virtualenv-20.30.0.tar.gz", hash = "sha256:800863162bcaa5450a6e4d721049730e7f2dae07720e0902b0e4040bd6f9ada8", size = 4346945, upload-time = "2025-03-31T16:33:29.185Z" }
1603
+ sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316, upload-time = "2025-05-08T17:58:23.811Z" }
1604
1604
  wheels = [
1605
- { url = "https://files.pythonhosted.org/packages/4c/ed/3cfeb48175f0671ec430ede81f628f9fb2b1084c9064ca67ebe8c0ed6a05/virtualenv-20.30.0-py3-none-any.whl", hash = "sha256:e34302959180fca3af42d1800df014b35019490b119eba981af27f2fa486e5d6", size = 4329461, upload-time = "2025-03-31T16:33:26.758Z" },
1605
+ { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982, upload-time = "2025-05-08T17:58:21.15Z" },
1606
1606
  ]
1607
1607
 
1608
1608
  [[package]]
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