brewdoc-darwin-arm64 0.4.1 → 0.6.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 +66 -40
- package/binary/_internal/base_library.zip +0 -0
- package/binary/_internal/brewdoc/_urljs/glue.js +83 -9
- package/binary/_internal/{brewdoc-0.4.1.dist-info → brewdoc-0.6.0.dist-info}/METADATA +67 -41
- package/binary/_internal/brewdoc-0.6.0.dist-info/RECORD +33 -0
- package/binary/_internal/brewdoc-0.6.0.dist-info/direct_url.json +1 -0
- package/binary/_internal/brewdoc-0.6.0.dist-info/uv_cache.json +1 -0
- package/binary/brewdoc +0 -0
- package/binary/licenses/installed-manifest.json +1 -1
- package/binary/version.json +2 -2
- package/native-manifest.json +48 -46
- package/native-verification.json +18 -12
- package/package.json +1 -1
- package/binary/_internal/brewdoc-0.4.1.dist-info/RECORD +0 -30
- package/binary/_internal/brewdoc-0.4.1.dist-info/direct_url.json +0 -1
- package/binary/_internal/brewdoc-0.4.1.dist-info/uv_cache.json +0 -1
- /package/binary/_internal/{brewdoc-0.4.1.dist-info → brewdoc-0.6.0.dist-info}/INSTALLER +0 -0
- /package/binary/_internal/{brewdoc-0.4.1.dist-info → brewdoc-0.6.0.dist-info}/REQUESTED +0 -0
- /package/binary/_internal/{brewdoc-0.4.1.dist-info → brewdoc-0.6.0.dist-info}/WHEEL +0 -0
- /package/binary/_internal/{brewdoc-0.4.1.dist-info → brewdoc-0.6.0.dist-info}/entry_points.txt +0 -0
- /package/binary/_internal/{brewdoc-0.4.1.dist-info → brewdoc-0.6.0.dist-info}/licenses/LICENSE +0 -0
- /package/binary/licenses/installed/brewdoc/{brewdoc-0.4.1.dist-info → brewdoc-0.6.0.dist-info}/licenses/LICENSE +0 -0
package/README.md
CHANGED
|
@@ -3,40 +3,46 @@
|
|
|
3
3
|
[](https://pypi.org/project/brewdoc/)
|
|
4
4
|
[](https://github.com/kochetkov-ma/brewdoc/actions/workflows/ci.yml)
|
|
5
5
|
[](https://github.com/kochetkov-ma/brewdoc/releases/latest)
|
|
6
|
-
[](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
6
|
+
[](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.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.
|
|
13
|
-
Version 0.4.1
|
|
12
|
+
See [formats and limits](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/FORMATS.md).
|
|
13
|
+
Version 0.4.1 added [selected ZIP/XML reader budgets](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.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
|
-
|
|
17
|
+
Version 0.5.0 added ODT/ODP text and tables, selected MIME email bodies and exact UTF-8
|
|
18
|
+
Markdown/text pass-through. It preserved workbook Unicode and exposed datetime precision,
|
|
19
|
+
and selected one DOCX compatibility fallback.
|
|
20
|
+
It also added textless PDF page facts and selected caption, table and math-spacing fixes.
|
|
21
|
+
Version 0.6.0 writes cleaner Markdown with minimal escaping, adds `--body-only`, accepts
|
|
22
|
+
documents through `--url`, decodes legacy HTML charsets and falls back to the whole page in
|
|
23
|
+
article mode.
|
|
18
24
|
|
|
19
|
-
|
|
25
|
+
## Install
|
|
20
26
|
|
|
21
|
-
|
|
27
|
+
These examples select 0.6.0. Use a channel listed as available in [that release](https://github.com/kochetkov-ma/brewdoc/releases/tag/v0.6.0). Choose one method:
|
|
22
28
|
|
|
23
29
|
```sh
|
|
24
|
-
python -m pip install "brewdoc==0.
|
|
25
|
-
uv tool install --python 3.12 "brewdoc==0.
|
|
26
|
-
pipx install --python 3.12 "brewdoc==0.
|
|
30
|
+
python -m pip install "brewdoc==0.6.0"
|
|
31
|
+
uv tool install --python 3.12 "brewdoc==0.6.0"
|
|
32
|
+
pipx install --python 3.12 "brewdoc==0.6.0"
|
|
27
33
|
```
|
|
28
34
|
|
|
29
|
-
Use a virtual environment for pip. Python 3.12+ is required;
|
|
30
|
-
[INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
35
|
+
Use a virtual environment for pip. Python 3.12+ is required; local and URL HTML need CPython 3.12-3.14.
|
|
36
|
+
[INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.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.
|
|
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.6.0/SHA256SUMS) and keep the entire extracted directory.
|
|
36
42
|
|
|
37
|
-
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.
|
|
38
|
-
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.
|
|
39
|
-
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.
|
|
43
|
+
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.6.0/brewdoc-0.6.0-linux-x64.tar.gz)
|
|
44
|
+
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.6.0/brewdoc-0.6.0-windows-x64.zip)
|
|
45
|
+
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.6.0/brewdoc-0.6.0-macos-arm64.tar.gz)
|
|
40
46
|
|
|
41
47
|
| Native target | Verification environment | JavaScript |
|
|
42
48
|
|---|---|---|
|
|
@@ -46,20 +52,27 @@ 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.
|
|
55
|
+
Linux archives have checksums, without a detached publisher signature. [Download and launch](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/INSTALL.md#standalone).
|
|
50
56
|
|
|
51
57
|
### npm
|
|
52
58
|
|
|
53
59
|
[](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.
|
|
57
|
-
[INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
62
|
+
Use npm/npx only when listed as available in [the release](https://github.com/kochetkov-ma/brewdoc/releases/tag/v0.6.0).
|
|
63
|
+
[INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.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](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/INSTALL.md#homebrew).
|
|
58
70
|
|
|
59
71
|
## Usage
|
|
60
72
|
|
|
61
73
|
```sh
|
|
62
74
|
brewdoc file.pdf --out file.md
|
|
75
|
+
brewdoc --body-only paper.pdf --out paper.md
|
|
63
76
|
brewdoc book.epub --out book.md
|
|
64
77
|
brewdoc file.xlsx --sheet Calc --sheet Inputs --out book.md
|
|
65
78
|
brewdoc file.xlsm --artifact formula/sheet/000002=formulas.json
|
|
@@ -71,15 +84,24 @@ brewdoc --self-check
|
|
|
71
84
|
caller order retains full-workbook ordinals. Artifact keys come from the Markdown artifact table.
|
|
72
85
|
Requests and output collisions are validated before writes. Paths resolve against the caller's directory;
|
|
73
86
|
`--out` creates parents. Refusal preserves existing output. Self-check is offline and has its own output.
|
|
87
|
+
`--body-only` drops the title, metadata, omissions, contents and unit anchors; unit headings stay
|
|
88
|
+
only for several units. The receipt is unchanged. See [body-only output](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/FORMATS.md#body-only-output).
|
|
74
89
|
|
|
75
90
|
## Markdown and receipts
|
|
76
91
|
|
|
77
|
-
|
|
92
|
+
Parsed document output uses `brewdoc.markdown/2`: quoted source title, Metadata, Artifacts,
|
|
78
93
|
Known omissions, Contents, then anchored units. PDF uses `page/000001`, workbooks `sheet/000001`,
|
|
79
|
-
PPTX `slide/000001`, and DOCX/EPUB/HTML `chapter/000001`.
|
|
94
|
+
PPTX/ODP `slide/000001`, and DOCX/EPUB/HTML/ODT/EML `chapter/000001`.
|
|
95
|
+
Empty declared units remain navigable. Escaping is minimal; HTML, EPUB and EML omit form
|
|
96
|
+
controls and write images with alt text as ``. See [Markdown escaping](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/FORMATS.md#markdown-escaping).
|
|
80
97
|
Metadata holds source/selection/content hashes, conversion tallies and artifact capabilities;
|
|
81
98
|
it excludes paths, timestamps, permissions and host data. EPUB retains declared publication metadata.
|
|
82
99
|
|
|
100
|
+
UTF-8 `.md` and `.txt` use `brewdoc.markdown/passthrough/1`: exact source bytes with
|
|
101
|
+
no generated envelope, contents or anchors. BOM, whitespace, newline variants and absent
|
|
102
|
+
final newline survive; empty input succeeds. The receipt reports route `text`, kind `none`
|
|
103
|
+
and zero units. Without `--out`, the JSON receipt precedes the unchanged body bytes.
|
|
104
|
+
|
|
83
105
|
Conversion prints one JSON receipt line first. With `--out`, Markdown goes to the file;
|
|
84
106
|
without it, Markdown follows on stdout. Local receipts use `brewdoc.receipt/1`; URL receipts use `brewdoc.receipt/2`.
|
|
85
107
|
|
|
@@ -97,7 +119,8 @@ without it, Markdown follows on stdout. Local receipts use `brewdoc.receipt/1`;
|
|
|
97
119
|
| `acquisition` | URL provenance, frozen snapshot and capture status |
|
|
98
120
|
|
|
99
121
|
Exit 0 means conversion, 1 refusal and 2 invalid usage. Success does not prove content fidelity or complete JavaScript.
|
|
100
|
-
PDF/DOCX/PPTX
|
|
122
|
+
PDF/DOCX/PPTX emit ASCII; workbooks/HTML/EPUB/ODT/ODP/EML emit UTF-8 without BOM, with LF newlines.
|
|
123
|
+
Text pass-through retains the source UTF-8 encoding and newlines. JSON keeps ASCII escaping.
|
|
101
124
|
The same local file or frozen snapshot produces identical bytes; live pages can change.
|
|
102
125
|
|
|
103
126
|
## Python API
|
|
@@ -111,16 +134,18 @@ refs = brewdoc.list_book_artifacts("book.xlsm", sheets=("Calc",))
|
|
|
111
134
|
payload = brewdoc.read_book_artifact("book.xlsm", refs[0].key, sheets=("Calc",))
|
|
112
135
|
```
|
|
113
136
|
|
|
114
|
-
`run` accepts `sheets
|
|
137
|
+
`run` accepts `sheets`, an `artifact_outputs` key-to-path mapping, `article` and `body_only`. Renderers include
|
|
115
138
|
`render_pdf`, `render_doc`, `render_presentation`, `render_epub`, `render_html` and `render_book`.
|
|
116
139
|
`read_formulas` provides typed formulas; `self_check` verifies installed routes. Local APIs never acquire URLs.
|
|
117
140
|
|
|
118
141
|
## Explicit URL acquisition
|
|
119
142
|
|
|
120
|
-
`--url` deliberately acquires a public HTTP(S) page before local conversion.
|
|
143
|
+
`--url` deliberately acquires a public HTTP(S) page or supported document before local conversion.
|
|
144
|
+
Content-Type and magic bytes pick the route: HTML, PDF, Office, OpenDocument, EPUB, EML or text.
|
|
121
145
|
|
|
122
146
|
```sh
|
|
123
147
|
brewdoc --url https://example.com/article --out article.md
|
|
148
|
+
brewdoc --url https://arxiv.org/pdf/1706.03762 --out attention.md
|
|
124
149
|
brewdoc --url https://example.com/article --render-js --timeout 30 --out article.md
|
|
125
150
|
```
|
|
126
151
|
|
|
@@ -128,12 +153,12 @@ brewdoc --url https://example.com/article --render-js --timeout 30 --out article
|
|
|
128
153
|
Public destinations, DNS, redirects, TLS, requests and bytes are validated. Ordinary requests use GET;
|
|
129
154
|
JS admits only the narrow credential-free HN Algolia XHR POST exception. Local HTML never fetches or runs scripts.
|
|
130
155
|
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.
|
|
156
|
+
Timing-only expiry can preserve valid partial content; hard failures refuse output. [Full URL/JS limits](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/FORMATS.md#url-acquisition).
|
|
132
157
|
|
|
133
158
|
## Article mode
|
|
134
159
|
|
|
135
160
|
Introduced in 0.4.0; use a channel listed as available in the release. For Python JS capture, install
|
|
136
|
-
`brewdoc[render-js]==0.
|
|
161
|
+
`brewdoc[render-js]==0.6.0`; supported standalone bundles include its prerequisites.
|
|
137
162
|
|
|
138
163
|
```sh
|
|
139
164
|
brewdoc page.html --article --out article.md
|
|
@@ -146,30 +171,31 @@ code, receipt, markdown = brewdoc.run("page.html", article=True)
|
|
|
146
171
|
markdown, tally = brewdoc.render_html("page.html", article=True)
|
|
147
172
|
```
|
|
148
173
|
|
|
149
|
-
Article mode
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
174
|
+
Article mode keeps visible `main` (or role main) content, or outer `article` content when no main
|
|
175
|
+
exists; articles outside a main are dropped when one exists. Page-chrome landmarks are skipped, but
|
|
176
|
+
a header inside an article or a nav inside main stays.
|
|
177
|
+
Peer articles and multiple mains render in DOM order. When no candidate renders, the whole clean
|
|
178
|
+
page renders and the receipt adds `article_fallback: true`; selection never refuses for page
|
|
179
|
+
structure. There is no text scoring. Selection uses the recovered static HTML or frozen JS snapshot,
|
|
154
180
|
without layout or inferred author/date metadata. The source title is unchanged.
|
|
155
181
|
|
|
156
|
-
|
|
182
|
+
When content is selected, the receipt's `not_carried` and Markdown's Known omissions declare:
|
|
157
183
|
`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.
|
|
159
|
-
defines selection,
|
|
184
|
+
The [article contract](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/FORMATS.md#article-selection)
|
|
185
|
+
defines selection, fallback and limits.
|
|
160
186
|
|
|
161
|
-
[
|
|
187
|
+
[Earlier source-package CI](https://github.com/kochetkov-ma/brewdoc/actions/runs/38431645006) passed on
|
|
162
188
|
Ubuntu 22.04 x64/glibc with CPython 3.13.15, and macOS 15 ARM64/Windows Server 2025 x64
|
|
163
189
|
with CPython 3.14.7. Each passed four independent wheel/sdist base/optional installs;
|
|
164
190
|
optional JS executed on Unix and refused before requests on Windows. These are selected
|
|
165
|
-
tested patches, not a claim about newer versions.
|
|
166
|
-
full-suite baseline and existing CI smoke checks.
|
|
167
|
-
standalone binaries; other OS/minor combinations, free-threaded CPython and other
|
|
191
|
+
tested patches, not a claim about newer versions. These results predate the 0.5.0 changes.
|
|
192
|
+
CPython 3.12.14 retains the local macOS full-suite baseline and existing CI smoke checks.
|
|
193
|
+
Package evidence is separate from standalone binaries; other OS/minor combinations, free-threaded CPython and other
|
|
168
194
|
architectures remain untested here.
|
|
169
|
-
See [package compatibility](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
195
|
+
See [package compatibility](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/FORMATS.md#python-package-compatibility).
|
|
170
196
|
|
|
171
|
-
[Format contracts](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
172
|
-
[Releasing](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
197
|
+
[Format contracts](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/FORMATS.md) | [Corpus](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/benchmarks/CATALOG.md) | [Measurements](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/benchmarks/METHODOLOGY.md) | [Results](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/benchmarks/results/README.md)
|
|
198
|
+
[Releasing](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/RELEASING.md) | [Agent entry point](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/llms.txt) | [MIT license](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/LICENSE)
|
|
173
199
|
|
|
174
200
|
## Related projects
|
|
175
201
|
|
|
Binary file
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
const hostGlobal = globalThis;
|
|
3
3
|
let nextId = 1;
|
|
4
4
|
let clock = 0;
|
|
5
|
+
let frameTime;
|
|
5
6
|
let baseURL = '';
|
|
6
7
|
const requests = [];
|
|
7
8
|
const pending = new Map();
|
|
@@ -439,7 +440,7 @@
|
|
|
439
440
|
defineProperty(globalThis, 'localStorage', { configurable: true, get() { touch(); return storage; } });
|
|
440
441
|
}
|
|
441
442
|
|
|
442
|
-
function anchorURL(value) {
|
|
443
|
+
function anchorURL(value, baseText) {
|
|
443
444
|
const raw = String(value);
|
|
444
445
|
if (raw.length > 8192 || encodeURL(raw).replace(/%[0-9a-f]{2}/gi, '_').length > 8192 ||
|
|
445
446
|
/[\u0000-\u0020\u007f\\]/.test(raw) || /%(?![0-9a-f]{2})/i.test(raw))
|
|
@@ -457,7 +458,7 @@
|
|
|
457
458
|
let parsed;
|
|
458
459
|
if (/^https?:\/\//i.test(raw)) parsed = absolute(raw);
|
|
459
460
|
else {
|
|
460
|
-
const base = absolute(pageDocument.baseURI);
|
|
461
|
+
const base = absolute(baseText ?? pageDocument.baseURI);
|
|
461
462
|
if (raw.startsWith('//')) parsed = absolute(base.protocol + raw);
|
|
462
463
|
else {
|
|
463
464
|
if (/^[a-z][a-z0-9+.-]*:/i.test(raw)) throw new TypeError('anchor URL scheme unsupported');
|
|
@@ -480,6 +481,68 @@
|
|
|
480
481
|
return parsed;
|
|
481
482
|
}
|
|
482
483
|
|
|
484
|
+
const urlParts = new WeakMap();
|
|
485
|
+
const urlQueries = new WeakMap();
|
|
486
|
+
const queryOwners = new WeakMap();
|
|
487
|
+
const formEncode = text => encodeURL(text).replace(/%20/g, '+')
|
|
488
|
+
.replace(/[!'()~]/g, letter => '%' + letter.charCodeAt(0).toString(16).toUpperCase());
|
|
489
|
+
const formDecode = text => { try { return decodeURIComponent(text.replace(/\+/g, ' ')); } catch { return text; } };
|
|
490
|
+
class URLSearchParams {
|
|
491
|
+
#list = [];
|
|
492
|
+
constructor(init = '') {
|
|
493
|
+
if (init && typeof init === 'object')
|
|
494
|
+
for (const [key, value] of Symbol.iterator in init ? init : entries(init)) this.#list.push([String(key), String(value)]);
|
|
495
|
+
else for (const pair of String(init).replace(/^\?/, '').split('&')) {
|
|
496
|
+
const at = pair.indexOf('=');
|
|
497
|
+
if (pair) this.#list.push(at < 0 ? [formDecode(pair), ''] : [formDecode(pair.slice(0, at)), formDecode(pair.slice(at + 1))]);
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
#changed() { queryOwners.get(this)?.(this.toString()); }
|
|
501
|
+
get(name) { return this.#list.find(([key]) => key === String(name))?.[1] ?? null; }
|
|
502
|
+
has(name) { return this.#list.some(([key]) => key === String(name)); }
|
|
503
|
+
append(name, value) { this.#list.push([String(name), String(value)]); this.#changed(); }
|
|
504
|
+
delete(name) { this.#list = this.#list.filter(([key]) => key !== String(name)); this.#changed(); }
|
|
505
|
+
set(name, value) {
|
|
506
|
+
const index = this.#list.findIndex(([key]) => key === String(name));
|
|
507
|
+
this.#list = this.#list.filter(([key]) => key !== String(name));
|
|
508
|
+
this.#list.splice(index < 0 ? this.#list.length : index, 0, [String(name), String(value)]);
|
|
509
|
+
this.#changed();
|
|
510
|
+
}
|
|
511
|
+
entries() { return this.#list.map(([key, value]) => [key, value]).values(); }
|
|
512
|
+
[Symbol.iterator]() { return this.entries(); }
|
|
513
|
+
toString() { return this.#list.map(([key, value]) => formEncode(key) + '=' + formEncode(value)).join('&'); }
|
|
514
|
+
}
|
|
515
|
+
class URL {
|
|
516
|
+
constructor(url, base) {
|
|
517
|
+
if (base === undefined && !/^https?:\/\//i.test(String(url))) throw new TypeError('URL without base must be absolute');
|
|
518
|
+
urlParts.set(this, anchorURL(url, base === undefined ? undefined : new URL(base).href));
|
|
519
|
+
}
|
|
520
|
+
get origin() { return this.protocol + '//' + this.host; }
|
|
521
|
+
get searchParams() {
|
|
522
|
+
if (!urlQueries.has(this)) {
|
|
523
|
+
const query = new URLSearchParams(this.search);
|
|
524
|
+
queryOwners.set(query, text => { this.search = text; urlQueries.set(this, query); });
|
|
525
|
+
urlQueries.set(this, query);
|
|
526
|
+
}
|
|
527
|
+
return urlQueries.get(this);
|
|
528
|
+
}
|
|
529
|
+
toString() { return this.href; }
|
|
530
|
+
toJSON() { return this.href; }
|
|
531
|
+
}
|
|
532
|
+
// Only href, pathname, search and hash are writable; other components stay read-only.
|
|
533
|
+
for (const name of ['href', 'protocol', 'host', 'hostname', 'port', 'pathname', 'search', 'hash']) {
|
|
534
|
+
const prefix = { pathname: '/', search: '?', hash: '#' }[name];
|
|
535
|
+
defineProperty(URL.prototype, name, {
|
|
536
|
+
configurable: true, enumerable: true, get() { return urlParts.get(this)[name]; },
|
|
537
|
+
set: name === 'href' || prefix ? function (value) {
|
|
538
|
+
const parts = { ...urlParts.get(this), [name]: String(value) };
|
|
539
|
+
if (prefix && parts[name] && !parts[name].startsWith(prefix)) parts[name] = prefix + parts[name];
|
|
540
|
+
urlParts.set(this, anchorURL(name === 'href' ? parts.href : parts.protocol + '//' + parts.host + parts.pathname + parts.search + parts.hash));
|
|
541
|
+
urlQueries.delete(this);
|
|
542
|
+
} : undefined
|
|
543
|
+
});
|
|
544
|
+
}
|
|
545
|
+
|
|
483
546
|
class Headers {
|
|
484
547
|
constructor(source = {}) {
|
|
485
548
|
this.values = new Map(Object.entries(source).map(([key, value]) => [key.toLowerCase(), String(value)]));
|
|
@@ -567,12 +630,12 @@
|
|
|
567
630
|
});
|
|
568
631
|
}
|
|
569
632
|
|
|
570
|
-
function setTimer(callback, delay = 0, repeat = false, args = []) {
|
|
633
|
+
function setTimer(callback, delay = 0, repeat = false, args = [], frame = false) {
|
|
571
634
|
if (typeof callback !== 'function') throw new TypeError('string timers unsupported');
|
|
572
635
|
if (timers.size >= 200) { violation = true; throw new RangeError('timer count exceeded'); }
|
|
573
636
|
const id = nextId++;
|
|
574
637
|
const milliseconds = Math.max(0, Math.min(2147483647, Number(delay) || 0));
|
|
575
|
-
timers.set(id, { callback, args, delay: milliseconds, due: clock + milliseconds, repeat });
|
|
638
|
+
timers.set(id, { callback, args, delay: milliseconds, due: clock + milliseconds, repeat, frame });
|
|
576
639
|
return id;
|
|
577
640
|
}
|
|
578
641
|
|
|
@@ -582,8 +645,14 @@
|
|
|
582
645
|
parsedView = undefined;
|
|
583
646
|
baseURL = url;
|
|
584
647
|
installStorage();
|
|
585
|
-
globalThis.window = view;
|
|
648
|
+
globalThis.window = globalThis.self = view;
|
|
586
649
|
globalThis.document = view.document;
|
|
650
|
+
Object.defineProperty(view.document, 'currentScript', { get: () => currentScript ?? null });
|
|
651
|
+
Object.defineProperty(view.document, 'cookie', { get: () => '', set() {} });
|
|
652
|
+
const silent = () => {};
|
|
653
|
+
globalThis.console = { log: silent, info: silent, warn: silent, error: silent, debug: silent };
|
|
654
|
+
globalThis.URL = URL;
|
|
655
|
+
globalThis.URLSearchParams = URLSearchParams;
|
|
587
656
|
pageDocument = view.document;
|
|
588
657
|
pageWindow = view;
|
|
589
658
|
const htmlConstructor = view.HTMLElement;
|
|
@@ -643,7 +712,7 @@
|
|
|
643
712
|
globalThis[key] = view[key];
|
|
644
713
|
Object.defineProperty(document, 'readyState', { value: 'loading', writable: true });
|
|
645
714
|
Object.defineProperty(document, 'baseURI', { value: url, writable: true });
|
|
646
|
-
globalThis.location = parse(locationJSON);
|
|
715
|
+
globalThis.location = { ...parse(locationJSON), toString() { return this.href; } };
|
|
647
716
|
Object.defineProperty(globalThis, 'history', { value: Object.freeze({ length: 1, state: null }) });
|
|
648
717
|
const anchorPrototype = view.HTMLAnchorElement.prototype;
|
|
649
718
|
const href = Object.getOwnPropertyDescriptor(anchorPrototype, 'href');
|
|
@@ -680,6 +749,9 @@
|
|
|
680
749
|
globalThis.setInterval = (callback, delay, ...args) => setTimer(callback, delay, true, args);
|
|
681
750
|
globalThis.clearTimeout = id => timers.delete(id);
|
|
682
751
|
globalThis.clearInterval = globalThis.clearTimeout;
|
|
752
|
+
// Frames are due at once so one always runs on the next pump pass, which never waits for them.
|
|
753
|
+
globalThis.requestAnimationFrame = callback => setTimer(callback, 0, false, [clock], true);
|
|
754
|
+
globalThis.cancelAnimationFrame = globalThis.clearTimeout;
|
|
683
755
|
globalThis.AbortController = class {
|
|
684
756
|
constructor() { this.signal = new EventTarget(); this.signal.aborted = false; }
|
|
685
757
|
abort() { this.signal.aborted = true; this.signal.dispatchEvent(new Event('abort')); }
|
|
@@ -807,16 +879,18 @@
|
|
|
807
879
|
if (record.error) state.reject(error(record.name || 'TypeError', record.error));
|
|
808
880
|
else state.resolve(new Response(record));
|
|
809
881
|
};
|
|
810
|
-
globalThis.__smallTimers = () => controlJSON([...timers].map(([id, timer]) => ({ id, due: timer.due })));
|
|
882
|
+
globalThis.__smallTimers = () => controlJSON([...timers].map(([id, timer]) => ({ id, due: timer.due, repeat: timer.repeat, frame: timer.frame })));
|
|
811
883
|
globalThis.__smallRunTimer = (id, now) => {
|
|
812
884
|
clock = now;
|
|
813
885
|
const timer = timers.get(id);
|
|
814
886
|
if (!timer) return;
|
|
815
887
|
if (timer.repeat) timer.due = now + Math.max(1, timer.delay);
|
|
816
888
|
else timers.delete(id);
|
|
817
|
-
|
|
889
|
+
// One pump pass is one frame: its frames share the earliest request time, keeping output deterministic.
|
|
890
|
+
const args = timer.frame ? [frameTime ??= timer.args[0]] : timer.args;
|
|
891
|
+
try { timer.callback(...args); } catch (reason) { errors.push(String(reason)); }
|
|
818
892
|
};
|
|
819
|
-
globalThis.__smallClock = now => { clock = now; };
|
|
893
|
+
globalThis.__smallClock = now => { clock = now; frameTime = undefined; };
|
|
820
894
|
globalThis.__smallErrors = () => {
|
|
821
895
|
const descriptor = ownDescriptor(hostGlobal, 'Promise');
|
|
822
896
|
if (!descriptor || descriptor.get !== promiseGetter || descriptor.set !== promiseSetter ||
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: brewdoc
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.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
|
[](https://pypi.org/project/brewdoc/)
|
|
32
32
|
[](https://github.com/kochetkov-ma/brewdoc/actions/workflows/ci.yml)
|
|
33
33
|
[](https://github.com/kochetkov-ma/brewdoc/releases/latest)
|
|
34
|
-
[](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
34
|
+
[](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.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.
|
|
41
|
-
Version 0.4.1
|
|
40
|
+
See [formats and limits](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/FORMATS.md).
|
|
41
|
+
Version 0.4.1 added [selected ZIP/XML reader budgets](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.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
|
-
|
|
45
|
+
Version 0.5.0 added ODT/ODP text and tables, selected MIME email bodies and exact UTF-8
|
|
46
|
+
Markdown/text pass-through. It preserved workbook Unicode and exposed datetime precision,
|
|
47
|
+
and selected one DOCX compatibility fallback.
|
|
48
|
+
It also added textless PDF page facts and selected caption, table and math-spacing fixes.
|
|
49
|
+
Version 0.6.0 writes cleaner Markdown with minimal escaping, adds `--body-only`, accepts
|
|
50
|
+
documents through `--url`, decodes legacy HTML charsets and falls back to the whole page in
|
|
51
|
+
article mode.
|
|
46
52
|
|
|
47
|
-
|
|
53
|
+
## Install
|
|
48
54
|
|
|
49
|
-
|
|
55
|
+
These examples select 0.6.0. Use a channel listed as available in [that release](https://github.com/kochetkov-ma/brewdoc/releases/tag/v0.6.0). Choose one method:
|
|
50
56
|
|
|
51
57
|
```sh
|
|
52
|
-
python -m pip install "brewdoc==0.
|
|
53
|
-
uv tool install --python 3.12 "brewdoc==0.
|
|
54
|
-
pipx install --python 3.12 "brewdoc==0.
|
|
58
|
+
python -m pip install "brewdoc==0.6.0"
|
|
59
|
+
uv tool install --python 3.12 "brewdoc==0.6.0"
|
|
60
|
+
pipx install --python 3.12 "brewdoc==0.6.0"
|
|
55
61
|
```
|
|
56
62
|
|
|
57
|
-
Use a virtual environment for pip. Python 3.12+ is required;
|
|
58
|
-
[INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
63
|
+
Use a virtual environment for pip. Python 3.12+ is required; local and URL HTML need CPython 3.12-3.14.
|
|
64
|
+
[INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.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.
|
|
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.6.0/SHA256SUMS) and keep the entire extracted directory.
|
|
64
70
|
|
|
65
|
-
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.
|
|
66
|
-
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.
|
|
67
|
-
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.
|
|
71
|
+
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.6.0/brewdoc-0.6.0-linux-x64.tar.gz)
|
|
72
|
+
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.6.0/brewdoc-0.6.0-windows-x64.zip)
|
|
73
|
+
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.6.0/brewdoc-0.6.0-macos-arm64.tar.gz)
|
|
68
74
|
|
|
69
75
|
| Native target | Verification environment | JavaScript |
|
|
70
76
|
|---|---|---|
|
|
@@ -74,20 +80,27 @@ 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.
|
|
83
|
+
Linux archives have checksums, without a detached publisher signature. [Download and launch](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/INSTALL.md#standalone).
|
|
78
84
|
|
|
79
85
|
### npm
|
|
80
86
|
|
|
81
87
|
[](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.
|
|
85
|
-
[INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
90
|
+
Use npm/npx only when listed as available in [the release](https://github.com/kochetkov-ma/brewdoc/releases/tag/v0.6.0).
|
|
91
|
+
[INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.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](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/INSTALL.md#homebrew).
|
|
86
98
|
|
|
87
99
|
## Usage
|
|
88
100
|
|
|
89
101
|
```sh
|
|
90
102
|
brewdoc file.pdf --out file.md
|
|
103
|
+
brewdoc --body-only paper.pdf --out paper.md
|
|
91
104
|
brewdoc book.epub --out book.md
|
|
92
105
|
brewdoc file.xlsx --sheet Calc --sheet Inputs --out book.md
|
|
93
106
|
brewdoc file.xlsm --artifact formula/sheet/000002=formulas.json
|
|
@@ -99,15 +112,24 @@ brewdoc --self-check
|
|
|
99
112
|
caller order retains full-workbook ordinals. Artifact keys come from the Markdown artifact table.
|
|
100
113
|
Requests and output collisions are validated before writes. Paths resolve against the caller's directory;
|
|
101
114
|
`--out` creates parents. Refusal preserves existing output. Self-check is offline and has its own output.
|
|
115
|
+
`--body-only` drops the title, metadata, omissions, contents and unit anchors; unit headings stay
|
|
116
|
+
only for several units. The receipt is unchanged. See [body-only output](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/FORMATS.md#body-only-output).
|
|
102
117
|
|
|
103
118
|
## Markdown and receipts
|
|
104
119
|
|
|
105
|
-
|
|
120
|
+
Parsed document output uses `brewdoc.markdown/2`: quoted source title, Metadata, Artifacts,
|
|
106
121
|
Known omissions, Contents, then anchored units. PDF uses `page/000001`, workbooks `sheet/000001`,
|
|
107
|
-
PPTX `slide/000001`, and DOCX/EPUB/HTML `chapter/000001`.
|
|
122
|
+
PPTX/ODP `slide/000001`, and DOCX/EPUB/HTML/ODT/EML `chapter/000001`.
|
|
123
|
+
Empty declared units remain navigable. Escaping is minimal; HTML, EPUB and EML omit form
|
|
124
|
+
controls and write images with alt text as ``. See [Markdown escaping](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/FORMATS.md#markdown-escaping).
|
|
108
125
|
Metadata holds source/selection/content hashes, conversion tallies and artifact capabilities;
|
|
109
126
|
it excludes paths, timestamps, permissions and host data. EPUB retains declared publication metadata.
|
|
110
127
|
|
|
128
|
+
UTF-8 `.md` and `.txt` use `brewdoc.markdown/passthrough/1`: exact source bytes with
|
|
129
|
+
no generated envelope, contents or anchors. BOM, whitespace, newline variants and absent
|
|
130
|
+
final newline survive; empty input succeeds. The receipt reports route `text`, kind `none`
|
|
131
|
+
and zero units. Without `--out`, the JSON receipt precedes the unchanged body bytes.
|
|
132
|
+
|
|
111
133
|
Conversion prints one JSON receipt line first. With `--out`, Markdown goes to the file;
|
|
112
134
|
without it, Markdown follows on stdout. Local receipts use `brewdoc.receipt/1`; URL receipts use `brewdoc.receipt/2`.
|
|
113
135
|
|
|
@@ -125,7 +147,8 @@ without it, Markdown follows on stdout. Local receipts use `brewdoc.receipt/1`;
|
|
|
125
147
|
| `acquisition` | URL provenance, frozen snapshot and capture status |
|
|
126
148
|
|
|
127
149
|
Exit 0 means conversion, 1 refusal and 2 invalid usage. Success does not prove content fidelity or complete JavaScript.
|
|
128
|
-
PDF/DOCX/PPTX
|
|
150
|
+
PDF/DOCX/PPTX emit ASCII; workbooks/HTML/EPUB/ODT/ODP/EML emit UTF-8 without BOM, with LF newlines.
|
|
151
|
+
Text pass-through retains the source UTF-8 encoding and newlines. JSON keeps ASCII escaping.
|
|
129
152
|
The same local file or frozen snapshot produces identical bytes; live pages can change.
|
|
130
153
|
|
|
131
154
|
## Python API
|
|
@@ -139,16 +162,18 @@ refs = brewdoc.list_book_artifacts("book.xlsm", sheets=("Calc",))
|
|
|
139
162
|
payload = brewdoc.read_book_artifact("book.xlsm", refs[0].key, sheets=("Calc",))
|
|
140
163
|
```
|
|
141
164
|
|
|
142
|
-
`run` accepts `sheets
|
|
165
|
+
`run` accepts `sheets`, an `artifact_outputs` key-to-path mapping, `article` and `body_only`. Renderers include
|
|
143
166
|
`render_pdf`, `render_doc`, `render_presentation`, `render_epub`, `render_html` and `render_book`.
|
|
144
167
|
`read_formulas` provides typed formulas; `self_check` verifies installed routes. Local APIs never acquire URLs.
|
|
145
168
|
|
|
146
169
|
## Explicit URL acquisition
|
|
147
170
|
|
|
148
|
-
`--url` deliberately acquires a public HTTP(S) page before local conversion.
|
|
171
|
+
`--url` deliberately acquires a public HTTP(S) page or supported document before local conversion.
|
|
172
|
+
Content-Type and magic bytes pick the route: HTML, PDF, Office, OpenDocument, EPUB, EML or text.
|
|
149
173
|
|
|
150
174
|
```sh
|
|
151
175
|
brewdoc --url https://example.com/article --out article.md
|
|
176
|
+
brewdoc --url https://arxiv.org/pdf/1706.03762 --out attention.md
|
|
152
177
|
brewdoc --url https://example.com/article --render-js --timeout 30 --out article.md
|
|
153
178
|
```
|
|
154
179
|
|
|
@@ -156,12 +181,12 @@ brewdoc --url https://example.com/article --render-js --timeout 30 --out article
|
|
|
156
181
|
Public destinations, DNS, redirects, TLS, requests and bytes are validated. Ordinary requests use GET;
|
|
157
182
|
JS admits only the narrow credential-free HN Algolia XHR POST exception. Local HTML never fetches or runs scripts.
|
|
158
183
|
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.
|
|
184
|
+
Timing-only expiry can preserve valid partial content; hard failures refuse output. [Full URL/JS limits](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/FORMATS.md#url-acquisition).
|
|
160
185
|
|
|
161
186
|
## Article mode
|
|
162
187
|
|
|
163
188
|
Introduced in 0.4.0; use a channel listed as available in the release. For Python JS capture, install
|
|
164
|
-
`brewdoc[render-js]==0.
|
|
189
|
+
`brewdoc[render-js]==0.6.0`; supported standalone bundles include its prerequisites.
|
|
165
190
|
|
|
166
191
|
```sh
|
|
167
192
|
brewdoc page.html --article --out article.md
|
|
@@ -174,30 +199,31 @@ code, receipt, markdown = brewdoc.run("page.html", article=True)
|
|
|
174
199
|
markdown, tally = brewdoc.render_html("page.html", article=True)
|
|
175
200
|
```
|
|
176
201
|
|
|
177
|
-
Article mode
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
202
|
+
Article mode keeps visible `main` (or role main) content, or outer `article` content when no main
|
|
203
|
+
exists; articles outside a main are dropped when one exists. Page-chrome landmarks are skipped, but
|
|
204
|
+
a header inside an article or a nav inside main stays.
|
|
205
|
+
Peer articles and multiple mains render in DOM order. When no candidate renders, the whole clean
|
|
206
|
+
page renders and the receipt adds `article_fallback: true`; selection never refuses for page
|
|
207
|
+
structure. There is no text scoring. Selection uses the recovered static HTML or frozen JS snapshot,
|
|
182
208
|
without layout or inferred author/date metadata. The source title is unchanged.
|
|
183
209
|
|
|
184
|
-
|
|
210
|
+
When content is selected, the receipt's `not_carried` and Markdown's Known omissions declare:
|
|
185
211
|
`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.
|
|
187
|
-
defines selection,
|
|
212
|
+
The [article contract](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/FORMATS.md#article-selection)
|
|
213
|
+
defines selection, fallback and limits.
|
|
188
214
|
|
|
189
|
-
[
|
|
215
|
+
[Earlier source-package CI](https://github.com/kochetkov-ma/brewdoc/actions/runs/38431645006) passed on
|
|
190
216
|
Ubuntu 22.04 x64/glibc with CPython 3.13.15, and macOS 15 ARM64/Windows Server 2025 x64
|
|
191
217
|
with CPython 3.14.7. Each passed four independent wheel/sdist base/optional installs;
|
|
192
218
|
optional JS executed on Unix and refused before requests on Windows. These are selected
|
|
193
|
-
tested patches, not a claim about newer versions.
|
|
194
|
-
full-suite baseline and existing CI smoke checks.
|
|
195
|
-
standalone binaries; other OS/minor combinations, free-threaded CPython and other
|
|
219
|
+
tested patches, not a claim about newer versions. These results predate the 0.5.0 changes.
|
|
220
|
+
CPython 3.12.14 retains the local macOS full-suite baseline and existing CI smoke checks.
|
|
221
|
+
Package evidence is separate from standalone binaries; other OS/minor combinations, free-threaded CPython and other
|
|
196
222
|
architectures remain untested here.
|
|
197
|
-
See [package compatibility](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
223
|
+
See [package compatibility](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/FORMATS.md#python-package-compatibility).
|
|
198
224
|
|
|
199
|
-
[Format contracts](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
200
|
-
[Releasing](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
225
|
+
[Format contracts](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/FORMATS.md) | [Corpus](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/benchmarks/CATALOG.md) | [Measurements](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/benchmarks/METHODOLOGY.md) | [Results](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/benchmarks/results/README.md)
|
|
226
|
+
[Releasing](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/RELEASING.md) | [Agent entry point](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/llms.txt) | [MIT license](https://github.com/kochetkov-ma/brewdoc/blob/v0.6.0/LICENSE)
|
|
201
227
|
|
|
202
228
|
## Related projects
|
|
203
229
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
../../../bin/brewdoc,sha256=EBcDAz0fm_7gb81W-eoCcf0v2BLUMB1QEU85SQT2Xc0,344
|
|
2
|
+
brewdoc-0.6.0.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2
|
|
3
|
+
brewdoc-0.6.0.dist-info/METADATA,sha256=c8MXeRPbOqaAz4Wl0zFYz9m3edVuHR1zTt04vyHZX9o,14751
|
|
4
|
+
brewdoc-0.6.0.dist-info/RECORD,,
|
|
5
|
+
brewdoc-0.6.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
+
brewdoc-0.6.0.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
|
|
7
|
+
brewdoc-0.6.0.dist-info/direct_url.json,sha256=R4khUVbzQAwMsfSZxeM_XFN1s6X_Y8urHUP1tNyTFXI,103
|
|
8
|
+
brewdoc-0.6.0.dist-info/entry_points.txt,sha256=avLrj5Y-MJ1yq0XFkjH5dbZW9QwYQkpn_hz6sNydbA4,45
|
|
9
|
+
brewdoc-0.6.0.dist-info/licenses/LICENSE,sha256=DNUrRveB3NXcyWxUr8csAHYmvrOmAzFDDAKv3iXNYKk,1073
|
|
10
|
+
brewdoc-0.6.0.dist-info/uv_cache.json,sha256=I8b14fujtRjLrvOMFD51vx27cgCOV3K4Go_utEdL0vQ,127
|
|
11
|
+
brewdoc/__init__.py,sha256=IyLGlv-WYbGMathise30JzWRf1AFRjqYE0TGnT6w-BE,867
|
|
12
|
+
brewdoc/_standalone.py,sha256=-zfCo75E8YlQexHuPoTu1tl1SJGMNftH1JXSt6qilxo,4705
|
|
13
|
+
brewdoc/_urljs/__init__.py,sha256=SrVyNMaD02iahY2zp3kggkW7KGJ1xv-C5d4DK1-JYWw,51
|
|
14
|
+
brewdoc/_urljs/glue.js,sha256=FLE1gUULoiMZNHH_RmwV0pFMx2BOc5tBMRBG8ahklgQ,45856
|
|
15
|
+
brewdoc/_urljs/native.py,sha256=HadpXlktvsFQyl52A7YjMNgL0N5S8qC2-K4hTk0qIE8,44208
|
|
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=Kd8bx983MrIJs9NSVE1Hr6DmFcsaRgw6gi6dbLZQhHM,6658
|
|
19
|
+
brewdoc/common.py,sha256=r4w2_BegIDVU5r89Y9vH-UQAcwKgP5dITMfi5UMPQA4,51045
|
|
20
|
+
brewdoc/docx.py,sha256=w5fzxManQw7E34p70-YOT3-hfE0E4Z9SBHaiIqY3ke0,6154
|
|
21
|
+
brewdoc/eml.py,sha256=KYWPD9K16JMiNtubtnQt8w9k5PejVQdXnEO29Vn5zSY,7433
|
|
22
|
+
brewdoc/epub.py,sha256=j9kcZAclfbGrvxHcvaImsGkUrmUzWrip-pvBzh2Zz5U,49436
|
|
23
|
+
brewdoc/htmljs.py,sha256=yxkqeMPdQ7uK-p0H_71BjjtSokXUv1czeicQhHU9heY,42516
|
|
24
|
+
brewdoc/htmltext.py,sha256=3ENBVSjDUiQ4xrM_SBEWikF2Pfum1s9RPhFywVPKzj8,38611
|
|
25
|
+
brewdoc/htmlurl.py,sha256=8yiqYCDcOB_rTfyd31nYksOiHy-YZIo5NltafUzc0fg,44737
|
|
26
|
+
brewdoc/odf.py,sha256=M5OZwNmZKQx68zpQRf158MUXMTHmnnKmtBam6sPi0YI,15467
|
|
27
|
+
brewdoc/output.py,sha256=aMgDoB5UDbRWYr9pBxlH402jEiUl8OSEqhox31O0ljk,4123
|
|
28
|
+
brewdoc/pdf.py,sha256=6qU5tPMjcAeYgqEVIPR8u8xk-FydNCTuD8onQldkTlU,66444
|
|
29
|
+
brewdoc/pptx.py,sha256=OYE42ZMgifyhWW8uj0M7JHsasaxXkcfLfSKVsp77is0,17844
|
|
30
|
+
brewdoc/selfcheck.py,sha256=4MGa8Jg3sxDW4f7WBOSiB2cwtyFCN_Uzg0QVTXdSW1s,28042
|
|
31
|
+
brewdoc/service.py,sha256=Qix2cgYeUQm9xNrX3JEV27rG-IzEVSYWEphfcOoXzL0,7733
|
|
32
|
+
brewdoc/sheets.py,sha256=qgvSxj4MnwPELvwzb3oSmffIOO5LIaAcTzC65TkYp6c,17411
|
|
33
|
+
brewdoc/text.py,sha256=OCrVnR3t4_FSn5rpxmQhItKg2oagKNhFhyp8XcJYHNw,602
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"url":"file:///Users/runner/work/_temp/ci-dist/dist/brewdoc-0.6.0-py3-none-any.whl","archive_info":{}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"timestamp":{"secs_since_epoch":1792356859,"nanos_since_epoch":581216600},"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.
|
|
3
|
+
"path": "licenses/installed/brewdoc/brewdoc-0.6.0.dist-info/licenses/LICENSE",
|
|
4
4
|
"bytes": 1073,
|
|
5
5
|
"sha256": "0cd52b46f781dcd5dcc96c54afc72c007626beb3a60331430c02afde25cd60a9"
|
|
6
6
|
},
|
package/binary/version.json
CHANGED
package/native-manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"archive": {
|
|
3
|
-
"bytes":
|
|
4
|
-
"filename": "brewdoc-0.
|
|
5
|
-
"sha256": "
|
|
3
|
+
"bytes": 32941284,
|
|
4
|
+
"filename": "brewdoc-0.6.0-macos-arm64.tar.gz",
|
|
5
|
+
"sha256": "8581b6021ca25e7fb67e94a05b270c2869ae3ce661f34c50da90ea4b4d17c595"
|
|
6
6
|
},
|
|
7
7
|
"executable": "brewdoc/brewdoc",
|
|
8
8
|
"inventory": {
|
|
@@ -188,83 +188,83 @@
|
|
|
188
188
|
"bytes": 1333490,
|
|
189
189
|
"kind": "file",
|
|
190
190
|
"mode": 420,
|
|
191
|
-
"sha256": "
|
|
191
|
+
"sha256": "0605da7bdc1cb7b5a1de3c6866defa140e31632dc2b49aa72a4880e34b63f84a"
|
|
192
192
|
},
|
|
193
193
|
"brewdoc/_internal/brewdoc": {
|
|
194
194
|
"kind": "directory",
|
|
195
195
|
"mode": 493
|
|
196
196
|
},
|
|
197
|
-
"brewdoc/_internal/brewdoc-0.
|
|
197
|
+
"brewdoc/_internal/brewdoc-0.6.0.dist-info": {
|
|
198
198
|
"kind": "directory",
|
|
199
199
|
"mode": 493
|
|
200
200
|
},
|
|
201
|
-
"brewdoc/_internal/brewdoc-0.
|
|
201
|
+
"brewdoc/_internal/brewdoc-0.6.0.dist-info/INSTALLER": {
|
|
202
202
|
"bytes": 2,
|
|
203
203
|
"kind": "file",
|
|
204
204
|
"mode": 420,
|
|
205
205
|
"sha256": "e6184ce10e266134fdcfa401e8f1a95005bcd4f18d16b62b757323e2833fe9a9"
|
|
206
206
|
},
|
|
207
|
-
"brewdoc/_internal/brewdoc-0.
|
|
208
|
-
"bytes":
|
|
207
|
+
"brewdoc/_internal/brewdoc-0.6.0.dist-info/METADATA": {
|
|
208
|
+
"bytes": 14751,
|
|
209
209
|
"kind": "file",
|
|
210
210
|
"mode": 420,
|
|
211
|
-
"sha256": "
|
|
211
|
+
"sha256": "73c3177913db3aa680cf85a5d33158cfd9b779d56e1d1d734edd38bf21d95fda"
|
|
212
212
|
},
|
|
213
|
-
"brewdoc/_internal/brewdoc-0.
|
|
214
|
-
"bytes":
|
|
213
|
+
"brewdoc/_internal/brewdoc-0.6.0.dist-info/RECORD": {
|
|
214
|
+
"bytes": 2604,
|
|
215
215
|
"kind": "file",
|
|
216
216
|
"mode": 420,
|
|
217
|
-
"sha256": "
|
|
217
|
+
"sha256": "eed5704e30204d29a948b3804dc7fd8846e8afa500bc2bd859650e86f85162a5"
|
|
218
218
|
},
|
|
219
|
-
"brewdoc/_internal/brewdoc-0.
|
|
219
|
+
"brewdoc/_internal/brewdoc-0.6.0.dist-info/REQUESTED": {
|
|
220
220
|
"bytes": 0,
|
|
221
221
|
"kind": "file",
|
|
222
222
|
"mode": 420,
|
|
223
223
|
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
|
224
224
|
},
|
|
225
|
-
"brewdoc/_internal/brewdoc-0.
|
|
225
|
+
"brewdoc/_internal/brewdoc-0.6.0.dist-info/WHEEL": {
|
|
226
226
|
"bytes": 87,
|
|
227
227
|
"kind": "file",
|
|
228
228
|
"mode": 420,
|
|
229
229
|
"sha256": "5b77e4a649bbfb07fdbc123967eeecd1e5a478cfaca6eefc23c35e6fdf037848"
|
|
230
230
|
},
|
|
231
|
-
"brewdoc/_internal/brewdoc-0.
|
|
231
|
+
"brewdoc/_internal/brewdoc-0.6.0.dist-info/direct_url.json": {
|
|
232
232
|
"bytes": 103,
|
|
233
233
|
"kind": "file",
|
|
234
234
|
"mode": 420,
|
|
235
|
-
"sha256": "
|
|
235
|
+
"sha256": "4789215156f3400c0cb1f499c5e33f5c5375b3a5ff63cbab1d43f5b4dc931572"
|
|
236
236
|
},
|
|
237
|
-
"brewdoc/_internal/brewdoc-0.
|
|
237
|
+
"brewdoc/_internal/brewdoc-0.6.0.dist-info/entry_points.txt": {
|
|
238
238
|
"bytes": 45,
|
|
239
239
|
"kind": "file",
|
|
240
240
|
"mode": 420,
|
|
241
241
|
"sha256": "6af2eb8f963e309d72ab45c59231f975b656f50c18424a67fe1cfab0dc9d6c0e"
|
|
242
242
|
},
|
|
243
|
-
"brewdoc/_internal/brewdoc-0.
|
|
243
|
+
"brewdoc/_internal/brewdoc-0.6.0.dist-info/licenses": {
|
|
244
244
|
"kind": "directory",
|
|
245
245
|
"mode": 493
|
|
246
246
|
},
|
|
247
|
-
"brewdoc/_internal/brewdoc-0.
|
|
247
|
+
"brewdoc/_internal/brewdoc-0.6.0.dist-info/licenses/LICENSE": {
|
|
248
248
|
"bytes": 1073,
|
|
249
249
|
"kind": "file",
|
|
250
250
|
"mode": 420,
|
|
251
251
|
"sha256": "0cd52b46f781dcd5dcc96c54afc72c007626beb3a60331430c02afde25cd60a9"
|
|
252
252
|
},
|
|
253
|
-
"brewdoc/_internal/brewdoc-0.
|
|
253
|
+
"brewdoc/_internal/brewdoc-0.6.0.dist-info/uv_cache.json": {
|
|
254
254
|
"bytes": 127,
|
|
255
255
|
"kind": "file",
|
|
256
256
|
"mode": 420,
|
|
257
|
-
"sha256": "
|
|
257
|
+
"sha256": "23c6f5e1fba3b518cbaef38c143e75bf1dbb72008e5772b81a8feeb4474bd2f4"
|
|
258
258
|
},
|
|
259
259
|
"brewdoc/_internal/brewdoc/_urljs": {
|
|
260
260
|
"kind": "directory",
|
|
261
261
|
"mode": 493
|
|
262
262
|
},
|
|
263
263
|
"brewdoc/_internal/brewdoc/_urljs/glue.js": {
|
|
264
|
-
"bytes":
|
|
264
|
+
"bytes": 45856,
|
|
265
265
|
"kind": "file",
|
|
266
266
|
"mode": 420,
|
|
267
|
-
"sha256": "
|
|
267
|
+
"sha256": "14b13581450ba223193471ff466c15d2914cc7604e739b41311046f1a8649604"
|
|
268
268
|
},
|
|
269
269
|
"brewdoc/_internal/brewdoc/_vendor": {
|
|
270
270
|
"kind": "directory",
|
|
@@ -2211,10 +2211,10 @@
|
|
|
2211
2211
|
"sha256": "fe0f992e9acf81baafec12ecf9611ef0885b0ddfd04dc7e2af3fcd132475630c"
|
|
2212
2212
|
},
|
|
2213
2213
|
"brewdoc/brewdoc": {
|
|
2214
|
-
"bytes":
|
|
2214
|
+
"bytes": 4022016,
|
|
2215
2215
|
"kind": "file",
|
|
2216
2216
|
"mode": 493,
|
|
2217
|
-
"sha256": "
|
|
2217
|
+
"sha256": "ab3c72b5e4a15286b9692f39d52ef5e715c345e6ab3e73a5ce5414bb3db5e536"
|
|
2218
2218
|
},
|
|
2219
2219
|
"brewdoc/licenses": {
|
|
2220
2220
|
"kind": "directory",
|
|
@@ -2228,7 +2228,7 @@
|
|
|
2228
2228
|
"bytes": 8106,
|
|
2229
2229
|
"kind": "file",
|
|
2230
2230
|
"mode": 420,
|
|
2231
|
-
"sha256": "
|
|
2231
|
+
"sha256": "1566f90d96f8f572f1a3b0bc3587ec3591af3fdd61df9a7ad1347cef4edb9005"
|
|
2232
2232
|
},
|
|
2233
2233
|
"brewdoc/licenses/installed/brewdoc": {
|
|
2234
2234
|
"kind": "directory",
|
|
@@ -2238,15 +2238,15 @@
|
|
|
2238
2238
|
"kind": "directory",
|
|
2239
2239
|
"mode": 493
|
|
2240
2240
|
},
|
|
2241
|
-
"brewdoc/licenses/installed/brewdoc/brewdoc-0.
|
|
2241
|
+
"brewdoc/licenses/installed/brewdoc/brewdoc-0.6.0.dist-info": {
|
|
2242
2242
|
"kind": "directory",
|
|
2243
2243
|
"mode": 493
|
|
2244
2244
|
},
|
|
2245
|
-
"brewdoc/licenses/installed/brewdoc/brewdoc-0.
|
|
2245
|
+
"brewdoc/licenses/installed/brewdoc/brewdoc-0.6.0.dist-info/licenses": {
|
|
2246
2246
|
"kind": "directory",
|
|
2247
2247
|
"mode": 493
|
|
2248
2248
|
},
|
|
2249
|
-
"brewdoc/licenses/installed/brewdoc/brewdoc-0.
|
|
2249
|
+
"brewdoc/licenses/installed/brewdoc/brewdoc-0.6.0.dist-info/licenses/LICENSE": {
|
|
2250
2250
|
"bytes": 1073,
|
|
2251
2251
|
"kind": "file",
|
|
2252
2252
|
"mode": 420,
|
|
@@ -4116,18 +4116,19 @@
|
|
|
4116
4116
|
"bytes": 135,
|
|
4117
4117
|
"kind": "file",
|
|
4118
4118
|
"mode": 420,
|
|
4119
|
-
"sha256": "
|
|
4119
|
+
"sha256": "b2e1ba41807f184c61e4cdf5f86ed4de6a6cde06af8642996bca7d6c7b852fd6"
|
|
4120
4120
|
}
|
|
4121
4121
|
},
|
|
4122
|
-
"lock_sha256": "
|
|
4122
|
+
"lock_sha256": "aaa02ff5914201a5696adae87176158d20d6e1dc37623cdffbbc67d8a005e81e",
|
|
4123
4123
|
"minimum_tested": "macOS 15 on Apple Silicon",
|
|
4124
4124
|
"oracle": [],
|
|
4125
4125
|
"probes": [
|
|
4126
4126
|
{
|
|
4127
4127
|
"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=",
|
|
4128
4128
|
"code": 0,
|
|
4129
|
-
"markdown_bytes":
|
|
4130
|
-
"
|
|
4129
|
+
"markdown_bytes": 2152,
|
|
4130
|
+
"markdown_encoding": "utf-8",
|
|
4131
|
+
"markdown_sha256": "1577635ebf9956eac94c763bf2d8eb6b01afea59f1944abbfc2a81de698b3ba7",
|
|
4131
4132
|
"path": "sample.epub",
|
|
4132
4133
|
"probe": "epub2",
|
|
4133
4134
|
"receipt": {
|
|
@@ -4150,7 +4151,7 @@
|
|
|
4150
4151
|
"not_carried": [
|
|
4151
4152
|
"CSS, layout, pagination and font rendering",
|
|
4152
4153
|
"scripts, forms and active media",
|
|
4153
|
-
"image pixels and graphical SVG content",
|
|
4154
|
+
"image pixels, images without alt text and graphical SVG content",
|
|
4154
4155
|
"unsupported SVG and MathML semantics",
|
|
4155
4156
|
"navigation semantics beyond declared TOC hierarchy"
|
|
4156
4157
|
],
|
|
@@ -4174,12 +4175,13 @@
|
|
|
4174
4175
|
"artifact": {
|
|
4175
4176
|
"bytes": 664,
|
|
4176
4177
|
"key": "formula/sheet/000002",
|
|
4177
|
-
"sha256": "
|
|
4178
|
+
"sha256": "a9ddfb5e8a1b5b922812f8adbc3d5cee5f480c198f52603812a850718f738c9d"
|
|
4178
4179
|
},
|
|
4179
|
-
"bytes_base64": "
|
|
4180
|
+
"bytes_base64": "UEsDBBQAAAAAAMymUl3ZAU4y4wIAAOMCAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbDw/eG1sIHZlcnNpb249IjEuMCI/PjxUeXBlcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9jb250ZW50LXR5cGVzIj48RGVmYXVsdCBFeHRlbnNpb249InJlbHMiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5yZWxhdGlvbnNoaXBzK3htbCIvPjxPdmVycmlkZSBQYXJ0TmFtZT0iL3hsL3dvcmtib29rLnhtbCIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Lm1haW4reG1sIi8+PE92ZXJyaWRlIFBhcnROYW1lPSIveGwvd29ya3NoZWV0cy9zaGVldDEueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwud29ya3NoZWV0K3htbCIvPjxPdmVycmlkZSBQYXJ0TmFtZT0iL3hsL3dvcmtzaGVldHMvc2hlZXQyLnhtbCIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLndvcmtzaGVldCt4bWwiLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC93b3Jrc2hlZXRzL3NoZWV0My54bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sIi8+PC9UeXBlcz5QSwMEFAAAAAAAzKZSXUuDozoFAQAABQEAAAsAAABfcmVscy8ucmVsczw/eG1sIHZlcnNpb249IjEuMCI/PjxSZWxhdGlvbnNoaXBzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDEiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnQiIFRhcmdldD0ieGwvd29ya2Jvb2sueG1sIi8+PC9SZWxhdGlvbnNoaXBzPlBLAwQUAAAAAADMplJdImE/o1IBAABSAQAADwAAAHhsL3dvcmtib29rLnhtbDw/eG1sIHZlcnNpb249IjEuMCI/Pjx3b3JrYm9vayB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIiB4bWxuczpyPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIj48c2hlZXRzPjxzaGVldCBuYW1lPSJJbnB1dHMiIHNoZWV0SWQ9IjEiIHI6aWQ9InJJZDEiLz48c2hlZXQgbmFtZT0iQ2FsYyIgc2hlZXRJZD0iMiIgcjppZD0icklkMiIvPjxzaGVldCBuYW1lPSJFbXB0eSIgc2hlZXRJZD0iMyIgcjppZD0icklkMyIvPjwvc2hlZXRzPjwvd29ya2Jvb2s+UEsDBBQAAAAAAMymUl3JpmJ5IAIAACACAAAaAAAAeGwvX3JlbHMvd29ya2Jvb2sueG1sLnJlbHM8P3htbCB2ZXJzaW9uPSIxLjAiPz48UmVsYXRpb25zaGlwcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzIj48UmVsYXRpb25zaGlwIElkPSJySWQxIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCIgVGFyZ2V0PSJ3b3Jrc2hlZXRzL3NoZWV0MS54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQyIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCIgVGFyZ2V0PSJ3b3Jrc2hlZXRzL3NoZWV0Mi54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQzIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCIgVGFyZ2V0PSJ3b3Jrc2hlZXRzL3NoZWV0My54bWwiLz48L1JlbGF0aW9uc2hpcHM+UEsDBBQAAAAAAMymUl3hQA/x9gAAAPYAAAAYAAAAeGwvd29ya3NoZWV0cy9zaGVldDEueG1sPHdvcmtzaGVldCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIj48c2hlZXREYXRhPjxyb3cgcj0iMSI+PGMgcj0iQTEiPjx2PjE8L3Y+PC9jPjwvcm93Pjxyb3cgcj0iMiI+PGMgcj0iQTIiPjx2PjI8L3Y+PC9jPjwvcm93Pjxyb3cgcj0iMyI+PGMgcj0iQTMiPjxmPlNVTShBMTpBMik8L2Y+PHY+Mzwvdj48L2M+PC9yb3c+PC9zaGVldERhdGE+PC93b3Jrc2hlZXQ+UEsDBBQAAAAAAMymUl3R4blYmQEAAJkBAAAYAAAAeGwvd29ya3NoZWV0cy9zaGVldDIueG1sPHdvcmtzaGVldCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIj48c2hlZXREYXRhPjxyb3cgcj0iMSI+PGMgcj0iQTEiPjxmPlNVTShJbnB1dHMhQTE6QTIpPC9mPjx2PjM8L3Y+PC9jPjxjIHI9IkIxIj48ZiB0PSJzaGFyZWQiIHJlZj0iQjE6QjIiIHNpPSI3Ij5JbnB1dHMhQTEqMjwvZj48dj4yPC92PjwvYz48L3Jvdz48cm93IHI9IjIiPjxjIHI9IkIyIj48ZiBzaT0iNyIgdD0ic2hhcmVkIi8+PHY+NDwvdj48L2M+PC9yb3c+PHJvdyByPSIzIj48YyByPSJDMyI+PGYgYng9IjAiIGFjYT0iMSI+SUYoQTEmbHQ7NCwmcXVvdDtjYWbDqSZxdW90OywmcXVvdDsmcXVvdDspPC9mPjx2PjE8L3Y+PC9jPjwvcm93Pjwvc2hlZXREYXRhPjwvd29ya3NoZWV0PlBLAwQUAAAAAADMplJdCntq/2UAAABlAAAAGAAAAHhsL3dvcmtzaGVldHMvc2hlZXQzLnhtbDx3b3Jrc2hlZXQgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiI+PHNoZWV0RGF0YS8+PC93b3Jrc2hlZXQ+UEsBAhQDFAAAAAAAzKZSXdkBTjLjAgAA4wIAABMAAAAAAAAAAAAAAIABAAAAAFtDb250ZW50X1R5cGVzXS54bWxQSwECFAMUAAAAAADMplJdS4OjOgUBAAAFAQAACwAAAAAAAAAAAAAAgAEUAwAAX3JlbHMvLnJlbHNQSwECFAMUAAAAAADMplJdImE/o1IBAABSAQAADwAAAAAAAAAAAAAAgAFCBAAAeGwvd29ya2Jvb2sueG1sUEsBAhQDFAAAAAAAzKZSXcmmYnkgAgAAIAIAABoAAAAAAAAAAAAAAIABwQUAAHhsL19yZWxzL3dvcmtib29rLnhtbC5yZWxzUEsBAhQDFAAAAAAAzKZSXeFAD/H2AAAA9gAAABgAAAAAAAAAAAAAAIABGQgAAHhsL3dvcmtzaGVldHMvc2hlZXQxLnhtbFBLAQIUAxQAAAAAAMymUl3R4blYmQEAAJkBAAAYAAAAAAAAAAAAAACAAUUJAAB4bC93b3Jrc2hlZXRzL3NoZWV0Mi54bWxQSwECFAMUAAAAAADMplJdCntq/2UAAABlAAAAGAAAAAAAAAAAAAAAgAEUCwAAeGwvd29ya3NoZWV0cy9zaGVldDMueG1sUEsFBgAAAAAHAAcA0QEAAK8LAAAAAA==",
|
|
4180
4181
|
"code": 0,
|
|
4181
|
-
"markdown_bytes":
|
|
4182
|
-
"
|
|
4182
|
+
"markdown_bytes": 2282,
|
|
4183
|
+
"markdown_encoding": "utf-8",
|
|
4184
|
+
"markdown_sha256": "d74d81b171b0e229dda896d452fb1ef9a2868edb44fa1453422da840f208b713",
|
|
4183
4185
|
"path": "formulas.xlsx",
|
|
4184
4186
|
"probe": "formula",
|
|
4185
4187
|
"receipt": {
|
|
@@ -4243,7 +4245,7 @@
|
|
|
4243
4245
|
"unit_kind": "sheet",
|
|
4244
4246
|
"units": 3
|
|
4245
4247
|
},
|
|
4246
|
-
"source_sha256": "
|
|
4248
|
+
"source_sha256": "71c5b803feeb41d12b4fb5f185a6f5fb47f9f59c12d3131ddcd79ded84ec6ea8"
|
|
4247
4249
|
}
|
|
4248
4250
|
],
|
|
4249
4251
|
"python": "3.12.14",
|
|
@@ -4307,10 +4309,6 @@
|
|
|
4307
4309
|
"name": "python-calamine",
|
|
4308
4310
|
"version": "0.8.2"
|
|
4309
4311
|
},
|
|
4310
|
-
{
|
|
4311
|
-
"name": "brewdoc",
|
|
4312
|
-
"version": "0.4.1"
|
|
4313
|
-
},
|
|
4314
4312
|
{
|
|
4315
4313
|
"name": "pdfminer.six",
|
|
4316
4314
|
"version": "20260107"
|
|
@@ -4335,6 +4333,10 @@
|
|
|
4335
4333
|
"name": "pdfplumber",
|
|
4336
4334
|
"version": "0.11.10"
|
|
4337
4335
|
},
|
|
4336
|
+
{
|
|
4337
|
+
"name": "brewdoc",
|
|
4338
|
+
"version": "0.6.0"
|
|
4339
|
+
},
|
|
4338
4340
|
{
|
|
4339
4341
|
"name": "pypdfium2",
|
|
4340
4342
|
"version": "5.13.0"
|
|
@@ -4356,9 +4358,9 @@
|
|
|
4356
4358
|
"macos": "Ad hoc build signature; no Developer ID signing or notarization",
|
|
4357
4359
|
"windows": "Unsigned; publisher signing has not been configured"
|
|
4358
4360
|
},
|
|
4359
|
-
"source_sha": "
|
|
4361
|
+
"source_sha": "49abdfac86a7459443ba7c3305edec9694f97af8",
|
|
4360
4362
|
"target": "macos-arm64",
|
|
4361
4363
|
"verification_scope": "smoke",
|
|
4362
|
-
"version": "0.
|
|
4363
|
-
"wheel_sha256": "
|
|
4364
|
+
"version": "0.6.0",
|
|
4365
|
+
"wheel_sha256": "3e6693bbac7f3c426542df374afb7ee65ac8bc8fac956add4e76ed61245b6b82"
|
|
4364
4366
|
}
|
package/native-verification.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"archive_sha256": "
|
|
2
|
+
"archive_sha256": "8581b6021ca25e7fb67e94a05b270c2869ae3ce661f34c50da90ea4b4d17c595",
|
|
3
3
|
"children": {
|
|
4
4
|
"dns": [
|
|
5
5
|
"::1",
|
|
@@ -80,8 +80,8 @@
|
|
|
80
80
|
"response": {
|
|
81
81
|
"body_bytes": 577,
|
|
82
82
|
"body_sha256": "25ddf2c883e0d1958ea971d279a7e4f0fd446724ee3db7db19dadabd4a62e484",
|
|
83
|
-
"entity_bytes":
|
|
84
|
-
"entity_sha256": "
|
|
83
|
+
"entity_bytes": 400,
|
|
84
|
+
"entity_sha256": "98045c75d902d8de112d0dce14a4408e02f754155c60c2c9ccf4f9adeb358e74"
|
|
85
85
|
},
|
|
86
86
|
"snapshot": {
|
|
87
87
|
"bytes": 589,
|
|
@@ -123,7 +123,9 @@
|
|
|
123
123
|
"active media and embeds",
|
|
124
124
|
"inline code layout outside tables: rendered as fenced blocks",
|
|
125
125
|
"inline code monospace inside table cells",
|
|
126
|
-
"
|
|
126
|
+
"form controls and their values",
|
|
127
|
+
"images without alt text",
|
|
128
|
+
"navigation, header, footer and aside landmarks outside main or article content"
|
|
127
129
|
],
|
|
128
130
|
"out": null,
|
|
129
131
|
"reason": "html rendered: 1 chapters, 0 tables, 1 text regions, 0 column splits",
|
|
@@ -152,7 +154,7 @@
|
|
|
152
154
|
"errors": [
|
|
153
155
|
{
|
|
154
156
|
"category": "tls",
|
|
155
|
-
"resource_url":
|
|
157
|
+
"resource_url": "https://self-signed.badssl.com/"
|
|
156
158
|
}
|
|
157
159
|
],
|
|
158
160
|
"final_url": null,
|
|
@@ -210,7 +212,9 @@
|
|
|
210
212
|
"active media and embeds",
|
|
211
213
|
"inline code layout outside tables: rendered as fenced blocks",
|
|
212
214
|
"inline code monospace inside table cells",
|
|
213
|
-
"
|
|
215
|
+
"form controls and their values",
|
|
216
|
+
"images without alt text",
|
|
217
|
+
"navigation, header, footer and aside landmarks outside main or article content"
|
|
214
218
|
],
|
|
215
219
|
"out": null,
|
|
216
220
|
"reason": "URL acquisition refused during tls",
|
|
@@ -258,8 +262,8 @@
|
|
|
258
262
|
"response": {
|
|
259
263
|
"body_bytes": 577,
|
|
260
264
|
"body_sha256": "25ddf2c883e0d1958ea971d279a7e4f0fd446724ee3db7db19dadabd4a62e484",
|
|
261
|
-
"entity_bytes":
|
|
262
|
-
"entity_sha256": "
|
|
265
|
+
"entity_bytes": 400,
|
|
266
|
+
"entity_sha256": "98045c75d902d8de112d0dce14a4408e02f754155c60c2c9ccf4f9adeb358e74"
|
|
263
267
|
},
|
|
264
268
|
"snapshot": {
|
|
265
269
|
"bytes": 1876,
|
|
@@ -267,7 +271,7 @@
|
|
|
267
271
|
"sha256": "086e96ba433e0faf6f65f05f504aa7ea23c6a64322784e703d19865859887e48"
|
|
268
272
|
},
|
|
269
273
|
"soft_window_origin": "request",
|
|
270
|
-
"soft_window_seconds": 5
|
|
274
|
+
"soft_window_seconds": 2.5,
|
|
271
275
|
"timeout_seconds": 5.0,
|
|
272
276
|
"unsupported_resources": [
|
|
273
277
|
"stylesheets",
|
|
@@ -309,7 +313,9 @@
|
|
|
309
313
|
"active media and embeds",
|
|
310
314
|
"inline code layout outside tables: rendered as fenced blocks",
|
|
311
315
|
"inline code monospace inside table cells",
|
|
312
|
-
"
|
|
316
|
+
"form controls and their values",
|
|
317
|
+
"images without alt text",
|
|
318
|
+
"navigation, header, footer and aside landmarks outside main or article content"
|
|
313
319
|
],
|
|
314
320
|
"out": null,
|
|
315
321
|
"reason": "html rendered: 1 chapters, 0 tables, 7 text regions, 0 column splits",
|
|
@@ -330,9 +336,9 @@
|
|
|
330
336
|
],
|
|
331
337
|
"schema": 1,
|
|
332
338
|
"self_check": 38,
|
|
333
|
-
"source_sha": "
|
|
339
|
+
"source_sha": "49abdfac86a7459443ba7c3305edec9694f97af8",
|
|
334
340
|
"target": "macos-arm64",
|
|
335
341
|
"verdict": "PASS",
|
|
336
342
|
"verification_scope": "smoke",
|
|
337
|
-
"version": "0.
|
|
343
|
+
"version": "0.6.0"
|
|
338
344
|
}
|
package/package.json
CHANGED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
../../../bin/brewdoc,sha256=EBcDAz0fm_7gb81W-eoCcf0v2BLUMB1QEU85SQT2Xc0,344
|
|
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=I0vluToH2y8lC__qQ8WYnvFDbQsSq9Q3RItpM1wKS5E,103
|
|
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=QTCyoyWQD4AGT7ETwHM0S8-tbAzUtnEQLHunHc8_DTk,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:///Users/runner/work/_temp/ci-dist/dist/brewdoc-0.4.1-py3-none-any.whl","archive_info":{}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"timestamp":{"secs_since_epoch":1791926979,"nanos_since_epoch":403163708},"commit":null,"tags":null,"env":{},"directories":{}}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/binary/_internal/{brewdoc-0.4.1.dist-info → brewdoc-0.6.0.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
/package/binary/_internal/{brewdoc-0.4.1.dist-info → brewdoc-0.6.0.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|