brewdoc-linux-x64-glibc 0.4.1 → 0.5.0

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.
package/README.md CHANGED
@@ -3,40 +3,46 @@
3
3
  [![PyPI](https://img.shields.io/pypi/v/brewdoc)](https://pypi.org/project/brewdoc/)
4
4
  [![CI](https://github.com/kochetkov-ma/brewdoc/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/kochetkov-ma/brewdoc/actions/workflows/ci.yml)
5
5
  [![Release](https://img.shields.io/github/v/release/kochetkov-ma/brewdoc)](https://github.com/kochetkov-ma/brewdoc/releases/latest)
6
- [![MIT](https://img.shields.io/github/license/kochetkov-ma/brewdoc)](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/LICENSE)
6
+ [![MIT](https://img.shields.io/github/license/kochetkov-ma/brewdoc)](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/LICENSE)
7
7
 
8
8
  Fast, deterministic document-to-Markdown conversion for agent systems. Easy to install. No model weights, OCR or external services.
9
9
 
10
10
  Local conversion runs offline after installation, with no runtime component downloads.
11
11
  Supported documents become one Markdown file and a JSON receipt describing omissions.
12
- See [formats and limits](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/FORMATS.md).
13
- Version 0.4.1 adds [selected ZIP/XML reader budgets](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/FORMATS.md#zipxml-reader-limits)
12
+ See [formats and limits](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/FORMATS.md).
13
+ Version 0.4.1 added [selected ZIP/XML reader budgets](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/FORMATS.md#zipxml-reader-limits)
14
14
  for DOCX/PPTX and workbook metadata/artifacts. Excessive work refuses before output
15
15
  writes; native workbook values and total process memory remain outside those bounds.
16
16
 
17
+ Version 0.5.0 adds ODT/ODP text and tables, selected MIME email bodies and exact UTF-8
18
+ Markdown/text pass-through. It preserves workbook Unicode and exposed datetime precision,
19
+ and selects one DOCX compatibility fallback.
20
+ It also adds textless PDF page facts and selected caption, table and math-spacing fixes.
21
+ See the [format contracts](FORMATS.md).
22
+
17
23
  ## Install
18
24
 
19
- These examples select 0.4.1. Use a channel listed as available in [that release](https://github.com/kochetkov-ma/brewdoc/releases/tag/v0.4.1). Choose one method:
25
+ These examples select 0.5.0. Use a channel listed as available in [that release](https://github.com/kochetkov-ma/brewdoc/releases/tag/v0.5.0). Choose one method:
20
26
 
21
27
  Article mode is introduced in 0.4.0. Channel availability is listed in the release.
22
28
 
23
29
  ```sh
24
- python -m pip install "brewdoc==0.4.1"
25
- uv tool install --python 3.12 "brewdoc==0.4.1"
26
- pipx install --python 3.12 "brewdoc==0.4.1"
30
+ python -m pip install "brewdoc==0.5.0"
31
+ uv tool install --python 3.12 "brewdoc==0.5.0"
32
+ pipx install --python 3.12 "brewdoc==0.5.0"
27
33
  ```
28
34
 
29
35
  Use a virtual environment for pip. Python 3.12+ is required; HTML/URL need CPython 3.12-3.14.
30
- [INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/INSTALL.md) covers prerequisites, Windows, uvx, PATH, update and removal.
36
+ [INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/INSTALL.md) covers prerequisites, Windows, uvx, PATH, update and removal.
31
37
  [Latest release](https://github.com/kochetkov-ma/brewdoc/releases/latest) lists actual assets and channel availability.
32
38
 
33
39
  ### Standalone downloads
34
40
 
35
- Use downloads listed as available in the release. Python and dependencies are bundled. Verify [SHA256SUMS](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.4.1/SHA256SUMS) and keep the entire extracted directory.
41
+ Use downloads listed as available in the release. Python and dependencies are bundled. Verify [SHA256SUMS](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.5.0/SHA256SUMS) and keep the entire extracted directory.
36
42
 
37
- [![Linux x64 download](https://img.shields.io/badge/Linux_x64-download-blue)](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.4.1/brewdoc-0.4.1-linux-x64.tar.gz)
38
- [![Windows x64 download](https://img.shields.io/badge/Windows_x64-download-blue)](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.4.1/brewdoc-0.4.1-windows-x64.zip)
39
- [![macOS ARM64 download](https://img.shields.io/badge/macOS_ARM64-download-blue)](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.4.1/brewdoc-0.4.1-macos-arm64.tar.gz)
43
+ [![Linux x64 download](https://img.shields.io/badge/Linux_x64-download-blue)](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.5.0/brewdoc-0.5.0-linux-x64.tar.gz)
44
+ [![Windows x64 download](https://img.shields.io/badge/Windows_x64-download-blue)](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.5.0/brewdoc-0.5.0-windows-x64.zip)
45
+ [![macOS ARM64 download](https://img.shields.io/badge/macOS_ARM64-download-blue)](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.5.0/brewdoc-0.5.0-macos-arm64.tar.gz)
40
46
 
41
47
  | Native target | Verification environment | JavaScript |
42
48
  |---|---|---|
@@ -46,15 +52,21 @@ Use downloads listed as available in the release. Python and dependencies are bu
46
52
 
47
53
  Older OSes, Linux musl/ARM64 and macOS Intel are outside this binary set.
48
54
  Windows is unsigned; macOS has an ad hoc signature without Developer ID/notarization.
49
- Linux archives have checksums, without a detached publisher signature. [Download and launch](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/INSTALL.md#standalone).
55
+ Linux archives have checksums, without a detached publisher signature. [Download and launch](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/INSTALL.md#standalone).
50
56
 
51
57
  ### npm
52
58
 
53
59
  [![npm](https://img.shields.io/npm/v/brewdoc)](https://www.npmjs.com/package/brewdoc)
54
60
 
55
61
  npm targets Linux x64/glibc and macOS ARM64. Windows uses the GitHub native download or Python package.
56
- Use npm/npx only when listed as available in [the release](https://github.com/kochetkov-ma/brewdoc/releases/tag/v0.4.1).
57
- [INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/INSTALL.md#npm-and-npx) contains exact-version installation, update and removal instructions.
62
+ Use npm/npx only when listed as available in [the release](https://github.com/kochetkov-ma/brewdoc/releases/tag/v0.5.0).
63
+ [INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/INSTALL.md#npm-and-npx) contains exact-version installation, update and removal instructions.
64
+
65
+ ### Homebrew
66
+
67
+ Use `kochetkov-ma/brew/brewdoc` only when the release lists it as available.
68
+ It installs the complete native bundle on macOS 15+ ARM64 or Linux x64 with system
69
+ glibc 2.35+. See [installation and lifecycle](INSTALL.md#homebrew).
58
70
 
59
71
  ## Usage
60
72
 
@@ -74,12 +86,18 @@ Requests and output collisions are validated before writes. Paths resolve agains
74
86
 
75
87
  ## Markdown and receipts
76
88
 
77
- Successful output uses `brewdoc.markdown/2`: quoted source title, Metadata, Artifacts,
89
+ Parsed document output uses `brewdoc.markdown/2`: quoted source title, Metadata, Artifacts,
78
90
  Known omissions, Contents, then anchored units. PDF uses `page/000001`, workbooks `sheet/000001`,
79
- PPTX `slide/000001`, and DOCX/EPUB/HTML `chapter/000001`. Empty declared units remain navigable.
91
+ PPTX/ODP `slide/000001`, and DOCX/EPUB/HTML/ODT/EML `chapter/000001`.
92
+ Empty declared units remain navigable.
80
93
  Metadata holds source/selection/content hashes, conversion tallies and artifact capabilities;
81
94
  it excludes paths, timestamps, permissions and host data. EPUB retains declared publication metadata.
82
95
 
96
+ UTF-8 `.md` and `.txt` use `brewdoc.markdown/passthrough/1`: exact source bytes with
97
+ no generated envelope, contents or anchors. BOM, whitespace, newline variants and absent
98
+ final newline survive; empty input succeeds. The receipt reports route `text`, kind `none`
99
+ and zero units. Without `--out`, the JSON receipt precedes the unchanged body bytes.
100
+
83
101
  Conversion prints one JSON receipt line first. With `--out`, Markdown goes to the file;
84
102
  without it, Markdown follows on stdout. Local receipts use `brewdoc.receipt/1`; URL receipts use `brewdoc.receipt/2`.
85
103
 
@@ -97,7 +115,8 @@ without it, Markdown follows on stdout. Local receipts use `brewdoc.receipt/1`;
97
115
  | `acquisition` | URL provenance, frozen snapshot and capture status |
98
116
 
99
117
  Exit 0 means conversion, 1 refusal and 2 invalid usage. Success does not prove content fidelity or complete JavaScript.
100
- PDF/DOCX/PPTX/workbooks emit ASCII; HTML/EPUB emit UTF-8 without BOM, with LF newlines. JSON keeps ASCII escaping.
118
+ PDF/DOCX/PPTX emit ASCII; workbooks/HTML/EPUB/ODT/ODP/EML emit UTF-8 without BOM, with LF newlines.
119
+ Text pass-through retains the source UTF-8 encoding and newlines. JSON keeps ASCII escaping.
101
120
  The same local file or frozen snapshot produces identical bytes; live pages can change.
102
121
 
103
122
  ## Python API
@@ -128,12 +147,12 @@ brewdoc --url https://example.com/article --render-js --timeout 30 --out article
128
147
  Public destinations, DNS, redirects, TLS, requests and bytes are validated. Ordinary requests use GET;
129
148
  JS admits only the narrow credential-free HN Algolia XHR POST exception. Local HTML never fetches or runs scripts.
130
149
  Optional JS needs installed/bundled prerequisites, refuses unsupported runtimes before HTTP and downloads no engine.
131
- Timing-only expiry can preserve valid partial content; hard failures refuse output. [Full URL/JS limits](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/FORMATS.md#url-acquisition).
150
+ Timing-only expiry can preserve valid partial content; hard failures refuse output. [Full URL/JS limits](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/FORMATS.md#url-acquisition).
132
151
 
133
152
  ## Article mode
134
153
 
135
154
  Introduced in 0.4.0; use a channel listed as available in the release. For Python JS capture, install
136
- `brewdoc[render-js]==0.4.1`; supported standalone bundles include its prerequisites.
155
+ `brewdoc[render-js]==0.5.0`; supported standalone bundles include its prerequisites.
137
156
 
138
157
  ```sh
139
158
  brewdoc page.html --article --out article.md
@@ -155,21 +174,21 @@ without layout or inferred author/date metadata. The source title is unchanged.
155
174
 
156
175
  The receipt's `not_carried` and successful Markdown's Known omissions declare:
157
176
  `body content outside the selected article or main subtree; complete page coverage is not claimed`.
158
- The [article contract](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/FORMATS.md#article-selection)
177
+ The [article contract](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/FORMATS.md#article-selection)
159
178
  defines selection, refusals and limits.
160
179
 
161
- [Source-package CI](https://github.com/kochetkov-ma/brewdoc/actions/runs/38431645006) passed on
180
+ [Earlier source-package CI](https://github.com/kochetkov-ma/brewdoc/actions/runs/38431645006) passed on
162
181
  Ubuntu 22.04 x64/glibc with CPython 3.13.15, and macOS 15 ARM64/Windows Server 2025 x64
163
182
  with CPython 3.14.7. Each passed four independent wheel/sdist base/optional installs;
164
183
  optional JS executed on Unix and refused before requests on Windows. These are selected
165
- tested patches, not a claim about newer versions. CPython 3.12.14 retains the local macOS
166
- full-suite baseline and existing CI smoke checks. Package evidence is separate from the
167
- standalone binaries; other OS/minor combinations, free-threaded CPython and other
184
+ tested patches, not a claim about newer versions. These results predate the 0.5.0 changes.
185
+ CPython 3.12.14 retains the local macOS full-suite baseline and existing CI smoke checks.
186
+ Package evidence is separate from standalone binaries; other OS/minor combinations, free-threaded CPython and other
168
187
  architectures remain untested here.
169
- See [package compatibility](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/FORMATS.md#python-package-compatibility).
188
+ See [package compatibility](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/FORMATS.md#python-package-compatibility).
170
189
 
171
- [Format contracts](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/FORMATS.md) | [Corpus](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/benchmarks/CATALOG.md) | [Measurements](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/benchmarks/METHODOLOGY.md) | [Results](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/benchmarks/results/README.md)
172
- [Releasing](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/RELEASING.md) | [Agent entry point](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/llms.txt) | [MIT license](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/LICENSE)
190
+ [Format contracts](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/FORMATS.md) | [Corpus](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/benchmarks/CATALOG.md) | [Measurements](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/benchmarks/METHODOLOGY.md) | [Results](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/benchmarks/results/README.md)
191
+ [Releasing](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/RELEASING.md) | [Agent entry point](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/llms.txt) | [MIT license](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/LICENSE)
173
192
 
174
193
  ## Related projects
175
194
 
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: brewdoc
3
- Version: 0.4.1
3
+ Version: 0.5.0
4
4
  Summary: Fast, deterministic document-to-Markdown conversion for agent systems. Easy to install. No model weights, OCR or external services.
5
5
  Project-URL: Homepage, https://github.com/kochetkov-ma/brewdoc
6
6
  Project-URL: Repository, https://github.com/kochetkov-ma/brewdoc
@@ -31,40 +31,46 @@ Description-Content-Type: text/markdown
31
31
  [![PyPI](https://img.shields.io/pypi/v/brewdoc)](https://pypi.org/project/brewdoc/)
32
32
  [![CI](https://github.com/kochetkov-ma/brewdoc/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/kochetkov-ma/brewdoc/actions/workflows/ci.yml)
33
33
  [![Release](https://img.shields.io/github/v/release/kochetkov-ma/brewdoc)](https://github.com/kochetkov-ma/brewdoc/releases/latest)
34
- [![MIT](https://img.shields.io/github/license/kochetkov-ma/brewdoc)](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/LICENSE)
34
+ [![MIT](https://img.shields.io/github/license/kochetkov-ma/brewdoc)](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/LICENSE)
35
35
 
36
36
  Fast, deterministic document-to-Markdown conversion for agent systems. Easy to install. No model weights, OCR or external services.
37
37
 
38
38
  Local conversion runs offline after installation, with no runtime component downloads.
39
39
  Supported documents become one Markdown file and a JSON receipt describing omissions.
40
- See [formats and limits](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/FORMATS.md).
41
- Version 0.4.1 adds [selected ZIP/XML reader budgets](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/FORMATS.md#zipxml-reader-limits)
40
+ See [formats and limits](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/FORMATS.md).
41
+ Version 0.4.1 added [selected ZIP/XML reader budgets](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/FORMATS.md#zipxml-reader-limits)
42
42
  for DOCX/PPTX and workbook metadata/artifacts. Excessive work refuses before output
43
43
  writes; native workbook values and total process memory remain outside those bounds.
44
44
 
45
+ Version 0.5.0 adds ODT/ODP text and tables, selected MIME email bodies and exact UTF-8
46
+ Markdown/text pass-through. It preserves workbook Unicode and exposed datetime precision,
47
+ and selects one DOCX compatibility fallback.
48
+ It also adds textless PDF page facts and selected caption, table and math-spacing fixes.
49
+ See the [format contracts](FORMATS.md).
50
+
45
51
  ## Install
46
52
 
47
- These examples select 0.4.1. Use a channel listed as available in [that release](https://github.com/kochetkov-ma/brewdoc/releases/tag/v0.4.1). Choose one method:
53
+ These examples select 0.5.0. Use a channel listed as available in [that release](https://github.com/kochetkov-ma/brewdoc/releases/tag/v0.5.0). Choose one method:
48
54
 
49
55
  Article mode is introduced in 0.4.0. Channel availability is listed in the release.
50
56
 
51
57
  ```sh
52
- python -m pip install "brewdoc==0.4.1"
53
- uv tool install --python 3.12 "brewdoc==0.4.1"
54
- pipx install --python 3.12 "brewdoc==0.4.1"
58
+ python -m pip install "brewdoc==0.5.0"
59
+ uv tool install --python 3.12 "brewdoc==0.5.0"
60
+ pipx install --python 3.12 "brewdoc==0.5.0"
55
61
  ```
56
62
 
57
63
  Use a virtual environment for pip. Python 3.12+ is required; HTML/URL need CPython 3.12-3.14.
58
- [INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/INSTALL.md) covers prerequisites, Windows, uvx, PATH, update and removal.
64
+ [INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/INSTALL.md) covers prerequisites, Windows, uvx, PATH, update and removal.
59
65
  [Latest release](https://github.com/kochetkov-ma/brewdoc/releases/latest) lists actual assets and channel availability.
60
66
 
61
67
  ### Standalone downloads
62
68
 
63
- Use downloads listed as available in the release. Python and dependencies are bundled. Verify [SHA256SUMS](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.4.1/SHA256SUMS) and keep the entire extracted directory.
69
+ Use downloads listed as available in the release. Python and dependencies are bundled. Verify [SHA256SUMS](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.5.0/SHA256SUMS) and keep the entire extracted directory.
64
70
 
65
- [![Linux x64 download](https://img.shields.io/badge/Linux_x64-download-blue)](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.4.1/brewdoc-0.4.1-linux-x64.tar.gz)
66
- [![Windows x64 download](https://img.shields.io/badge/Windows_x64-download-blue)](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.4.1/brewdoc-0.4.1-windows-x64.zip)
67
- [![macOS ARM64 download](https://img.shields.io/badge/macOS_ARM64-download-blue)](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.4.1/brewdoc-0.4.1-macos-arm64.tar.gz)
71
+ [![Linux x64 download](https://img.shields.io/badge/Linux_x64-download-blue)](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.5.0/brewdoc-0.5.0-linux-x64.tar.gz)
72
+ [![Windows x64 download](https://img.shields.io/badge/Windows_x64-download-blue)](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.5.0/brewdoc-0.5.0-windows-x64.zip)
73
+ [![macOS ARM64 download](https://img.shields.io/badge/macOS_ARM64-download-blue)](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.5.0/brewdoc-0.5.0-macos-arm64.tar.gz)
68
74
 
69
75
  | Native target | Verification environment | JavaScript |
70
76
  |---|---|---|
@@ -74,15 +80,21 @@ Use downloads listed as available in the release. Python and dependencies are bu
74
80
 
75
81
  Older OSes, Linux musl/ARM64 and macOS Intel are outside this binary set.
76
82
  Windows is unsigned; macOS has an ad hoc signature without Developer ID/notarization.
77
- Linux archives have checksums, without a detached publisher signature. [Download and launch](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/INSTALL.md#standalone).
83
+ Linux archives have checksums, without a detached publisher signature. [Download and launch](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/INSTALL.md#standalone).
78
84
 
79
85
  ### npm
80
86
 
81
87
  [![npm](https://img.shields.io/npm/v/brewdoc)](https://www.npmjs.com/package/brewdoc)
82
88
 
83
89
  npm targets Linux x64/glibc and macOS ARM64. Windows uses the GitHub native download or Python package.
84
- Use npm/npx only when listed as available in [the release](https://github.com/kochetkov-ma/brewdoc/releases/tag/v0.4.1).
85
- [INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/INSTALL.md#npm-and-npx) contains exact-version installation, update and removal instructions.
90
+ Use npm/npx only when listed as available in [the release](https://github.com/kochetkov-ma/brewdoc/releases/tag/v0.5.0).
91
+ [INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/INSTALL.md#npm-and-npx) contains exact-version installation, update and removal instructions.
92
+
93
+ ### Homebrew
94
+
95
+ Use `kochetkov-ma/brew/brewdoc` only when the release lists it as available.
96
+ It installs the complete native bundle on macOS 15+ ARM64 or Linux x64 with system
97
+ glibc 2.35+. See [installation and lifecycle](INSTALL.md#homebrew).
86
98
 
87
99
  ## Usage
88
100
 
@@ -102,12 +114,18 @@ Requests and output collisions are validated before writes. Paths resolve agains
102
114
 
103
115
  ## Markdown and receipts
104
116
 
105
- Successful output uses `brewdoc.markdown/2`: quoted source title, Metadata, Artifacts,
117
+ Parsed document output uses `brewdoc.markdown/2`: quoted source title, Metadata, Artifacts,
106
118
  Known omissions, Contents, then anchored units. PDF uses `page/000001`, workbooks `sheet/000001`,
107
- PPTX `slide/000001`, and DOCX/EPUB/HTML `chapter/000001`. Empty declared units remain navigable.
119
+ PPTX/ODP `slide/000001`, and DOCX/EPUB/HTML/ODT/EML `chapter/000001`.
120
+ Empty declared units remain navigable.
108
121
  Metadata holds source/selection/content hashes, conversion tallies and artifact capabilities;
109
122
  it excludes paths, timestamps, permissions and host data. EPUB retains declared publication metadata.
110
123
 
124
+ UTF-8 `.md` and `.txt` use `brewdoc.markdown/passthrough/1`: exact source bytes with
125
+ no generated envelope, contents or anchors. BOM, whitespace, newline variants and absent
126
+ final newline survive; empty input succeeds. The receipt reports route `text`, kind `none`
127
+ and zero units. Without `--out`, the JSON receipt precedes the unchanged body bytes.
128
+
111
129
  Conversion prints one JSON receipt line first. With `--out`, Markdown goes to the file;
112
130
  without it, Markdown follows on stdout. Local receipts use `brewdoc.receipt/1`; URL receipts use `brewdoc.receipt/2`.
113
131
 
@@ -125,7 +143,8 @@ without it, Markdown follows on stdout. Local receipts use `brewdoc.receipt/1`;
125
143
  | `acquisition` | URL provenance, frozen snapshot and capture status |
126
144
 
127
145
  Exit 0 means conversion, 1 refusal and 2 invalid usage. Success does not prove content fidelity or complete JavaScript.
128
- PDF/DOCX/PPTX/workbooks emit ASCII; HTML/EPUB emit UTF-8 without BOM, with LF newlines. JSON keeps ASCII escaping.
146
+ PDF/DOCX/PPTX emit ASCII; workbooks/HTML/EPUB/ODT/ODP/EML emit UTF-8 without BOM, with LF newlines.
147
+ Text pass-through retains the source UTF-8 encoding and newlines. JSON keeps ASCII escaping.
129
148
  The same local file or frozen snapshot produces identical bytes; live pages can change.
130
149
 
131
150
  ## Python API
@@ -156,12 +175,12 @@ brewdoc --url https://example.com/article --render-js --timeout 30 --out article
156
175
  Public destinations, DNS, redirects, TLS, requests and bytes are validated. Ordinary requests use GET;
157
176
  JS admits only the narrow credential-free HN Algolia XHR POST exception. Local HTML never fetches or runs scripts.
158
177
  Optional JS needs installed/bundled prerequisites, refuses unsupported runtimes before HTTP and downloads no engine.
159
- Timing-only expiry can preserve valid partial content; hard failures refuse output. [Full URL/JS limits](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/FORMATS.md#url-acquisition).
178
+ Timing-only expiry can preserve valid partial content; hard failures refuse output. [Full URL/JS limits](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/FORMATS.md#url-acquisition).
160
179
 
161
180
  ## Article mode
162
181
 
163
182
  Introduced in 0.4.0; use a channel listed as available in the release. For Python JS capture, install
164
- `brewdoc[render-js]==0.4.1`; supported standalone bundles include its prerequisites.
183
+ `brewdoc[render-js]==0.5.0`; supported standalone bundles include its prerequisites.
165
184
 
166
185
  ```sh
167
186
  brewdoc page.html --article --out article.md
@@ -183,21 +202,21 @@ without layout or inferred author/date metadata. The source title is unchanged.
183
202
 
184
203
  The receipt's `not_carried` and successful Markdown's Known omissions declare:
185
204
  `body content outside the selected article or main subtree; complete page coverage is not claimed`.
186
- The [article contract](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/FORMATS.md#article-selection)
205
+ The [article contract](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/FORMATS.md#article-selection)
187
206
  defines selection, refusals and limits.
188
207
 
189
- [Source-package CI](https://github.com/kochetkov-ma/brewdoc/actions/runs/38431645006) passed on
208
+ [Earlier source-package CI](https://github.com/kochetkov-ma/brewdoc/actions/runs/38431645006) passed on
190
209
  Ubuntu 22.04 x64/glibc with CPython 3.13.15, and macOS 15 ARM64/Windows Server 2025 x64
191
210
  with CPython 3.14.7. Each passed four independent wheel/sdist base/optional installs;
192
211
  optional JS executed on Unix and refused before requests on Windows. These are selected
193
- tested patches, not a claim about newer versions. CPython 3.12.14 retains the local macOS
194
- full-suite baseline and existing CI smoke checks. Package evidence is separate from the
195
- standalone binaries; other OS/minor combinations, free-threaded CPython and other
212
+ tested patches, not a claim about newer versions. These results predate the 0.5.0 changes.
213
+ CPython 3.12.14 retains the local macOS full-suite baseline and existing CI smoke checks.
214
+ Package evidence is separate from standalone binaries; other OS/minor combinations, free-threaded CPython and other
196
215
  architectures remain untested here.
197
- See [package compatibility](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/FORMATS.md#python-package-compatibility).
216
+ See [package compatibility](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/FORMATS.md#python-package-compatibility).
198
217
 
199
- [Format contracts](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/FORMATS.md) | [Corpus](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/benchmarks/CATALOG.md) | [Measurements](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/benchmarks/METHODOLOGY.md) | [Results](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/benchmarks/results/README.md)
200
- [Releasing](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/RELEASING.md) | [Agent entry point](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/llms.txt) | [MIT license](https://github.com/kochetkov-ma/brewdoc/blob/v0.4.1/LICENSE)
218
+ [Format contracts](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/FORMATS.md) | [Corpus](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/benchmarks/CATALOG.md) | [Measurements](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/benchmarks/METHODOLOGY.md) | [Results](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/benchmarks/results/README.md)
219
+ [Releasing](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/RELEASING.md) | [Agent entry point](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/llms.txt) | [MIT license](https://github.com/kochetkov-ma/brewdoc/blob/v0.5.0/LICENSE)
201
220
 
202
221
  ## Related projects
203
222
 
@@ -0,0 +1,33 @@
1
+ ../../../bin/brewdoc,sha256=hW7-J20fv5kgKe6aQaU2M093v_W6KUBS3LAXTQ4qJEg,341
2
+ brewdoc-0.5.0.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2
3
+ brewdoc-0.5.0.dist-info/METADATA,sha256=a5P0q7b55iXVxI6K2hmOTwFmXyg6U9k73zeRYS_4Exg,13777
4
+ brewdoc-0.5.0.dist-info/RECORD,,
5
+ brewdoc-0.5.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ brewdoc-0.5.0.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
7
+ brewdoc-0.5.0.dist-info/direct_url.json,sha256=MRtE10TV1fqrSeLJEFBr37-bffxs5ZiA-fvxCYmtqhQ,102
8
+ brewdoc-0.5.0.dist-info/entry_points.txt,sha256=avLrj5Y-MJ1yq0XFkjH5dbZW9QwYQkpn_hz6sNydbA4,45
9
+ brewdoc-0.5.0.dist-info/licenses/LICENSE,sha256=DNUrRveB3NXcyWxUr8csAHYmvrOmAzFDDAKv3iXNYKk,1073
10
+ brewdoc-0.5.0.dist-info/uv_cache.json,sha256=_ApGNYqiUMXqW6opgQkdosH_88yvhmEgBKxPxeGTHYE,127
11
+ brewdoc/__init__.py,sha256=V7ghtuv05Ryzvy5R9aOzShJQ1AH-HYTN6NMR1i3jiW8,867
12
+ brewdoc/_standalone.py,sha256=-zfCo75E8YlQexHuPoTu1tl1SJGMNftH1JXSt6qilxo,4705
13
+ brewdoc/_urljs/__init__.py,sha256=SrVyNMaD02iahY2zp3kggkW7KGJ1xv-C5d4DK1-JYWw,51
14
+ brewdoc/_urljs/glue.js,sha256=aU6lhMMxZcPxZSNctfUd-X91gkV6mgElWFFV_SnUWqM,41449
15
+ brewdoc/_urljs/native.py,sha256=ggTisaUThjXp6RN973T06krxCDglvzytF05_2NEraWs,44168
16
+ brewdoc/_vendor/THIRD_PARTY_NOTICES.txt,sha256=Mg3dxJ1SNPASEu4_ruk2j-7WM0lZmrfulGCUpNoOZak,26003
17
+ brewdoc/_vendor/linkedom-worker.js,sha256=6p8d5psAnSEJaN2PTT9OzxCVvt-A04nsgyRMFxNXgog,411521
18
+ brewdoc/cli.py,sha256=bbTho44BdJKvjDVzpBjhGWNLx5A7lXfL810lKWb2Xio,6120
19
+ brewdoc/common.py,sha256=nnKgr7E9AAIQoYYETHFDq3hbu-CzJavUjzX4g5dik58,33507
20
+ brewdoc/docx.py,sha256=w5fzxManQw7E34p70-YOT3-hfE0E4Z9SBHaiIqY3ke0,6154
21
+ brewdoc/eml.py,sha256=2R6V4Er-6rWcs25FyU8vyy0GgjREU-CA4RF6yMQk_w4,7393
22
+ brewdoc/epub.py,sha256=g97-YQhmTr3ufzDxxwsIuB6eRzPiDc_VhvgHBk-mCYk,50502
23
+ brewdoc/htmljs.py,sha256=lTfAN1ycDiRh0d7kB1bLX6Cd33sGcnPVrYnmj61P_AY,41410
24
+ brewdoc/htmltext.py,sha256=MJ30p0oANDOcHUTxBk3NNvE7j4E1B_2TfjOw2HuR7xc,41168
25
+ brewdoc/htmlurl.py,sha256=RV8Cvp3Qle_y_6m--FMdeeJ19YWCOX6B--w27sJ8Z38,36862
26
+ brewdoc/odf.py,sha256=M5OZwNmZKQx68zpQRf158MUXMTHmnnKmtBam6sPi0YI,15467
27
+ brewdoc/output.py,sha256=aMgDoB5UDbRWYr9pBxlH402jEiUl8OSEqhox31O0ljk,4123
28
+ brewdoc/pdf.py,sha256=AoYeJWHCrDxspkA5bMPRkeCowkhjokxUP5XrYb6HQdk,65954
29
+ brewdoc/pptx.py,sha256=OYE42ZMgifyhWW8uj0M7JHsasaxXkcfLfSKVsp77is0,17844
30
+ brewdoc/selfcheck.py,sha256=lMP4xkHLJJZXmoO5QYuXhOEfgJwm0iGxkFjvNEKLDPw,28033
31
+ brewdoc/service.py,sha256=csiG2OE2ztUkIc3QUAeXu4IOkCdu7U8wnud7pl-m73Q,7232
32
+ brewdoc/sheets.py,sha256=qgvSxj4MnwPELvwzb3oSmffIOO5LIaAcTzC65TkYp6c,17411
33
+ brewdoc/text.py,sha256=OCrVnR3t4_FSn5rpxmQhItKg2oagKNhFhyp8XcJYHNw,602
@@ -0,0 +1 @@
1
+ {"url":"file:///home/runner/work/_temp/ci-dist/dist/brewdoc-0.5.0-py3-none-any.whl","archive_info":{}}
@@ -0,0 +1 @@
1
+ {"timestamp":{"secs_since_epoch":1791987709,"nanos_since_epoch":633181112},"commit":null,"tags":null,"env":{},"directories":{}}
package/binary/brewdoc CHANGED
Binary file
@@ -1,6 +1,6 @@
1
1
  [
2
2
  {
3
- "path": "licenses/installed/brewdoc/brewdoc-0.4.1.dist-info/licenses/LICENSE",
3
+ "path": "licenses/installed/brewdoc/brewdoc-0.5.0.dist-info/licenses/LICENSE",
4
4
  "bytes": 1073,
5
5
  "sha256": "0cd52b46f781dcd5dcc96c54afc72c007626beb3a60331430c02afde25cd60a9"
6
6
  },
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "0.4.1",
3
- "source_sha": "00b857115b1ec1cbe14d09f5c911842908a4dc30",
2
+ "version": "0.5.0",
3
+ "source_sha": "1471975a6fbd8a17766278fd5a0738c095f2ec57",
4
4
  "python": "3.12.14",
5
5
  "target": "linux-x64"
6
6
  }
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "archive": {
3
- "bytes": 42001361,
4
- "filename": "brewdoc-0.4.1-linux-x64.tar.gz",
5
- "sha256": "789915a7844f3a3b5d636bf79f3aed74062a7b0a051acb60558022528bf8f8f6"
3
+ "bytes": 42026646,
4
+ "filename": "brewdoc-0.5.0-linux-x64.tar.gz",
5
+ "sha256": "ac10ed1b359491635ed6d265eb0305124b5c5107bdaef2a42687ac7f1b83ce17"
6
6
  },
7
7
  "executable": "brewdoc/brewdoc",
8
8
  "inventory": {
@@ -76,73 +76,73 @@
76
76
  "bytes": 1333490,
77
77
  "kind": "file",
78
78
  "mode": 420,
79
- "sha256": "890e16c954fb938640304c2d0811db27b974c97fc9ceecdddaf385b272067120"
79
+ "sha256": "e250c57d92b263f19a647d79e45c611e88a16f96c981332126195bb263048a73"
80
80
  },
81
81
  "brewdoc/_internal/brewdoc": {
82
82
  "kind": "directory",
83
83
  "mode": 493
84
84
  },
85
- "brewdoc/_internal/brewdoc-0.4.1.dist-info": {
85
+ "brewdoc/_internal/brewdoc-0.5.0.dist-info": {
86
86
  "kind": "directory",
87
87
  "mode": 493
88
88
  },
89
- "brewdoc/_internal/brewdoc-0.4.1.dist-info/INSTALLER": {
89
+ "brewdoc/_internal/brewdoc-0.5.0.dist-info/INSTALLER": {
90
90
  "bytes": 2,
91
91
  "kind": "file",
92
92
  "mode": 420,
93
93
  "sha256": "e6184ce10e266134fdcfa401e8f1a95005bcd4f18d16b62b757323e2833fe9a9"
94
94
  },
95
- "brewdoc/_internal/brewdoc-0.4.1.dist-info/METADATA": {
96
- "bytes": 12690,
95
+ "brewdoc/_internal/brewdoc-0.5.0.dist-info/METADATA": {
96
+ "bytes": 13777,
97
97
  "kind": "file",
98
98
  "mode": 420,
99
- "sha256": "17876281ac4270c4f2965baf25a30cc61fd2791efd9364da958367e449135b45"
99
+ "sha256": "6b93f4abb6f9e625d5c48e8ada198e4f01665f283a53d93bdf3791612ff81318"
100
100
  },
101
- "brewdoc/_internal/brewdoc-0.4.1.dist-info/RECORD": {
102
- "bytes": 2390,
101
+ "brewdoc/_internal/brewdoc-0.5.0.dist-info/RECORD": {
102
+ "bytes": 2604,
103
103
  "kind": "file",
104
104
  "mode": 420,
105
- "sha256": "d2a4515d66294cc71f714a6513aa961f541ad4683268601e6ee75a290cd6eeaa"
105
+ "sha256": "5bed008c4d065c46c709958dc0924da48d65bc4eda3dd46e7aa187fd9aecac33"
106
106
  },
107
- "brewdoc/_internal/brewdoc-0.4.1.dist-info/REQUESTED": {
107
+ "brewdoc/_internal/brewdoc-0.5.0.dist-info/REQUESTED": {
108
108
  "bytes": 0,
109
109
  "kind": "file",
110
110
  "mode": 420,
111
111
  "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
112
112
  },
113
- "brewdoc/_internal/brewdoc-0.4.1.dist-info/WHEEL": {
113
+ "brewdoc/_internal/brewdoc-0.5.0.dist-info/WHEEL": {
114
114
  "bytes": 87,
115
115
  "kind": "file",
116
116
  "mode": 420,
117
117
  "sha256": "5b77e4a649bbfb07fdbc123967eeecd1e5a478cfaca6eefc23c35e6fdf037848"
118
118
  },
119
- "brewdoc/_internal/brewdoc-0.4.1.dist-info/direct_url.json": {
119
+ "brewdoc/_internal/brewdoc-0.5.0.dist-info/direct_url.json": {
120
120
  "bytes": 102,
121
121
  "kind": "file",
122
122
  "mode": 420,
123
- "sha256": "0e0e7899bf115cbe83baa8aec4cf0095ba715fd216b9a8f6bc7234a3d169a58d"
123
+ "sha256": "311b44d744d5d5faab49e2c910506bdfbf9b7dfc6ce59880f9fbf10989adaa14"
124
124
  },
125
- "brewdoc/_internal/brewdoc-0.4.1.dist-info/entry_points.txt": {
125
+ "brewdoc/_internal/brewdoc-0.5.0.dist-info/entry_points.txt": {
126
126
  "bytes": 45,
127
127
  "kind": "file",
128
128
  "mode": 420,
129
129
  "sha256": "6af2eb8f963e309d72ab45c59231f975b656f50c18424a67fe1cfab0dc9d6c0e"
130
130
  },
131
- "brewdoc/_internal/brewdoc-0.4.1.dist-info/licenses": {
131
+ "brewdoc/_internal/brewdoc-0.5.0.dist-info/licenses": {
132
132
  "kind": "directory",
133
133
  "mode": 493
134
134
  },
135
- "brewdoc/_internal/brewdoc-0.4.1.dist-info/licenses/LICENSE": {
135
+ "brewdoc/_internal/brewdoc-0.5.0.dist-info/licenses/LICENSE": {
136
136
  "bytes": 1073,
137
137
  "kind": "file",
138
138
  "mode": 420,
139
139
  "sha256": "0cd52b46f781dcd5dcc96c54afc72c007626beb3a60331430c02afde25cd60a9"
140
140
  },
141
- "brewdoc/_internal/brewdoc-0.4.1.dist-info/uv_cache.json": {
141
+ "brewdoc/_internal/brewdoc-0.5.0.dist-info/uv_cache.json": {
142
142
  "bytes": 127,
143
143
  "kind": "file",
144
144
  "mode": 420,
145
- "sha256": "fc4d1cef18eccddbedeeac6c8a0e4a45deb93fad0c9e726289b1a7d3fede8762"
145
+ "sha256": "fc0a46358aa250c5ea5baa2981091da2c1fff3ccaf86612004ac4fc5e1931d81"
146
146
  },
147
147
  "brewdoc/_internal/brewdoc/_urljs": {
148
148
  "kind": "directory",
@@ -2235,10 +2235,10 @@
2235
2235
  "sha256": "fe0f992e9acf81baafec12ecf9611ef0885b0ddfd04dc7e2af3fcd132475630c"
2236
2236
  },
2237
2237
  "brewdoc/brewdoc": {
2238
- "bytes": 3895288,
2238
+ "bytes": 3922080,
2239
2239
  "kind": "file",
2240
2240
  "mode": 493,
2241
- "sha256": "394518f65ab99bfcc2e9f9fe2c217a332165d9d7dbe88164c574334d1cd4c937"
2241
+ "sha256": "9bf57ec2274e79b61cbd2b7c75d39d6d84ec410eefd3b1f1223a006bb66b6cce"
2242
2242
  },
2243
2243
  "brewdoc/licenses": {
2244
2244
  "kind": "directory",
@@ -2252,7 +2252,7 @@
2252
2252
  "bytes": 8410,
2253
2253
  "kind": "file",
2254
2254
  "mode": 420,
2255
- "sha256": "42c764bbacb0f5ecc3dedb1dcc3659c4485c7425545db844cbcbaddc0c2ae0c4"
2255
+ "sha256": "9bf49f39f09ffda665b61f555b4235b67c11a9da3f315b22652fee542f4c853b"
2256
2256
  },
2257
2257
  "brewdoc/licenses/installed/brewdoc": {
2258
2258
  "kind": "directory",
@@ -2262,15 +2262,15 @@
2262
2262
  "kind": "directory",
2263
2263
  "mode": 493
2264
2264
  },
2265
- "brewdoc/licenses/installed/brewdoc/brewdoc-0.4.1.dist-info": {
2265
+ "brewdoc/licenses/installed/brewdoc/brewdoc-0.5.0.dist-info": {
2266
2266
  "kind": "directory",
2267
2267
  "mode": 493
2268
2268
  },
2269
- "brewdoc/licenses/installed/brewdoc/brewdoc-0.4.1.dist-info/licenses": {
2269
+ "brewdoc/licenses/installed/brewdoc/brewdoc-0.5.0.dist-info/licenses": {
2270
2270
  "kind": "directory",
2271
2271
  "mode": 493
2272
2272
  },
2273
- "brewdoc/licenses/installed/brewdoc/brewdoc-0.4.1.dist-info/licenses/LICENSE": {
2273
+ "brewdoc/licenses/installed/brewdoc/brewdoc-0.5.0.dist-info/licenses/LICENSE": {
2274
2274
  "bytes": 1073,
2275
2275
  "kind": "file",
2276
2276
  "mode": 420,
@@ -4156,10 +4156,10 @@
4156
4156
  "bytes": 133,
4157
4157
  "kind": "file",
4158
4158
  "mode": 420,
4159
- "sha256": "53205d616f0a7ffa473702200af3d979f7d7f4a7e4f784da9f4369575d3c77ce"
4159
+ "sha256": "a0e205178f35b572e5da9a0e16b962d66d463843d72beb6971a8742324841606"
4160
4160
  }
4161
4161
  },
4162
- "lock_sha256": "5a78b42211f87ff1877b72efd1cb5de957d23f78c236601dd887a30271b7926d",
4162
+ "lock_sha256": "afcbd72d09ef67b0f9e118a4e85d75d1f6e8a46315e4927c3bc8a23ce226171c",
4163
4163
  "minimum_tested": "Ubuntu 22.04, glibc 2.35",
4164
4164
  "oracle": [],
4165
4165
  "probes": [
@@ -4167,6 +4167,7 @@
4167
4167
  "bytes_base64": "UEsDBBQAAAAAAAAAIVBvYassFAAAABQAAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi9lcHViK3ppcFBLAwQUAAAAAAAAACFQZsMSuMMAAADDAAAAFgAAAE1FVEEtSU5GL2NvbnRhaW5lci54bWw8Y29udGFpbmVyIHhtbG5zPSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmNvbnRhaW5lciIgdmVyc2lvbj0iMS4wIj48cm9vdGZpbGVzPjxyb290ZmlsZSBmdWxsLXBhdGg9Ik9QUy9ib29rLm9wZiIgbWVkaWEtdHlwZT0iYXBwbGljYXRpb24vb2VicHMtcGFja2FnZSt4bWwiLz48L3Jvb3RmaWxlcz48L2NvbnRhaW5lcj5QSwMEFAAAAAAAAAAhUFm2frB9AgAAfQIAAAwAAABPUFMvYm9vay5vcGY8cGFja2FnZSB4bWxucz0iaHR0cDovL3d3dy5pZHBmLm9yZy8yMDA3L29wZiIgdmVyc2lvbj0iMi4wIiB1bmlxdWUtaWRlbnRpZmllcj0iYm9vay1pZCI+PG1ldGFkYXRhIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PGRjOnRpdGxlPmNhZsOpIOadseS6rDwvZGM6dGl0bGU+PGRjOmNyZWF0b3I+Rmlyc3Q8L2RjOmNyZWF0b3I+PGRjOmNyZWF0b3I+Rmlyc3Q8L2RjOmNyZWF0b3I+PGRjOmxhbmd1YWdlPmZyPC9kYzpsYW5ndWFnZT48ZGM6aWRlbnRpZmllciBpZD0iYm9vay1pZCI+dXJuOnN5bnRoZXRpYzwvZGM6aWRlbnRpZmllcj48L21ldGFkYXRhPjxtYW5pZmVzdD48aXRlbSBpZD0iYSIgaHJlZj0iYS54aHRtbCIgbWVkaWEtdHlwZT0iYXBwbGljYXRpb24veGh0bWwreG1sIi8+PGl0ZW0gaWQ9ImIiIGhyZWY9ImIueGh0bWwiIG1lZGlhLXR5cGU9ImFwcGxpY2F0aW9uL3hodG1sK3htbCIvPjxpdGVtIGlkPSJ0b2MiIGhyZWY9InRvYy5uY3giIG1lZGlhLXR5cGU9ImFwcGxpY2F0aW9uL3gtZHRibmN4K3htbCIvPjwvbWFuaWZlc3Q+PHNwaW5lIHRvYz0idG9jIj48aXRlbXJlZiBpZHJlZj0iYiIvPjxpdGVtcmVmIGlkcmVmPSJhIiBsaW5lYXI9Im5vIi8+PC9zcGluZT48L3BhY2thZ2U+UEsDBBQAAAAAAAAAIVBwt4eVgQAAAIEAAAALAAAAT1BTL2EueGh0bWw8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PGhlYWQ+PHRpdGxlPkZhbGxiYWNrPC90aXRsZT48L2hlYWQ+PGJvZHk+PHA+Rmlyc3QgZSYjeDMwMTvCoHdvcmTCrS48L3A+PC9ib2R5PjwvaHRtbD5QSwMEFAAAAAAAAAAhUOMm2fN2AAAAdgAAAAsAAABPUFMvYi54aHRtbDxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48aGVhZD48dGl0bGU+RmFsbGJhY2s8L3RpdGxlPjwvaGVhZD48Ym9keT48cD5jYWbDqSDmnbHkuqw8L3A+PC9ib2R5PjwvaHRtbD5QSwMEFAAAAAAAAAAhUP4OjIloAQAAaAEAAAsAAABPUFMvdG9jLm5jeDxuY3ggeG1sbnM9Imh0dHA6Ly93d3cuZGFpc3kub3JnL3ozOTg2LzIwMDUvbmN4LyIgdmVyc2lvbj0iMjAwNS0xIj48aGVhZC8+PGRvY1RpdGxlPjx0ZXh0PlB1YmxpY2F0aW9uPC90ZXh0PjwvZG9jVGl0bGU+PG5hdk1hcD48bmF2UG9pbnQgaWQ9Im5hdi1hIiBwbGF5T3JkZXI9IjkiPjxuYXZMYWJlbD48dGV4dD5BbHBoYTwvdGV4dD48L25hdkxhYmVsPjxjb250ZW50IHNyYz0iYS54aHRtbCIvPjwvbmF2UG9pbnQ+PG5hdlBvaW50IGlkPSJuYXYtYiIgcGxheU9yZGVyPSIxIj48bmF2TGFiZWw+PHRleHQ+zrJldGE8L3RleHQ+PC9uYXZMYWJlbD48Y29udGVudCBzcmM9ImIueGh0bWwiLz48L25hdlBvaW50PjwvbmF2TWFwPjwvbmN4PlBLAQIUAxQAAAAAAAAAIVBvYassFAAAABQAAAAIAAAAAAAAAAAAAACAAQAAAABtaW1ldHlwZVBLAQIUAxQAAAAAAAAAIVBmwxK4wwAAAMMAAAAWAAAAAAAAAAAAAACAAToAAABNRVRBLUlORi9jb250YWluZXIueG1sUEsBAhQDFAAAAAAAAAAhUFm2frB9AgAAfQIAAAwAAAAAAAAAAAAAAIABMQEAAE9QUy9ib29rLm9wZlBLAQIUAxQAAAAAAAAAIVBwt4eVgQAAAIEAAAALAAAAAAAAAAAAAACAAdgDAABPUFMvYS54aHRtbFBLAQIUAxQAAAAAAAAAIVDjJtnzdgAAAHYAAAALAAAAAAAAAAAAAACAAYIEAABPUFMvYi54aHRtbFBLAQIUAxQAAAAAAAAAIVD+DoyJaAEAAGgBAAALAAAAAAAAAAAAAACAASEFAABPUFMvdG9jLm5jeFBLBQYAAAAABgAGAF8BAACyBgAAAAA=",
4168
4168
  "code": 0,
4169
4169
  "markdown_bytes": 2130,
4170
+ "markdown_encoding": "utf-8",
4170
4171
  "markdown_sha256": "4beea667419922013009835a826395558e270bf5a05446f9ec8d79390f25c7ec",
4171
4172
  "path": "sample.epub",
4172
4173
  "probe": "epub2",
@@ -4214,12 +4215,13 @@
4214
4215
  "artifact": {
4215
4216
  "bytes": 664,
4216
4217
  "key": "formula/sheet/000002",
4217
- "sha256": "1be078c4f9f5819b73294c701b8172ba753be8cafbc44a251128f460953b3435"
4218
+ "sha256": "1c12bc36440f11dbc530ce00842736a7c744b17a0bca32ddeceadda6ed155369"
4218
4219
  },
4219
- "bytes_base64": "UEsDBBQAAAAAALCrTV3ZAU4y4wIAAOMCAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbDw/eG1sIHZlcnNpb249IjEuMCI/PjxUeXBlcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9jb250ZW50LXR5cGVzIj48RGVmYXVsdCBFeHRlbnNpb249InJlbHMiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5yZWxhdGlvbnNoaXBzK3htbCIvPjxPdmVycmlkZSBQYXJ0TmFtZT0iL3hsL3dvcmtib29rLnhtbCIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Lm1haW4reG1sIi8+PE92ZXJyaWRlIFBhcnROYW1lPSIveGwvd29ya3NoZWV0cy9zaGVldDEueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwud29ya3NoZWV0K3htbCIvPjxPdmVycmlkZSBQYXJ0TmFtZT0iL3hsL3dvcmtzaGVldHMvc2hlZXQyLnhtbCIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLndvcmtzaGVldCt4bWwiLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC93b3Jrc2hlZXRzL3NoZWV0My54bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sIi8+PC9UeXBlcz5QSwMEFAAAAAAAsKtNXUuDozoFAQAABQEAAAsAAABfcmVscy8ucmVsczw/eG1sIHZlcnNpb249IjEuMCI/PjxSZWxhdGlvbnNoaXBzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDEiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnQiIFRhcmdldD0ieGwvd29ya2Jvb2sueG1sIi8+PC9SZWxhdGlvbnNoaXBzPlBLAwQUAAAAAACwq01dImE/o1IBAABSAQAADwAAAHhsL3dvcmtib29rLnhtbDw/eG1sIHZlcnNpb249IjEuMCI/Pjx3b3JrYm9vayB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIiB4bWxuczpyPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIj48c2hlZXRzPjxzaGVldCBuYW1lPSJJbnB1dHMiIHNoZWV0SWQ9IjEiIHI6aWQ9InJJZDEiLz48c2hlZXQgbmFtZT0iQ2FsYyIgc2hlZXRJZD0iMiIgcjppZD0icklkMiIvPjxzaGVldCBuYW1lPSJFbXB0eSIgc2hlZXRJZD0iMyIgcjppZD0icklkMyIvPjwvc2hlZXRzPjwvd29ya2Jvb2s+UEsDBBQAAAAAALCrTV3JpmJ5IAIAACACAAAaAAAAeGwvX3JlbHMvd29ya2Jvb2sueG1sLnJlbHM8P3htbCB2ZXJzaW9uPSIxLjAiPz48UmVsYXRpb25zaGlwcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzIj48UmVsYXRpb25zaGlwIElkPSJySWQxIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCIgVGFyZ2V0PSJ3b3Jrc2hlZXRzL3NoZWV0MS54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQyIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCIgVGFyZ2V0PSJ3b3Jrc2hlZXRzL3NoZWV0Mi54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQzIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCIgVGFyZ2V0PSJ3b3Jrc2hlZXRzL3NoZWV0My54bWwiLz48L1JlbGF0aW9uc2hpcHM+UEsDBBQAAAAAALCrTV3hQA/x9gAAAPYAAAAYAAAAeGwvd29ya3NoZWV0cy9zaGVldDEueG1sPHdvcmtzaGVldCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIj48c2hlZXREYXRhPjxyb3cgcj0iMSI+PGMgcj0iQTEiPjx2PjE8L3Y+PC9jPjwvcm93Pjxyb3cgcj0iMiI+PGMgcj0iQTIiPjx2PjI8L3Y+PC9jPjwvcm93Pjxyb3cgcj0iMyI+PGMgcj0iQTMiPjxmPlNVTShBMTpBMik8L2Y+PHY+Mzwvdj48L2M+PC9yb3c+PC9zaGVldERhdGE+PC93b3Jrc2hlZXQ+UEsDBBQAAAAAALCrTV3R4blYmQEAAJkBAAAYAAAAeGwvd29ya3NoZWV0cy9zaGVldDIueG1sPHdvcmtzaGVldCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIj48c2hlZXREYXRhPjxyb3cgcj0iMSI+PGMgcj0iQTEiPjxmPlNVTShJbnB1dHMhQTE6QTIpPC9mPjx2PjM8L3Y+PC9jPjxjIHI9IkIxIj48ZiB0PSJzaGFyZWQiIHJlZj0iQjE6QjIiIHNpPSI3Ij5JbnB1dHMhQTEqMjwvZj48dj4yPC92PjwvYz48L3Jvdz48cm93IHI9IjIiPjxjIHI9IkIyIj48ZiBzaT0iNyIgdD0ic2hhcmVkIi8+PHY+NDwvdj48L2M+PC9yb3c+PHJvdyByPSIzIj48YyByPSJDMyI+PGYgYng9IjAiIGFjYT0iMSI+SUYoQTEmbHQ7NCwmcXVvdDtjYWbDqSZxdW90OywmcXVvdDsmcXVvdDspPC9mPjx2PjE8L3Y+PC9jPjwvcm93Pjwvc2hlZXREYXRhPjwvd29ya3NoZWV0PlBLAwQUAAAAAACwq01dCntq/2UAAABlAAAAGAAAAHhsL3dvcmtzaGVldHMvc2hlZXQzLnhtbDx3b3Jrc2hlZXQgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiI+PHNoZWV0RGF0YS8+PC93b3Jrc2hlZXQ+UEsBAhQDFAAAAAAAsKtNXdkBTjLjAgAA4wIAABMAAAAAAAAAAAAAAIABAAAAAFtDb250ZW50X1R5cGVzXS54bWxQSwECFAMUAAAAAACwq01dS4OjOgUBAAAFAQAACwAAAAAAAAAAAAAAgAEUAwAAX3JlbHMvLnJlbHNQSwECFAMUAAAAAACwq01dImE/o1IBAABSAQAADwAAAAAAAAAAAAAAgAFCBAAAeGwvd29ya2Jvb2sueG1sUEsBAhQDFAAAAAAAsKtNXcmmYnkgAgAAIAIAABoAAAAAAAAAAAAAAIABwQUAAHhsL19yZWxzL3dvcmtib29rLnhtbC5yZWxzUEsBAhQDFAAAAAAAsKtNXeFAD/H2AAAA9gAAABgAAAAAAAAAAAAAAIABGQgAAHhsL3dvcmtzaGVldHMvc2hlZXQxLnhtbFBLAQIUAxQAAAAAALCrTV3R4blYmQEAAJkBAAAYAAAAAAAAAAAAAACAAUUJAAB4bC93b3Jrc2hlZXRzL3NoZWV0Mi54bWxQSwECFAMUAAAAAACwq01dCntq/2UAAABlAAAAGAAAAAAAAAAAAAAAgAEUCwAAeGwvd29ya3NoZWV0cy9zaGVldDMueG1sUEsFBgAAAAAHAAcA0QEAAK8LAAAAAA==",
4220
+ "bytes_base64": "UEsDBBQAAAAAALpyTl3ZAU4y4wIAAOMCAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbDw/eG1sIHZlcnNpb249IjEuMCI/PjxUeXBlcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9jb250ZW50LXR5cGVzIj48RGVmYXVsdCBFeHRlbnNpb249InJlbHMiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5yZWxhdGlvbnNoaXBzK3htbCIvPjxPdmVycmlkZSBQYXJ0TmFtZT0iL3hsL3dvcmtib29rLnhtbCIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Lm1haW4reG1sIi8+PE92ZXJyaWRlIFBhcnROYW1lPSIveGwvd29ya3NoZWV0cy9zaGVldDEueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwud29ya3NoZWV0K3htbCIvPjxPdmVycmlkZSBQYXJ0TmFtZT0iL3hsL3dvcmtzaGVldHMvc2hlZXQyLnhtbCIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLndvcmtzaGVldCt4bWwiLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC93b3Jrc2hlZXRzL3NoZWV0My54bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sIi8+PC9UeXBlcz5QSwMEFAAAAAAAunJOXUuDozoFAQAABQEAAAsAAABfcmVscy8ucmVsczw/eG1sIHZlcnNpb249IjEuMCI/PjxSZWxhdGlvbnNoaXBzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDEiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnQiIFRhcmdldD0ieGwvd29ya2Jvb2sueG1sIi8+PC9SZWxhdGlvbnNoaXBzPlBLAwQUAAAAAAC6ck5dImE/o1IBAABSAQAADwAAAHhsL3dvcmtib29rLnhtbDw/eG1sIHZlcnNpb249IjEuMCI/Pjx3b3JrYm9vayB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIiB4bWxuczpyPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIj48c2hlZXRzPjxzaGVldCBuYW1lPSJJbnB1dHMiIHNoZWV0SWQ9IjEiIHI6aWQ9InJJZDEiLz48c2hlZXQgbmFtZT0iQ2FsYyIgc2hlZXRJZD0iMiIgcjppZD0icklkMiIvPjxzaGVldCBuYW1lPSJFbXB0eSIgc2hlZXRJZD0iMyIgcjppZD0icklkMyIvPjwvc2hlZXRzPjwvd29ya2Jvb2s+UEsDBBQAAAAAALpyTl3JpmJ5IAIAACACAAAaAAAAeGwvX3JlbHMvd29ya2Jvb2sueG1sLnJlbHM8P3htbCB2ZXJzaW9uPSIxLjAiPz48UmVsYXRpb25zaGlwcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzIj48UmVsYXRpb25zaGlwIElkPSJySWQxIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCIgVGFyZ2V0PSJ3b3Jrc2hlZXRzL3NoZWV0MS54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQyIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCIgVGFyZ2V0PSJ3b3Jrc2hlZXRzL3NoZWV0Mi54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQzIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCIgVGFyZ2V0PSJ3b3Jrc2hlZXRzL3NoZWV0My54bWwiLz48L1JlbGF0aW9uc2hpcHM+UEsDBBQAAAAAALpyTl3hQA/x9gAAAPYAAAAYAAAAeGwvd29ya3NoZWV0cy9zaGVldDEueG1sPHdvcmtzaGVldCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIj48c2hlZXREYXRhPjxyb3cgcj0iMSI+PGMgcj0iQTEiPjx2PjE8L3Y+PC9jPjwvcm93Pjxyb3cgcj0iMiI+PGMgcj0iQTIiPjx2PjI8L3Y+PC9jPjwvcm93Pjxyb3cgcj0iMyI+PGMgcj0iQTMiPjxmPlNVTShBMTpBMik8L2Y+PHY+Mzwvdj48L2M+PC9yb3c+PC9zaGVldERhdGE+PC93b3Jrc2hlZXQ+UEsDBBQAAAAAALpyTl3R4blYmQEAAJkBAAAYAAAAeGwvd29ya3NoZWV0cy9zaGVldDIueG1sPHdvcmtzaGVldCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIj48c2hlZXREYXRhPjxyb3cgcj0iMSI+PGMgcj0iQTEiPjxmPlNVTShJbnB1dHMhQTE6QTIpPC9mPjx2PjM8L3Y+PC9jPjxjIHI9IkIxIj48ZiB0PSJzaGFyZWQiIHJlZj0iQjE6QjIiIHNpPSI3Ij5JbnB1dHMhQTEqMjwvZj48dj4yPC92PjwvYz48L3Jvdz48cm93IHI9IjIiPjxjIHI9IkIyIj48ZiBzaT0iNyIgdD0ic2hhcmVkIi8+PHY+NDwvdj48L2M+PC9yb3c+PHJvdyByPSIzIj48YyByPSJDMyI+PGYgYng9IjAiIGFjYT0iMSI+SUYoQTEmbHQ7NCwmcXVvdDtjYWbDqSZxdW90OywmcXVvdDsmcXVvdDspPC9mPjx2PjE8L3Y+PC9jPjwvcm93Pjwvc2hlZXREYXRhPjwvd29ya3NoZWV0PlBLAwQUAAAAAAC6ck5dCntq/2UAAABlAAAAGAAAAHhsL3dvcmtzaGVldHMvc2hlZXQzLnhtbDx3b3Jrc2hlZXQgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiI+PHNoZWV0RGF0YS8+PC93b3Jrc2hlZXQ+UEsBAhQDFAAAAAAAunJOXdkBTjLjAgAA4wIAABMAAAAAAAAAAAAAAIABAAAAAFtDb250ZW50X1R5cGVzXS54bWxQSwECFAMUAAAAAAC6ck5dS4OjOgUBAAAFAQAACwAAAAAAAAAAAAAAgAEUAwAAX3JlbHMvLnJlbHNQSwECFAMUAAAAAAC6ck5dImE/o1IBAABSAQAADwAAAAAAAAAAAAAAgAFCBAAAeGwvd29ya2Jvb2sueG1sUEsBAhQDFAAAAAAAunJOXcmmYnkgAgAAIAIAABoAAAAAAAAAAAAAAIABwQUAAHhsL19yZWxzL3dvcmtib29rLnhtbC5yZWxzUEsBAhQDFAAAAAAAunJOXeFAD/H2AAAA9gAAABgAAAAAAAAAAAAAAIABGQgAAHhsL3dvcmtzaGVldHMvc2hlZXQxLnhtbFBLAQIUAxQAAAAAALpyTl3R4blYmQEAAJkBAAAYAAAAAAAAAAAAAACAAUUJAAB4bC93b3Jrc2hlZXRzL3NoZWV0Mi54bWxQSwECFAMUAAAAAAC6ck5dCntq/2UAAABlAAAAGAAAAAAAAAAAAAAAgAEUCwAAeGwvd29ya3NoZWV0cy9zaGVldDMueG1sUEsFBgAAAAAHAAcA0QEAAK8LAAAAAA==",
4220
4221
  "code": 0,
4221
4222
  "markdown_bytes": 2285,
4222
- "markdown_sha256": "b9a0e2f41909a3e919098ac0c277e16aaae781d9b1e120bdf8f143f82680c62b",
4223
+ "markdown_encoding": "utf-8",
4224
+ "markdown_sha256": "b87788af2bb1bf34388f96be99a8601f49e247aa876f7c3ceb6d8459abadbd2f",
4223
4225
  "path": "formulas.xlsx",
4224
4226
  "probe": "formula",
4225
4227
  "receipt": {
@@ -4283,7 +4285,7 @@
4283
4285
  "unit_kind": "sheet",
4284
4286
  "units": 3
4285
4287
  },
4286
- "source_sha256": "212f3098fffbd76efa2220970c00e7060c60cd687ab3c8fd74befa1a4372336d"
4288
+ "source_sha256": "55416434aee5e1f449e99ccdf1975b6a6216a758a60fe28430068165fdd4ec33"
4287
4289
  }
4288
4290
  ],
4289
4291
  "python": "3.12.14",
@@ -4433,6 +4435,10 @@
4433
4435
  "name": "pdfminer.six",
4434
4436
  "version": "20260107"
4435
4437
  },
4438
+ {
4439
+ "name": "brewdoc",
4440
+ "version": "0.5.0"
4441
+ },
4436
4442
  {
4437
4443
  "name": "pillow",
4438
4444
  "version": "12.3.0"
@@ -4445,10 +4451,6 @@
4445
4451
  "name": "selectolax",
4446
4452
  "version": "0.4.13"
4447
4453
  },
4448
- {
4449
- "name": "brewdoc",
4450
- "version": "0.4.1"
4451
- },
4452
4454
  {
4453
4455
  "name": "python-calamine",
4454
4456
  "version": "0.8.2"
@@ -4466,9 +4468,9 @@
4466
4468
  "macos": "Ad hoc build signature; no Developer ID signing or notarization",
4467
4469
  "windows": "Unsigned; publisher signing has not been configured"
4468
4470
  },
4469
- "source_sha": "00b857115b1ec1cbe14d09f5c911842908a4dc30",
4471
+ "source_sha": "1471975a6fbd8a17766278fd5a0738c095f2ec57",
4470
4472
  "target": "linux-x64",
4471
4473
  "verification_scope": "smoke",
4472
- "version": "0.4.1",
4473
- "wheel_sha256": "6e5009589d940a8c09d2f1bde622574d8b0635f43707beee890a2f1f0dde4370"
4474
+ "version": "0.5.0",
4475
+ "wheel_sha256": "e4feada9966b0affc54833b7df428a6a3d2072ccf102a8b2125b1fed7d061832"
4474
4476
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "archive_sha256": "789915a7844f3a3b5d636bf79f3aed74062a7b0a051acb60558022528bf8f8f6",
2
+ "archive_sha256": "ac10ed1b359491635ed6d265eb0305124b5c5107bdaef2a42687ac7f1b83ce17",
3
3
  "children": {
4
4
  "dns": [
5
5
  "::1",
@@ -330,9 +330,9 @@
330
330
  ],
331
331
  "schema": 1,
332
332
  "self_check": 38,
333
- "source_sha": "00b857115b1ec1cbe14d09f5c911842908a4dc30",
333
+ "source_sha": "1471975a6fbd8a17766278fd5a0738c095f2ec57",
334
334
  "target": "linux-x64",
335
335
  "verdict": "PASS",
336
336
  "verification_scope": "smoke",
337
- "version": "0.4.1"
337
+ "version": "0.5.0"
338
338
  }
package/package.json CHANGED
@@ -25,5 +25,5 @@
25
25
  "type": "git",
26
26
  "url": "git+https://github.com/kochetkov-ma/brewdoc.git"
27
27
  },
28
- "version": "0.4.1"
28
+ "version": "0.5.0"
29
29
  }
@@ -1,30 +0,0 @@
1
- ../../../bin/brewdoc,sha256=hW7-J20fv5kgKe6aQaU2M093v_W6KUBS3LAXTQ4qJEg,341
2
- brewdoc-0.4.1.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2
3
- brewdoc-0.4.1.dist-info/METADATA,sha256=F4digaxCcMTylluvJaMMxh_SeR79k2TalYNn5EkTW0U,12690
4
- brewdoc-0.4.1.dist-info/RECORD,,
5
- brewdoc-0.4.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- brewdoc-0.4.1.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
7
- brewdoc-0.4.1.dist-info/direct_url.json,sha256=Dg54mb8RXL6DuqiuxM8AlbpxX9IWuaj2vHI0o9FppY0,102
8
- brewdoc-0.4.1.dist-info/entry_points.txt,sha256=avLrj5Y-MJ1yq0XFkjH5dbZW9QwYQkpn_hz6sNydbA4,45
9
- brewdoc-0.4.1.dist-info/licenses/LICENSE,sha256=DNUrRveB3NXcyWxUr8csAHYmvrOmAzFDDAKv3iXNYKk,1073
10
- brewdoc-0.4.1.dist-info/uv_cache.json,sha256=_E0c7xjszdvt7qxsig5KRd65P60MnnJiibGn0_7eh2I,127
11
- brewdoc/__init__.py,sha256=vwp3jjiFMEC804Zmexh7AZAmgM2UZNeN6_ewXX0Kzlk,867
12
- brewdoc/_standalone.py,sha256=-zfCo75E8YlQexHuPoTu1tl1SJGMNftH1JXSt6qilxo,4705
13
- brewdoc/_urljs/__init__.py,sha256=SrVyNMaD02iahY2zp3kggkW7KGJ1xv-C5d4DK1-JYWw,51
14
- brewdoc/_urljs/glue.js,sha256=aU6lhMMxZcPxZSNctfUd-X91gkV6mgElWFFV_SnUWqM,41449
15
- brewdoc/_urljs/native.py,sha256=ggTisaUThjXp6RN973T06krxCDglvzytF05_2NEraWs,44168
16
- brewdoc/_vendor/THIRD_PARTY_NOTICES.txt,sha256=Mg3dxJ1SNPASEu4_ruk2j-7WM0lZmrfulGCUpNoOZak,26003
17
- brewdoc/_vendor/linkedom-worker.js,sha256=6p8d5psAnSEJaN2PTT9OzxCVvt-A04nsgyRMFxNXgog,411521
18
- brewdoc/cli.py,sha256=Gq_SNSzmGB7uCwjxVbT27G9PHeb7aTIx1-3qqgLZApw,5995
19
- brewdoc/common.py,sha256=aYtUap2uFypFr6fK3ToyUMuPBHnMNcHhTLsH7DD4uds,33134
20
- brewdoc/docx.py,sha256=eVRxjGzgQ-LK8CwhlKriiTmr1URnuSIk2RsYedI_QZU,5501
21
- brewdoc/epub.py,sha256=g97-YQhmTr3ufzDxxwsIuB6eRzPiDc_VhvgHBk-mCYk,50502
22
- brewdoc/htmljs.py,sha256=lTfAN1ycDiRh0d7kB1bLX6Cd33sGcnPVrYnmj61P_AY,41410
23
- brewdoc/htmltext.py,sha256=F0IjoF0zPcsSKQRsEJrtZTjFKKYTPNzJ2fPLuHWhRxQ,40566
24
- brewdoc/htmlurl.py,sha256=RV8Cvp3Qle_y_6m--FMdeeJ19YWCOX6B--w27sJ8Z38,36862
25
- brewdoc/output.py,sha256=aMgDoB5UDbRWYr9pBxlH402jEiUl8OSEqhox31O0ljk,4123
26
- brewdoc/pdf.py,sha256=FVpRvH81yDTaUuPDIl8VoeXvnYeCMaipunbjtygKrMY,59185
27
- brewdoc/pptx.py,sha256=OYE42ZMgifyhWW8uj0M7JHsasaxXkcfLfSKVsp77is0,17844
28
- brewdoc/selfcheck.py,sha256=2jAYsCiL4G38Jt5Z_YLkJN1d8EYGpPE17zIBUDLOavM,24858
29
- brewdoc/service.py,sha256=fp61HaSSSoLzHHJnmubXgiyJwsA9nLQehEiCR1hzIqA,6808
30
- brewdoc/sheets.py,sha256=WVZW6aqxXe2vk7qKSdWM8hmfePwWlg7TE3bz0pVxZE4,17049
@@ -1 +0,0 @@
1
- {"url":"file:///home/runner/work/_temp/ci-dist/dist/brewdoc-0.4.1-py3-none-any.whl","archive_info":{}}
@@ -1 +0,0 @@
1
- {"timestamp":{"secs_since_epoch":1791926970,"nanos_since_epoch":293263739},"commit":null,"tags":null,"env":{},"directories":{}}