brewdoc-darwin-arm64 0.6.0 → 0.7.1
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 +44 -26
- package/binary/_internal/base_library.zip +0 -0
- package/binary/_internal/{brewdoc-0.6.0.dist-info → brewdoc-0.7.1.dist-info}/METADATA +46 -27
- package/binary/_internal/{brewdoc-0.6.0.dist-info → brewdoc-0.7.1.dist-info}/RECORD +16 -16
- package/binary/_internal/brewdoc-0.7.1.dist-info/direct_url.json +1 -0
- package/binary/_internal/brewdoc-0.7.1.dist-info/uv_cache.json +1 -0
- package/binary/_internal/truststore-0.10.5.dist-info/INSTALLER +1 -0
- package/binary/_internal/truststore-0.10.5.dist-info/METADATA +110 -0
- package/binary/_internal/truststore-0.10.5.dist-info/RECORD +13 -0
- package/binary/_internal/truststore-0.10.5.dist-info/REQUESTED +0 -0
- package/binary/_internal/truststore-0.10.5.dist-info/WHEEL +4 -0
- package/binary/_internal/truststore-0.10.5.dist-info/licenses/LICENSE +21 -0
- package/binary/brewdoc +0 -0
- package/binary/licenses/installed/truststore/truststore-0.10.5.dist-info/licenses/LICENSE +21 -0
- package/binary/licenses/installed-manifest.json +6 -1
- package/binary/version.json +2 -2
- package/native-manifest.json +107 -41
- package/native-verification.json +21 -3
- package/package.json +1 -1
- package/binary/_internal/brewdoc-0.6.0.dist-info/direct_url.json +0 -1
- package/binary/_internal/brewdoc-0.6.0.dist-info/uv_cache.json +0 -1
- /package/binary/_internal/{brewdoc-0.6.0.dist-info → brewdoc-0.7.1.dist-info}/INSTALLER +0 -0
- /package/binary/_internal/{brewdoc-0.6.0.dist-info → brewdoc-0.7.1.dist-info}/REQUESTED +0 -0
- /package/binary/_internal/{brewdoc-0.6.0.dist-info → brewdoc-0.7.1.dist-info}/WHEEL +0 -0
- /package/binary/_internal/{brewdoc-0.6.0.dist-info → brewdoc-0.7.1.dist-info}/entry_points.txt +0 -0
- /package/binary/_internal/{brewdoc-0.6.0.dist-info → brewdoc-0.7.1.dist-info}/licenses/LICENSE +0 -0
- /package/binary/licenses/installed/brewdoc/{brewdoc-0.6.0.dist-info → brewdoc-0.7.1.dist-info}/licenses/LICENSE +0 -0
package/README.md
CHANGED
|
@@ -3,14 +3,14 @@
|
|
|
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.7.1/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 added [selected ZIP/XML reader budgets](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
12
|
+
See [formats and limits](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/FORMATS.md).
|
|
13
|
+
Version 0.4.1 added [selected ZIP/XML reader budgets](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/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
|
|
|
@@ -21,28 +21,35 @@ It also added textless PDF page facts and selected caption, table and math-spaci
|
|
|
21
21
|
Version 0.6.0 writes cleaner Markdown with minimal escaping, adds `--body-only`, accepts
|
|
22
22
|
documents through `--url`, decodes legacy HTML charsets and falls back to the whole page in
|
|
23
23
|
article mode.
|
|
24
|
+
Version 0.7.0 added `--render-js auto` and HTML `--no-links`, refuses captcha, login and
|
|
25
|
+
JavaScript shell pages with a plain reason, reports HTTP status, redirects and charset in URL
|
|
26
|
+
receipts, decodes mislabelled HTML charsets by fallback and writes code and image links as
|
|
27
|
+
standard Markdown links.
|
|
28
|
+
Version 0.7.1 checks `--url` TLS against the operating system trust store, converts the title,
|
|
29
|
+
description, JSON-LD and noscript text of some JavaScript shell pages as a partial result, and
|
|
30
|
+
names AWS WAF challenges.
|
|
24
31
|
|
|
25
32
|
## Install
|
|
26
33
|
|
|
27
|
-
These examples select 0.
|
|
34
|
+
These examples select 0.7.1. Use a channel listed as available in [that release](https://github.com/kochetkov-ma/brewdoc/releases/tag/v0.7.1). Choose one method:
|
|
28
35
|
|
|
29
36
|
```sh
|
|
30
|
-
python -m pip install "brewdoc==0.
|
|
31
|
-
uv tool install --python 3.12 "brewdoc==0.
|
|
32
|
-
pipx install --python 3.12 "brewdoc==0.
|
|
37
|
+
python -m pip install "brewdoc==0.7.1"
|
|
38
|
+
uv tool install --python 3.12 "brewdoc==0.7.1"
|
|
39
|
+
pipx install --python 3.12 "brewdoc==0.7.1"
|
|
33
40
|
```
|
|
34
41
|
|
|
35
42
|
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.
|
|
43
|
+
[INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/INSTALL.md) covers prerequisites, Windows, uvx, PATH, update and removal.
|
|
37
44
|
[Latest release](https://github.com/kochetkov-ma/brewdoc/releases/latest) lists actual assets and channel availability.
|
|
38
45
|
|
|
39
46
|
### Standalone downloads
|
|
40
47
|
|
|
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.
|
|
48
|
+
Use downloads listed as available in the release. Python and dependencies are bundled. Verify [SHA256SUMS](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.7.1/SHA256SUMS) and keep the entire extracted directory.
|
|
42
49
|
|
|
43
|
-
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.
|
|
44
|
-
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.
|
|
45
|
-
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.
|
|
50
|
+
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.7.1/brewdoc-0.7.1-linux-x64.tar.gz)
|
|
51
|
+
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.7.1/brewdoc-0.7.1-windows-x64.zip)
|
|
52
|
+
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.7.1/brewdoc-0.7.1-macos-arm64.tar.gz)
|
|
46
53
|
|
|
47
54
|
| Native target | Verification environment | JavaScript |
|
|
48
55
|
|---|---|---|
|
|
@@ -52,21 +59,21 @@ Use downloads listed as available in the release. Python and dependencies are bu
|
|
|
52
59
|
|
|
53
60
|
Older OSes, Linux musl/ARM64 and macOS Intel are outside this binary set.
|
|
54
61
|
Windows is unsigned; macOS has an ad hoc signature without Developer ID/notarization.
|
|
55
|
-
Linux archives have checksums, without a detached publisher signature. [Download and launch](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
62
|
+
Linux archives have checksums, without a detached publisher signature. [Download and launch](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/INSTALL.md#standalone).
|
|
56
63
|
|
|
57
64
|
### npm
|
|
58
65
|
|
|
59
66
|
[](https://www.npmjs.com/package/brewdoc)
|
|
60
67
|
|
|
61
68
|
npm targets Linux x64/glibc and macOS ARM64. Windows uses the GitHub native download or Python package.
|
|
62
|
-
Use npm/npx only when listed as available in [the release](https://github.com/kochetkov-ma/brewdoc/releases/tag/v0.
|
|
63
|
-
[INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
69
|
+
Use npm/npx only when listed as available in [the release](https://github.com/kochetkov-ma/brewdoc/releases/tag/v0.7.1).
|
|
70
|
+
[INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/INSTALL.md#npm-and-npx) contains exact-version installation, update and removal instructions.
|
|
64
71
|
|
|
65
72
|
### Homebrew
|
|
66
73
|
|
|
67
74
|
Use `kochetkov-ma/brew/brewdoc` only when the release lists it as available.
|
|
68
75
|
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.
|
|
76
|
+
glibc 2.35+. See [installation and lifecycle](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/INSTALL.md#homebrew).
|
|
70
77
|
|
|
71
78
|
## Usage
|
|
72
79
|
|
|
@@ -85,7 +92,7 @@ caller order retains full-workbook ordinals. Artifact keys come from the Markdow
|
|
|
85
92
|
Requests and output collisions are validated before writes. Paths resolve against the caller's directory;
|
|
86
93
|
`--out` creates parents. Refusal preserves existing output. Self-check is offline and has its own output.
|
|
87
94
|
`--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.
|
|
95
|
+
only for several units. The receipt is unchanged. See [body-only output](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/FORMATS.md#body-only-output).
|
|
89
96
|
|
|
90
97
|
## Markdown and receipts
|
|
91
98
|
|
|
@@ -93,7 +100,7 @@ Parsed document output uses `brewdoc.markdown/2`: quoted source title, Metadata,
|
|
|
93
100
|
Known omissions, Contents, then anchored units. PDF uses `page/000001`, workbooks `sheet/000001`,
|
|
94
101
|
PPTX/ODP `slide/000001`, and DOCX/EPUB/HTML/ODT/EML `chapter/000001`.
|
|
95
102
|
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.
|
|
103
|
+
controls and write images with alt text as ``. See [Markdown escaping](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/FORMATS.md#markdown-escaping).
|
|
97
104
|
Metadata holds source/selection/content hashes, conversion tallies and artifact capabilities;
|
|
98
105
|
it excludes paths, timestamps, permissions and host data. EPUB retains declared publication metadata.
|
|
99
106
|
|
|
@@ -116,7 +123,8 @@ without it, Markdown follows on stdout. Local receipts use `brewdoc.receipt/1`;
|
|
|
116
123
|
| `out` | Markdown path, or null for stdout |
|
|
117
124
|
| `markdown_schema`, `unit_keys`, `artifacts` | Success-only schema, ordered source keys and available/requested artifacts |
|
|
118
125
|
| `selected_sheets` | Caller-ordered names, only when selected |
|
|
119
|
-
| `
|
|
126
|
+
| `article_fallback`, `charset_fallback` | Local HTML whole-page fallback and charset chosen by fallback, only when used |
|
|
127
|
+
| `acquisition` | URL provenance, HTTP status, redirects, challenge, charset, frozen snapshot and capture status |
|
|
120
128
|
|
|
121
129
|
Exit 0 means conversion, 1 refusal and 2 invalid usage. Success does not prove content fidelity or complete JavaScript.
|
|
122
130
|
PDF/DOCX/PPTX emit ASCII; workbooks/HTML/EPUB/ODT/ODP/EML emit UTF-8 without BOM, with LF newlines.
|
|
@@ -134,7 +142,7 @@ refs = brewdoc.list_book_artifacts("book.xlsm", sheets=("Calc",))
|
|
|
134
142
|
payload = brewdoc.read_book_artifact("book.xlsm", refs[0].key, sheets=("Calc",))
|
|
135
143
|
```
|
|
136
144
|
|
|
137
|
-
`run` accepts `sheets`, an `artifact_outputs` key-to-path mapping, `article` and `
|
|
145
|
+
`run` accepts `sheets`, an `artifact_outputs` key-to-path mapping, `article`, `body_only` and `links`. Renderers include
|
|
138
146
|
`render_pdf`, `render_doc`, `render_presentation`, `render_epub`, `render_html` and `render_book`.
|
|
139
147
|
`read_formulas` provides typed formulas; `self_check` verifies installed routes. Local APIs never acquire URLs.
|
|
140
148
|
|
|
@@ -147,18 +155,28 @@ Content-Type and magic bytes pick the route: HTML, PDF, Office, OpenDocument, EP
|
|
|
147
155
|
brewdoc --url https://example.com/article --out article.md
|
|
148
156
|
brewdoc --url https://arxiv.org/pdf/1706.03762 --out attention.md
|
|
149
157
|
brewdoc --url https://example.com/article --render-js --timeout 30 --out article.md
|
|
158
|
+
brewdoc --url "https://hn.algolia.com/?q=rust" --render-js auto --out search.md
|
|
159
|
+
brewdoc --url https://example.com/article --no-links --out article.md
|
|
150
160
|
```
|
|
151
161
|
|
|
162
|
+
Bare `--render-js` means `always`; `--render-js auto` runs JS only when the static page is a JavaScript shell.
|
|
163
|
+
Prefer `--render-js auto` for unknown pages: `always` runs JS on every page and can hit an engine quota on a
|
|
164
|
+
page that static mode reads. Pages that need more than the bounded engine refuse, such as crates.io.
|
|
165
|
+
A shell page whose static HTML embeds at least 200 characters of JSON-LD or noscript text converts that
|
|
166
|
+
text as a partial result, such as an Airbnb listing or a SoundCloud track; the receipt keeps a
|
|
167
|
+
`javascript_required` error. Captcha, bot challenge, login and other shell pages refuse at stage `challenge`
|
|
168
|
+
or `javascript_required` with a plain reason; the receipt names the challenge and keeps the HTTP status.
|
|
169
|
+
`--no-links` (HTML only) keeps link text, omits destinations and discloses it in the receipt.
|
|
152
170
|
`--timeout` is one positive finite waiting budget, default 30 seconds; cleanup/conversion can add time.
|
|
153
171
|
Public destinations, DNS, redirects, TLS, requests and bytes are validated. Ordinary requests use GET;
|
|
154
172
|
JS admits only the narrow credential-free HN Algolia XHR POST exception. Local HTML never fetches or runs scripts.
|
|
155
173
|
Optional JS needs installed/bundled prerequisites, refuses unsupported runtimes before HTTP and downloads no engine.
|
|
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.
|
|
174
|
+
Timing-only expiry can preserve valid partial content; hard failures refuse output. [Full URL/JS limits](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/FORMATS.md#url-acquisition).
|
|
157
175
|
|
|
158
176
|
## Article mode
|
|
159
177
|
|
|
160
178
|
Introduced in 0.4.0; use a channel listed as available in the release. For Python JS capture, install
|
|
161
|
-
`brewdoc[render-js]==0.
|
|
179
|
+
`brewdoc[render-js]==0.7.1`; supported standalone bundles include its prerequisites.
|
|
162
180
|
|
|
163
181
|
```sh
|
|
164
182
|
brewdoc page.html --article --out article.md
|
|
@@ -181,7 +199,7 @@ without layout or inferred author/date metadata. The source title is unchanged.
|
|
|
181
199
|
|
|
182
200
|
When content is selected, the receipt's `not_carried` and Markdown's Known omissions declare:
|
|
183
201
|
`body content outside the selected article or main subtree; complete page coverage is not claimed`.
|
|
184
|
-
The [article contract](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
202
|
+
The [article contract](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/FORMATS.md#article-selection)
|
|
185
203
|
defines selection, fallback and limits.
|
|
186
204
|
|
|
187
205
|
[Earlier source-package CI](https://github.com/kochetkov-ma/brewdoc/actions/runs/38431645006) passed on
|
|
@@ -192,10 +210,10 @@ tested patches, not a claim about newer versions. These results predate the 0.5.
|
|
|
192
210
|
CPython 3.12.14 retains the local macOS full-suite baseline and existing CI smoke checks.
|
|
193
211
|
Package evidence is separate from standalone binaries; other OS/minor combinations, free-threaded CPython and other
|
|
194
212
|
architectures remain untested here.
|
|
195
|
-
See [package compatibility](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
213
|
+
See [package compatibility](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/FORMATS.md#python-package-compatibility).
|
|
196
214
|
|
|
197
|
-
[Format contracts](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
198
|
-
[Releasing](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
215
|
+
[Format contracts](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/FORMATS.md) | [Corpus](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/benchmarks/CATALOG.md) | [Measurements](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/benchmarks/METHODOLOGY.md) | [Results](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/benchmarks/results/README.md)
|
|
216
|
+
[Releasing](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/RELEASING.md) | [Agent entry point](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/llms.txt) | [MIT license](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/LICENSE)
|
|
199
217
|
|
|
200
218
|
## Related projects
|
|
201
219
|
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: brewdoc
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.1
|
|
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
|
|
@@ -22,6 +22,7 @@ Requires-Python: >=3.12
|
|
|
22
22
|
Requires-Dist: pdfplumber==0.11.10
|
|
23
23
|
Requires-Dist: python-calamine==0.8.2
|
|
24
24
|
Requires-Dist: selectolax==0.4.13; python_version < '3.15' and platform_python_implementation == 'CPython'
|
|
25
|
+
Requires-Dist: truststore==0.10.5
|
|
25
26
|
Provides-Extra: render-js
|
|
26
27
|
Requires-Dist: quickjs-ng==0.17.0.1; (python_version < '3.15' and platform_python_implementation == 'CPython') and extra == 'render-js'
|
|
27
28
|
Description-Content-Type: text/markdown
|
|
@@ -31,14 +32,14 @@ Description-Content-Type: text/markdown
|
|
|
31
32
|
[](https://pypi.org/project/brewdoc/)
|
|
32
33
|
[](https://github.com/kochetkov-ma/brewdoc/actions/workflows/ci.yml)
|
|
33
34
|
[](https://github.com/kochetkov-ma/brewdoc/releases/latest)
|
|
34
|
-
[](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
35
|
+
[](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/LICENSE)
|
|
35
36
|
|
|
36
37
|
Fast, deterministic document-to-Markdown conversion for agent systems. Easy to install. No model weights, OCR or external services.
|
|
37
38
|
|
|
38
39
|
Local conversion runs offline after installation, with no runtime component downloads.
|
|
39
40
|
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 added [selected ZIP/XML reader budgets](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
41
|
+
See [formats and limits](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/FORMATS.md).
|
|
42
|
+
Version 0.4.1 added [selected ZIP/XML reader budgets](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/FORMATS.md#zipxml-reader-limits)
|
|
42
43
|
for DOCX/PPTX and workbook metadata/artifacts. Excessive work refuses before output
|
|
43
44
|
writes; native workbook values and total process memory remain outside those bounds.
|
|
44
45
|
|
|
@@ -49,28 +50,35 @@ It also added textless PDF page facts and selected caption, table and math-spaci
|
|
|
49
50
|
Version 0.6.0 writes cleaner Markdown with minimal escaping, adds `--body-only`, accepts
|
|
50
51
|
documents through `--url`, decodes legacy HTML charsets and falls back to the whole page in
|
|
51
52
|
article mode.
|
|
53
|
+
Version 0.7.0 added `--render-js auto` and HTML `--no-links`, refuses captcha, login and
|
|
54
|
+
JavaScript shell pages with a plain reason, reports HTTP status, redirects and charset in URL
|
|
55
|
+
receipts, decodes mislabelled HTML charsets by fallback and writes code and image links as
|
|
56
|
+
standard Markdown links.
|
|
57
|
+
Version 0.7.1 checks `--url` TLS against the operating system trust store, converts the title,
|
|
58
|
+
description, JSON-LD and noscript text of some JavaScript shell pages as a partial result, and
|
|
59
|
+
names AWS WAF challenges.
|
|
52
60
|
|
|
53
61
|
## Install
|
|
54
62
|
|
|
55
|
-
These examples select 0.
|
|
63
|
+
These examples select 0.7.1. Use a channel listed as available in [that release](https://github.com/kochetkov-ma/brewdoc/releases/tag/v0.7.1). Choose one method:
|
|
56
64
|
|
|
57
65
|
```sh
|
|
58
|
-
python -m pip install "brewdoc==0.
|
|
59
|
-
uv tool install --python 3.12 "brewdoc==0.
|
|
60
|
-
pipx install --python 3.12 "brewdoc==0.
|
|
66
|
+
python -m pip install "brewdoc==0.7.1"
|
|
67
|
+
uv tool install --python 3.12 "brewdoc==0.7.1"
|
|
68
|
+
pipx install --python 3.12 "brewdoc==0.7.1"
|
|
61
69
|
```
|
|
62
70
|
|
|
63
71
|
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.
|
|
72
|
+
[INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/INSTALL.md) covers prerequisites, Windows, uvx, PATH, update and removal.
|
|
65
73
|
[Latest release](https://github.com/kochetkov-ma/brewdoc/releases/latest) lists actual assets and channel availability.
|
|
66
74
|
|
|
67
75
|
### Standalone downloads
|
|
68
76
|
|
|
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.
|
|
77
|
+
Use downloads listed as available in the release. Python and dependencies are bundled. Verify [SHA256SUMS](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.7.1/SHA256SUMS) and keep the entire extracted directory.
|
|
70
78
|
|
|
71
|
-
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.
|
|
72
|
-
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.
|
|
73
|
-
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.
|
|
79
|
+
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.7.1/brewdoc-0.7.1-linux-x64.tar.gz)
|
|
80
|
+
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.7.1/brewdoc-0.7.1-windows-x64.zip)
|
|
81
|
+
[](https://github.com/kochetkov-ma/brewdoc/releases/download/v0.7.1/brewdoc-0.7.1-macos-arm64.tar.gz)
|
|
74
82
|
|
|
75
83
|
| Native target | Verification environment | JavaScript |
|
|
76
84
|
|---|---|---|
|
|
@@ -80,21 +88,21 @@ Use downloads listed as available in the release. Python and dependencies are bu
|
|
|
80
88
|
|
|
81
89
|
Older OSes, Linux musl/ARM64 and macOS Intel are outside this binary set.
|
|
82
90
|
Windows is unsigned; macOS has an ad hoc signature without Developer ID/notarization.
|
|
83
|
-
Linux archives have checksums, without a detached publisher signature. [Download and launch](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
91
|
+
Linux archives have checksums, without a detached publisher signature. [Download and launch](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/INSTALL.md#standalone).
|
|
84
92
|
|
|
85
93
|
### npm
|
|
86
94
|
|
|
87
95
|
[](https://www.npmjs.com/package/brewdoc)
|
|
88
96
|
|
|
89
97
|
npm targets Linux x64/glibc and macOS ARM64. Windows uses the GitHub native download or Python package.
|
|
90
|
-
Use npm/npx only when listed as available in [the release](https://github.com/kochetkov-ma/brewdoc/releases/tag/v0.
|
|
91
|
-
[INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
98
|
+
Use npm/npx only when listed as available in [the release](https://github.com/kochetkov-ma/brewdoc/releases/tag/v0.7.1).
|
|
99
|
+
[INSTALL.md](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/INSTALL.md#npm-and-npx) contains exact-version installation, update and removal instructions.
|
|
92
100
|
|
|
93
101
|
### Homebrew
|
|
94
102
|
|
|
95
103
|
Use `kochetkov-ma/brew/brewdoc` only when the release lists it as available.
|
|
96
104
|
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.
|
|
105
|
+
glibc 2.35+. See [installation and lifecycle](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/INSTALL.md#homebrew).
|
|
98
106
|
|
|
99
107
|
## Usage
|
|
100
108
|
|
|
@@ -113,7 +121,7 @@ caller order retains full-workbook ordinals. Artifact keys come from the Markdow
|
|
|
113
121
|
Requests and output collisions are validated before writes. Paths resolve against the caller's directory;
|
|
114
122
|
`--out` creates parents. Refusal preserves existing output. Self-check is offline and has its own output.
|
|
115
123
|
`--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.
|
|
124
|
+
only for several units. The receipt is unchanged. See [body-only output](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/FORMATS.md#body-only-output).
|
|
117
125
|
|
|
118
126
|
## Markdown and receipts
|
|
119
127
|
|
|
@@ -121,7 +129,7 @@ Parsed document output uses `brewdoc.markdown/2`: quoted source title, Metadata,
|
|
|
121
129
|
Known omissions, Contents, then anchored units. PDF uses `page/000001`, workbooks `sheet/000001`,
|
|
122
130
|
PPTX/ODP `slide/000001`, and DOCX/EPUB/HTML/ODT/EML `chapter/000001`.
|
|
123
131
|
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.
|
|
132
|
+
controls and write images with alt text as ``. See [Markdown escaping](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/FORMATS.md#markdown-escaping).
|
|
125
133
|
Metadata holds source/selection/content hashes, conversion tallies and artifact capabilities;
|
|
126
134
|
it excludes paths, timestamps, permissions and host data. EPUB retains declared publication metadata.
|
|
127
135
|
|
|
@@ -144,7 +152,8 @@ without it, Markdown follows on stdout. Local receipts use `brewdoc.receipt/1`;
|
|
|
144
152
|
| `out` | Markdown path, or null for stdout |
|
|
145
153
|
| `markdown_schema`, `unit_keys`, `artifacts` | Success-only schema, ordered source keys and available/requested artifacts |
|
|
146
154
|
| `selected_sheets` | Caller-ordered names, only when selected |
|
|
147
|
-
| `
|
|
155
|
+
| `article_fallback`, `charset_fallback` | Local HTML whole-page fallback and charset chosen by fallback, only when used |
|
|
156
|
+
| `acquisition` | URL provenance, HTTP status, redirects, challenge, charset, frozen snapshot and capture status |
|
|
148
157
|
|
|
149
158
|
Exit 0 means conversion, 1 refusal and 2 invalid usage. Success does not prove content fidelity or complete JavaScript.
|
|
150
159
|
PDF/DOCX/PPTX emit ASCII; workbooks/HTML/EPUB/ODT/ODP/EML emit UTF-8 without BOM, with LF newlines.
|
|
@@ -162,7 +171,7 @@ refs = brewdoc.list_book_artifacts("book.xlsm", sheets=("Calc",))
|
|
|
162
171
|
payload = brewdoc.read_book_artifact("book.xlsm", refs[0].key, sheets=("Calc",))
|
|
163
172
|
```
|
|
164
173
|
|
|
165
|
-
`run` accepts `sheets`, an `artifact_outputs` key-to-path mapping, `article` and `
|
|
174
|
+
`run` accepts `sheets`, an `artifact_outputs` key-to-path mapping, `article`, `body_only` and `links`. Renderers include
|
|
166
175
|
`render_pdf`, `render_doc`, `render_presentation`, `render_epub`, `render_html` and `render_book`.
|
|
167
176
|
`read_formulas` provides typed formulas; `self_check` verifies installed routes. Local APIs never acquire URLs.
|
|
168
177
|
|
|
@@ -175,18 +184,28 @@ Content-Type and magic bytes pick the route: HTML, PDF, Office, OpenDocument, EP
|
|
|
175
184
|
brewdoc --url https://example.com/article --out article.md
|
|
176
185
|
brewdoc --url https://arxiv.org/pdf/1706.03762 --out attention.md
|
|
177
186
|
brewdoc --url https://example.com/article --render-js --timeout 30 --out article.md
|
|
187
|
+
brewdoc --url "https://hn.algolia.com/?q=rust" --render-js auto --out search.md
|
|
188
|
+
brewdoc --url https://example.com/article --no-links --out article.md
|
|
178
189
|
```
|
|
179
190
|
|
|
191
|
+
Bare `--render-js` means `always`; `--render-js auto` runs JS only when the static page is a JavaScript shell.
|
|
192
|
+
Prefer `--render-js auto` for unknown pages: `always` runs JS on every page and can hit an engine quota on a
|
|
193
|
+
page that static mode reads. Pages that need more than the bounded engine refuse, such as crates.io.
|
|
194
|
+
A shell page whose static HTML embeds at least 200 characters of JSON-LD or noscript text converts that
|
|
195
|
+
text as a partial result, such as an Airbnb listing or a SoundCloud track; the receipt keeps a
|
|
196
|
+
`javascript_required` error. Captcha, bot challenge, login and other shell pages refuse at stage `challenge`
|
|
197
|
+
or `javascript_required` with a plain reason; the receipt names the challenge and keeps the HTTP status.
|
|
198
|
+
`--no-links` (HTML only) keeps link text, omits destinations and discloses it in the receipt.
|
|
180
199
|
`--timeout` is one positive finite waiting budget, default 30 seconds; cleanup/conversion can add time.
|
|
181
200
|
Public destinations, DNS, redirects, TLS, requests and bytes are validated. Ordinary requests use GET;
|
|
182
201
|
JS admits only the narrow credential-free HN Algolia XHR POST exception. Local HTML never fetches or runs scripts.
|
|
183
202
|
Optional JS needs installed/bundled prerequisites, refuses unsupported runtimes before HTTP and downloads no engine.
|
|
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.
|
|
203
|
+
Timing-only expiry can preserve valid partial content; hard failures refuse output. [Full URL/JS limits](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/FORMATS.md#url-acquisition).
|
|
185
204
|
|
|
186
205
|
## Article mode
|
|
187
206
|
|
|
188
207
|
Introduced in 0.4.0; use a channel listed as available in the release. For Python JS capture, install
|
|
189
|
-
`brewdoc[render-js]==0.
|
|
208
|
+
`brewdoc[render-js]==0.7.1`; supported standalone bundles include its prerequisites.
|
|
190
209
|
|
|
191
210
|
```sh
|
|
192
211
|
brewdoc page.html --article --out article.md
|
|
@@ -209,7 +228,7 @@ without layout or inferred author/date metadata. The source title is unchanged.
|
|
|
209
228
|
|
|
210
229
|
When content is selected, the receipt's `not_carried` and Markdown's Known omissions declare:
|
|
211
230
|
`body content outside the selected article or main subtree; complete page coverage is not claimed`.
|
|
212
|
-
The [article contract](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
231
|
+
The [article contract](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/FORMATS.md#article-selection)
|
|
213
232
|
defines selection, fallback and limits.
|
|
214
233
|
|
|
215
234
|
[Earlier source-package CI](https://github.com/kochetkov-ma/brewdoc/actions/runs/38431645006) passed on
|
|
@@ -220,10 +239,10 @@ tested patches, not a claim about newer versions. These results predate the 0.5.
|
|
|
220
239
|
CPython 3.12.14 retains the local macOS full-suite baseline and existing CI smoke checks.
|
|
221
240
|
Package evidence is separate from standalone binaries; other OS/minor combinations, free-threaded CPython and other
|
|
222
241
|
architectures remain untested here.
|
|
223
|
-
See [package compatibility](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
242
|
+
See [package compatibility](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/FORMATS.md#python-package-compatibility).
|
|
224
243
|
|
|
225
|
-
[Format contracts](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
226
|
-
[Releasing](https://github.com/kochetkov-ma/brewdoc/blob/v0.
|
|
244
|
+
[Format contracts](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/FORMATS.md) | [Corpus](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/benchmarks/CATALOG.md) | [Measurements](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/benchmarks/METHODOLOGY.md) | [Results](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/benchmarks/results/README.md)
|
|
245
|
+
[Releasing](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/RELEASING.md) | [Agent entry point](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/llms.txt) | [MIT license](https://github.com/kochetkov-ma/brewdoc/blob/v0.7.1/LICENSE)
|
|
227
246
|
|
|
228
247
|
## Related projects
|
|
229
248
|
|
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
../../../bin/brewdoc,sha256=EBcDAz0fm_7gb81W-eoCcf0v2BLUMB1QEU85SQT2Xc0,344
|
|
2
|
-
brewdoc-0.
|
|
3
|
-
brewdoc-0.
|
|
4
|
-
brewdoc-0.
|
|
5
|
-
brewdoc-0.
|
|
6
|
-
brewdoc-0.
|
|
7
|
-
brewdoc-0.
|
|
8
|
-
brewdoc-0.
|
|
9
|
-
brewdoc-0.
|
|
10
|
-
brewdoc-0.
|
|
11
|
-
brewdoc/__init__.py,sha256=
|
|
2
|
+
brewdoc-0.7.1.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2
|
|
3
|
+
brewdoc-0.7.1.dist-info/METADATA,sha256=RyMs1kM4lqvdtHH23eANHcOTMVrwzEW99PV550tnXnw,16454
|
|
4
|
+
brewdoc-0.7.1.dist-info/RECORD,,
|
|
5
|
+
brewdoc-0.7.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
+
brewdoc-0.7.1.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
|
|
7
|
+
brewdoc-0.7.1.dist-info/direct_url.json,sha256=EUCJQJxYhd7a0gbLqQRfTPL5oRWKXXjXzAs4YVOM5Ig,103
|
|
8
|
+
brewdoc-0.7.1.dist-info/entry_points.txt,sha256=avLrj5Y-MJ1yq0XFkjH5dbZW9QwYQkpn_hz6sNydbA4,45
|
|
9
|
+
brewdoc-0.7.1.dist-info/licenses/LICENSE,sha256=DNUrRveB3NXcyWxUr8csAHYmvrOmAzFDDAKv3iXNYKk,1073
|
|
10
|
+
brewdoc-0.7.1.dist-info/uv_cache.json,sha256=QjCGCtlFFSLxpw_VVFZPumJe43U1DFk8eINGpMCj3Po,126
|
|
11
|
+
brewdoc/__init__.py,sha256=ZhvyKgMYdQAeE5-yXULupPEts3E_w9ypOQF9dqoBQDs,867
|
|
12
12
|
brewdoc/_standalone.py,sha256=-zfCo75E8YlQexHuPoTu1tl1SJGMNftH1JXSt6qilxo,4705
|
|
13
13
|
brewdoc/_urljs/__init__.py,sha256=SrVyNMaD02iahY2zp3kggkW7KGJ1xv-C5d4DK1-JYWw,51
|
|
14
14
|
brewdoc/_urljs/glue.js,sha256=FLE1gUULoiMZNHH_RmwV0pFMx2BOc5tBMRBG8ahklgQ,45856
|
|
15
|
-
brewdoc/_urljs/native.py,sha256=
|
|
15
|
+
brewdoc/_urljs/native.py,sha256=usZXp_nWS5KKXj1T-Qelmkr5lhGxfVkTMt80g0bz0CQ,44464
|
|
16
16
|
brewdoc/_vendor/THIRD_PARTY_NOTICES.txt,sha256=Mg3dxJ1SNPASEu4_ruk2j-7WM0lZmrfulGCUpNoOZak,26003
|
|
17
17
|
brewdoc/_vendor/linkedom-worker.js,sha256=6p8d5psAnSEJaN2PTT9OzxCVvt-A04nsgyRMFxNXgog,411521
|
|
18
|
-
brewdoc/cli.py,sha256=
|
|
18
|
+
brewdoc/cli.py,sha256=plbn5-iYgBCcIUtXEn5yDq0WUouJmxCXEZ_wGP7FKPo,7113
|
|
19
19
|
brewdoc/common.py,sha256=r4w2_BegIDVU5r89Y9vH-UQAcwKgP5dITMfi5UMPQA4,51045
|
|
20
20
|
brewdoc/docx.py,sha256=w5fzxManQw7E34p70-YOT3-hfE0E4Z9SBHaiIqY3ke0,6154
|
|
21
21
|
brewdoc/eml.py,sha256=KYWPD9K16JMiNtubtnQt8w9k5PejVQdXnEO29Vn5zSY,7433
|
|
22
22
|
brewdoc/epub.py,sha256=j9kcZAclfbGrvxHcvaImsGkUrmUzWrip-pvBzh2Zz5U,49436
|
|
23
|
-
brewdoc/htmljs.py,sha256=
|
|
24
|
-
brewdoc/htmltext.py,sha256=
|
|
25
|
-
brewdoc/htmlurl.py,sha256=
|
|
23
|
+
brewdoc/htmljs.py,sha256=UEBVlFZc95gaq0rQtgZVY8WkGQS3LzVVywAggc9nrlk,44581
|
|
24
|
+
brewdoc/htmltext.py,sha256=Dq0OykXbNUXC8Phn4q0PDHF48H3J1POYifinv0D6AiQ,42149
|
|
25
|
+
brewdoc/htmlurl.py,sha256=YeraHZMQUlKe-XrqhY0oXCiXQhNyQVlj9aCCENk28ec,54681
|
|
26
26
|
brewdoc/odf.py,sha256=M5OZwNmZKQx68zpQRf158MUXMTHmnnKmtBam6sPi0YI,15467
|
|
27
27
|
brewdoc/output.py,sha256=aMgDoB5UDbRWYr9pBxlH402jEiUl8OSEqhox31O0ljk,4123
|
|
28
28
|
brewdoc/pdf.py,sha256=6qU5tPMjcAeYgqEVIPR8u8xk-FydNCTuD8onQldkTlU,66444
|
|
29
29
|
brewdoc/pptx.py,sha256=OYE42ZMgifyhWW8uj0M7JHsasaxXkcfLfSKVsp77is0,17844
|
|
30
30
|
brewdoc/selfcheck.py,sha256=4MGa8Jg3sxDW4f7WBOSiB2cwtyFCN_Uzg0QVTXdSW1s,28042
|
|
31
|
-
brewdoc/service.py,sha256=
|
|
31
|
+
brewdoc/service.py,sha256=QS-6kDYKV-peTmw-LU6FYnEIM8JmtI2eUqjCbcm8nuM,8161
|
|
32
32
|
brewdoc/sheets.py,sha256=qgvSxj4MnwPELvwzb3oSmffIOO5LIaAcTzC65TkYp6c,17411
|
|
33
33
|
brewdoc/text.py,sha256=OCrVnR3t4_FSn5rpxmQhItKg2oagKNhFhyp8XcJYHNw,602
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"url":"file:///Users/runner/work/_temp/ci-dist/dist/brewdoc-0.7.1-py3-none-any.whl","archive_info":{}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"timestamp":{"secs_since_epoch":1792439289,"nanos_since_epoch":63548055},"commit":null,"tags":null,"env":{},"directories":{}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
uv
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: truststore
|
|
3
|
+
Version: 0.10.5
|
|
4
|
+
Summary: Verify certificates using native system trust stores
|
|
5
|
+
Author-email: Seth Michael Larson <sethmichaellarson@gmail.com>, David Glick <david@glicksoftware.com>
|
|
6
|
+
Requires-Python: >= 3.10
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: Operating System :: MacOS
|
|
12
|
+
Classifier: Operating System :: Microsoft
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
21
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
22
|
+
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
23
|
+
License-File: LICENSE
|
|
24
|
+
Project-URL: Documentation, https://truststore.readthedocs.io
|
|
25
|
+
Project-URL: Source, https://github.com/sethmlarson/truststore
|
|
26
|
+
|
|
27
|
+
# Truststore
|
|
28
|
+
|
|
29
|
+
[](https://pypi.org/project/truststore)
|
|
30
|
+
[](https://github.com/sethmlarson/truststore/actions/workflows/ci.yml)
|
|
31
|
+
|
|
32
|
+
Truststore is a library which exposes native system certificate stores (ie "trust stores")
|
|
33
|
+
through an `ssl.SSLContext`-like API. This means that Python applications no longer need to
|
|
34
|
+
rely on certifi as a root certificate store. Native system certificate stores
|
|
35
|
+
have many helpful features compared to a static certificate bundle like certifi:
|
|
36
|
+
|
|
37
|
+
- Automatically update certificates as new CAs are created and removed
|
|
38
|
+
- Fetch missing intermediate certificates
|
|
39
|
+
- Check certificates against certificate revocation lists (CRLs) to avoid monster-in-the-middle (MITM) attacks
|
|
40
|
+
- Managed per-system rather than per-application by a operations/IT team
|
|
41
|
+
- PyPI is no longer a CA distribution channel 🥳
|
|
42
|
+
|
|
43
|
+
Right now truststore is a stand-alone library that can be installed globally in your
|
|
44
|
+
application to immediately take advantage of the benefits in Python 3.10+. Truststore
|
|
45
|
+
has also been integrated into pip 24.2+ as the default method for verifying HTTPS
|
|
46
|
+
certificates (with a fallback to certifi).
|
|
47
|
+
|
|
48
|
+
Long-term the hope is to add this functionality into Python itself. Wish us luck!
|
|
49
|
+
|
|
50
|
+
## Installation
|
|
51
|
+
|
|
52
|
+
Truststore is installed from [PyPI](https://pypi.org/project/truststore) with pip:
|
|
53
|
+
|
|
54
|
+
```{code-block} shell
|
|
55
|
+
$ python -m pip install truststore
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Truststore **requires Python 3.10 or later** and supports the following platforms:
|
|
59
|
+
- macOS 10.8+ via [Security framework](https://developer.apple.com/documentation/security)
|
|
60
|
+
- Windows via [CryptoAPI](https://docs.microsoft.com/en-us/windows/win32/seccrypto/cryptography-functions#certificate-verification-functions)
|
|
61
|
+
- Linux via OpenSSL
|
|
62
|
+
|
|
63
|
+
## User Guide
|
|
64
|
+
|
|
65
|
+
> **Warning**
|
|
66
|
+
> **PLEASE READ:** `inject_into_ssl()` **must not be used by libraries or packages** as it will cause issues on import time when integrated with other libraries.
|
|
67
|
+
> Libraries and packages should instead use `truststore.SSLContext` directly which is detailed below.
|
|
68
|
+
>
|
|
69
|
+
> The `inject_into_ssl()` function is intended only for use in applications and scripts.
|
|
70
|
+
|
|
71
|
+
You can inject `truststore` into the standard library `ssl` module so the functionality is used
|
|
72
|
+
by every library by default. To do so use the `truststore.inject_into_ssl()` function:
|
|
73
|
+
|
|
74
|
+
```python
|
|
75
|
+
import truststore
|
|
76
|
+
truststore.inject_into_ssl()
|
|
77
|
+
|
|
78
|
+
# Automatically works with urllib3, requests, aiohttp, and more:
|
|
79
|
+
import urllib3
|
|
80
|
+
http = urllib3.PoolManager()
|
|
81
|
+
resp = http.request("GET", "https://example.com")
|
|
82
|
+
|
|
83
|
+
import aiohttp
|
|
84
|
+
http = aiohttp.ClientSession()
|
|
85
|
+
resp = await http.request("GET", "https://example.com")
|
|
86
|
+
|
|
87
|
+
import requests
|
|
88
|
+
resp = requests.get("https://example.com")
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
If you'd like finer-grained control or you're developing a library or package you can create your own `truststore.SSLContext` instance
|
|
92
|
+
and use it anywhere you'd use an `ssl.SSLContext`:
|
|
93
|
+
|
|
94
|
+
```python
|
|
95
|
+
import ssl
|
|
96
|
+
import truststore
|
|
97
|
+
|
|
98
|
+
ctx = truststore.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
|
|
99
|
+
|
|
100
|
+
import urllib3
|
|
101
|
+
http = urllib3.PoolManager(ssl_context=ctx)
|
|
102
|
+
resp = http.request("GET", "https://example.com")
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
You can read more in the [user guide in the documentation](https://truststore.readthedocs.io/en/latest/#user-guide).
|
|
106
|
+
|
|
107
|
+
## License
|
|
108
|
+
|
|
109
|
+
MIT
|
|
110
|
+
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
truststore-0.10.5.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2
|
|
2
|
+
truststore-0.10.5.dist-info/METADATA,sha256=H9SW8pCFMhTmMNlvcWPS3ZFvhOvmNLWKqCfWhT6PhhA,4515
|
|
3
|
+
truststore-0.10.5.dist-info/RECORD,,
|
|
4
|
+
truststore-0.10.5.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
+
truststore-0.10.5.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
|
6
|
+
truststore-0.10.5.dist-info/licenses/LICENSE,sha256=M757fo-k_Rmxdg4ajtimaL2rhSyRtpLdQUJLy3Jan8o,1086
|
|
7
|
+
truststore/__init__.py,sha256=pbihzIROul2l51JSJaFbrxLhRB_9u3Ol_ScM_w4WE64,1307
|
|
8
|
+
truststore/_api.py,sha256=L9h9Pz1-C2LfUHX-slr_TUGHiHrO11FXezhW6dFGa-o,13160
|
|
9
|
+
truststore/_macos.py,sha256=nZlLkOmszUE0g6ryRwBVGY5COzPyudcsiJtDWarM5LQ,20503
|
|
10
|
+
truststore/_openssl.py,sha256=r42qoqmCdS6kQsG9eNWBedYxgQhzs7_DW-nehrrOlAM,2370
|
|
11
|
+
truststore/_ssl_constants.py,sha256=LaCaVgQG4PNdNSh6Yfg4GxUM4BMa_PisxCAR4IFgYMU,1106
|
|
12
|
+
truststore/_windows.py,sha256=jWeQJoSJKq9hMxk_XUf6RpFViXcDcd9Guip6iMx9GCw,18035
|
|
13
|
+
truststore/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
File without changes
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2022 Seth Michael Larson
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
package/binary/brewdoc
CHANGED
|
Binary file
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2022 Seth Michael Larson
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[
|
|
2
2
|
{
|
|
3
|
-
"path": "licenses/installed/brewdoc/brewdoc-0.
|
|
3
|
+
"path": "licenses/installed/brewdoc/brewdoc-0.7.1.dist-info/licenses/LICENSE",
|
|
4
4
|
"bytes": 1073,
|
|
5
5
|
"sha256": "0cd52b46f781dcd5dcc96c54afc72c007626beb3a60331430c02afde25cd60a9"
|
|
6
6
|
},
|
|
@@ -188,5 +188,10 @@
|
|
|
188
188
|
"path": "licenses/installed/selectolax/selectolax-0.4.13.dist-info/licenses/LICENSE",
|
|
189
189
|
"bytes": 1077,
|
|
190
190
|
"sha256": "d8c42c1875be7c97fdd54e7b5a36ad171e9bf9aedb7f2231ba1b34c15070921f"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"path": "licenses/installed/truststore/truststore-0.10.5.dist-info/licenses/LICENSE",
|
|
194
|
+
"bytes": 1086,
|
|
195
|
+
"sha256": "33be7b7e8fa4fd19b1760e1a8ed8a668bdab852c91b692dd41424bcb725a9fca"
|
|
191
196
|
}
|
|
192
197
|
]
|
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": 32984973,
|
|
4
|
+
"filename": "brewdoc-0.7.1-macos-arm64.tar.gz",
|
|
5
|
+
"sha256": "20b46150ff8ffabc51e4bfd1faa7a1124525581b6d7c1a8c50b7ddaa145a7e57"
|
|
6
6
|
},
|
|
7
7
|
"executable": "brewdoc/brewdoc",
|
|
8
8
|
"inventory": {
|
|
@@ -188,73 +188,73 @@
|
|
|
188
188
|
"bytes": 1333490,
|
|
189
189
|
"kind": "file",
|
|
190
190
|
"mode": 420,
|
|
191
|
-
"sha256": "
|
|
191
|
+
"sha256": "636b9541cd2fa43384417b55ff6728dd1fad1db70c006391f8b66e872de2784f"
|
|
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.7.1.dist-info": {
|
|
198
198
|
"kind": "directory",
|
|
199
199
|
"mode": 493
|
|
200
200
|
},
|
|
201
|
-
"brewdoc/_internal/brewdoc-0.
|
|
201
|
+
"brewdoc/_internal/brewdoc-0.7.1.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.7.1.dist-info/METADATA": {
|
|
208
|
+
"bytes": 16454,
|
|
209
209
|
"kind": "file",
|
|
210
210
|
"mode": 420,
|
|
211
|
-
"sha256": "
|
|
211
|
+
"sha256": "47232cd6433896abddb471f6dde00d1dc393315af0cc45bdf4f579e74b675e7c"
|
|
212
212
|
},
|
|
213
|
-
"brewdoc/_internal/brewdoc-0.
|
|
213
|
+
"brewdoc/_internal/brewdoc-0.7.1.dist-info/RECORD": {
|
|
214
214
|
"bytes": 2604,
|
|
215
215
|
"kind": "file",
|
|
216
216
|
"mode": 420,
|
|
217
|
-
"sha256": "
|
|
217
|
+
"sha256": "ed8b5486048997e165f41d5d2582515c6f4d760940ce04f1d69776ca534e7784"
|
|
218
218
|
},
|
|
219
|
-
"brewdoc/_internal/brewdoc-0.
|
|
219
|
+
"brewdoc/_internal/brewdoc-0.7.1.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.7.1.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.7.1.dist-info/direct_url.json": {
|
|
232
232
|
"bytes": 103,
|
|
233
233
|
"kind": "file",
|
|
234
234
|
"mode": 420,
|
|
235
|
-
"sha256": "
|
|
235
|
+
"sha256": "114089409c5885dedad206cba9045f4cf2f9a1158a5d78d7cc0b3861538ce488"
|
|
236
236
|
},
|
|
237
|
-
"brewdoc/_internal/brewdoc-0.
|
|
237
|
+
"brewdoc/_internal/brewdoc-0.7.1.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.7.1.dist-info/licenses": {
|
|
244
244
|
"kind": "directory",
|
|
245
245
|
"mode": 493
|
|
246
246
|
},
|
|
247
|
-
"brewdoc/_internal/brewdoc-0.
|
|
247
|
+
"brewdoc/_internal/brewdoc-0.7.1.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.
|
|
254
|
-
"bytes":
|
|
253
|
+
"brewdoc/_internal/brewdoc-0.7.1.dist-info/uv_cache.json": {
|
|
254
|
+
"bytes": 126,
|
|
255
255
|
"kind": "file",
|
|
256
256
|
"mode": 420,
|
|
257
|
-
"sha256": "
|
|
257
|
+
"sha256": "4230860ad9451522f1a70fd554564fba625ee375350c593c788346a4c0a3dcfa"
|
|
258
258
|
},
|
|
259
259
|
"brewdoc/_internal/brewdoc/_urljs": {
|
|
260
260
|
"kind": "directory",
|
|
@@ -2210,11 +2210,55 @@
|
|
|
2210
2210
|
"mode": 420,
|
|
2211
2211
|
"sha256": "fe0f992e9acf81baafec12ecf9611ef0885b0ddfd04dc7e2af3fcd132475630c"
|
|
2212
2212
|
},
|
|
2213
|
+
"brewdoc/_internal/truststore-0.10.5.dist-info": {
|
|
2214
|
+
"kind": "directory",
|
|
2215
|
+
"mode": 493
|
|
2216
|
+
},
|
|
2217
|
+
"brewdoc/_internal/truststore-0.10.5.dist-info/INSTALLER": {
|
|
2218
|
+
"bytes": 2,
|
|
2219
|
+
"kind": "file",
|
|
2220
|
+
"mode": 420,
|
|
2221
|
+
"sha256": "e6184ce10e266134fdcfa401e8f1a95005bcd4f18d16b62b757323e2833fe9a9"
|
|
2222
|
+
},
|
|
2223
|
+
"brewdoc/_internal/truststore-0.10.5.dist-info/METADATA": {
|
|
2224
|
+
"bytes": 4515,
|
|
2225
|
+
"kind": "file",
|
|
2226
|
+
"mode": 420,
|
|
2227
|
+
"sha256": "1fd496f290853214e630d96f7163d2dd916f84ebe634b58aa827d6853e8f8610"
|
|
2228
|
+
},
|
|
2229
|
+
"brewdoc/_internal/truststore-0.10.5.dist-info/RECORD": {
|
|
2230
|
+
"bytes": 1051,
|
|
2231
|
+
"kind": "file",
|
|
2232
|
+
"mode": 420,
|
|
2233
|
+
"sha256": "df0d4a94db9cbfa77b6659d958093e75f9b139d3eec5c73f55b91541e5de0a5f"
|
|
2234
|
+
},
|
|
2235
|
+
"brewdoc/_internal/truststore-0.10.5.dist-info/REQUESTED": {
|
|
2236
|
+
"bytes": 0,
|
|
2237
|
+
"kind": "file",
|
|
2238
|
+
"mode": 420,
|
|
2239
|
+
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
|
2240
|
+
},
|
|
2241
|
+
"brewdoc/_internal/truststore-0.10.5.dist-info/WHEEL": {
|
|
2242
|
+
"bytes": 82,
|
|
2243
|
+
"kind": "file",
|
|
2244
|
+
"mode": 420,
|
|
2245
|
+
"sha256": "1b68144734c4b66791f27add5d425f3620775585718a03d0f9b110ba3a4d88db"
|
|
2246
|
+
},
|
|
2247
|
+
"brewdoc/_internal/truststore-0.10.5.dist-info/licenses": {
|
|
2248
|
+
"kind": "directory",
|
|
2249
|
+
"mode": 493
|
|
2250
|
+
},
|
|
2251
|
+
"brewdoc/_internal/truststore-0.10.5.dist-info/licenses/LICENSE": {
|
|
2252
|
+
"bytes": 1086,
|
|
2253
|
+
"kind": "file",
|
|
2254
|
+
"mode": 420,
|
|
2255
|
+
"sha256": "33be7b7e8fa4fd19b1760e1a8ed8a668bdab852c91b692dd41424bcb725a9fca"
|
|
2256
|
+
},
|
|
2213
2257
|
"brewdoc/brewdoc": {
|
|
2214
|
-
"bytes":
|
|
2258
|
+
"bytes": 4064256,
|
|
2215
2259
|
"kind": "file",
|
|
2216
2260
|
"mode": 493,
|
|
2217
|
-
"sha256": "
|
|
2261
|
+
"sha256": "54fc142ac2a2ef97a8e19b043c34f2b586266648f44b1f6b0598c2262b371210"
|
|
2218
2262
|
},
|
|
2219
2263
|
"brewdoc/licenses": {
|
|
2220
2264
|
"kind": "directory",
|
|
@@ -2225,10 +2269,10 @@
|
|
|
2225
2269
|
"mode": 493
|
|
2226
2270
|
},
|
|
2227
2271
|
"brewdoc/licenses/installed-manifest.json": {
|
|
2228
|
-
"bytes":
|
|
2272
|
+
"bytes": 8305,
|
|
2229
2273
|
"kind": "file",
|
|
2230
2274
|
"mode": 420,
|
|
2231
|
-
"sha256": "
|
|
2275
|
+
"sha256": "053c4b723539c3188dff9904e37926be18bb32aa4b60e186a042dce47652ce41"
|
|
2232
2276
|
},
|
|
2233
2277
|
"brewdoc/licenses/installed/brewdoc": {
|
|
2234
2278
|
"kind": "directory",
|
|
@@ -2238,15 +2282,15 @@
|
|
|
2238
2282
|
"kind": "directory",
|
|
2239
2283
|
"mode": 493
|
|
2240
2284
|
},
|
|
2241
|
-
"brewdoc/licenses/installed/brewdoc/brewdoc-0.
|
|
2285
|
+
"brewdoc/licenses/installed/brewdoc/brewdoc-0.7.1.dist-info": {
|
|
2242
2286
|
"kind": "directory",
|
|
2243
2287
|
"mode": 493
|
|
2244
2288
|
},
|
|
2245
|
-
"brewdoc/licenses/installed/brewdoc/brewdoc-0.
|
|
2289
|
+
"brewdoc/licenses/installed/brewdoc/brewdoc-0.7.1.dist-info/licenses": {
|
|
2246
2290
|
"kind": "directory",
|
|
2247
2291
|
"mode": 493
|
|
2248
2292
|
},
|
|
2249
|
-
"brewdoc/licenses/installed/brewdoc/brewdoc-0.
|
|
2293
|
+
"brewdoc/licenses/installed/brewdoc/brewdoc-0.7.1.dist-info/licenses/LICENSE": {
|
|
2250
2294
|
"bytes": 1073,
|
|
2251
2295
|
"kind": "file",
|
|
2252
2296
|
"mode": 420,
|
|
@@ -2634,6 +2678,24 @@
|
|
|
2634
2678
|
"mode": 420,
|
|
2635
2679
|
"sha256": "d8c42c1875be7c97fdd54e7b5a36ad171e9bf9aedb7f2231ba1b34c15070921f"
|
|
2636
2680
|
},
|
|
2681
|
+
"brewdoc/licenses/installed/truststore": {
|
|
2682
|
+
"kind": "directory",
|
|
2683
|
+
"mode": 493
|
|
2684
|
+
},
|
|
2685
|
+
"brewdoc/licenses/installed/truststore/truststore-0.10.5.dist-info": {
|
|
2686
|
+
"kind": "directory",
|
|
2687
|
+
"mode": 493
|
|
2688
|
+
},
|
|
2689
|
+
"brewdoc/licenses/installed/truststore/truststore-0.10.5.dist-info/licenses": {
|
|
2690
|
+
"kind": "directory",
|
|
2691
|
+
"mode": 493
|
|
2692
|
+
},
|
|
2693
|
+
"brewdoc/licenses/installed/truststore/truststore-0.10.5.dist-info/licenses/LICENSE": {
|
|
2694
|
+
"bytes": 1086,
|
|
2695
|
+
"kind": "file",
|
|
2696
|
+
"mode": 420,
|
|
2697
|
+
"sha256": "33be7b7e8fa4fd19b1760e1a8ed8a668bdab852c91b692dd41424bcb725a9fca"
|
|
2698
|
+
},
|
|
2637
2699
|
"brewdoc/licenses/supplemental": {
|
|
2638
2700
|
"kind": "directory",
|
|
2639
2701
|
"mode": 493
|
|
@@ -4116,10 +4178,10 @@
|
|
|
4116
4178
|
"bytes": 135,
|
|
4117
4179
|
"kind": "file",
|
|
4118
4180
|
"mode": 420,
|
|
4119
|
-
"sha256": "
|
|
4181
|
+
"sha256": "fed7ca115aca19fd1954be93cfafb3edc143cbab3cb225abd119f70ed72e6621"
|
|
4120
4182
|
}
|
|
4121
4183
|
},
|
|
4122
|
-
"lock_sha256": "
|
|
4184
|
+
"lock_sha256": "b4f8690a4e740510d30b044ec4c2727a09e1c576bca0057ec895676c0453cd18",
|
|
4123
4185
|
"minimum_tested": "macOS 15 on Apple Silicon",
|
|
4124
4186
|
"oracle": [],
|
|
4125
4187
|
"probes": [
|
|
@@ -4175,13 +4237,13 @@
|
|
|
4175
4237
|
"artifact": {
|
|
4176
4238
|
"bytes": 664,
|
|
4177
4239
|
"key": "formula/sheet/000002",
|
|
4178
|
-
"sha256": "
|
|
4240
|
+
"sha256": "cfb3c6482690790cbb843ca80ef86f11ad1e363ea4c8dbe418db93778958b1eb"
|
|
4179
4241
|
},
|
|
4180
|
-
"bytes_base64": "
|
|
4242
|
+
"bytes_base64": "UEsDBBQAAAAAAAaeU13ZAU4y4wIAAOMCAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbDw/eG1sIHZlcnNpb249IjEuMCI/PjxUeXBlcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9jb250ZW50LXR5cGVzIj48RGVmYXVsdCBFeHRlbnNpb249InJlbHMiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5yZWxhdGlvbnNoaXBzK3htbCIvPjxPdmVycmlkZSBQYXJ0TmFtZT0iL3hsL3dvcmtib29rLnhtbCIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Lm1haW4reG1sIi8+PE92ZXJyaWRlIFBhcnROYW1lPSIveGwvd29ya3NoZWV0cy9zaGVldDEueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwud29ya3NoZWV0K3htbCIvPjxPdmVycmlkZSBQYXJ0TmFtZT0iL3hsL3dvcmtzaGVldHMvc2hlZXQyLnhtbCIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLndvcmtzaGVldCt4bWwiLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC93b3Jrc2hlZXRzL3NoZWV0My54bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sIi8+PC9UeXBlcz5QSwMEFAAAAAAABp5TXUuDozoFAQAABQEAAAsAAABfcmVscy8ucmVsczw/eG1sIHZlcnNpb249IjEuMCI/PjxSZWxhdGlvbnNoaXBzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDEiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnQiIFRhcmdldD0ieGwvd29ya2Jvb2sueG1sIi8+PC9SZWxhdGlvbnNoaXBzPlBLAwQUAAAAAAAGnlNdImE/o1IBAABSAQAADwAAAHhsL3dvcmtib29rLnhtbDw/eG1sIHZlcnNpb249IjEuMCI/Pjx3b3JrYm9vayB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIiB4bWxuczpyPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIj48c2hlZXRzPjxzaGVldCBuYW1lPSJJbnB1dHMiIHNoZWV0SWQ9IjEiIHI6aWQ9InJJZDEiLz48c2hlZXQgbmFtZT0iQ2FsYyIgc2hlZXRJZD0iMiIgcjppZD0icklkMiIvPjxzaGVldCBuYW1lPSJFbXB0eSIgc2hlZXRJZD0iMyIgcjppZD0icklkMyIvPjwvc2hlZXRzPjwvd29ya2Jvb2s+UEsDBBQAAAAAAAaeU13JpmJ5IAIAACACAAAaAAAAeGwvX3JlbHMvd29ya2Jvb2sueG1sLnJlbHM8P3htbCB2ZXJzaW9uPSIxLjAiPz48UmVsYXRpb25zaGlwcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzIj48UmVsYXRpb25zaGlwIElkPSJySWQxIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCIgVGFyZ2V0PSJ3b3Jrc2hlZXRzL3NoZWV0MS54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQyIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCIgVGFyZ2V0PSJ3b3Jrc2hlZXRzL3NoZWV0Mi54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQzIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCIgVGFyZ2V0PSJ3b3Jrc2hlZXRzL3NoZWV0My54bWwiLz48L1JlbGF0aW9uc2hpcHM+UEsDBBQAAAAAAAaeU13hQA/x9gAAAPYAAAAYAAAAeGwvd29ya3NoZWV0cy9zaGVldDEueG1sPHdvcmtzaGVldCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIj48c2hlZXREYXRhPjxyb3cgcj0iMSI+PGMgcj0iQTEiPjx2PjE8L3Y+PC9jPjwvcm93Pjxyb3cgcj0iMiI+PGMgcj0iQTIiPjx2PjI8L3Y+PC9jPjwvcm93Pjxyb3cgcj0iMyI+PGMgcj0iQTMiPjxmPlNVTShBMTpBMik8L2Y+PHY+Mzwvdj48L2M+PC9yb3c+PC9zaGVldERhdGE+PC93b3Jrc2hlZXQ+UEsDBBQAAAAAAAaeU13R4blYmQEAAJkBAAAYAAAAeGwvd29ya3NoZWV0cy9zaGVldDIueG1sPHdvcmtzaGVldCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIj48c2hlZXREYXRhPjxyb3cgcj0iMSI+PGMgcj0iQTEiPjxmPlNVTShJbnB1dHMhQTE6QTIpPC9mPjx2PjM8L3Y+PC9jPjxjIHI9IkIxIj48ZiB0PSJzaGFyZWQiIHJlZj0iQjE6QjIiIHNpPSI3Ij5JbnB1dHMhQTEqMjwvZj48dj4yPC92PjwvYz48L3Jvdz48cm93IHI9IjIiPjxjIHI9IkIyIj48ZiBzaT0iNyIgdD0ic2hhcmVkIi8+PHY+NDwvdj48L2M+PC9yb3c+PHJvdyByPSIzIj48YyByPSJDMyI+PGYgYng9IjAiIGFjYT0iMSI+SUYoQTEmbHQ7NCwmcXVvdDtjYWbDqSZxdW90OywmcXVvdDsmcXVvdDspPC9mPjx2PjE8L3Y+PC9jPjwvcm93Pjwvc2hlZXREYXRhPjwvd29ya3NoZWV0PlBLAwQUAAAAAAAGnlNdCntq/2UAAABlAAAAGAAAAHhsL3dvcmtzaGVldHMvc2hlZXQzLnhtbDx3b3Jrc2hlZXQgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiI+PHNoZWV0RGF0YS8+PC93b3Jrc2hlZXQ+UEsBAhQDFAAAAAAABp5TXdkBTjLjAgAA4wIAABMAAAAAAAAAAAAAAIABAAAAAFtDb250ZW50X1R5cGVzXS54bWxQSwECFAMUAAAAAAAGnlNdS4OjOgUBAAAFAQAACwAAAAAAAAAAAAAAgAEUAwAAX3JlbHMvLnJlbHNQSwECFAMUAAAAAAAGnlNdImE/o1IBAABSAQAADwAAAAAAAAAAAAAAgAFCBAAAeGwvd29ya2Jvb2sueG1sUEsBAhQDFAAAAAAABp5TXcmmYnkgAgAAIAIAABoAAAAAAAAAAAAAAIABwQUAAHhsL19yZWxzL3dvcmtib29rLnhtbC5yZWxzUEsBAhQDFAAAAAAABp5TXeFAD/H2AAAA9gAAABgAAAAAAAAAAAAAAIABGQgAAHhsL3dvcmtzaGVldHMvc2hlZXQxLnhtbFBLAQIUAxQAAAAAAAaeU13R4blYmQEAAJkBAAAYAAAAAAAAAAAAAACAAUUJAAB4bC93b3Jrc2hlZXRzL3NoZWV0Mi54bWxQSwECFAMUAAAAAAAGnlNdCntq/2UAAABlAAAAGAAAAAAAAAAAAAAAgAEUCwAAeGwvd29ya3NoZWV0cy9zaGVldDMueG1sUEsFBgAAAAAHAAcA0QEAAK8LAAAAAA==",
|
|
4181
4243
|
"code": 0,
|
|
4182
4244
|
"markdown_bytes": 2282,
|
|
4183
4245
|
"markdown_encoding": "utf-8",
|
|
4184
|
-
"markdown_sha256": "
|
|
4246
|
+
"markdown_sha256": "40c6ac0bc4131079722c875e7850a87dfe76fa2d86d3bb7622cdbe3ec9a00d38",
|
|
4185
4247
|
"path": "formulas.xlsx",
|
|
4186
4248
|
"probe": "formula",
|
|
4187
4249
|
"receipt": {
|
|
@@ -4245,7 +4307,7 @@
|
|
|
4245
4307
|
"unit_kind": "sheet",
|
|
4246
4308
|
"units": 3
|
|
4247
4309
|
},
|
|
4248
|
-
"source_sha256": "
|
|
4310
|
+
"source_sha256": "3e9fa69a62e4bccad6158443fec7e4d79d22156d5fca4f5f9413aad4eb14016e"
|
|
4249
4311
|
}
|
|
4250
4312
|
],
|
|
4251
4313
|
"python": "3.12.14",
|
|
@@ -4309,6 +4371,10 @@
|
|
|
4309
4371
|
"name": "python-calamine",
|
|
4310
4372
|
"version": "0.8.2"
|
|
4311
4373
|
},
|
|
4374
|
+
{
|
|
4375
|
+
"name": "brewdoc",
|
|
4376
|
+
"version": "0.7.1"
|
|
4377
|
+
},
|
|
4312
4378
|
{
|
|
4313
4379
|
"name": "pdfminer.six",
|
|
4314
4380
|
"version": "20260107"
|
|
@@ -4325,6 +4391,10 @@
|
|
|
4325
4391
|
"name": "pycparser",
|
|
4326
4392
|
"version": "3.0"
|
|
4327
4393
|
},
|
|
4394
|
+
{
|
|
4395
|
+
"name": "truststore",
|
|
4396
|
+
"version": "0.10.5"
|
|
4397
|
+
},
|
|
4328
4398
|
{
|
|
4329
4399
|
"name": "cffi",
|
|
4330
4400
|
"version": "2.1.1"
|
|
@@ -4333,10 +4403,6 @@
|
|
|
4333
4403
|
"name": "pdfplumber",
|
|
4334
4404
|
"version": "0.11.10"
|
|
4335
4405
|
},
|
|
4336
|
-
{
|
|
4337
|
-
"name": "brewdoc",
|
|
4338
|
-
"version": "0.6.0"
|
|
4339
|
-
},
|
|
4340
4406
|
{
|
|
4341
4407
|
"name": "pypdfium2",
|
|
4342
4408
|
"version": "5.13.0"
|
|
@@ -4358,9 +4424,9 @@
|
|
|
4358
4424
|
"macos": "Ad hoc build signature; no Developer ID signing or notarization",
|
|
4359
4425
|
"windows": "Unsigned; publisher signing has not been configured"
|
|
4360
4426
|
},
|
|
4361
|
-
"source_sha": "
|
|
4427
|
+
"source_sha": "59fefc96dcfb105cea394877849b0dd91e42804a",
|
|
4362
4428
|
"target": "macos-arm64",
|
|
4363
4429
|
"verification_scope": "smoke",
|
|
4364
|
-
"version": "0.
|
|
4365
|
-
"wheel_sha256": "
|
|
4430
|
+
"version": "0.7.1",
|
|
4431
|
+
"wheel_sha256": "79f7dea14f5101efb707b10d5be2263aaefbd134d7dee81d02fd131bfc0ca933"
|
|
4366
4432
|
}
|
package/native-verification.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"archive_sha256": "
|
|
2
|
+
"archive_sha256": "20b46150ff8ffabc51e4bfd1faa7a1124525581b6d7c1a8c50b7ddaa145a7e57",
|
|
3
3
|
"children": {
|
|
4
4
|
"dns": [
|
|
5
5
|
"::1",
|
|
@@ -57,6 +57,9 @@
|
|
|
57
57
|
"https": {
|
|
58
58
|
"acquisition": {
|
|
59
59
|
"capture_status": "static",
|
|
60
|
+
"challenge": null,
|
|
61
|
+
"charset": "UTF-8",
|
|
62
|
+
"charset_source": "header",
|
|
60
63
|
"counts": {
|
|
61
64
|
"promise_jobs": 0,
|
|
62
65
|
"requests": 1,
|
|
@@ -67,6 +70,7 @@
|
|
|
67
70
|
"error_count": 0,
|
|
68
71
|
"errors": [],
|
|
69
72
|
"final_url": "https://example.org/",
|
|
73
|
+
"http_status": 200,
|
|
70
74
|
"mode": "static",
|
|
71
75
|
"pending": {
|
|
72
76
|
"jobs": null,
|
|
@@ -75,7 +79,9 @@
|
|
|
75
79
|
"requests": null,
|
|
76
80
|
"timers": null
|
|
77
81
|
},
|
|
82
|
+
"redirect_count": 0,
|
|
78
83
|
"refusal_stage": null,
|
|
84
|
+
"render_js": null,
|
|
79
85
|
"requested_url": "https://example.org/",
|
|
80
86
|
"response": {
|
|
81
87
|
"body_bytes": 577,
|
|
@@ -143,6 +149,9 @@
|
|
|
143
149
|
"invalid_tls": {
|
|
144
150
|
"acquisition": {
|
|
145
151
|
"capture_status": "refused",
|
|
152
|
+
"challenge": null,
|
|
153
|
+
"charset": null,
|
|
154
|
+
"charset_source": null,
|
|
146
155
|
"counts": {
|
|
147
156
|
"promise_jobs": 0,
|
|
148
157
|
"requests": 1,
|
|
@@ -158,6 +167,7 @@
|
|
|
158
167
|
}
|
|
159
168
|
],
|
|
160
169
|
"final_url": null,
|
|
170
|
+
"http_status": null,
|
|
161
171
|
"mode": "static",
|
|
162
172
|
"pending": {
|
|
163
173
|
"jobs": null,
|
|
@@ -166,7 +176,9 @@
|
|
|
166
176
|
"requests": null,
|
|
167
177
|
"timers": null
|
|
168
178
|
},
|
|
179
|
+
"redirect_count": 0,
|
|
169
180
|
"refusal_stage": "tls",
|
|
181
|
+
"render_js": null,
|
|
170
182
|
"requested_url": "https://self-signed.badssl.com/",
|
|
171
183
|
"response": {
|
|
172
184
|
"body_bytes": null,
|
|
@@ -229,6 +241,9 @@
|
|
|
229
241
|
"javascript": {
|
|
230
242
|
"acquisition": {
|
|
231
243
|
"capture_status": "partial",
|
|
244
|
+
"challenge": null,
|
|
245
|
+
"charset": "UTF-8",
|
|
246
|
+
"charset_source": "header",
|
|
232
247
|
"counts": {
|
|
233
248
|
"promise_jobs": 0,
|
|
234
249
|
"requests": 2,
|
|
@@ -249,6 +264,7 @@
|
|
|
249
264
|
}
|
|
250
265
|
],
|
|
251
266
|
"final_url": "https://example.org/",
|
|
267
|
+
"http_status": 200,
|
|
252
268
|
"mode": "javascript",
|
|
253
269
|
"pending": {
|
|
254
270
|
"jobs": false,
|
|
@@ -257,7 +273,9 @@
|
|
|
257
273
|
"requests": 0,
|
|
258
274
|
"timers": 0
|
|
259
275
|
},
|
|
276
|
+
"redirect_count": 0,
|
|
260
277
|
"refusal_stage": null,
|
|
278
|
+
"render_js": "always",
|
|
261
279
|
"requested_url": "https://example.org/",
|
|
262
280
|
"response": {
|
|
263
281
|
"body_bytes": 577,
|
|
@@ -336,9 +354,9 @@
|
|
|
336
354
|
],
|
|
337
355
|
"schema": 1,
|
|
338
356
|
"self_check": 38,
|
|
339
|
-
"source_sha": "
|
|
357
|
+
"source_sha": "59fefc96dcfb105cea394877849b0dd91e42804a",
|
|
340
358
|
"target": "macos-arm64",
|
|
341
359
|
"verdict": "PASS",
|
|
342
360
|
"verification_scope": "smoke",
|
|
343
|
-
"version": "0.
|
|
361
|
+
"version": "0.7.1"
|
|
344
362
|
}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"url":"file:///Users/runner/work/_temp/ci-dist/dist/brewdoc-0.6.0-py3-none-any.whl","archive_info":{}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"timestamp":{"secs_since_epoch":1792356859,"nanos_since_epoch":581216600},"commit":null,"tags":null,"env":{},"directories":{}}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/binary/_internal/{brewdoc-0.6.0.dist-info → brewdoc-0.7.1.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
/package/binary/_internal/{brewdoc-0.6.0.dist-info → brewdoc-0.7.1.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|