#478 by GitHub stars
landing-ai/ade-cli
Parse documents and extract schema-shaped data with the ADE (Agentic Document Extraction) v2 APIs through the ade CLI. A local job-item store makes every run idempotent, resumable, and citable — repeat runs are free, interrupted runs resume, and every answer can cite element ids with visual evidence
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
d1995ffef4e6 → d1995ffef4e6
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → d1995ffef4e6
No earlier version was observed for comparison.
Verified commit d1995ffef4e63a2a1c2774d9add93368889353c5
git clone --filter=blob:none --no-checkout https://github.com/landing-ai/ade-cli.git .hotskills/landing-ai-ade-cli && git -C .hotskills/landing-ai-ade-cli checkout --detach d1995ffef4e63a2a1c2774d9add93368889353c5
# Copy each selected skill directory from .hotskills/landing-ai-ade-cli into .claude/skills/<skill-name>/Heat
2.1- Star growth, last 7 daysAhead of 35% of tracked repositories
- Star growth, last 24 hoursAhead of 3% of tracked repositories
- Rank movement, last 7 daysAhead of 36% of tracked repositories
- Commits, last 30 daysAhead of 0% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
- ade
/
How it works
ade
When your agent uses it
Parse documents and extract schema-shaped data with the ADE (Agentic Document Extraction) v2 APIs through the ade CLI. A local job-item store makes every run idempotent, resumable, and citable — repeat runs are free, interrupted runs resume, and every answer can cite element ids with visual evidence.
What it loads into context
Frontmatter
69 tokensAlways available to the agent
SKILL.md
2,345 tokensWhen the skill is activated
Reference documents
31,127 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- First move
- Conventions
- The loop
- Reuse posture — parse bills once
- Pending and resume
- Exit codes
- Reading the store directly
- Sharp edges
Scripts executed separately
packaging/pyinstaller_entry.pyscripts/install.cmdscripts/install.ps1scripts/install.shscripts/update_help_reference.pysrc/ade_cli/__init__.pysrc/ade_cli/__main__.pysrc/ade_cli/attach.pysrc/ade_cli/auth.pysrc/ade_cli/config.pysrc/ade_cli/credentials.pysrc/ade_cli/crop.pysrc/ade_cli/elements.pysrc/ade_cli/evidence.pysrc/ade_cli/extract.pysrc/ade_cli/filelock.pysrc/ade_cli/find.pysrc/ade_cli/gateway.pysrc/ade_cli/guarantee.pysrc/ade_cli/help.pysrc/ade_cli/history.pysrc/ade_cli/historyjs.pysrc/ade_cli/items.pysrc/ade_cli/main.pysrc/ade_cli/oauth.pysrc/ade_cli/output.pysrc/ade_cli/parse.pysrc/ade_cli/ports.pysrc/ade_cli/raster.pysrc/ade_cli/serve.pysrc/ade_cli/shipping.pysrc/ade_cli/store.pysrc/ade_cli/surface.pysrc/ade_cli/telemetry.pysrc/ade_cli/term.pysrc/ade_cli/update.pysrc/ade_cli/useragent.pysrc/ade_cli/view.pytests/conftest.pytests/extract_fixtures.pytests/integration/test_production.pytests/parse_fixtures.pytests/test_auth.pytests/test_auth_oauth.pytests/test_crop.pytests/test_env_targeting.pytests/test_evidence.pytests/test_extract.pytests/test_extract_document.pytests/test_find.pytests/test_help.pytests/test_help_style.pytests/test_history.pytests/test_identity.pytests/test_output.pytests/test_parse.pytests/test_parse_guarantee.pytests/test_progress.pytests/test_release_pipeline.pytests/test_serve.pytests/test_shipping.pytests/test_surface.pytests/test_telemetry.pytests/test_templates.pytests/test_term.pytests/test_update.pytests/test_useragent.pytests/test_version.pytests/test_view.pytests/test_windows_hardening.py
Files
.claude/skills/verify/SKILL.mddoc1,543 bytes.gitattributesasset120 bytes.github/workflows/ci.ymlasset801 bytes.github/workflows/integration.ymlasset2,647 bytes.github/workflows/notify-docs.ymlasset1,113 bytes.github/workflows/release.ymlasset9,277 bytes.gitignoreasset88 bytesCLAUDE.mddoc752 bytesCONTEXT.mddoc8,502 bytesCONTRIBUTING.mddoc3,813 bytesLICENSEasset11,357 bytesREADME.mddoc5,483 bytesSKILL.mdcore9,497 bytesSKILL.mdcore9,497 bytesdocs/ade-cli-v2-proposal.mddoc57,616 bytesdocs/adr/0001-auth-login-selects-logout-per-env.mddoc2,867 bytesdocs/adr/0002-login-method-menu.mddoc4,417 bytesdocs/adr/0003-per-invocation-environment.mddoc4,593 bytesdocs/adr/0004-oauth-dark-at-launch.mddoc2,207 bytesdocs/adr/0005-two-doors-serve-and-file.mddoc3,899 bytesdocs/adr/0006-usage-ledger-ships-after-every-command.mddoc3,440 bytesdocs/adr/0007-login-verifies-the-api-key.mddoc3,609 bytesdocs/adr/0008-oauth-login-goes-public.mddoc1,984 bytesdocs/adr/0009-org-selection-rides-x-org-id.mddoc3,095 bytesdocs/agents/domain.mddoc1,635 bytesdocs/agents/issue-tracker.mddoc3,745 bytesdocs/agents/triage-labels.mddoc1,045 bytesdocs/agents/writing-style.mddoc1,765 bytesdocs/reference/help.jsonasset56,393 bytesdocs/telemetry.mddoc9,011 bytesdocs/user-agent.mddoc3,522 bytesopenapi.jsonasset151,410 bytespackaging/pyinstaller_entry.pyruns228 bytespyproject.tomlasset888 bytesscripts/install.cmdruns1,023 bytesscripts/install.ps1runs6,331 bytesscripts/install.shruns8,471 bytesscripts/update_help_reference.pyruns1,336 bytessrc/ade_cli/__init__.pyruns0 bytessrc/ade_cli/__main__.pyruns230 bytessrc/ade_cli/attach.pyruns10,412 bytessrc/ade_cli/auth.pyruns43,811 bytessrc/ade_cli/auth_callback.htmlasset13,396 bytessrc/ade_cli/config.pyruns4,478 bytessrc/ade_cli/credentials.pyruns8,743 bytessrc/ade_cli/crop.pyruns17,445 bytessrc/ade_cli/crop_template.htmlasset39,498 bytessrc/ade_cli/elements.pyruns4,234 bytessrc/ade_cli/evidence.pyruns6,684 bytessrc/ade_cli/extract.pyruns38,405 bytessrc/ade_cli/filelock.pyruns5,473 bytessrc/ade_cli/find.pyruns7,783 bytessrc/ade_cli/gateway.pyruns11,652 bytessrc/ade_cli/guarantee.pyruns36,179 bytessrc/ade_cli/help.pyruns35,357 bytessrc/ade_cli/history.pyruns21,923 bytessrc/ade_cli/historyjs.pyruns9,527 bytessrc/ade_cli/items.pyruns15,899 bytessrc/ade_cli/main.pyruns6,967 bytessrc/ade_cli/oauth.pyruns25,012 bytessrc/ade_cli/output.pyruns6,334 bytessrc/ade_cli/parse.pyruns22,577 bytessrc/ade_cli/ports.pyruns2,387 bytessrc/ade_cli/raster.pyruns8,691 bytessrc/ade_cli/serve.pyruns12,451 bytessrc/ade_cli/shipping.pyruns13,863 bytessrc/ade_cli/store.pyruns9,235 bytessrc/ade_cli/surface.pyruns5,819 bytessrc/ade_cli/telemetry.pyruns13,378 bytessrc/ade_cli/term.pyruns4,209 bytessrc/ade_cli/update.pyruns26,652 bytessrc/ade_cli/useragent.pyruns1,925 bytessrc/ade_cli/view.pyruns58,711 bytessrc/ade_cli/view_template.htmlasset139,884 bytestests/conftest.pyruns6,338 bytestests/extract_fixtures.pyruns3,397 bytestests/integration/fixtures/invoice.pdfasset714 bytestests/integration/test_production.pyruns8,758 bytestests/parse_fixtures.pyruns6,500 bytestests/test_auth.pyruns36,822 bytestests/test_auth_oauth.pyruns48,727 bytestests/test_crop.pyruns24,359 bytestests/test_env_targeting.pyruns9,272 bytestests/test_evidence.pyruns12,176 bytestests/test_extract.pyruns39,203 bytestests/test_extract_document.pyruns20,130 bytestests/test_find.pyruns14,692 bytestests/test_help.pyruns12,049 bytestests/test_help_style.pyruns4,979 bytestests/test_history.pyruns33,328 bytestests/test_identity.pyruns4,532 bytestests/test_output.pyruns7,444 bytestests/test_parse.pyruns29,831 bytestests/test_parse_guarantee.pyruns29,158 bytestests/test_progress.pyruns8,862 bytestests/test_release_pipeline.pyruns8,757 bytestests/test_serve.pyruns11,663 bytestests/test_shipping.pyruns17,280 bytestests/test_surface.pyruns4,368 bytestests/test_telemetry.pyruns9,051 bytestests/test_templates.pyruns1,094 bytestests/test_term.pyruns2,831 bytestests/test_update.pyruns16,121 bytestests/test_useragent.pyruns7,200 bytestests/test_version.pyruns641 bytestests/test_view.pyruns51,614 bytestests/test_windows_hardening.pyruns19,760 bytesuv.lockasset50,760 bytes
Read SKILL.md
# ade — agent skill
ade drives the ADE (Agentic Document Extraction) v2 document APIs
(parse, extract) and persists
everything it produces in a local store under `~/.ade`. You are the
judgment; the CLI is deterministic plumbing: it parses, persists,
searches, renders, and totals — it never ranks or selects for you.
## First move
```
ade help --json
```
View the complete source on GitHubSkills included
- ade
Repository facts
- License
- Apache-2.0
- Created
- Mar 12, 2025
- Last pushed
- Oct 30, 2026
- Forks
- 257
- Open issues
- 7
- Project activity
- Active
Rank over the last 12 weeks
Now #478 · best #334 · down 96 in 30 days
- #468 from Oct 30 to Oct 31
- #469 on Nov 1
- #470 on Nov 2
- #472 on Nov 3
- #475 from Nov 4 to Nov 5
- #478 since Nov 6
27 earlier periods
- #333 on Aug 1
- #327 on Aug 7
- #337 on Aug 11
- #335 on Aug 13
- #336 on Aug 14
- #334 on Aug 15
- #339 on Aug 17
- #344 on Aug 22
- #353 from Aug 27 to Aug 28
- #351 on Aug 29
- #364 on Sep 1
- #359 on Sep 2
- #370 on Sep 8
- #372 on Sep 10
- #367 on Sep 11
- #377 on Sep 14
- #381 on Sep 16
- #372 on Sep 19
- #382 on Oct 4
- #404 on Oct 8
- #419 on Oct 12
- #416 on Oct 13
- #423 on Oct 17
- #439 on Oct 21
- #457 on Oct 25
- #464 on Oct 28
- #466 on Oct 29
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 3, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 7 notes
SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedsrc/ade_cli/auth_callback.html:77Analysis incomplete: physical or joined line exceeds character limitsrc/ade_cli/auth_callback.html:75Analysis incomplete: physical or joined line exceeds character limitsrc/ade_cli/auth_callback.html:76Analysis incomplete: physical or joined line exceeds character limitsrc/ade_cli/crop_template.html:148Analysis incomplete: physical or joined line exceeds character limitsrc/ade_cli/crop_template.html:146Analysis incomplete: physical or joined line exceeds character limitsrc/ade_cli/crop_template.html:147Analysis incomplete: physical or joined line exceeds character limit
- No broad tool permissions
- 10 dangerous shell commandsin 6 files: scripts/install.sh:4 CONTRIBUTING.md:96 README.md:24 and 3 more
- 823 network referencesin 51 files: uv.lock:37 tests/test_auth_oauth.py:150 tests/test_auth.py:150 and 48 more
- 5 obfuscation signalsin 3 files: src/ade_cli/crop_template.html:214 src/ade_cli/view_template.html:849 tests/test_extract.py:762
- No instruction overrides
- 70 executable scriptsin 70 files: packaging/pyinstaller_entry.py:1 scripts/install.cmd:1 scripts/install.ps1:1 and 67 more
- 214 references to secretsin 49 files: tests/test_auth.py:59 src/ade_cli/auth.py:14 src/ade_cli/credentials.py:5 and 46 more
- No requests to vote in Hot
Show all 1,122 signals by file
.claude/skills/verify/SKILL.md
- Network accessline 29
The in-app browser refuses `file://` — serve the doc dir instead: `python3 -m http.server 8742 --bind 127.0.0.1` in `$ADE_HOME/docs/<doc-id>/`, then browse `http://127.0.0.1:8742/view.html`. - Network accessline 30
`python3 -m http.server 8742 --bind 127.0.0.1` in `$ADE_HOME/docs/<doc-id>/`, then browse `http://127.0.0.1:8742/view.html`. Deep links: append `#element=<id>`. Selection state is inspectable via - Network accessline 31
`$ADE_HOME/docs/<doc-id>/`, then browse `http://127.0.0.1:8742/view.html`.
.github/workflows/integration.yml
- Access to secretsline 13
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 51
[Credential-related source omitted] - Access to secretsline 53
[Credential-related source omitted] - Access to secretsline 54
[Credential-related source omitted] - Access to secretsline 70
[Credential-related source omitted]
.github/workflows/release.yml
- Access to secretsline 31
[Credential-related source omitted] - Network accessline 152
server_pid=$! for _ in $(seq 1 40); do curl -fsS http://127.0.0.1:8619/ > /dev/null 2>&1 && break - Network accessline 153
for _ in $(seq 1 40); do curl -fsS http://127.0.0.1:8619/ > /dev/null 2>&1 && break sleep 0.25 - Network accessline 154
curl -fsS http://127.0.0.1:8619/ > /dev/null 2>&1 && break - Network accessline 156
[Credential-related source omitted] - Network accessline 157
[Credential-related source omitted] - Network accessline 158
[Credential-related source omitted] - Access to secretsline 158
[Credential-related source omitted] - Network accessline 175
$server = Start-Process uv -ArgumentList 'run', 'python', '-m', 'http.server', '8619', '--bind', '127.0.0.1' -PassThru -WindowStyle Hidden foreach ($i in 1..40) { try { Invoke-WebRequest -UseBasicParsing http://127.0.0 - Network accessline 176
foreach ($i in 1..40) { try { Invoke-WebRequest -UseBasicParsing http://127.0.0.1:8619/ | Out-Null; break } catch { Start-Sleep -Milliseconds 250 } - Network accessline 177
try { Invoke-WebRequest -UseBasicParsing http://127.0.0.1:8619/ | Out-Null; break } - Network accessline 179
} Set-Content -NoNewline -Path "$env:RUNNER_TEMP\smoke.pdf" -Value '%PDF-1.4 smoke' $env:ADE_ENDPOINT = 'http://127.0.0.1:8619' - Network accessline 180
[Credential-related source omitted] - Network accessline 181
$env:ADE_ENDPOINT = 'http://127.0.0.1:8619' - Access to secretsline 182
[Credential-related source omitted]
CONTRIBUTING.md
- Access to secretsline 20
[Credential-related source omitted] - Access to secretsline 25
[Credential-related source omitted] - Network accessline 37
uv tool install git+https://github.com/landing-ai/ade-cli.git - Network accessline 40
(`pipx install git+https://…` works too, and - Access to secretsline 82
[Credential-related source omitted] - Dangerous shell operationline 96
the space with `rm -rf ~/.ade/docs`.
LICENSE
README.md
- Network accessline 3
[](https://github.com/landing-ai/ade-cli/releases) - Network accessline 4
[](LICENSE) - Network accessline 12
**[CLI documentation](https://docs.landing.ai/cli/quickstart)** · - Network accessline 13
**[Playground](https://ade.landing.ai)** · - Network accessline 14
**[Get an API key](https://ade.landing.ai/settings/api-key)** - Dangerous shell operationline 24
curl -fsSL https://raw.githubusercontent.com/landing-ai/ade-cli/main/scripts/install.sh | sh - Network accessline 24
curl -fsSL https://raw.githubusercontent.com/landing-ai/ade-cli/main/scripts/install.sh | sh - Network accessline 30
irm https://raw.githubusercontent.com/landing-ai/ade-cli/main/scripts/install.ps1 | iex - Network accessline 36
curl -fsSL https://raw.githubusercontent.com/landing-ai/ade-cli/main/scripts/install.cmd -o install.cmd && install.cmd && del install.cmd - Network accessline 52
The [CLI Quickstart](https://docs.landing.ai/cli/quickstart) walks through the - Network accessline 58
Every command takes `--json` for one stable JSON object on stdout. Run `ade help COMMAND` for its flags and result shape, or see the [CLI Reference](https://docs.landing.ai/cli/reference). - Network accessline 60
[CLI Reference](https://docs.landing.ai/cli/reference). - Network accessline 79
The documentation covers what these tables cannot: how job items work and why re-runs are free ([CLI Concepts](https://docs.landing.ai/cli/concepts)), - Network accessline 80
re-runs are free ([CLI Concepts](https://docs.landing.ai/cli/concepts)), - Network accessline 81
[parsing](https://docs.landing.ai/cli/parse) and - Network accessline 82
[extraction](https://docs.landing.ai/cli/extract) in depth, - Network accessline 83
[searching and cropping evidence](https://docs.landing.ai/cli/find-crop-view), - Network accessline 84
[authentication and organizations](https://docs.landing.ai/cli/authentication), - Network accessline 85
and [scripting the CLI](https://docs.landing.ai/cli/scripting-automation). - Access to secretsline 101
[Credential-related source omitted] - Network accessline 125
This repository was **`agentic-doc`**, the original Agentic Document Extraction SDK. That SDK is preserved unchanged, and no longer developed, on the [`legacy`](https://github.com/landing-ai/ade-cli/tree/legacy) branch. Since - Network accessline 126
SDK. That SDK is preserved unchanged, and no longer developed, on the [`legacy`](https://github.com/landing-ai/ade-cli/tree/legacy) branch. Since 2026-07-31 this repository ships the ADE CLI. - Network accessline 127
[`legacy`](https://github.com/landing-ai/ade-cli/tree/legacy) branch. Since
SKILL.md
docs/ade-cli-v2-proposal.md
- Network accessline 322
**Architecture: one generic template, per-item snapshots, built lazily.** The viewer is a single HTML/JS template maintained in the CLI package — written once, instantiated per job item by stamping in that item's data. `parse`/`extract` nev - Network accessline 349
drop out) and rewrites **`~/.ade/history.js`** — a JSONP-style read model (`window.__ADE_HISTORY__ = {generated_at, items: […]}`; a plain `<script>` include works from `file://` where `fetch()` does not). Each item carries - Network accessline 350
(`window.__ADE_HISTORY__ = {generated_at, items: […]}`; a plain `<script>` include works from `file://` where `fetch()` does not). Each item carries id, kind, state, source name, compact params, parent linkage, viewer - Network accessline 351
include works from `file://` where `fetch()` does not). Each item carries - Dangerous shell operationline 717
`rm -rf ~/.ade/docs` in the changelog) — **confirmed**: no production - Access to secretsline 750
[Credential-related source omitted] - Access to secretsline 805
[Credential-related source omitted]
docs/adr/0001-auth-login-selects-logout-per-env.md
- Network accessline 14
env, so `login --env eu --api-key X` followed by a bare `login --api-key Y` silently overwrote the eu key instead of touching production ([#72](https://github.com/landing-ai/ade-cli/issues/72)). - Network accessline 16
production ([#72](https://github.com/landing-ai/ade-cli/issues/72)). - Access to secretsline 44
[Credential-related source omitted]
docs/adr/0003-per-invocation-environment.md
- Network accessline 10
The sticky active environment — `config.json`'s `environment`/`endpoint`, selected by `login` — was global mutable state deciding where every command went ([#87](https://github.com/landing-ai/ade-cli/issues/87)): - Network accessline 12
command went ([#87](https://github.com/landing-ai/ade-cli/issues/87)):
docs/adr/0004-oauth-dark-at-launch.md
- Access to secretsline 30
[Credential-related source omitted]
docs/adr/0005-two-doors-serve-and-file.md
- Network accessline 6
*including the fragment* (verified against `Preferences` → `per_host_zoom_levels`). Consequences that shaped the viewer ([#61](https://github.com/landing-ai/ade-cli/issues/61), - Network accessline 7
`per_host_zoom_levels`). Consequences that shaped the viewer ([#61](https://github.com/landing-ai/ade-cli/issues/61), [#108](https://github.com/landing-ai/ade-cli/pull/108)): - Network accessline 8
([#61](https://github.com/landing-ai/ade-cli/issues/61), - Network accessline 9
[#108](https://github.com/landing-ai/ade-cli/pull/108)): - Network accessline 21
Over an `http://127.0.0.1` origin none of this exists: zoom is
docs/adr/0006-usage-ledger-ships-after-every-command.md
- Network accessline 7
Loki line per record and returns 200 only after all are logged — the final contract in [#53](https://github.com/landing-ai/ade-cli/issues/53)). - Network accessline 8
final contract in [#53](https://github.com/landing-ai/ade-cli/issues/53)). Three properties are non-negotiable: the flush must never change a - Network accessline 9
[#53](https://github.com/landing-ai/ade-cli/issues/53)). - Access to secretsline 29
[Credential-related source omitted]
docs/adr/0007-login-verifies-the-api-key.md
- Access to secretsline 56
[Credential-related source omitted]
docs/adr/0008-oauth-login-goes-public.md
- Access to secretsline 31
[Credential-related source omitted]
docs/reference/help.json
- Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 61
[Credential-related source omitted] - Access to secretsline 123
[Credential-related source omitted] - Access to secretsline 131
[Credential-related source omitted] - Access to secretsline 352
[Credential-related source omitted] - Network accessline 1160
"required": false, "default": null, "help": "Open via a local server (http://127.0.0.1) instead of file:// \u2014 browser zoom then covers every viewer natively. Starts the server if needed; reuses a running one. It reti - Network accessline 1161
"default": null, "help": "Open via a local server (http://127.0.0.1) instead of file:// \u2014 browser zoom then covers every viewer natively. Starts the server if needed; reuses a running one. It retires itself after 30 idle minu - Network accessline 1162
"help": "Open via a local server (http://127.0.0.1) instead of file:// \u2014 browser zoom then covers every viewer natively. Starts the server if needed; reuses a running one. It retires itself after 30 idle minutes, or immediately with `- - Access to secretsline 1392
[Credential-related source omitted]
docs/telemetry.md
openapi.json
- Network accessline 57
"type": "string", "format": "binary", "description": "The file to parse. The file must be a PDF or image; see the list of [supported file types](https://docs.landing.ai/dpt3/file-types). Provide eithe - Network accessline 58
"format": "binary", "description": "The file to parse. The file must be a PDF or image; see the list of [supported file types](https://docs.landing.ai/dpt3/file-types). Provide either `document` or `document_url`, not bo - Network accessline 59
"description": "The file to parse. The file must be a PDF or image; see the list of [supported file types](https://docs.landing.ai/dpt3/file-types). Provide either `document` or `document_url`, not both." - Network accessline 61
"document_url": { "type": "string", "description": "A publicly accessible URL to the file to parse. The file must be a PDF or image; see the list of [supported file types](https://docs.landing.ai/dpt3 - Network accessline 62
"type": "string", "description": "A publicly accessible URL to the file to parse. The file must be a PDF or image; see the list of [supported file types](https://docs.landing.ai/dpt3/file-types). Provide either `document - Network accessline 63
"description": "A publicly accessible URL to the file to parse. The file must be a PDF or image; see the list of [supported file types](https://docs.landing.ai/dpt3/file-types). Provide either `document` or `document_url`, not both." - Network accessline 193
"type": "string", "format": "binary", "description": "The file to parse. The file must be a PDF or image; see the list of [supported file types](https://docs.landing.ai/dpt3/file-types). Provide eithe - Network accessline 194
"format": "binary", "description": "The file to parse. The file must be a PDF or image; see the list of [supported file types](https://docs.landing.ai/dpt3/file-types). Provide either `document` or `document_url`, not bo - Network accessline 195
"description": "The file to parse. The file must be a PDF or image; see the list of [supported file types](https://docs.landing.ai/dpt3/file-types). Provide either `document` or `document_url`, not both." - Network accessline 197
"document_url": { "type": "string", "description": "A publicly accessible URL to the file to parse. The file must be a PDF or image; see the list of [supported file types](https://docs.landing.ai/dpt3 - Network accessline 198
"type": "string", "description": "A publicly accessible URL to the file to parse. The file must be a PDF or image; see the list of [supported file types](https://docs.landing.ai/dpt3/file-types). Provide either `document - Network accessline 199
"description": "A publicly accessible URL to the file to parse. The file must be a PDF or image; see the list of [supported file types](https://docs.landing.ai/dpt3/file-types). Provide either `document` or `document_url`, not both." - Access to secretsline 2718
[Credential-related source omitted]
packaging/pyinstaller_entry.py
- Executable scriptline 1
Executable file
scripts/install.cmd
- Executable scriptline 1
Executable file - Network accessline 3
rem PowerShell installer (install.ps1), the single Windows install body. rem rem curl -fsSL https://raw.githubusercontent.com/landing-ai/ade-cli/main/scripts/install.cmd -o install.cmd && install.cmd && del install.cmd - Network accessline 4
rem rem curl -fsSL https://raw.githubusercontent.com/landing-ai/ade-cli/main/scripts/install.cmd -o install.cmd && install.cmd && del install.cmd rem - Network accessline 5
rem curl -fsSL https://raw.githubusercontent.com/landing-ai/ade-cli/main/scripts/install.cmd -o install.cmd && install.cmd && del install.cmd - Network accessline 9
rem the repo is private). setlocal set "PS1_URL=https://raw.githubusercontent.com/landing-ai/ade-cli/main/scripts/install.ps1" - Network accessline 11
set "PS1_URL=https://raw.githubusercontent.com/landing-ai/ade-cli/main/scripts/install.ps1" - Access to secretsline 20
[Credential-related source omitted]
scripts/install.ps1
- Network accessline 1
# ade-cli installer for Windows (x86_64 / arm64). # # irm https://raw.githubusercontent.com/landing-ai/ade-cli/main/scripts/install.ps1 | iex - Executable scriptline 1
Executable file - Network accessline 2
# # irm https://raw.githubusercontent.com/landing-ai/ade-cli/main/scripts/install.ps1 | iex # - Network accessline 3
# irm https://raw.githubusercontent.com/landing-ai/ade-cli/main/scripts/install.ps1 | iex - Access to secretsline 23
[Credential-related source omitted] - Network accessline 44
if ($Token) { if (-not $script:ReleaseJson) { $RelUrl = if ($Tag) { "https://api.github.com/repos/$Repo/releases/tags/$Tag" } - Network accessline 45
if (-not $script:ReleaseJson) { $RelUrl = if ($Tag) { "https://api.github.com/repos/$Repo/releases/tags/$Tag" } else { "https://api.github.com/repos/$Repo/releases/latest" } - Network accessline 46
$RelUrl = if ($Tag) { "https://api.github.com/repos/$Repo/releases/tags/$Tag" } - Network accessline 47
else { "https://api.github.com/repos/$Repo/releases/latest" } - Network accessline 50
$Found = $script:ReleaseJson.assets | Where-Object { $_.name -eq $Name } if (-not $Found) { throw "release has no asset $Name" } Invoke-WebRequest -Uri "https://api.github.com/repos/$Repo/releases/assets/$($Found.id) - Network accessline 51
[Credential-related source omitted] - Network accessline 52
Invoke-WebRequest -Uri "https://api.github.com/repos/$Repo/releases/assets/$($Found.id)" ` - Network accessline 54
-OutFile $OutFile } else { $Url = if ($Tag) { "https://github.com/$Repo/releases/download/$Tag/$Name" } - Network accessline 55
} else { $Url = if ($Tag) { "https://github.com/$Repo/releases/download/$Tag/$Name" } else { "https://github.com/$Repo/releases/latest/download/$Name" } - Network accessline 56
$Url = if ($Tag) { "https://github.com/$Repo/releases/download/$Tag/$Name" } - Network accessline 57
else { "https://github.com/$Repo/releases/latest/download/$Name" }
scripts/install.sh
- Executable scriptline 1
#!/bin/sh - Network accessline 2
# ade-cli installer for macOS / Linux. # # curl -fsSL https://raw.githubusercontent.com/landing-ai/ade-cli/main/scripts/install.sh | sh - Network accessline 3
# # curl -fsSL https://raw.githubusercontent.com/landing-ai/ade-cli/main/scripts/install.sh | sh # - Dangerous shell operationline 4
# curl -fsSL https://raw.githubusercontent.com/landing-ai/ade-cli/main/scripts/install.sh | sh - Network accessline 4
# curl -fsSL https://raw.githubusercontent.com/landing-ai/ade-cli/main/scripts/install.sh | sh - Dangerous shell operationline 15
# and the ~/.local/bin/ade symlink. Never `rm -rf ~/.ade` — the rest of - Access to secretsline 22
[Credential-related source omitted] - Network accessline 27
command -v curl >/dev/null 2>&1 || fail "curl is required" - Dangerous shell operationline 50
trap 'rm -rf "$tmp"; if [ -n "$staging" ]; then rm -rf "$staging"; fi' EXIT INT TERM - Network accessline 55
fetch_public() { # $1 asset name, $2 output path if [ -n "$tag" ]; then url="https://github.com/${REPO}/releases/download/${tag}/$1" - Network accessline 56
if [ -n "$tag" ]; then url="https://github.com/${REPO}/releases/download/${tag}/$1" else - Network accessline 57
url="https://github.com/${REPO}/releases/download/${tag}/$1" - Network accessline 58
else url="https://github.com/${REPO}/releases/latest/download/$1" fi - Network accessline 59
url="https://github.com/${REPO}/releases/latest/download/$1" - Network accessline 60
fi curl -fsSL --retry 3 -o "$2" "$url" } - Network accessline 61
curl -fsSL --retry 3 -o "$2" "$url" - Network accessline 68
if [ -z "$release_json" ]; then if [ -n "$tag" ]; then rel_url="https://api.github.com/repos/${REPO}/releases/tags/${tag}" - Network accessline 69
if [ -n "$tag" ]; then rel_url="https://api.github.com/repos/${REPO}/releases/tags/${tag}" else - Network accessline 70
rel_url="https://api.github.com/repos/${REPO}/releases/tags/${tag}" - Network accessline 71
else rel_url="https://api.github.com/repos/${REPO}/releases/latest" fi - Network accessline 72
[Credential-related source omitted] - Network accessline 73
[Credential-related source omitted] - Network accessline 74
[Credential-related source omitted] - Network accessline 91
return 1 fi curl -fsSL --retry 3 -o "$2" \ - Network accessline 92
[Credential-related source omitted] - Network accessline 93
curl -fsSL --retry 3 -o "$2" \ - Network accessline 94
[Credential-related source omitted] - Network accessline 95
-H "Accept: application/octet-stream" \ "https://api.github.com/repos/${REPO}/releases/assets/${asset_id}" } - Network accessline 96
"https://api.github.com/repos/${REPO}/releases/assets/${asset_id}" - Network accessline 99
fetch() { - Dangerous shell operationline 138
rm -rf "$INSTALL_DIR/_internal" "$INSTALL_DIR/ade" "$INSTALL_DIR/ade-cli" - Dangerous shell operationline 170
rm -f "$link"
scripts/update_help_reference.py
- Executable scriptline 1
#!/usr/bin/env python
src/ade_cli/__init__.py
- Executable scriptline 1
Executable file
src/ade_cli/__main__.py
- Executable scriptline 1
Executable file
src/ade_cli/attach.py
src/ade_cli/auth.py
- Executable scriptline 1
Executable file - Access to secretsline 14
[Credential-related source omitted] - Access to secretsline 76
[Credential-related source omitted] - Access to secretsline 97
[Credential-related source omitted] - Access to secretsline 100
[Credential-related source omitted] - Access to secretsline 109
[Credential-related source omitted] - Access to secretsline 113
[Credential-related source omitted] - Access to secretsline 114
[Credential-related source omitted] - Access to secretsline 115
[Credential-related source omitted] - Access to secretsline 158
[Credential-related source omitted] - Access to secretsline 163
[Credential-related source omitted] - Access to secretsline 165
[Credential-related source omitted] - Access to secretsline 170
[Credential-related source omitted] - Access to secretsline 171
[Credential-related source omitted] - Access to secretsline 172
[Credential-related source omitted] - Access to secretsline 173
[Credential-related source omitted] - Access to secretsline 176
[Credential-related source omitted] - Access to secretsline 193
[Credential-related source omitted] - Access to secretsline 204
[Credential-related source omitted] - Access to secretsline 212
[Credential-related source omitted] - Access to secretsline 331
[Credential-related source omitted] - Access to secretsline 335
[Credential-related source omitted] - Access to secretsline 345
[Credential-related source omitted] - Access to secretsline 515
[Credential-related source omitted] - Access to secretsline 593
[Credential-related source omitted] - Access to secretsline 681
[Credential-related source omitted] - Access to secretsline 722
[Credential-related source omitted] - Access to secretsline 763
[Credential-related source omitted] - Access to secretsline 781
[Credential-related source omitted] - Access to secretsline 909
[Credential-related source omitted]
src/ade_cli/auth_callback.html
- Network accessline 25
__HEADLINE__, __DETAIL__ (pre-escaped text). --> <link rel="preconnect" href="https://fonts.googleapis.com"> - Network accessline 26
--> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> - Network accessline 27
<link rel="preconnect" href="https://fonts.googleapis.com"> - Network accessline 28
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> - Network accessline 29
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@1&display=swap"> - Network accessline 74
<body class="__VARIANT__"> <div class="header"> <svg width="19" height="25" viewBox="0 0 15.5251 20.4625" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><g fill="#1A1916"><path d="M0.14726 12.3474C0.0806449 12.3118 - Network accessline 75
<div class="header"> <svg width="19" height="25" viewBox="0 0 15.5251 20.4625" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><g fill="#1A1916"><path d="M0.14726 12.3474C0.0806449 12.3118 9.15527e-05 12.3601 9.15527e- - Network accessline 76
<svg width="19" height="25" viewBox="0 0 15.5251 20.4625" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><g fill="#1A1916"><path d="M0.14726 12.3474C0.0806449 12.3118 9.15527e-05 12.3601 9.15527e-05 12.4356V16.4338C9.1552 - Network accessline 77
<svg width="95" height="20" viewBox="0 0 80.775 16.95" fill="none" xmlns="http://www.w3.org/2000/svg" aria-label="LandingAI"><g fill="#1A1916"><path d="M2.4625 0.3625H0V13.0875H1.8125H2.4625H8.29375V10.9H2.4625V0.3625ZM15.9688 5.16875C15.72 - Network accessline 91
</div> <div class="footer"> <a href="https://landing.ai/va-tos" target="_blank" rel="noopener noreferrer">Terms of Use</a> - Network accessline 92
<div class="footer"> <a href="https://landing.ai/va-tos" target="_blank" rel="noopener noreferrer">Terms of Use</a> <span class="sep">|</span> - Network accessline 93
<a href="https://landing.ai/va-tos" target="_blank" rel="noopener noreferrer">Terms of Use</a> - Network accessline 94
<span class="sep">|</span> <a href="https://landing.ai/privacy-policy" target="_blank" rel="noopener noreferrer">Privacy Policy</a> </div> - Network accessline 95
<a href="https://landing.ai/privacy-policy" target="_blank" rel="noopener noreferrer">Privacy Policy</a>
src/ade_cli/config.py
- Executable scriptline 1
Executable file - Network accessline 23
ENVIRONMENTS = { "dev": "https://api.ade.dev.landing.ai", - Network accessline 24
"dev": "https://api.ade.dev.landing.ai", - Network accessline 25
"staging": "https://api.ade.staging.landing.ai", - Network accessline 26
"production": "https://api.ade.landing.ai", - Network accessline 27
"eu": "https://api.ade.eu-west-1.landing.ai", - Access to secretsline 40
[Credential-related source omitted] - Access to secretsline 111
[Credential-related source omitted] - Access to secretsline 118
[Credential-related source omitted]
src/ade_cli/credentials.py
- Executable scriptline 1
Executable file - Access to secretsline 5
[Credential-related source omitted] - Access to secretsline 6
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 63
[Credential-related source omitted] - Access to secretsline 64
[Credential-related source omitted] - Access to secretsline 77
[Credential-related source omitted] - Access to secretsline 82
[Credential-related source omitted] - Access to secretsline 120
[Credential-related source omitted] - Access to secretsline 147
[Credential-related source omitted] - Access to secretsline 148
[Credential-related source omitted] - Access to secretsline 152
[Credential-related source omitted] - Access to secretsline 166
[Credential-related source omitted] - Access to secretsline 167
[Credential-related source omitted] - Access to secretsline 168
[Credential-related source omitted] - Access to secretsline 172
[Credential-related source omitted] - Access to secretsline 179
[Credential-related source omitted] - Access to secretsline 193
[Credential-related source omitted] - Access to secretsline 208
[Credential-related source omitted] - Access to secretsline 210
[Credential-related source omitted] - Access to secretsline 224
[Credential-related source omitted] - Access to secretsline 227
[Credential-related source omitted]
src/ade_cli/crop.py
- Executable scriptline 1
Executable file
src/ade_cli/crop_template.html
- Network accessline 146
<body> <header> <span class="brand" title="LandingAI"><svg height="20" overflow="visible" viewBox="0 0 15.5251 20.4625" fill="none" xmlns="http://www.w3.org/2000/svg"><g id="Group"><path id="Vector" d="M0.14726 12.3474C0.0806449 12.3118 9 - Network accessline 147
<header> <span class="brand" title="LandingAI"><svg height="20" overflow="visible" viewBox="0 0 15.5251 20.4625" fill="none" xmlns="http://www.w3.org/2000/svg"><g id="Group"><path id="Vector" d="M0.14726 12.3474C0.0806449 12.3118 9.15527e - Network accessline 148
<span class="brand" title="LandingAI"><svg height="20" overflow="visible" viewBox="0 0 15.5251 20.4625" fill="none" xmlns="http://www.w3.org/2000/svg"><g id="Group"><path id="Vector" d="M0.14726 12.3474C0.0806449 12.3118 9.15527e-05 12.3601 - Possible obfuscationline 214
s = s.replace(/^(\d+)([.)]) /gm, "$1$2<U+200B> "); - Possible obfuscationline 216
s = s.replace(/^(\d+\.\d+(\.\d+)*)(\.<U+200B>)?\s+/gm, "**$1** ");
src/ade_cli/elements.py
- Executable scriptline 1
Executable file
src/ade_cli/evidence.py
- Executable scriptline 1
Executable file
src/ade_cli/extract.py
- Executable scriptline 1
Executable file
src/ade_cli/filelock.py
- Executable scriptline 1
Executable file
src/ade_cli/find.py
- Executable scriptline 1
Executable file
src/ade_cli/gateway.py
src/ade_cli/guarantee.py
src/ade_cli/help.py
- Executable scriptline 1
Executable file - Access to secretsline 138
[Credential-related source omitted] - Access to secretsline 316
[Credential-related source omitted] - Access to secretsline 332
[Credential-related source omitted] - Access to secretsline 334
[Credential-related source omitted] - Access to secretsline 488
[Credential-related source omitted]
src/ade_cli/history.py
src/ade_cli/historyjs.py
- Network accessline 1
"""``history.js`` — the store-level JSONP read model the viewer sidebar reads (``window.__ADE_HISTORY__``; a plain ``<script>`` include works from ``file://`` where ``fetch()`` does not). - Executable scriptline 1
Executable file - Network accessline 3
``file://`` where ``fetch()`` does not).
src/ade_cli/items.py
- Executable scriptline 1
Executable file
src/ade_cli/main.py
- Executable scriptline 1
Executable file
src/ade_cli/oauth.py
- Executable scriptline 1
Executable file - Network accessline 51
_ISSUERS = { "dev": "https://login.dev.landing.ai/oidc", - Network accessline 52
"dev": "https://login.dev.landing.ai/oidc", - Network accessline 53
"staging": "https://login.staging.landing.ai/oidc", - Network accessline 54
"production": "https://login.landing.ai/oidc", - Network accessline 55
"eu": "https://login.eu-west-1.landing.ai/oidc", - Network accessline 207
@property def redirect_uri(self) -> str: return f"http://127.0.0.1:{self._server.server_address[1]}/callback" - Network accessline 209
return f"http://127.0.0.1:{self._server.server_address[1]}/callback" - Network accessline 283
transport: httpx.BaseTransport, provider: Provider, data: dict ) -> dict: with httpx.Client(transport=transport, timeout=_TOKEN_TIMEOUT_SECONDS) as client: - Network accessline 284
) -> dict: with httpx.Client(transport=transport, timeout=_TOKEN_TIMEOUT_SECONDS) as client: response = client.post(provider.token_endpoint, data=data) - Network accessline 285
with httpx.Client(transport=transport, timeout=_TOKEN_TIMEOUT_SECONDS) as client: - Access to secretsline 310
[Credential-related source omitted] - Access to secretsline 311
[Credential-related source omitted] - Access to secretsline 312
[Credential-related source omitted] - Access to secretsline 315
[Credential-related source omitted] - Access to secretsline 409
[Credential-related source omitted] - Access to secretsline 412
[Credential-related source omitted] - Network accessline 413
) try: with httpx.Client( - Network accessline 414
try: with httpx.Client( transport=ports.transport, timeout=_TOKEN_TIMEOUT_SECONDS - Network accessline 415
with httpx.Client( - Network accessline 517
return 0 try: with httpx.Client(transport=transport, timeout=_TOKEN_TIMEOUT_SECONDS) as client: - Network accessline 518
try: with httpx.Client(transport=transport, timeout=_TOKEN_TIMEOUT_SECONDS) as client: response = client.post( - Network accessline 519
with httpx.Client(transport=transport, timeout=_TOKEN_TIMEOUT_SECONDS) as client: - Access to secretsline 549
[Credential-related source omitted] - Access to secretsline 575
[Credential-related source omitted] - Access to secretsline 576
[Credential-related source omitted] - Access to secretsline 599
[Credential-related source omitted]
src/ade_cli/output.py
- Executable scriptline 1
Executable file
src/ade_cli/parse.py
- Executable scriptline 1
Executable file
src/ade_cli/ports.py
- Executable scriptline 1
Executable file
src/ade_cli/raster.py
- Executable scriptline 1
Executable file
src/ade_cli/serve.py
- Executable scriptline 1
Executable file - Network accessline 73
def url_for(port: int, item_id: str) -> str: return f"http://127.0.0.1:{port}/jobs/{item_id}/view.html" - Network accessline 74
return f"http://127.0.0.1:{port}/jobs/{item_id}/view.html" - Network accessline 83
try: with httpx.Client(transport=ports.transport, timeout=1.0) as client: - Network accessline 84
with httpx.Client(transport=ports.transport, timeout=1.0) as client: - Network accessline 85
response = client.get(f"http://127.0.0.1:{port}{HEALTH_PATH}") - Dangerous shell operationline 111
# A failed re-exec (missing interpreter, fork limits) degrades to - Network accessline 245
return None try: with httpx.Client(transport=ports.transport, timeout=1.0) as client: - Network accessline 246
try: with httpx.Client(transport=ports.transport, timeout=1.0) as client: response = client.post(f"http://127.0.0.1:{port}{SHUTDOWN_PATH}") - Network accessline 247
with httpx.Client(transport=ports.transport, timeout=1.0) as client: - Network accessline 248
response = client.post(f"http://127.0.0.1:{port}{SHUTDOWN_PATH}")
src/ade_cli/shipping.py
- Executable scriptline 1
Executable file - Network accessline 136
batch = rows[:MAX_BATCH_RECORDS] try: with httpx.Client( - Network accessline 137
try: with httpx.Client( base_url=endpoint, - Network accessline 138
with httpx.Client( - Access to secretsline 211
[Credential-related source omitted] - Access to secretsline 218
[Credential-related source omitted] - Access to secretsline 219
[Credential-related source omitted]
src/ade_cli/store.py
- Executable scriptline 1
Executable file
src/ade_cli/surface.py
- Executable scriptline 1
Executable file - Network accessline 33
# for every child process (verified 2026-07; the set will drift — that is # why unknown hosts simply come back None, never an error). Sources: # claude-code: https://code.claude.com/docs/en/env-vars - Network accessline 34
# why unknown hosts simply come back None, never an error). Sources: # claude-code: https://code.claude.com/docs/en/env-vars # codex: https://developers.openai.com/codex/config-advanced - Network accessline 35
# claude-code: https://code.claude.com/docs/en/env-vars - Network accessline 36
# codex: https://developers.openai.com/codex/config-advanced - Network accessline 37
# https://github.com/openai/codex/issues/19937 - Network accessline 39
# https://glama.ai/mcp/servers/@cameroncooke/XcodeBuildMCP/blob/ddea433f736484c4d20d2d1d1457bfe06f512719/src/utils/environment.ts
src/ade_cli/telemetry.py
- Executable scriptline 1
Executable file - Access to secretsline 273
[Credential-related source omitted] - Network accessline 297
transport = httpx.HTTPTransport() - Access to secretsline 300
[Credential-related source omitted] - Network accessline 318
transport = httpx.HTTPTransport() - Access to secretsline 323
[Credential-related source omitted]
src/ade_cli/term.py
src/ade_cli/update.py
- Executable scriptline 1
Executable file - Network accessline 55
REPO = "landing-ai/ade-cli" RELEASES_LATEST_URL = f"https://api.github.com/repos/{REPO}/releases/latest" - Network accessline 56
RELEASES_LATEST_URL = f"https://api.github.com/repos/{REPO}/releases/latest" - Network accessline 59
DOWNLOAD_BASE_URL = f"https://github.com/{REPO}/releases/latest/download" - Access to secretsline 133
[Credential-related source omitted] - Network accessline 148
headers["Authorization"] = f"Bearer {token}" try: with httpx.Client(transport=transport, timeout=timeout) as client: - Network accessline 149
try: with httpx.Client(transport=transport, timeout=timeout) as client: response = client.get( - Network accessline 150
with httpx.Client(transport=transport, timeout=timeout) as client: - Access to secretsline 257
[Credential-related source omitted] - Network accessline 316
if token and asset_id is not None: return ( f"https://api.github.com/repos/{REPO}/releases/assets/{asset_id}", - Network accessline 317
return ( f"https://api.github.com/repos/{REPO}/releases/assets/{asset_id}", { - Network accessline 318
f"https://api.github.com/repos/{REPO}/releases/assets/{asset_id}", - Network accessline 363
) archive = staging / asset with httpx.Client( - Network accessline 364
archive = staging / asset with httpx.Client( transport=transport, timeout=CHECK_TIMEOUT_SECONDS, follow_redirects=True - Network accessline 365
with httpx.Client(
src/ade_cli/useragent.py
- Executable scriptline 1
Executable file
src/ade_cli/view.py
- Executable scriptline 1
Executable file - Network accessline 1007
serve_mode: bool = typer.Option( False, "--serve", help="Open via a local server (http://127.0.0.1) instead of file:// " - Network accessline 1008
False, "--serve", help="Open via a local server (http://127.0.0.1) instead of file:// " "— browser zoom then covers every viewer natively. Starts the " - Network accessline 1009
help="Open via a local server (http://127.0.0.1) instead of file:// " - Network accessline 1064
emit( {"status": "server_stopped", "port": port}, f"Viewer server on http://127.0.0.1:{port} stopped.", - Network accessline 1065
{"status": "server_stopped", "port": port}, f"Viewer server on http://127.0.0.1:{port} stopped.", as_json=as_json, - Network accessline 1066
f"Viewer server on http://127.0.0.1:{port} stopped.",
src/ade_cli/view_template.html
- Network accessline 679
funnel 46:1128, search + chevron from the input instance 46:1136. --> <div class="hb-head"> <span class="hb-title"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><mask id="mask0_46_1125" - Network accessline 680
<div class="hb-head"> <span class="hb-title"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><mask id="mask0_46_1125" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="4" y="1" widt - Network accessline 681
<span class="hb-title"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><mask id="mask0_46_1125" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="4" y="1" width="17" height="22"><path d - Network accessline 682
<!-- Sidebar toggle — VUI GlobalSidebarV3 / Icons.tsx IconSidebar --> <button class="hb-toggle" id="hb-toggle" aria-label="Collapse sidebar" title="Collapse sidebar"> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xml - Network accessline 683
<button class="hb-toggle" id="hb-toggle" aria-label="Collapse sidebar" title="Collapse sidebar"> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M4.16667 17.5 - Network accessline 684
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M4.16667 17.5C3.70833 17.5 3.31597 17.3368 2.98958 17.0104C2.66319 16.684 2.5 16.2917 2.5 15.8333V4.16667C2.5 3.7083 - Network accessline 685
</button> <button class="hb-expand" id="hb-expand" aria-label="Expand sidebar" title="Expand sidebar"> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M4. - Network accessline 686
<button class="hb-expand" id="hb-expand" aria-label="Expand sidebar" title="Expand sidebar"> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M4.16667 17.5C3.7 - Network accessline 687
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M4.16667 17.5C3.70833 17.5 3.31597 17.3368 2.98958 17.0104C2.66319 16.684 2.5 16.2917 2.5 15.8333V4.16667C2.5 3.7083 - Network accessline 691
<div class="hb-search"> <div class="hb-search-box"> <svg class="hb-ic-search" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2 7.07406C2 7.65285 2.114 8.22597 2.33549 8.76071C2.55699 9.29544 2.88163 9 - Network accessline 692
<div class="hb-search-box"> <svg class="hb-ic-search" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2 7.07406C2 7.65285 2.114 8.22597 2.33549 8.76071C2.55699 9.29544 2.88163 9.78131 3.2909 10.1906C3.7001 - Network accessline 693
<svg class="hb-ic-search" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2 7.07406C2 7.65285 2.114 8.22597 2.33549 8.76071C2.55699 9.29544 2.88163 9.78131 3.2909 10.1906C3.70017 10.5998 4.18603 10.9245 4.72077 - Network accessline 694
<input id="hb-search-input" type="search" placeholder="Search" aria-label="Search documents by file name" autocomplete="off"> <button class="hb-search-toggle" id="hb-search-toggle" aria-label="Browse documents" aria-expanded="false"> - Network accessline 695
<button class="hb-search-toggle" id="hb-search-toggle" aria-label="Browse documents" aria-expanded="false"> <svg class="hb-ic-chevron" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.52851 6.19526C3.78 - Network accessline 696
<svg class="hb-ic-chevron" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.52851 6.19526C3.78886 5.93491 4.21097 5.93491 4.47132 6.19526L7.99993 9.72386L11.5285 6.19526C11.7889 5.93491 12.211 5.93491 12.4713 6 - Network accessline 698
</div> <button class="hb-filterbtn" id="hb-filterbtn" aria-label="Filters" title="Filters"> <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.3334 2.66667H2.66675V4.15133C2 - Network accessline 699
<button class="hb-filterbtn" id="hb-filterbtn" aria-label="Filters" title="Filters"> <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.3334 2.66667H2.66675V4.15133C2.66678 4.48 - Network accessline 700
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.3334 2.66667H2.66675V4.15133C2.66678 4.48293 2.79038 4.80262 3.01341 5.048L6.00008 8.33333V14L10.0001 12.6667V8L12.9427 5.05733C13.1 - Network accessline 771
with its date pin shows on hover. --> <span class="model-chip" id="modelchip" hidden> <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.55467 2.71002C8.35507 2.5 - Network accessline 772
<span class="model-chip" id="modelchip" hidden> <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.55467 2.71002C8.35507 2.59478 8.10915 2.59478 7.90954 2.71002L3.87528 5.0 - Network accessline 773
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.55467 2.71002C8.35507 2.59478 8.10915 2.59478 7.90954 2.71002L3.87528 5.03921L8.24154 7.49523L12.7285 5.11978L8.55467 2.71002ZM13.174 - Possible obfuscationline 849
s = s.replace(/^(\d+)([.)]) /gm, "$1$2<U+200B> "); - Possible obfuscationline 851
s = s.replace(/^(\d+\.\d+(\.\d+)*)(\.<U+200B>)?\s+/gm, "**$1** ");
tests/conftest.py
- Executable scriptline 1
Executable file - Network accessline 65
) -> None: self._script.append( lambda request: httpx.Response(status_code, json=json_body, headers=headers) - Network accessline 66
self._script.append( lambda request: httpx.Response(status_code, json=json_body, headers=headers) ) - Network accessline 67
lambda request: httpx.Response(status_code, json=json_body, headers=headers) - Network accessline 70
def handle_request(self, request: httpx.Request) -> httpx.Response: request.read() # materialize streamed (multipart) bodies for assertions self.requests.append(request) - Network accessline 71
request.read() # materialize streamed (multipart) bodies for assertions self.requests.append(request) if not self._script: - Network accessline 72
self.requests.append(request) - Access to secretsline 135
[Credential-related source omitted]
tests/extract_fixtures.py
tests/integration/test_production.py
- Executable scriptline 1
Executable file - Access to secretsline 10
[Credential-related source omitted] - Access to secretsline 14
[Credential-related source omitted] - Access to secretsline 36
[Credential-related source omitted] - Access to secretsline 39
[Credential-related source omitted] - Access to secretsline 67
[Credential-related source omitted] - Access to secretsline 69
[Credential-related source omitted] - Access to secretsline 101
[Credential-related source omitted] - Access to secretsline 121
[Credential-related source omitted] - Access to secretsline 124
[Credential-related source omitted] - Access to secretsline 137
[Credential-related source omitted]
tests/parse_fixtures.py
- Executable scriptline 1
Executable file - Network accessline 42
"output_markdown_chars": end, "range_units": "unicode_codepoints", "openapi_spec": "https://api.ade.landing.ai/openapi.json", - Network accessline 43
"range_units": "unicode_codepoints", "openapi_spec": "https://api.ade.landing.ai/openapi.json", "failed_pages": list(failed_pages or []), - Network accessline 44
"openapi_spec": "https://api.ade.landing.ai/openapi.json",
tests/test_auth.py
- Executable scriptline 1
Executable file - Access to secretsline 59
[Credential-related source omitted] - Access to secretsline 73
[Credential-related source omitted] - Access to secretsline 84
[Credential-related source omitted] - Access to secretsline 147
[Credential-related source omitted] - Network accessline 150
[Credential-related source omitted] - Network accessline 151
[Credential-related source omitted] - Network accessline 152
[Credential-related source omitted] - Access to secretsline 152
[Credential-related source omitted] - Network accessline 155
assert json.loads(plain.stdout)["endpoint"] == "https://api.ade.landing.ai" - Network accessline 156
assert json.loads(plain.stdout)["endpoint_source"] == "default" assert json.loads(overridden.stdout)["endpoint"] == "https://env.example.com" assert json.loads(overridden.stdout)["endpoint_source"] == "env" - Network accessline 157
assert json.loads(overridden.stdout)["endpoint"] == "https://env.example.com" - Network accessline 163
[Credential-related source omitted] - Network accessline 164
[Credential-related source omitted] - Network accessline 165
[Credential-related source omitted] - Access to secretsline 165
[Credential-related source omitted] - Network accessline 169
assert payload["endpoint"] == "https://staging.example.com" - Network accessline 180
assert "Environment" not in result.stderr payload = json.loads(result.stdout) assert payload["endpoint"] == "https://api.ade.landing.ai" - Network accessline 181
payload = json.loads(result.stdout) assert payload["endpoint"] == "https://api.ade.landing.ai" assert payload["endpoint_source"] == "default" - Network accessline 182
assert payload["endpoint"] == "https://api.ade.landing.ai" - Access to secretsline 188
[Credential-related source omitted] - Network accessline 190
payload = json.loads(result.stdout) assert payload["endpoint"] == "https://api.ade.landing.ai" - Network accessline 191
assert payload["endpoint"] == "https://api.ade.landing.ai" - Access to secretsline 202
[Credential-related source omitted] - Network accessline 231
(probe,) = cli.transport.requests assert probe.method == "POST" assert probe.url == "https://api.ade.landing.ai/v2/telemetry" - Network accessline 232
assert probe.method == "POST" assert probe.url == "https://api.ade.landing.ai/v2/telemetry" assert json.loads(probe.content) == [] # a no-op body: nothing recorded - Network accessline 233
assert probe.url == "https://api.ade.landing.ai/v2/telemetry" - Network accessline 248
assert result.exit_code == 0 (probe,) = cli.transport.requests assert str(probe.url).startswith("https://api.ade.staging.landing.ai") - Network accessline 250
assert str(probe.url).startswith("https://api.ade.staging.landing.ai") - Access to secretsline 260
[Credential-related source omitted] - Network accessline 314
def offline(request): raise httpx.ConnectError("no network") - Network accessline 315
raise httpx.ConnectError("no network") - Access to secretsline 341
[Credential-related source omitted] - Access to secretsline 367
[Credential-related source omitted] - Network accessline 391
ENVIRONMENT_URLS = { "dev": "https://api.ade.dev.landing.ai", - Network accessline 392
"dev": "https://api.ade.dev.landing.ai", - Network accessline 393
"staging": "https://api.ade.staging.landing.ai", - Network accessline 394
"production": "https://api.ade.landing.ai", - Network accessline 395
"eu": "https://api.ade.eu-west-1.landing.ai", - Access to secretsline 427
[Credential-related source omitted] - Network accessline 466
def test_unauthenticated_status_names_a_raw_url_target_not_an_environment(cli): result = cli.invoke( "auth", "status", env={"ADE_ENDPOINT": "https://custom.example.com"} - Network accessline 467
result = cli.invoke( "auth", "status", env={"ADE_ENDPOINT": "https://custom.example.com"} ) - Network accessline 468
"auth", "status", env={"ADE_ENDPOINT": "https://custom.example.com"} - Network accessline 471
assert result.exit_code == 1 assert "https://custom.example.com" in result.stdout - Network accessline 472
assert "https://custom.example.com" in result.stdout - Access to secretsline 481
[Credential-related source omitted] - Access to secretsline 495
[Credential-related source omitted] - Network accessline 499
cli.invoke( "auth", "status", "--json", env={"ADE_ENDPOINT": "https://stored.example.com"}, - Network accessline 500
"auth", "status", "--json", env={"ADE_ENDPOINT": "https://stored.example.com"}, ).stdout - Network accessline 501
env={"ADE_ENDPOINT": "https://stored.example.com"}, - Network accessline 505
assert payload["authenticated"] is True assert payload["endpoint"] == "https://stored.example.com" - Network accessline 506
assert payload["endpoint"] == "https://stored.example.com" - Access to secretsline 513
[Credential-related source omitted] - Access to secretsline 524
[Credential-related source omitted] - Access to secretsline 525
[Credential-related source omitted] - Access to secretsline 526
[Credential-related source omitted] - Network accessline 533
config_file(cli).write_text( json.dumps( {"environment": "staging", "endpoint": "https://stored.example.com"} - Network accessline 534
json.dumps( {"environment": "staging", "endpoint": "https://stored.example.com"} ) - Network accessline 535
{"environment": "staging", "endpoint": "https://stored.example.com"} - Access to secretsline 540
[Credential-related source omitted] - Network accessline 543
assert payload["environment"] == "production" assert payload["endpoint"] == "https://api.ade.landing.ai" - Network accessline 544
assert payload["endpoint"] == "https://api.ade.landing.ai" - Access to secretsline 549
[Credential-related source omitted] - Network accessline 571
cli.invoke( "auth", "status", "--env", "staging", "--json", env={"ADE_ENDPOINT": "https://env.example.com"}, - Network accessline 572
"auth", "status", "--env", "staging", "--json", env={"ADE_ENDPOINT": "https://env.example.com"}, ).stdout - Network accessline 573
env={"ADE_ENDPOINT": "https://env.example.com"}, - Network accessline 577
assert payload["endpoint"] == "https://env.example.com" - Network accessline 627
payload = json.loads(result.stdout) assert payload["environment"] == "staging" assert payload["endpoint"] == "https://api.ade.staging.landing.ai" - Network accessline 629
assert payload["endpoint"] == "https://api.ade.staging.landing.ai" - Access to secretsline 649
[Credential-related source omitted] - Access to secretsline 667
[Credential-related source omitted] - Access to secretsline 688
[Credential-related source omitted] - Access to secretsline 706
[Credential-related source omitted] - Access to secretsline 709
[Credential-related source omitted] - Access to secretsline 728
[Credential-related source omitted] - Access to secretsline 751
[Credential-related source omitted] - Access to secretsline 797
[Credential-related source omitted] - Access to secretsline 803
[Credential-related source omitted] - Access to secretsline 811
[Credential-related source omitted] - Access to secretsline 822
[Credential-related source omitted] - Access to secretsline 826
[Credential-related source omitted] - Access to secretsline 842
[Credential-related source omitted] - Access to secretsline 845
[Credential-related source omitted] - Access to secretsline 872
[Credential-related source omitted] - Access to secretsline 887
[Credential-related source omitted] - Network accessline 899
(probe,) = cli.transport.requests assert probe.method == "POST" assert probe.url == "https://api.ade.landing.ai/v2/telemetry" - Network accessline 901
assert probe.url == "https://api.ade.landing.ai/v2/telemetry" - Access to secretsline 921
[Credential-related source omitted] - Access to secretsline 922
[Credential-related source omitted] - Access to secretsline 962
[Credential-related source omitted] - Access to secretsline 999
[Credential-related source omitted] - Access to secretsline 1001
[Credential-related source omitted]
tests/test_auth_oauth.py
- Executable scriptline 1
Executable file - Access to secretsline 41
[Credential-related source omitted] - Access to secretsline 71
[Credential-related source omitted] - Network accessline 150
q = browser.query() assert browser.url.startswith("https://login.landing.ai/oidc/auth?") - Network accessline 151
assert browser.url.startswith("https://login.landing.ai/oidc/auth?") - Network accessline 153
assert q["response_type"] == "code" assert q["code_challenge_method"] == "S256" assert q["resource"] == "https://api.ade.landing.ai" - Network accessline 154
assert q["code_challenge_method"] == "S256" assert q["resource"] == "https://api.ade.landing.ai" assert "offline_access" in q["scope"] - Network accessline 155
assert q["resource"] == "https://api.ade.landing.ai" - Network accessline 157
assert "urn:logto:scope:organizations" in q["scope"] assert q["prompt"] == "consent" assert q["redirect_uri"].startswith("http://127.0.0.1:") - Network accessline 159
assert q["redirect_uri"].startswith("http://127.0.0.1:") - Network accessline 162
exchange = cli.transport.requests[0] assert str(exchange.url) == "https://login.landing.ai/oidc/token" - Network accessline 163
assert str(exchange.url) == "https://login.landing.ai/oidc/token" - Network accessline 176
assert "resource" not in discovery_form userinfo = cli.transport.requests[2] assert str(userinfo.url) == "https://login.landing.ai/oidc/me" - Network accessline 177
userinfo = cli.transport.requests[2] assert str(userinfo.url) == "https://login.landing.ai/oidc/me" assert userinfo.headers["Authorization"] == "Bearer opaque-1" - Network accessline 178
assert str(userinfo.url) == "https://login.landing.ai/oidc/me" - Access to secretsline 186
[Credential-related source omitted] - Network accessline 217
assert result.exit_code == 0 assert browser.url.startswith("https://login.dev.landing.ai/oidc/auth?") - Network accessline 218
assert browser.url.startswith("https://login.dev.landing.ai/oidc/auth?") - Network accessline 219
assert browser.query()["resource"] == "https://api.ade.dev.landing.ai" - Network accessline 256
assert result.exit_code == 0 assert browser.url.startswith("https://login.landing.ai/oidc/auth?") - Network accessline 257
assert browser.url.startswith("https://login.landing.ai/oidc/auth?") - Network accessline 258
assert browser.query()["resource"] == "https://api.ade.landing.ai" - Network accessline 264
seed_oauth_config( cli, issuer="https://login.example.test/oidc", - Network accessline 265
cli, issuer="https://login.example.test/oidc", resource="https://api.example.test", - Network accessline 266
issuer="https://login.example.test/oidc", - Network accessline 267
resource="https://api.example.test", - Network accessline 275
assert result.exit_code == 0 assert browser.url.startswith("https://login.example.test/oidc/auth?") - Network accessline 276
assert browser.url.startswith("https://login.example.test/oidc/auth?") assert browser.query()["resource"] == "https://api.example.test" exchange = cli.transport.requests[0] - Network accessline 277
assert browser.query()["resource"] == "https://api.example.test" exchange = cli.transport.requests[0] assert str(exchange.url) == "https://login.example.test/oidc/token" - Network accessline 279
assert str(exchange.url) == "https://login.example.test/oidc/token" - Network accessline 281
assert str(cli.transport.requests[2].url) == "https://login.example.test/oidc/me" - Access to secretsline 389
[Credential-related source omitted] - Network accessline 415
assert result.exit_code == 0, result.output assert "> 2) Sign in with your browser" in result.stderr assert browser.url.startswith("https://login.landing.ai/oidc/auth?") - Network accessline 416
assert "> 2) Sign in with your browser" in result.stderr assert browser.url.startswith("https://login.landing.ai/oidc/auth?") assert json.loads(result.stdout)["method"] == "oauth" - Network accessline 417
assert browser.url.startswith("https://login.landing.ai/oidc/auth?") - Network accessline 424
cli.home.mkdir(parents=True, exist_ok=True) (cli.home / "config.json").write_text( json.dumps({"endpoint": "https://stored.example.com"}) - Network accessline 425
(cli.home / "config.json").write_text( json.dumps({"endpoint": "https://stored.example.com"}) ) - Network accessline 426
json.dumps({"endpoint": "https://stored.example.com"}) - Network accessline 443
assert payload["method"] == "oauth" assert payload["environment"] == "production" assert browser.query()["resource"] == "https://api.ade.landing.ai" - Network accessline 445
assert browser.query()["resource"] == "https://api.ade.landing.ai" - Network accessline 477
assert result.exit_code == 0, result.output assert "How would you like to log in?" in result.stderr assert browser.url.startswith("https://login.landing.ai/oidc/auth?") - Network accessline 478
assert "How would you like to log in?" in result.stderr assert browser.url.startswith("https://login.landing.ai/oidc/auth?") payload = json.loads(result.stdout[result.stdout.index("{"):]) - Network accessline 479
assert browser.url.startswith("https://login.landing.ai/oidc/auth?") - Access to secretsline 518
[Credential-related source omitted] - Access to secretsline 519
[Credential-related source omitted] - Network accessline 531
"auth", "login", "--json", input=KEY + "\n", env={"ADE_ENDPOINT": "https://custom.example.com", "TERM": "dumb"}, - Network accessline 532
input=KEY + "\n", env={"ADE_ENDPOINT": "https://custom.example.com", "TERM": "dumb"}, ) - Network accessline 533
env={"ADE_ENDPOINT": "https://custom.example.com", "TERM": "dumb"}, - Network accessline 538
payload = json.loads(result.stdout[result.stdout.index("{"):]) assert payload["method"] == "api_key" assert payload["endpoint"] == "https://custom.example.com" - Access to secretsline 539
[Credential-related source omitted] - Network accessline 540
assert payload["endpoint"] == "https://custom.example.com" - Network accessline 549
"production": { "client_id": CLIENT_ID, "resource": "https://custom.example.com", - Network accessline 550
"client_id": CLIENT_ID, "resource": "https://custom.example.com", } - Network accessline 551
"resource": "https://custom.example.com", - Network accessline 564
"auth", "login", "--json", input="2\n", browser=browser, env={"ADE_ENDPOINT": "https://custom.example.com", "TERM": "dumb"}, - Network accessline 565
input="2\n", browser=browser, env={"ADE_ENDPOINT": "https://custom.example.com", "TERM": "dumb"}, ) - Network accessline 566
env={"ADE_ENDPOINT": "https://custom.example.com", "TERM": "dumb"}, - Network accessline 569
assert result.exit_code == 0, result.output assert "How would you like to log in?" in result.stderr assert browser.query()["resource"] == "https://custom.example.com" - Network accessline 570
assert "How would you like to log in?" in result.stderr assert browser.query()["resource"] == "https://custom.example.com" assert json.loads(result.stdout[result.stdout.index("{"):])["method"] == "oauth" - Network accessline 571
assert browser.query()["resource"] == "https://custom.example.com" - Network accessline 650
"auth", "login", browser=lambda url: True, env={"ADE_ENDPOINT": "https://custom.example.com"}, - Network accessline 651
browser=lambda url: True, env={"ADE_ENDPOINT": "https://custom.example.com"}, ) - Network accessline 652
env={"ADE_ENDPOINT": "https://custom.example.com"}, - Network accessline 666
"production": { "client_id": CLIENT_ID, "resource": "https://custom.example.com", - Network accessline 667
"client_id": CLIENT_ID, "resource": "https://custom.example.com", } - Network accessline 668
"resource": "https://custom.example.com", - Network accessline 679
"auth", "login", browser=browser, env={"ADE_ENDPOINT": "https://custom.example.com"}, - Network accessline 680
browser=browser, env={"ADE_ENDPOINT": "https://custom.example.com"}, ) - Network accessline 681
env={"ADE_ENDPOINT": "https://custom.example.com"}, - Network accessline 684
assert result.exit_code == 0, result.output assert browser.query()["resource"] == "https://custom.example.com" - Network accessline 685
assert browser.query()["resource"] == "https://custom.example.com" - Access to secretsline 722
[Credential-related source omitted] - Access to secretsline 725
[Credential-related source omitted] - Access to secretsline 739
[Credential-related source omitted] - Network accessline 757
} (revocation,) = cli.transport.requests assert str(revocation.url) == "https://login.landing.ai/oidc/token/revocation" - Network accessline 758
(revocation,) = cli.transport.requests assert str(revocation.url) == "https://login.landing.ai/oidc/token/revocation" form = {k: v[0] for k, v in parse_qs(revocation.content.decode()).items()} - Network accessline 759
assert str(revocation.url) == "https://login.landing.ai/oidc/token/revocation" - Network accessline 801
assert result.exit_code == 0, result.output refresh, submit, poll = cli.transport.requests assert str(refresh.url) == "https://login.landing.ai/oidc/token" - Network accessline 802
refresh, submit, poll = cli.transport.requests assert str(refresh.url) == "https://login.landing.ai/oidc/token" assert _form(refresh)["grant_type"] == "refresh_token" - Network accessline 803
assert str(refresh.url) == "https://login.landing.ai/oidc/token" - Access to secretsline 937
[Credential-related source omitted] - Access to secretsline 947
[Credential-related source omitted] - Access to secretsline 970
[Credential-related source omitted] - Access to secretsline 985
[Credential-related source omitted] - Network accessline 1111
cli.transport.respond(200, token_response()) cli.transport.respond_with( lambda request: httpx.Response(200, content=b"<html>gateway</html>") - Network accessline 1112
cli.transport.respond_with( lambda request: httpx.Response(200, content=b"<html>gateway</html>") ) - Network accessline 1113
lambda request: httpx.Response(200, content=b"<html>gateway</html>") - Access to secretsline 1122
[Credential-related source omitted] - Access to secretsline 1134
[Credential-related source omitted] - Network accessline 1140
cli.transport.respond(200, token_response(access="opaque-1", refresh="rt-2")) cli.transport.respond_with( lambda request: httpx.Response(200, content=b"not json at all") - Network accessline 1141
cli.transport.respond_with( lambda request: httpx.Response(200, content=b"not json at all") ) - Network accessline 1142
lambda request: httpx.Response(200, content=b"not json at all") - Access to secretsline 1151
[Credential-related source omitted] - Access to secretsline 1194
[Credential-related source omitted] - Network accessline 1200
seed_oauth_config(cli) cli.transport.respond_with( lambda request: httpx.Response(200, content=b"<html>gateway</html>") - Network accessline 1201
cli.transport.respond_with( lambda request: httpx.Response(200, content=b"<html>gateway</html>") ) - Network accessline 1202
lambda request: httpx.Response(200, content=b"<html>gateway</html>")
tests/test_crop.py
- Executable scriptline 1
Executable file - Access to secretsline 20
[Credential-related source omitted] - Network accessline 604
cli.transport.respond(200, completed_job(rich_parse_response())) parsed = cli.invoke( "parse", "--document-url", "https://example.com/doc.pdf", - Network accessline 605
parsed = cli.invoke( "parse", "--document-url", "https://example.com/doc.pdf", "--json", env=AUTH_ENV, - Network accessline 606
"parse", "--document-url", "https://example.com/doc.pdf", - Network accessline 635
item_id = url_parsed(cli) body = pdf.read_bytes() cli.transport.respond_with(lambda req: httpx.Response(200, content=body)) - Network accessline 637
cli.transport.respond_with(lambda req: httpx.Response(200, content=body)) - Network accessline 642
assert payload["downloaded"] is True assert "downloaded copy" in payload["warning"] assert str(cli.transport.requests[-1].url) == "https://example.com/doc.pdf" - Network accessline 643
assert "downloaded copy" in payload["warning"] assert str(cli.transport.requests[-1].url) == "https://example.com/doc.pdf" assert (cli.home / "jobs" / item_id / "document.pdf").read_bytes() == body - Network accessline 644
assert str(cli.transport.requests[-1].url) == "https://example.com/doc.pdf" - Network accessline 660
item_id = url_parsed(cli) cli.transport.respond_with(lambda req: httpx.Response(403, content=b"denied")) - Network accessline 661
cli.transport.respond_with(lambda req: httpx.Response(403, content=b"denied"))
tests/test_env_targeting.py
- Executable scriptline 1
Executable file - Network accessline 23
STAGING = "https://api.ade.staging.landing.ai" - Network accessline 24
PRODUCTION = "https://api.ade.landing.ai" - Network accessline 45
cli.transport.requests.clear() - Network accessline 84
assert flagged["environment"] == "dev" assert str(cli.transport.requests[0].url).startswith(STAGING) assert str(cli.transport.requests[2].url).startswith("https://api.ade.dev.landing.ai") - Network accessline 86
assert str(cli.transport.requests[2].url).startswith("https://api.ade.dev.landing.ai") - Access to secretsline 109
[Credential-related source omitted] - Access to secretsline 140
[Credential-related source omitted] - Access to secretsline 215
[Credential-related source omitted] - Access to secretsline 232
[Credential-related source omitted]
tests/test_evidence.py
tests/test_extract.py
- Executable scriptline 1
Executable file - Access to secretsline 27
[Credential-related source omitted] - Network accessline 541
def test_markdown_url_is_passed_through(cli, schema_file): url = "https://example.com/notes.md" - Network accessline 542
url = "https://example.com/notes.md" - Network accessline 571
result = cli.invoke( "extract", "--markdown-url", "https://example.com/notes.md", - Network accessline 572
"extract", "--markdown-url", "https://example.com/notes.md", - Possible obfuscationline 762
binary.write_bytes(b"\xff\xfe\x00\x01 not utf-8") - Network accessline 835
VIOLATION = ( "'profit' is a required property.\nPlease read our documentation at " "https://docs.landing.ai/ade/ade-extract-schema-json for more details." - Network accessline 836
"'profit' is a required property.\nPlease read our documentation at " "https://docs.landing.ai/ade/ade-extract-schema-json for more details." ) - Network accessline 837
"https://docs.landing.ai/ade/ade-extract-schema-json for more details."
tests/test_extract_document.py
tests/test_find.py
tests/test_help.py
- Executable scriptline 1
Executable file
tests/test_help_style.py
- Executable scriptline 1
Executable file
tests/test_history.py
- Executable scriptline 1
Executable file - Access to secretsline 20
[Credential-related source omitted] - Network accessline 574
str(document), "--json", env={**AUTH_ENV, "ADE_ENDPOINT": "https://ade.internal.example.com"}, - Network accessline 575
"--json", env={**AUTH_ENV, "ADE_ENDPOINT": "https://ade.internal.example.com"}, ) - Network accessline 576
env={**AUTH_ENV, "ADE_ENDPOINT": "https://ade.internal.example.com"}, - Network accessline 607
url = "https://x.test/</script><script>alert(1)</script>"
tests/test_identity.py
- Executable scriptline 1
Executable file - Network accessline 57
def test_url_id_matches_the_documented_formula_with_no_content_component(): url = "https://example.com/doc.pdf" - Network accessline 58
url = "https://example.com/doc.pdf" - Network accessline 123
a = store.derive_id("parse", ENV, store.url_identity("https://x.test/a"), PARAMS) - Network accessline 124
b = store.derive_id("parse", ENV, store.url_identity("https://x.test/b"), PARAMS)
tests/test_output.py
tests/test_parse.py
- Executable scriptline 1
Executable file - Access to secretsline 17
[Credential-related source omitted] - Network accessline 332
def test_document_url_submits_and_keys_the_store_by_url_hash(cli): url = "https://example.com/statement.pdf" - Network accessline 333
url = "https://example.com/statement.pdf" - Network accessline 462
neither = cli.invoke("parse", env=AUTH_ENV) both = cli.invoke( "parse", "-d", str(document), "--document-url", "https://x.com/a.pdf", - Network accessline 463
both = cli.invoke( "parse", "-d", str(document), "--document-url", "https://x.com/a.pdf", env=AUTH_ENV, - Network accessline 464
"parse", "-d", str(document), "--document-url", "https://x.com/a.pdf", - Network accessline 574
cli.transport.respond(202, {"job_id": JOB_ID}) body = job_payload("completed", progress=1.0) body["output_url"] = "https://bucket.example.com/result.json" # result stays null - Network accessline 575
body = job_payload("completed", progress=1.0) body["output_url"] = "https://bucket.example.com/result.json" # result stays null cli.transport.respond(200, body) - Network accessline 576
body["output_url"] = "https://bucket.example.com/result.json" # result stays null - Network accessline 693
cli.transport.respond(200, completed_job()) pdf = b"%PDF-1.4 tiny fixture" cli.transport.respond_with(lambda req: httpx.Response(200, content=pdf)) - Network accessline 695
cli.transport.respond_with(lambda req: httpx.Response(200, content=pdf)) - Network accessline 697
result = cli.invoke( "parse", "--document-url", "https://example.com/inv.pdf", - Network accessline 698
"parse", "--document-url", "https://example.com/inv.pdf", - Network accessline 707
meta = json.loads((item_dir_ / "meta.json").read_text()) assert meta["attached_source"] == "document.pdf" assert meta["source"] == "https://example.com/inv.pdf" - Network accessline 708
assert meta["attached_source"] == "document.pdf" assert meta["source"] == "https://example.com/inv.pdf" assert str(cli.transport.requests[-1].url) == "https://example.com/inv.pdf" - Network accessline 709
assert meta["source"] == "https://example.com/inv.pdf" - Network accessline 710
assert str(cli.transport.requests[-1].url) == "https://example.com/inv.pdf" - Network accessline 716
cli.transport.respond(202, {"job_id": JOB_ID}) cli.transport.respond(200, completed_job()) cli.transport.respond_with(lambda req: httpx.Response(403, content=b"expired")) - Network accessline 718
cli.transport.respond_with(lambda req: httpx.Response(403, content=b"expired")) - Network accessline 720
result = cli.invoke( "parse", "--document-url", "https://example.com/inv.pdf", - Network accessline 721
"parse", "--document-url", "https://example.com/inv.pdf", - Network accessline 748
cli.transport.respond(200, completed_job()) first = cli.invoke( "parse", "--document-url", "https://example.com/inv.pdf", - Network accessline 749
first = cli.invoke( "parse", "--document-url", "https://example.com/inv.pdf", "--json", env=AUTH_ENV, - Network accessline 750
"parse", "--document-url", "https://example.com/inv.pdf", - Network accessline 755
pdf = b"%PDF-1.4 tiny fixture" cli.transport.respond_with(lambda req: httpx.Response(200, content=pdf)) - Network accessline 756
cli.transport.respond_with(lambda req: httpx.Response(200, content=pdf)) - Network accessline 757
result = cli.invoke( "parse", "--document-url", "https://example.com/inv.pdf", "--keep-copy", "--json", env=AUTH_ENV, - Network accessline 758
"parse", "--document-url", "https://example.com/inv.pdf",
tests/test_parse_guarantee.py
- Executable scriptline 1
Executable file - Access to secretsline 14
[Credential-related source omitted] - Network accessline 373
fresh["job_id"] = "job-0002" (item_dir / "job.json").write_text(json.dumps(fresh)) return httpx.Response(404, json=None) - Network accessline 375
return httpx.Response(404, json=None) - Network accessline 402
item_dir = next((cli.home / "jobs").iterdir()) (item_dir / "job.json").write_text(json.dumps(displaced_by)) return httpx.Response(200, json=completed_job()) - Network accessline 404
return httpx.Response(200, json=completed_job()) - Network accessline 419
cli.transport.respond(202, {"job_id": JOB_ID}) delivered = job_payload("completed", progress=1.0) delivered["output_url"] = "https://results.example/job-0001.json" - Network accessline 420
delivered = job_payload("completed", progress=1.0) delivered["output_url"] = "https://results.example/job-0001.json" cli.transport.respond(200, delivered) - Network accessline 421
delivered["output_url"] = "https://results.example/job-0001.json" - Network accessline 427
payload = json.loads(result.stdout) assert payload["error"] == "missing_result" assert payload["output_url"] == "https://results.example/job-0001.json" - Network accessline 428
assert payload["error"] == "missing_result" assert payload["output_url"] == "https://results.example/job-0001.json" assert "output_url" in payload["payload_keys"] - Network accessline 429
assert payload["output_url"] == "https://results.example/job-0001.json" - Network accessline 437
endpoint = "https://custom.internal.example.com" - Network accessline 471
assert result.exit_code == 1 assert "the production environment (https://api.ade.landing.ai)" in result.stdout - Network accessline 472
assert "the production environment (https://api.ade.landing.ai)" in result.stdout
tests/test_progress.py
tests/test_release_pipeline.py
tests/test_serve.py
- Executable scriptline 1
Executable file - Network accessline 25
return seed_parse_item(cli, url="https://docs.example.com/manual.pdf") - Network accessline 44
) payload = view_json(cli, item_id, "--serve", "--no-download") assert payload["url"] == f"http://127.0.0.1:8642/jobs/{item_id}/view.html" - Network accessline 45
payload = view_json(cli, item_id, "--serve", "--no-download") assert payload["url"] == f"http://127.0.0.1:8642/jobs/{item_id}/view.html" assert payload["serve_error"] is None - Network accessline 46
assert payload["url"] == f"http://127.0.0.1:8642/jobs/{item_id}/view.html" assert payload["serve_error"] is None probe = cli.transport.requests[-1] - Network accessline 47
assert payload["serve_error"] is None probe = cli.transport.requests[-1] assert str(probe.url) == "http://127.0.0.1:8642/__ade__/health" - Network accessline 49
assert str(probe.url) == "http://127.0.0.1:8642/__ade__/health" - Network accessline 67
payload = view_json(cli, item_id, "--serve", "--no-download") assert spawned == [serve.DEFAULT_PORT] assert payload["url"] == f"http://127.0.0.1:8644/jobs/{item_id}/view.html" - Network accessline 68
assert spawned == [serve.DEFAULT_PORT] assert payload["url"] == f"http://127.0.0.1:8644/jobs/{item_id}/view.html" assert payload["deep_link"] is None - Network accessline 69
assert payload["url"] == f"http://127.0.0.1:8644/jobs/{item_id}/view.html" - Network accessline 86
monkeypatch.setattr("ade_cli.view._spawn_server", fake_spawn) payload = view_json(cli, item_id, "--serve", "--no-download") assert payload["url"] == f"http://127.0.0.1:8645/jobs/{item_id}/view.html" - Network accessline 88
assert payload["url"] == f"http://127.0.0.1:8645/jobs/{item_id}/view.html" - Dangerous shell operationline 112
"""A failed re-exec (Popen raising) is a serve failure like any other: - Network accessline 141
payload = json.loads(result.stdout) assert opened == [ f"http://127.0.0.1:8642/jobs/{item_id}/view.html#element=text-0" - Network accessline 142
assert opened == [ f"http://127.0.0.1:8642/jobs/{item_id}/view.html#element=text-0" ] - Network accessline 143
f"http://127.0.0.1:8642/jobs/{item_id}/view.html#element=text-0" - Network accessline 156
thread.start() try: base = f"http://127.0.0.1:{port}" - Network accessline 157
try: base = f"http://127.0.0.1:{port}" health = httpx.get(f"{base}{serve.HEALTH_PATH}") - Network accessline 158
base = f"http://127.0.0.1:{port}" health = httpx.get(f"{base}{serve.HEALTH_PATH}") assert health.status_code == 200 - Network accessline 159
health = httpx.get(f"{base}{serve.HEALTH_PATH}") - Network accessline 163
page = httpx.get(f"{base}/jobs/{item_id}/view.html") - Network accessline 170
assert httpx.get(f"{base}/jobs/").status_code == 403 - Network accessline 176
(cli.home / "credentials.json").write_text('{"environments": {}}') assert httpx.get(f"{base}/credentials.json").status_code == 404 - Network accessline 177
assert httpx.get(f"{base}/credentials.json").status_code == 404 - Network accessline 178
assert httpx.get(f"{base}/jobs/%2e%2e/credentials.json").status_code == 404 - Network accessline 179
assert httpx.get(f"{base}/config.json").status_code == 404 - Network accessline 180
assert httpx.get(f"{base}/history.js").status_code == 200 - Network accessline 194
shutdown = cli.transport.requests[-1] assert shutdown.method == "POST" assert str(shutdown.url) == "http://127.0.0.1:8642/__ade__/shutdown" - Network accessline 196
assert str(shutdown.url) == "http://127.0.0.1:8642/__ade__/shutdown" - Network accessline 225
cli.transport.respond(200, _health_body(cli)) cli.transport.respond_with( lambda request: (_ for _ in ()).throw(httpx.ConnectError("reset")) - Network accessline 226
cli.transport.respond_with( lambda request: (_ for _ in ()).throw(httpx.ConnectError("reset")) ) - Network accessline 227
lambda request: (_ for _ in ()).throw(httpx.ConnectError("reset")) - Network accessline 253
try: assert ( httpx.post(f"http://127.0.0.1:{port}{serve.SHUTDOWN_PATH}").status_code - Network accessline 254
assert ( httpx.post(f"http://127.0.0.1:{port}{serve.SHUTDOWN_PATH}").status_code == 200 - Network accessline 255
httpx.post(f"http://127.0.0.1:{port}{serve.SHUTDOWN_PATH}").status_code
tests/test_shipping.py
- Executable scriptline 1
Executable file - Access to secretsline 18
[Credential-related source omitted] - Network accessline 47
assert result.exit_code == 0 (post,) = telemetry_posts(cli) assert post.url == "https://api.ade.landing.ai/v2/telemetry" - Network accessline 48
(post,) = telemetry_posts(cli) assert post.url == "https://api.ade.landing.ai/v2/telemetry" body = json.loads(post.content) - Network accessline 49
assert post.url == "https://api.ade.landing.ai/v2/telemetry" - Network accessline 110
cli.transport.respond(200, {"accepted": 0}) # login's verification probe cli.invoke("auth", "login", "--api-key", "k-stored") cli.transport.requests.clear() # the flush below is the traffic under test - Network accessline 111
cli.invoke("auth", "login", "--api-key", "k-stored") cli.transport.requests.clear() # the flush below is the traffic under test cli.transport.respond(200, {"accepted": 2}) - Network accessline 112
cli.transport.requests.clear() # the flush below is the traffic under test - Network accessline 129
cli.transport.respond(200, {"accepted": 0}) cli.invoke("auth", "login", "--api-key", "k-dev", "--env", "dev") cli.transport.requests.clear() # the flushes below are the traffic under test - Network accessline 130
cli.invoke("auth", "login", "--api-key", "k-dev", "--env", "dev") cli.transport.requests.clear() # the flushes below are the traffic under test cli.transport.respond(200, {"accepted": 1}) - Network accessline 131
cli.transport.requests.clear() # the flushes below are the traffic under test - Access to secretsline 169
[Credential-related source omitted] - Network accessline 175
def test_custom_endpoint_events_ship_while_the_override_addresses_them(cli): custom = {"ADE_ENDPOINT": "https://ade.example.test"} - Network accessline 176
custom = {"ADE_ENDPOINT": "https://ade.example.test"} - Network accessline 182
(post,) = telemetry_posts(cli) assert post.url == "https://ade.example.test/v2/telemetry" - Network accessline 183
assert post.url == "https://ade.example.test/v2/telemetry" - Network accessline 187
def test_custom_events_wait_when_no_override_is_live(cli): cli.invoke("version", env={"ADE_ENDPOINT": "https://ade.example.test"}) - Network accessline 188
cli.invoke("version", env={"ADE_ENDPOINT": "https://ade.example.test"}) - Network accessline 203
def offline(request): raise httpx.ConnectError("no network") - Network accessline 204
raise httpx.ConnectError("no network") - Network accessline 219
cli.transport.respond(200, {"accepted": 0}) cli.invoke("auth", "login", "--api-key", "k-dev", "--env", "dev") cli.transport.requests.clear() # the flush below is the traffic under test - Network accessline 221
cli.transport.requests.clear() # the flush below is the traffic under test - Network accessline 223
def offline(request): raise httpx.ConnectError("no network") - Network accessline 224
raise httpx.ConnectError("no network") - Access to secretsline 285
[Credential-related source omitted]
tests/test_surface.py
- Executable scriptline 1
Executable file - Network accessline 89
{"CIRCLECI": "true"}, {"BUILDKITE": "true"}, {"JENKINS_URL": "https://ci.example.com"}, - Network accessline 90
{"BUILDKITE": "true"}, {"JENKINS_URL": "https://ci.example.com"}, {"TEAMCITY_VERSION": "2025.1"}, - Network accessline 91
{"JENKINS_URL": "https://ci.example.com"},
tests/test_telemetry.py
- Executable scriptline 1
Executable file - Network accessline 249
def test_an_endpoint_override_maps_back_to_its_environment_name(cli): cli.invoke("version", env={"ADE_ENDPOINT": "https://api.ade.dev.landing.ai"}) - Network accessline 250
cli.invoke("version", env={"ADE_ENDPOINT": "https://api.ade.dev.landing.ai"}) - Network accessline 256
def test_a_custom_endpoint_records_the_bucket_never_the_url(cli): cli.invoke("version", env={"ADE_ENDPOINT": "https://ade.internal.example.com"}) - Network accessline 257
cli.invoke("version", env={"ADE_ENDPOINT": "https://ade.internal.example.com"})
tests/test_templates.py
- Executable scriptline 1
Executable file
tests/test_term.py
- Executable scriptline 1
Executable file
tests/test_update.py
- Executable scriptline 1
Executable file - Access to secretsline 77
[Credential-related source omitted] - Access to secretsline 85
[Credential-related source omitted] - Network accessline 153
digest = "0" * 64 script_latest(cli, "v99.0.0") cli.transport.respond_with(lambda request: httpx.Response(200, content=payload)) - Network accessline 154
script_latest(cli, "v99.0.0") cli.transport.respond_with(lambda request: httpx.Response(200, content=payload)) cli.transport.respond_with( - Network accessline 155
cli.transport.respond_with(lambda request: httpx.Response(200, content=payload)) - Network accessline 156
cli.transport.respond_with( lambda request: httpx.Response( 200, content=f"{digest} {asset}\n".encode() - Network accessline 157
lambda request: httpx.Response( - Network accessline 295
}, ) cli.transport.respond_with(lambda request: httpx.Response(200, content=payload)) - Network accessline 296
) cli.transport.respond_with(lambda request: httpx.Response(200, content=payload)) cli.transport.respond_with( - Network accessline 297
cli.transport.respond_with(lambda request: httpx.Response(200, content=payload)) - Network accessline 298
cli.transport.respond_with( lambda request: httpx.Response(200, content=f"{digest} {asset}\n".encode()) ) - Network accessline 299
lambda request: httpx.Response(200, content=f"{digest} {asset}\n".encode()) - Access to secretsline 302
[Credential-related source omitted] - Network accessline 321
asset = update_mod.asset_name(update_mod.platform_target()) script_latest(cli, "v99.0.0") cli.transport.respond_with(lambda request: httpx.Response(200, content=garbage)) - Network accessline 322
script_latest(cli, "v99.0.0") cli.transport.respond_with(lambda request: httpx.Response(200, content=garbage)) cli.transport.respond_with( - Network accessline 323
cli.transport.respond_with(lambda request: httpx.Response(200, content=garbage)) - Network accessline 324
cli.transport.respond_with( lambda request: httpx.Response(200, content=f"{digest} {asset}\n".encode()) ) - Network accessline 325
lambda request: httpx.Response(200, content=f"{digest} {asset}\n".encode()) - Access to secretsline 418
[Credential-related source omitted] - Access to secretsline 430
[Credential-related source omitted] - Access to secretsline 443
[Credential-related source omitted]
tests/test_useragent.py
- Executable scriptline 1
Executable file - Access to secretsline 22
[Credential-related source omitted] - Network accessline 187
with pytest.raises(TypeError): Gateway( # ty: ignore[missing-argument] endpoint="https://api.example.test", - Network accessline 188
Gateway( # ty: ignore[missing-argument] endpoint="https://api.example.test", auth=StaticBearer(KEY), - Network accessline 189
endpoint="https://api.example.test", auth=StaticBearer(KEY), transport=httpx.MockTransport(lambda request: httpx.Response(200)), - Network accessline 190
auth=StaticBearer(KEY), transport=httpx.MockTransport(lambda request: httpx.Response(200)), ) - Network accessline 191
transport=httpx.MockTransport(lambda request: httpx.Response(200)),
tests/test_version.py
- Executable scriptline 1
Executable file
tests/test_view.py
- Executable scriptline 1
Executable file - Network accessline 201
assert html.count("data:image/webp;base64,") == 2 for external in ('src="http', "href=\"http", "<link", "fetch("): - Network accessline 202
for external in ('src="http', "href=\"http", "<link", "fetch("): - Network accessline 608
def test_view_degrades_for_url_documents(cli): item_id = seed_parse_item(cli, url="https://example.com/invoice.pdf") - Network accessline 609
item_id = seed_parse_item(cli, url="https://example.com/invoice.pdf") - Network accessline 785
item_id = seed_parse_item(cli, url="https://x.test/</script><img src=x>") - Network accessline 1101
item_id = seed_parse_item(cli, url="https://example.com/doc.pdf") - Network accessline 1140
item_id = seed_parse_item(cli, url="https://example.com/doc.pdf") pdf = _pdf_bytes() cli.transport.respond_with(lambda req: httpx.Response(200, content=pdf)) - Network accessline 1142
cli.transport.respond_with(lambda req: httpx.Response(200, content=pdf)) - Network accessline 1163
meta = json.loads((cli.home / "jobs" / item_id / "meta.json").read_text()) assert meta["attached_source"] == "document.pdf" assert meta["source"] == "https://example.com/doc.pdf" # provenance kept - Network accessline 1164
assert meta["attached_source"] == "document.pdf" assert meta["source"] == "https://example.com/doc.pdf" # provenance kept fetched = cli.transport.requests[-1] - Network accessline 1165
assert meta["source"] == "https://example.com/doc.pdf" # provenance kept fetched = cli.transport.requests[-1] assert str(fetched.url) == "https://example.com/doc.pdf" - Network accessline 1167
assert str(fetched.url) == "https://example.com/doc.pdf" - Network accessline 1173
item_id = seed_parse_item(cli, url="https://example.com/doc.pdf") cli.transport.respond_with(lambda req: httpx.Response(200, content=_pdf_bytes())) - Network accessline 1174
cli.transport.respond_with(lambda req: httpx.Response(200, content=_pdf_bytes())) - Network accessline 1193
item_id = seed_parse_item(cli, url="https://example.com/doc.pdf") pdf = _pdf_bytes() cli.transport.respond_with(lambda req: httpx.Response(200, content=pdf)) - Network accessline 1195
cli.transport.respond_with(lambda req: httpx.Response(200, content=pdf)) - Network accessline 1218
item_id = seed_parse_item(cli, url="https://example.com/doc.pdf") - Network accessline 1219
pdf = _pdf_bytes() cli.transport.respond_with( lambda req: httpx.Response( - Network accessline 1220
cli.transport.respond_with( lambda req: httpx.Response( 200, content=pdf, headers={"content-length": str(len(pdf))} - Network accessline 1221
lambda req: httpx.Response( - Network accessline 1242
item_id = seed_parse_item(cli, url="https://example.com/doc.pdf") cli.transport.respond_with(lambda req: httpx.Response(403, content=b"denied")) - Network accessline 1243
cli.transport.respond_with(lambda req: httpx.Response(403, content=b"denied")) - Network accessline 1258
item_id = seed_parse_item(cli, url="https://example.com/doc.pdf") cli.transport.respond_with(lambda req: httpx.Response(403, content=b"denied")) - Network accessline 1259
cli.transport.respond_with(lambda req: httpx.Response(403, content=b"denied")) - Network accessline 1286
monkeypatch.setattr(attach, "MAX_COPY_BYTES", 64) item_id = seed_parse_item(cli, url="https://example.com/doc.pdf") cli.transport.respond_with(lambda req: httpx.Response(200, content=b"x" * 200)) - Network accessline 1287
item_id = seed_parse_item(cli, url="https://example.com/doc.pdf") - Network accessline 1288
cli.transport.respond_with(lambda req: httpx.Response(200, content=b"x" * 200)) - Network accessline 1304
monkeypatch.setattr(attach, "MAX_COPY_BYTES", 64) item_id = seed_parse_item(cli, url="https://example.com/doc.pdf") - Network accessline 1305
item_id = seed_parse_item(cli, url="https://example.com/doc.pdf") cli.transport.respond_with( lambda req: httpx.Response( - Network accessline 1306
cli.transport.respond_with( lambda req: httpx.Response( 200, content=b"x" * 200, headers={"content-length": "200"} - Network accessline 1307
lambda req: httpx.Response( - Network accessline 1324
item_id = seed_parse_item(cli, url="https://example.com/doc.pdf") cli.transport.respond_with(lambda req: httpx.Response(200, content=_pdf_bytes())) - Network accessline 1325
cli.transport.respond_with(lambda req: httpx.Response(200, content=_pdf_bytes()))
tests/test_windows_hardening.py
uv.lock
- Network accessline 37
name = "altgraph" version = "0.17.5" source = { registry = "https://pypi.org/simple" } - Network accessline 38
version = "0.17.5" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/7e/f8/97fdf103f38fed6792a1601dbc16cc8aac56e7459a9fff08c812d8ae177a/altgraph-0.17.5.tar.gz", hash = "sha256:c87b395 - Network accessline 39
source = { registry = "https://pypi.org/simple" } - Network accessline 40
sdist = { url = "https://files.pythonhosted.org/packages/7e/f8/97fdf103f38fed6792a1601dbc16cc8aac56e7459a9fff08c812d8ae177a/altgraph-0.17.5.tar.gz", hash = "sha256:c87b395dd12fabde9c99573a9749d67da8d29ef9de0125c7f536699b4a9bc9e7", size = 48 - Network accessline 41
wheels = [ { url = "https://files.pythonhosted.org/packages/a9/ba/000a1996d4308bc65120167c21241a3b205464a2e0b58deda26ae8ac21d1/altgraph-0.17.5-py2.py3-none-any.whl", hash = "sha256:f3a22400bce1b0c701683820ac4f3b159cd301acab067c51c653e06 - Network accessline 42
{ url = "https://files.pythonhosted.org/packages/a9/ba/000a1996d4308bc65120167c21241a3b205464a2e0b58deda26ae8ac21d1/altgraph-0.17.5-py2.py3-none-any.whl", hash = "sha256:f3a22400bce1b0c701683820ac4f3b159cd301acab067c51c653e06961600597", siz - Network accessline 46
name = "annotated-doc" version = "0.0.4" source = { registry = "https://pypi.org/simple" } - Network accessline 47
version = "0.0.4" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcd - Network accessline 48
source = { registry = "https://pypi.org/simple" } - Network accessline 49
sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size - Network accessline 50
wheels = [ { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8b - Network accessline 51
{ url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", siz - Network accessline 55
name = "anyio" version = "4.14.2" source = { registry = "https://pypi.org/simple" } - Network accessline 56
version = "4.14.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - Network accessline 57
source = { registry = "https://pypi.org/simple" } - Network accessline 60
{ name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/61/cc/a381afa6efea9f496eff839d4a6a1aed3bfafc7b3ab4b0d1b243a12573dd/anyio-4.14.2.tar.gz", hash = "sha256:cfa1 - Network accessline 61
] sdist = { url = "https://files.pythonhosted.org/packages/61/cc/a381afa6efea9f496eff839d4a6a1aed3bfafc7b3ab4b0d1b243a12573dd/anyio-4.14.2.tar.gz", hash = "sha256:cfa139f3ed1a23ee8f88a145ddb5ac7605b8bbfd8592baacd7ce3d8bb4313c7f", size = 260 - Network accessline 62
sdist = { url = "https://files.pythonhosted.org/packages/61/cc/a381afa6efea9f496eff839d4a6a1aed3bfafc7b3ab4b0d1b243a12573dd/anyio-4.14.2.tar.gz", hash = "sha256:cfa139f3ed1a23ee8f88a145ddb5ac7605b8bbfd8592baacd7ce3d8bb4313c7f", size = 26017 - Network accessline 63
wheels = [ { url = "https://files.pythonhosted.org/packages/da/35/f2287558c17e29fafc8ef3daf819bb9834061cfa43bff8014f7df7f63bdc/anyio-4.14.2-py3-none-any.whl", hash = "sha256:9f505dda5ac9f0c8309b5e8bd445a8c2bf7246f3ce950121e45ea15bc41d14 - Network accessline 64
{ url = "https://files.pythonhosted.org/packages/da/35/f2287558c17e29fafc8ef3daf819bb9834061cfa43bff8014f7df7f63bdc/anyio-4.14.2-py3-none-any.whl", hash = "sha256:9f505dda5ac9f0c8309b5e8bd445a8c2bf7246f3ce950121e45ea15bc41d1494", size = 125 - Network accessline 68
name = "certifi" version = "2026.6.17" source = { registry = "https://pypi.org/simple" } - Network accessline 69
version = "2026.6.17" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/c9/c7/424b75da314c1045981bd9777432fad05a9e0c69daa4ed7e308bbaffe405/certifi-2026.6.17.tar.gz", hash = "sha256:02 - Network accessline 70
source = { registry = "https://pypi.org/simple" } - Network accessline 71
sdist = { url = "https://files.pythonhosted.org/packages/c9/c7/424b75da314c1045981bd9777432fad05a9e0c69daa4ed7e308bbaffe405/certifi-2026.6.17.tar.gz", hash = "sha256:024c88eeec92ca068db80f02b8b07c9cef7b9fe261d1d535abfd5abd6f6af432", size = - Network accessline 72
wheels = [ { url = "https://files.pythonhosted.org/packages/ef/2f/c5464532e965badff2f4c4c1a3a83f5697f0d7c407ed0cda44aaa99bb451/certifi-2026.6.17-py3-none-any.whl", hash = "sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f - Network accessline 73
{ url = "https://files.pythonhosted.org/packages/ef/2f/c5464532e965badff2f4c4c1a3a83f5697f0d7c407ed0cda44aaa99bb451/certifi-2026.6.17-py3-none-any.whl", hash = "sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db", size - Network accessline 77
name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } - Network accessline 78
version = "0.4.6" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb - Network accessline 79
source = { registry = "https://pypi.org/simple" } - Network accessline 80
sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 276 - Network accessline 81
wheels = [ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57a - Network accessline 82
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size - Network accessline 86
name = "h11" version = "0.16.0" source = { registry = "https://pypi.org/simple" } - Network accessline 87
version = "0.16.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45 - Network accessline 88
source = { registry = "https://pypi.org/simple" } - Network accessline 89
sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, - Network accessline 90
wheels = [ { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86 - Network accessline 91
{ url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515 - Network accessline 95
name = "httpcore" version = "1.0.9" source = { registry = "https://pypi.org/simple" } - Network accessline 96
version = "1.0.9" source = { registry = "https://pypi.org/simple" } dependencies = [ - Network accessline 97
source = { registry = "https://pypi.org/simple" } - Network accessline 100
{ name = "h11" }, ] sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff - Network accessline 101
] sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 8 - Network accessline 102
sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 854 - Network accessline 103
wheels = [ { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1 - Network accessline 104
{ url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 7 - Network accessline 108
name = "httpx" version = "0.28.1" source = { registry = "https://pypi.org/simple" } - Network accessline 109
version = "0.28.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - Network accessline 110
source = { registry = "https://pypi.org/simple" } - Network accessline 115
{ name = "idna" }, ] sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e - Network accessline 116
] sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141 - Network accessline 117
sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 14140 - Network accessline 118
wheels = [ { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59 - Network accessline 119
{ url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 735 - Network accessline 123
name = "idna" version = "3.18" source = { registry = "https://pypi.org/simple" } - Network accessline 124
version = "3.18" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654 - Network accessline 125
source = { registry = "https://pypi.org/simple" } - Network accessline 126
sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848", size = 196711, - Network accessline 127
wheels = [ { url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2" - Network accessline 128
{ url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2", size = 65455, - Network accessline 132
name = "iniconfig" version = "2.3.0" source = { registry = "https://pypi.org/simple" } - Network accessline 133
version = "2.3.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c7 - Network accessline 134
source = { registry = "https://pypi.org/simple" } - Network accessline 135
sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20 - Network accessline 136
wheels = [ { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53 - Network accessline 137
{ url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = - Network accessline 141
name = "macholib" version = "1.16.4" source = { registry = "https://pypi.org/simple" } - Network accessline 142
version = "1.16.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - Network accessline 143
source = { registry = "https://pypi.org/simple" } - Network accessline 145
{ name = "altgraph" }, ] sdist = { url = "https://files.pythonhosted.org/packages/10/2f/97589876ea967487978071c9042518d28b958d87b17dceb7cdc1d881f963/macholib-1.16.4.tar.gz", hash = "sha256:f408c93ab2e995cd2c46e34fe328b130404be143469e41bc366 - Network accessline 146
] sdist = { url = "https://files.pythonhosted.org/packages/10/2f/97589876ea967487978071c9042518d28b958d87b17dceb7cdc1d881f963/macholib-1.16.4.tar.gz", hash = "sha256:f408c93ab2e995cd2c46e34fe328b130404be143469e41bc366c807448979362", size = - Network accessline 147
sdist = { url = "https://files.pythonhosted.org/packages/10/2f/97589876ea967487978071c9042518d28b958d87b17dceb7cdc1d881f963/macholib-1.16.4.tar.gz", hash = "sha256:f408c93ab2e995cd2c46e34fe328b130404be143469e41bc366c807448979362", size = 59 - Network accessline 148
wheels = [ { url = "https://files.pythonhosted.org/packages/c7/d1/a9f36f8ecdf0fb7c9b1e78c8d7af12b8c8754e74851ac7b94a8305540fc7/macholib-1.16.4-py2.py3-none-any.whl", hash = "sha256:da1a3fa8266e30f0ce7e97c6a54eefaae8edd1e5f86f3eb8b95457c - Network accessline 149
{ url = "https://files.pythonhosted.org/packages/c7/d1/a9f36f8ecdf0fb7c9b1e78c8d7af12b8c8754e74851ac7b94a8305540fc7/macholib-1.16.4-py2.py3-none-any.whl", hash = "sha256:da1a3fa8266e30f0ce7e97c6a54eefaae8edd1e5f86f3eb8b95457cae90265ea", siz - Network accessline 153
name = "markdown-it-py" version = "4.2.0" source = { registry = "https://pypi.org/simple" } - Network accessline 154
version = "4.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - Network accessline 155
source = { registry = "https://pypi.org/simple" } - Network accessline 157
{ name = "mdurl" }, ] sdist = { url = "https://files.pythonhosted.org/packages/06/ff/7841249c247aa650a76b9ee4bbaeae59370dc8bfd2f6c01f3630c35eb134/markdown_it_py-4.2.0.tar.gz", hash = "sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a1 - Network accessline 158
] sdist = { url = "https://files.pythonhosted.org/packages/06/ff/7841249c247aa650a76b9ee4bbaeae59370dc8bfd2f6c01f3630c35eb134/markdown_it_py-4.2.0.tar.gz", hash = "sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49", si - Network accessline 159
sdist = { url = "https://files.pythonhosted.org/packages/06/ff/7841249c247aa650a76b9ee4bbaeae59370dc8bfd2f6c01f3630c35eb134/markdown_it_py-4.2.0.tar.gz", hash = "sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49", size - Network accessline 160
wheels = [ { url = "https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl", hash = "sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a3 - Network accessline 161
{ url = "https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl", hash = "sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a", si - Network accessline 165
name = "mdurl" version = "0.1.2" source = { registry = "https://pypi.org/simple" } - Network accessline 166
version = "0.1.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5ee - Network accessline 167
source = { registry = "https://pypi.org/simple" } - Network accessline 168
sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, - Network accessline 169
wheels = [ { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f - Network accessline 170
{ url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 - Network accessline 174
name = "packaging" version = "26.2" source = { registry = "https://pypi.org/simple" } - Network accessline 175
version = "26.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3 - Network accessline 176
source = { registry = "https://pypi.org/simple" } - Network accessline 177
sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661", size = 228 - Network accessline 178
wheels = [ { url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0 - Network accessline 179
{ url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 1 - Network accessline 183
name = "pefile" version = "2024.8.26" source = { registry = "https://pypi.org/simple" } - Network accessline 184
version = "2024.8.26" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/03/4f/2750f7f6f025a1507cd3b7218691671eecfd0bbebebe8b39aa0fe1d360b8/pefile-2024.8.26.tar.gz", hash = "sha256:3ff - Network accessline 185
source = { registry = "https://pypi.org/simple" } - Network accessline 186
sdist = { url = "https://files.pythonhosted.org/packages/03/4f/2750f7f6f025a1507cd3b7218691671eecfd0bbebebe8b39aa0fe1d360b8/pefile-2024.8.26.tar.gz", hash = "sha256:3ff6c5d8b43e8c37bb6e6dd5085658d658a7a0bdcd20b6a07b1fcfc1c4e9d632", size = 7 - Network accessline 187
wheels = [ { url = "https://files.pythonhosted.org/packages/54/16/12b82f791c7f50ddec566873d5bdd245baa1491bac11d15ffb98aecc8f8b/pefile-2024.8.26-py3-none-any.whl", hash = "sha256:76f8b485dcd3b1bb8166f1128d395fa3d87af26360c2358fb75b80019b - Network accessline 188
{ url = "https://files.pythonhosted.org/packages/54/16/12b82f791c7f50ddec566873d5bdd245baa1491bac11d15ffb98aecc8f8b/pefile-2024.8.26-py3-none-any.whl", hash = "sha256:76f8b485dcd3b1bb8166f1128d395fa3d87af26360c2358fb75b80019b957c6f", size = - Network accessline 192
name = "pillow" version = "12.3.0" source = { registry = "https://pypi.org/simple" } - Network accessline 193
version = "12.3.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/1c/3d/bb7fca845737cf9d7dbde16ed1843984665ff2e0a518f5db43e77ec540b9/pillow-12.3.0.tar.gz", hash = "sha256:3b8182a76 - Network accessline 194
source = { registry = "https://pypi.org/simple" } - Network accessline 195
sdist = { url = "https://files.pythonhosted.org/packages/1c/3d/bb7fca845737cf9d7dbde16ed1843984665ff2e0a518f5db43e77ec540b9/pillow-12.3.0.tar.gz", hash = "sha256:3b8182a766685eaa002637e28b4ec8d6b18819a0c71f579bf0dbaa5830297cce", size = 4702 - Network accessline 196
wheels = [ { url = "https://files.pythonhosted.org/packages/37/bf/fb3ebff8ddcb76aac5a01389251bbbb9519922a9b520d8247c1ca864a25d/pillow-12.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ba09209fbe443b4acccebe845d8a138b89a8f4fbae - Network accessline 197
{ url = "https://files.pythonhosted.org/packages/37/bf/fb3ebff8ddcb76aac5a01389251bbbb9519922a9b520d8247c1ca864a25d/pillow-12.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ba09209fbe443b4acccebe845d8a138b89a8f4fbaeedd44953490b531 - Network accessline 198
{ url = "https://files.pythonhosted.org/packages/d8/66/9a386a92561f402389a4fc70c18838bf6d35eb5eb5c6850b4b2dc64f5048/pillow-12.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffd0c5368496f41b0944be820fcb7a838aa6e623d250b01acf2643939c3 - Network accessline 199
{ url = "https://files.pythonhosted.org/packages/25/27/ac8f99618ffd3dde21db0f4d4b1d2ab00c0880595bfd17df103f7f39fd0c/pillow-12.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d9c7f76c0673154f044e9d78c8655fb - Network accessline 200
{ url = "https://files.pythonhosted.org/packages/84/21/a35af28dcc61f37ed850a2d64c65c701321dfbf25085e469d5559360cbbf/pillow-12.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:78cb2c6865a35ab8ff8b75fd122f6033b - Network accessline 201
{ url = "https://files.pythonhosted.org/packages/eb/51/8b08617af3ad95e33ce6d7dd2c99ed6c8298f7fb131636303956be022e25/pillow-12.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e491916b378fba47242221bb9ead245211b70d504f495d105d17b14 - Network accessline 202
{ url = "https://files.pythonhosted.org/packages/1d/72/cf78ac9780bb93c28328f408973845a309d4d145041665f734572ced1b52/pillow-12.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0dd2064cbc55aaec028ef5fbb60fa47bb6c3e7918e07ff17935284b2 - Network accessline 203
{ url = "https://files.pythonhosted.org/packages/20/20/25e0f4dc178a6bc0696793720055519a0de89e7661dae886992decbd2f81/pillow-12.3.0-cp312-cp312-win32.whl", hash = "sha256:dbce0b29841537a2fa4a214c2bbf14de3587c9680caa9b4e217568472490b28f", size - Network accessline 204
{ url = "https://files.pythonhosted.org/packages/45/89/da2f7971a317f83d807fdd4065c0af40208e59e692cc43d315a71a0e96d1/pillow-12.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a2b55dd6b2a4c4b7d87ffa56bdb33fdc5fdb9a462173861a7bc097f17d91cb09", - Network accessline 205
{ url = "https://files.pythonhosted.org/packages/de/47/4845a0a6c0dbf1db8456bd9fc791f13c5ced7ced20606d08a0aacfd25b49/pillow-12.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:331b624368d4f1d069149002f25f44bc61c8919ce8ddb3c45bdad8f6e2d89510", - Network accessline 206
{ url = "https://files.pythonhosted.org/packages/9d/ac/31fb64e1e7efb5a4b50cd3d92049ba89ac6e4d8d3bb6a74e15048ca3353e/pillow-12.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:21900ce7ba264168cd50defae43cd75d25c833ad4ad6e73ffc559 - Network accessline 207
{ url = "https://files.pythonhosted.org/packages/87/b4/9805e23d2b4d77842b468513841fda254ee42f0289d25088340e4ff46e2d/pillow-12.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:4e8c2a84d977f50b9daed6eeaf3baef67d00d5d74d9322 - Network accessline 208
{ url = "https://files.pythonhosted.org/packages/df/39/ecf519435a200c693fe053a6ee4d835b41cf963a4dfc2551c4e637cb2a71/pillow-12.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:ae26d61dfa7a47befdc7572b521024e8745f3d809bd95 - Network accessline 209
{ url = "https://files.pythonhosted.org/packages/42/92/2fc3ffad878ae8dd5469ec1bc8eb83b71f48e13efdf68f02709003982a32/pillow-12.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7a743ff716f746fc19a9557f60dab1600d4613255f8a7aeb3cdde4db7 - Network accessline 210
{ url = "https://files.pythonhosted.org/packages/10/76/8803c13605b763d33d156c4678fc77f8443389c0c51c8aef707bb02015f4/pillow-12.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d69141514cc30b774ceea5e3ed3a6635c8d8a96edf664689b890f408911 - Network accessline 211
{ url = "https://files.pythonhosted.org/packages/1f/01/e18aff37cb0b4aac47ac90f016d347a49aca667ef97f190b06ac2aabc928/pillow-12.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f7401aebd7f581d7f83a439d87d4749 - Network accessline 212
{ url = "https://files.pythonhosted.org/packages/f7/62/de5bdd77d935331f4f802edc11e4d82950f642caad6cb2f949837b8560e2/pillow-12.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0847a763afefb695bc912d7c131e7e063 - Network accessline 213
{ url = "https://files.pythonhosted.org/packages/70/4d/105627a13300c5e0df1d174230b32fd1273062c96f7745fd552b945d1e1d/pillow-12.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:571b9fcb07b97ef3a492028fb3d2dc0993ca23a06138b0315286566 - Network accessline 214
{ url = "https://files.pythonhosted.org/packages/6b/1d/f13de01a553988ab895ba1c722e06cf3144d4f57656fd5b81b6d881f1179/pillow-12.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:756c768d0c9c2955feb7a56c37ea24aea2e369f8d36a88da270b6a9f - Network accessline 215
{ url = "https://files.pythonhosted.org/packages/c9/f9/066794cca041b969964f779ee5fa66a9498bbf34248ac39c5d7954e4198f/pillow-12.3.0-cp313-cp313-win32.whl", hash = "sha256:a876864214e136f0eb367788dbd7df045f4806801518e2cfe9e13229cfe06d8f", size - Network accessline 216
{ url = "https://files.pythonhosted.org/packages/a6/9b/7a58e61d62be561da3a356fe2384d4059a6345fc130e23ef1c36a5b81d24/pillow-12.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:1cca606cd25738df4ed873d5ad46bbdb3d83b5cbca291f6b4ff13a4df6b0bbe8", - Network accessline 217
{ url = "https://files.pythonhosted.org/packages/aa/b0/c4ed4f0ef8f8fa5ee8351537db6650bb8189f7e118842978dd6589065692/pillow-12.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:b629de27fda84b42cde7edef0d85f13b958b47f6e9bbcbba9b673c562a89bd8b", - Network accessline 218
{ url = "https://files.pythonhosted.org/packages/dc/01/001f65b68192f0228cc1dbbc8d2530ab5d58b61037ba0587f946fea607cd/pillow-12.3.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:9cf95fe4d0f84c82d282745d9bb08ad9f926efa00be4697e767b8 - Network accessline 219
{ url = "https://files.pythonhosted.org/packages/1a/d2/0219746d0fd16fc8a84498e79452375be3797d3ce4044596ce565164b84f/pillow-12.3.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:8728f216dcdb6e6d555cf971cb34076139ad74b31fc2c1 - Network accessline 220
{ url = "https://files.pythonhosted.org/packages/c8/02/8d0bc62ef0302318c46ff2a512822d2610e81c7aa46c9b3abe6cbaca5ad0/pillow-12.3.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:a45650e8ce7fafffd731db8550230db6b0d306d181a90 - Network accessline 221
{ url = "https://files.pythonhosted.org/packages/85/e2/73c77d218410b14f5f2d565e8a998d5317b7b9c75368d29985139f7a46f0/pillow-12.3.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:ba54cfebe86920a559a7c4d6b9050791c20513650a1952ebe3368c7dc - Network accessline 222
{ url = "https://files.pythonhosted.org/packages/c7/da/32c752228ae345f489e3a42499d817b6c3996da7e8a3bc7a04fc806b243b/pillow-12.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e158cb00350dc278f3b91551101aa7d12415a66ebf2c91d8d5ac14e56dd - Network accessline 223
{ url = "https://files.pythonhosted.org/packages/b1/9d/8b2c807dbef61a5197c047afe99823787eb66f63daf9fb2432f91d6f0462/pillow-12.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e9aeb04d6aef139de265b29683e119b - Network accessline 224
{ url = "https://files.pythonhosted.org/packages/5c/44/c85361f65dbe00eea8576ee467c768d25129989efb76e94f205e9ca9bb46/pillow-12.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:251bf95b67017e27b13d82f5b326234ca - Network accessline 225
{ url = "https://files.pythonhosted.org/packages/18/7e/e483414b35800b86b6f08dbbc7803fb5cd52c4d6f897f47d53ea2c7e6f65/pillow-12.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fe3cca2e4e8a592be0f269a1ca4835c25199d9f3ce815c8491048f7 - Network accessline 226
{ url = "https://files.pythonhosted.org/packages/f0/f4/68c491844841ede6bed70189546b3ee9731cf9f2cbad396faff5e1ccba45/pillow-12.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:23aceaa007d6172b02c277f0cd359c79492bbb14f7072b4ede9fbcaf - Network accessline 227
{ url = "https://files.pythonhosted.org/packages/a3/34/77f3f793fed8efc7d243f21b33c5a3f0d1c97ee70346d3db855587e155ff/pillow-12.3.0-cp314-cp314-win32.whl", hash = "sha256:af8d94b0db561cf68b88a267c5c44b49e134f525d0dc2cb7ed413a66bc23559a", size - Network accessline 228
{ url = "https://files.pythonhosted.org/packages/f1/e0/492879f69d94f91f60fc8cd05ba03650e9520afebb2fb7aa12777d7c7f38/pillow-12.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:fdafc9cce40277e0f7a0feabce0ee50dd2fa1800f3b38015e51296b5e814048d", - Network accessline 229
{ url = "https://files.pythonhosted.org/packages/c9/ac/6b11f2875f1c2ac040d84e1bbf9cf22a88038f901ca1037898b280b38365/pillow-12.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:e91206ee562682b51b98ef4b26a6ef48fd84e15fd4c4bc5ec768eb641d206838", - Network accessline 230
{ url = "https://files.pythonhosted.org/packages/52/69/c2208e56af9bfc1913afb24020297a691eb1d4ef688474c8a04913f65e04/pillow-12.3.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:164b31cd1a0490ab6efae01aa5df49da7061be0af1b30e035b6e9a1b - Network accessline 231
{ url = "https://files.pythonhosted.org/packages/07/70/e5686d753e898a45d778ff1718dba8516ead6ab6b95d85fc8c4b70650cf2/pillow-12.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5afb51d599ea772b8365ae807ae557f18bccfe46ab261fd1c2a9ed700f - Network accessline 232
{ url = "https://files.pythonhosted.org/packages/d5/37/25c6692f06927ee973ff18c8d9ee98ad0b4d84ee67a09610c2dd1447958e/pillow-12.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3edce1d53195db527e0191f84b71d0 - Network accessline 233
{ url = "https://files.pythonhosted.org/packages/cc/91/420637fcb8f1bc11029e403b4538e6694744428d8246118e45719f944556/pillow-12.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bf16ba1b4d0b6b7c8e534936632270cf - Network accessline 234
{ url = "https://files.pythonhosted.org/packages/10/08/b94d7811281ccf0d143a1cf768d1c49e1e54af63e7b708ab2ee3eb87face/pillow-12.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:24870b09b224f7ae3c39ed07d10e819d06f8720bc551847b1d6238 - Network accessline 235
{ url = "https://files.pythonhosted.org/packages/d2/87/24233f785f55474dc02ce3e739c5528a77e3a862e9333d1dd7a25cc31f70/pillow-12.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:30f2aa603c41533cc25c05acd0da21636e84a315768feb631c93717 - Network accessline 236
{ url = "https://files.pythonhosted.org/packages/23/26/fcb2f6e37175b04f53570b59937867e2b80ee1685e744023153028fc14f9/pillow-12.3.0-cp314-cp314t-win32.whl", hash = "sha256:4b0a7fe987b14c31ebda6083f74f22b561fd3739bc0ac51e019622e3d72668c7", siz - Network accessline 237
{ url = "https://files.pythonhosted.org/packages/90/de/3634abee5f1c9e13c56787b7d5517b0ba8d6de51700b95578cf338349c9f/pillow-12.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:962864dc93511324d51ddbb5b9f8731bf71675b93ca612a07441896f4688fb8c", - Network accessline 238
{ url = "https://files.pythonhosted.org/packages/ce/2a/fd13f8eb24de5714a6eb444a3d67e2842c6c576e159a43793adf23051351/pillow-12.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0740a512dc522224c77d9aa5a8d70d8b7d73fb91f2c21125d8d025d3b8990e45", - Network accessline 239
{ url = "https://files.pythonhosted.org/packages/5d/dc/8fdce34ec725a33c81c6ba122b904d6b9024e50ea9ac7bede62fab54506c/pillow-12.3.0-cp315-cp315-ios_13_0_arm64_iphoneos.whl", hash = "sha256:0feb2e9d6ad6c9e3c06effe9d00f3f1e618a6643273576b016f59 - Network accessline 240
{ url = "https://files.pythonhosted.org/packages/76/66/2044b9a63d3b84ff048228dfcb7cd9bf0df983e8470971bf7d4c57b693de/pillow-12.3.0-cp315-cp315-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:9e881fca225083806662a5c43d627d215f258ff43c890f - Network accessline 241
{ url = "https://files.pythonhosted.org/packages/52/7e/1f67e6f4ece6b582ee4b539decbcc9f848dc245a93ed8cd7338bafef72f1/pillow-12.3.0-cp315-cp315-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:4998562bf62a445225f22e07c896bb04b35b1b1f2eb6d - Network accessline 242
{ url = "https://files.pythonhosted.org/packages/12/40/d306fc2c8e4d45d7f175c77edca7063be7b86fe7fe6e68f4353bf71d808c/pillow-12.3.0-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:dc624f6bc473dacdf7ef7eb8678d0d08edf15cd94fad6ae5c7d6cc67a - Network accessline 243
{ url = "https://files.pythonhosted.org/packages/dd/44/668fb1437e8ce420f62d6106eb66e44a5971602a4d794615bdf79315d82d/pillow-12.3.0-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:71d6097b330eea8fd15097780c8e89cb1a8ce7838669f48c5bacd6f663d - Network accessline 244
{ url = "https://files.pythonhosted.org/packages/0c/08/93fa2e70e30a2d81547e481b6ee2bb9522117221fb1e0ce4b5df70967677/pillow-12.3.0-cp315-cp315-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:28ce87c5ab450a9dd970b52e5aca5fe - Network accessline 245
{ url = "https://files.pythonhosted.org/packages/f8/6d/043e96ff814fc31a33077e4cba86082167db520c93632afdf2042febbb0c/pillow-12.3.0-cp315-cp315-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6b02afb9b97f65fbca5f31db6a2a3ba21 - Network accessline 246
{ url = "https://files.pythonhosted.org/packages/af/92/ba71d2ee2ac0edf3fa33bd9d5ee9ee080da70b1766f3ca3934f9938ddac9/pillow-12.3.0-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:1182d52bc2d5e5d7d0949503aa7e36d12f42205dc287e4883f407b1 - Network accessline 247
{ url = "https://files.pythonhosted.org/packages/0f/ce/e63064e2122923ff687c8ad792d0d736a7b3920a56a46982e81a7fdd25d6/pillow-12.3.0-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:e795b7eb908249c4e43c7c99fac7c2c75dab0c43566e37db472a355f - Network accessline 248
{ url = "https://files.pythonhosted.org/packages/54/76/a09cc3ccc8d773a7283d34c38bec1708f9e3cc932093cbc4c5e71ac4060b/pillow-12.3.0-cp315-cp315-win32.whl", hash = "sha256:57b3d78c95ba9059768b10e28b813002261d3f3dfc55cc48b0c988f625175827", size - Network accessline 249
{ url = "https://files.pythonhosted.org/packages/3e/03/1846c49ba3b1d5550392a4bbd06d6fb4578e1cd91a803198b5c90f5f7d53/pillow-12.3.0-cp315-cp315-win_amd64.whl", hash = "sha256:fa4ecea169a355be7a3ade2c783e2ed12f0e40d2c5621cda8b3297faf7fbb9f5", - Network accessline 250
{ url = "https://files.pythonhosted.org/packages/fb/bb/89f35dcc79610423f9f195504d7def7f0d1416a711541b42867e25fe3412/pillow-12.3.0-cp315-cp315-win_arm64.whl", hash = "sha256:877c3f311ff35410f690861c4409e7ccbf0cd2f878e50628a28e5a0bb689e658", - Network accessline 251
{ url = "https://files.pythonhosted.org/packages/30/88/707027ba09942dfa2c28759b5c222d769290a41c6d20ea60ec250801941f/pillow-12.3.0-cp315-cp315t-macosx_10_15_x86_64.whl", hash = "sha256:e9871b1ffbfa9656b60aeee92ed5136a5742696006fa322b29ea3d8d - Network accessline 252
{ url = "https://files.pythonhosted.org/packages/b0/6d/00352fa25332c2569cd387851f568cc5a4b75a9adbfb37ac4fbce4c02eec/pillow-12.3.0-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:53aa02d20d10c3d814d536aa4e5ac9b84ca0ff5a88377963b085ad6822 - Network accessline 253
{ url = "https://files.pythonhosted.org/packages/13/4f/9e049dfa21af7c22427275720e2490267ba8138120add5c4c574deb69782/pillow-12.3.0-cp315-cp315t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:446c34dcc4324b084a53b705127dc1 - Network accessline 254
{ url = "https://files.pythonhosted.org/packages/36/16/cf6eeaae8d0fce8dd390a33437cf68c5d5bd73834a2bc6e2f14efda0ab45/pillow-12.3.0-cp315-cp315t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf1845d02ad822a369a49f2bb9345b16 - Network accessline 255
{ url = "https://files.pythonhosted.org/packages/1e/69/dbf769bdd55f48bf5733cac28edc6364ffaa072ec9ba336266e4fe66be55/pillow-12.3.0-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:186941b6aef820ad110fb01fb06eb925374dc3a21b17e37ec9a53b - Network accessline 256
{ url = "https://files.pythonhosted.org/packages/a0/e1/ffc9cfc2eea0d178da8018e18e959301ad9d6bc9f3edb7181e748a474b97/pillow-12.3.0-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:f13c32a3abd6079a66d9526e18dad9b6d280384d49d7c54040cd57b - Network accessline 257
{ url = "https://files.pythonhosted.org/packages/18/f0/a5595c1e8c3ae44b9828cb2f0fa8155e5095ef04d6327b8f61cf44a3df85/pillow-12.3.0-cp315-cp315t-win32.whl", hash = "sha256:1657923d2d45afb66526e5b933e5b3052e6bdea196c90d3abb2424e18c77dae8", siz - Network accessline 258
{ url = "https://files.pythonhosted.org/packages/e4/04/62bcd9f844984c5938d3b05264a61d797a29d3e0812341a8204af70bbdee/pillow-12.3.0-cp315-cp315t-win_amd64.whl", hash = "sha256:8cd2f7bdda092d99c9fc2fb7391354f306d01443d22785d0cbfafa2e2c8bb418", - Network accessline 259
{ url = "https://files.pythonhosted.org/packages/3d/68/1f3066acedf37673694a7141381d8f811ae97f30d34413d236abe7d489f1/pillow-12.3.0-cp315-cp315t-win_arm64.whl", hash = "sha256:06ff022112bc9cbf83b60f8e028d94ad87b60621706487e65f673de61610ab59", - Network accessline 263
name = "pluggy" version = "1.6.0" source = { registry = "https://pypi.org/simple" } - Network accessline 264
version = "1.6.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b762 - Network accessline 265
source = { registry = "https://pypi.org/simple" } - Network accessline 266
sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412 - Network accessline 267
wheels = [ { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd47 - Network accessline 268
{ url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 205 - Network accessline 272
name = "pygments" version = "2.20.0" source = { registry = "https://pypi.org/simple" } - Network accessline 273
version = "2.20.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd0 - Network accessline 274
source = { registry = "https://pypi.org/simple" } - Network accessline 275
sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 49 - Network accessline 276
wheels = [ { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946 - Network accessline 277
{ url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = - Network accessline 281
name = "pyinstaller" version = "6.21.0" source = { registry = "https://pypi.org/simple" } - Network accessline 282
version = "6.21.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - Network accessline 283
source = { registry = "https://pypi.org/simple" } - Network accessline 291
{ name = "setuptools" }, ] sdist = { url = "https://files.pythonhosted.org/packages/d5/4d/ec706c3fcf39e26888c35b39615ff4d5865d184069666c47492cff1fbe50/pyinstaller-6.21.0.tar.gz", hash = "sha256:bb9fab705983e393a2d1cac77d6972513057ad800215fd - Network accessline 292
] sdist = { url = "https://files.pythonhosted.org/packages/d5/4d/ec706c3fcf39e26888c35b39615ff4d5865d184069666c47492cff1fbe50/pyinstaller-6.21.0.tar.gz", hash = "sha256:bb9fab705983e393a2d1cac77d6972513057ad800215fd861dc15ff5272e98fd", size - Network accessline 293
sdist = { url = "https://files.pythonhosted.org/packages/d5/4d/ec706c3fcf39e26888c35b39615ff4d5865d184069666c47492cff1fbe50/pyinstaller-6.21.0.tar.gz", hash = "sha256:bb9fab705983e393a2d1cac77d6972513057ad800215fd861dc15ff5272e98fd", size = - Network accessline 294
wheels = [ { url = "https://files.pythonhosted.org/packages/0c/4a/53cf98bf66daed012dc9cd78c8203f19a675d696f2fc12afcf8c5049a0e0/pyinstaller-6.21.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:327d132389f37912609e01be62810cf96b5a - Network accessline 295
{ url = "https://files.pythonhosted.org/packages/0c/4a/53cf98bf66daed012dc9cd78c8203f19a675d696f2fc12afcf8c5049a0e0/pyinstaller-6.21.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:327d132389f37912609e01be62810cf96b5aa95b613903e4b86 - Network accessline 296
{ url = "https://files.pythonhosted.org/packages/30/83/b591295c352ef464c50b4c6ffff1c4f771d875c9e833f578d1b9f564f6b3/pyinstaller-6.21.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7071d4b094d5b40deeef5fa3d3b98a1b846087f7562b49209663d - Network accessline 297
{ url = "https://files.pythonhosted.org/packages/3d/8f/88fff4e403873b1e22286911350e75ff00db014aa08e57045da9d4328993/pyinstaller-6.21.0-py3-none-manylinux2014_i686.whl", hash = "sha256:6b6374d652107dd4a2eeece903ff82bb4045bb5e1006c5a158a6dcdb - Network accessline 298
{ url = "https://files.pythonhosted.org/packages/8a/13/f0e48fbdfd1d05d948157121cea8b1b823dcb89efe6934b71fdd8bdb3f0f/pyinstaller-6.21.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:4e3108b3f02384560da70e39b8bf22b0ad597d02bd68a40d76ea9 - Network accessline 299
{ url = "https://files.pythonhosted.org/packages/dd/d5/ea7878cf9924ed30d946d8288777424e6d069d94f5bde56b4d0890069664/pyinstaller-6.21.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:697532279f535ad572bda613db4f821540e235c7854ca6da4d3bf03 - Network accessline 300
{ url = "https://files.pythonhosted.org/packages/9f/09/51b8905714b733bac66dbc041a7821372d70d888d273ae474c4037d4202d/pyinstaller-6.21.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:605169523a6b5ace39f13dfbff21add9f2bc43df99c7daf9394fef - Network accessline 301
{ url = "https://files.pythonhosted.org/packages/4b/43/d77779439d8c6c2e27a77bcfbd1d5cc0f568ebb611bb472b11af81b5f177/pyinstaller-6.21.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:5fa56746c1e76f93634d018502301378a2d0c382553d37d8c3c34 - Network accessline 302
{ url = "https://files.pythonhosted.org/packages/51/8f/c22df1f6837784ac349057ba693f08e7b1ca7a0e06f9c33c63bc6280007b/pyinstaller-6.21.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:42395ec76df8e8120c36b13339d9db8cab83e316a12839ee303cc0 - Network accessline 303
{ url = "https://files.pythonhosted.org/packages/c9/76/1ce8a27ce62ba8cf3a87c9ce6d575610f4e55d7cb0123e7512fc3f4b921a/pyinstaller-6.21.0-py3-none-win32.whl", hash = "sha256:c6b28d30d8fd99ce162ff3aab5013ed44dbfb747566b1f01b9bed7964d7c14e9", si - Network accessline 304
{ url = "https://files.pythonhosted.org/packages/c1/fa/ca1d7e5257dd8566a9dfc0dfb02f8a8075eeb53d4b2d3c579f1276759042/pyinstaller-6.21.0-py3-none-win_amd64.whl", hash = "sha256:7fae06c494ce0ebfe6bd3055c0e409def884f63af2e3705d06bd431ad9237fc7" - Network accessline 305
{ url = "https://files.pythonhosted.org/packages/dc/75/21b51523ce8d96629b71311775a0a65f5f5a872124ab0de33e5c848f8bff/pyinstaller-6.21.0-py3-none-win_arm64.whl", hash = "sha256:f13c95c9c03fb567217135919f93815c305813126780b0ed6e0123cb8acaf025" - Network accessline 309
name = "pyinstaller-hooks-contrib" version = "2026.6" source = { registry = "https://pypi.org/simple" } - Network accessline 310
version = "2026.6" source = { registry = "https://pypi.org/simple" } dependencies = [ - Network accessline 311
source = { registry = "https://pypi.org/simple" } - Network accessline 313
{ name = "packaging" }, ] sdist = { url = "https://files.pythonhosted.org/packages/94/5b/c9fe0db5e83ee1c39b2258fa21d23b15e1a60786b6c5990ee5074ead8bb6/pyinstaller_hooks_contrib-2026.6.tar.gz", hash = "sha256:bef5002c32f4f50bd55b005da12cff64e - Network accessline 314
] sdist = { url = "https://files.pythonhosted.org/packages/94/5b/c9fe0db5e83ee1c39b2258fa21d23b15e1a60786b6c5990ee5074ead8bb6/pyinstaller_hooks_contrib-2026.6.tar.gz", hash = "sha256:bef5002c32f4f50bd55b005da12cff64eca8783e7eaf86a06a6241016 - Network accessline 315
sdist = { url = "https://files.pythonhosted.org/packages/94/5b/c9fe0db5e83ee1c39b2258fa21d23b15e1a60786b6c5990ee5074ead8bb6/pyinstaller_hooks_contrib-2026.6.tar.gz", hash = "sha256:bef5002c32f4f50bd55b005da12cff64eca8783e7eaf86a06a62410164b - Network accessline 316
wheels = [ { url = "https://files.pythonhosted.org/packages/e7/31/f2d7343d8ed5f7c4678377886f6ce533e6eaaa131b252ce950114c2a7efa/pyinstaller_hooks_contrib-2026.6-py3-none-any.whl", hash = "sha256:fd13b8ac126b35361175edacd41a0d97080b75dd5f - Network accessline 317
{ url = "https://files.pythonhosted.org/packages/e7/31/f2d7343d8ed5f7c4678377886f6ce533e6eaaa131b252ce950114c2a7efa/pyinstaller_hooks_contrib-2026.6-py3-none-any.whl", hash = "sha256:fd13b8ac126b35361175edacd41a0d97080b75dd5f4b594ecefefff96 - Network accessline 321
name = "pypdfium2" version = "5.11.0" source = { registry = "https://pypi.org/simple" } - Network accessline 322
version = "5.11.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/a8/b9/a887db9950379fe619f6921ade84730346e6adf008b197951ddcc42dfd1a/pypdfium2-5.11.0.tar.gz", hash = "sha256:073374 - Network accessline 323
source = { registry = "https://pypi.org/simple" } - Network accessline 324
sdist = { url = "https://files.pythonhosted.org/packages/a8/b9/a887db9950379fe619f6921ade84730346e6adf008b197951ddcc42dfd1a/pypdfium2-5.11.0.tar.gz", hash = "sha256:0733749ac253c615953a5e75d4322b9f1de8c0d90137ec8dbcef403f3e57b5d9", size = 2 - Network accessline 325
wheels = [ { url = "https://files.pythonhosted.org/packages/94/09/0aec4588adaa7eb4e42da127a57a5dd3a3997ff32be62af93f8afeb4668b/pypdfium2-5.11.0-py3-none-android_23_arm64_v8a.whl", hash = "sha256:115bc68ab2e85c9ee46f97a4c1794f1d7205c8b76 - Network accessline 326
{ url = "https://files.pythonhosted.org/packages/94/09/0aec4588adaa7eb4e42da127a57a5dd3a3997ff32be62af93f8afeb4668b/pypdfium2-5.11.0-py3-none-android_23_arm64_v8a.whl", hash = "sha256:115bc68ab2e85c9ee46f97a4c1794f1d7205c8b763fc5c16d9893eaa - Network accessline 327
{ url = "https://files.pythonhosted.org/packages/7a/53/9e349a311cb0e7cef5dd0824a6f96c9b161da5e5e67a3db030d38e624fe9/pypdfium2-5.11.0-py3-none-android_23_armeabi_v7a.whl", hash = "sha256:4396d0848b79134fcdf141a4e3dfe6719efe1162309a02876b4400 - Network accessline 328
{ url = "https://files.pythonhosted.org/packages/d2/13/13571dc7f1d11a4e4bde6ab8961318b04ff70bdc2aea5e7f88be5ef53167/pypdfium2-5.11.0-py3-none-macosx_12_0_arm64.whl", hash = "sha256:73fe55dd258f02332bc0a34128ddc2994fd610e664d1f2f7d78dd9e2570 - Network accessline 329
{ url = "https://files.pythonhosted.org/packages/84/a2/9865e2822e97f6e4bed3b0e4838bd88444c62df6ebe0ccae352027133120/pypdfium2-5.11.0-py3-none-macosx_12_0_x86_64.whl", hash = "sha256:badb4f4df98e25fb1b58301911c98fa18da60de98b0223a6ffa91717be - Network accessline 330
{ url = "https://files.pythonhosted.org/packages/a2/bb/dcd0ba152626c30a67bff43974b728c6bdd9a0d34af54cfa875489e46ce2/pypdfium2-5.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fbff7c3e3141f24f3a25cedddbb6c6d - Network accessline 331
{ url = "https://files.pythonhosted.org/packages/65/62/39b40afda909bd65b212e9dbf32e7c6a2da4205ff64576965a49ba689c47/pypdfium2-5.11.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:faeda49c171be254b5028b7d17e54306c5 - Network accessline 332
{ url = "https://files.pythonhosted.org/packages/6f/cf/999b793ca17d153765dc3656e7f4cc90c4bf411b9262f15b8e7e31af164f/pypdfium2-5.11.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b63f6f1e67d05d2bc36f55c35ede5cd18ded88 - Network accessline 333
{ url = "https://files.pythonhosted.org/packages/73/6c/54fd2b487eed6a420ee7fff5c7754739379c4459fa185deab3cb2b72e4e2/pypdfium2-5.11.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44f96d8459b4ba9d1330ab44a8dde836 - Network accessline 334
{ url = "https://files.pythonhosted.org/packages/3b/8f/690b9a1b8de405ff7693c1d10472f0c5395294c6d53654ae1ef97ccf70fa/pypdfium2-5.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba8a78329c10f01c80b1f6e9aa33cac136 - Network accessline 335
{ url = "https://files.pythonhosted.org/packages/54/fc/18298367dc073041320bbb5d51fb3b42b0d9164fd13bd4d13dcb0d66bc64/pypdfium2-5.11.0-py3-none-manylinux_2_27_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e7a60197c5d18b0ec77a695e4a1082f89f3 - Network accessline 336
{ url = "https://files.pythonhosted.org/packages/45/1f/53d5b6ab0869963474b7ea13097c5abd8f2cf13548f0076e9bafc7e9d6b0/pypdfium2-5.11.0-py3-none-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:53d167456433d565398a5c9f1efad23 - Network accessline 337
{ url = "https://files.pythonhosted.org/packages/82/7a/942a390e41fb59a797d9303eae6e6a8c3d1b84deade03206ac163076033f/pypdfium2-5.11.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:953f5bcb6a65067381f0a38c50ffaed864fac6f20b0fa2c14ffb15a - Network accessline 338
{ url = "https://files.pythonhosted.org/packages/8e/e9/fd1f8d3157c92665166f7d9bfcdd26901290b4271fcd2f90c7419ca0ee4c/pypdfium2-5.11.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:479b081423b2c16de44ddb6e25826d665298e1ee7cf09d802b656716 - Network accessline 339
{ url = "https://files.pythonhosted.org/packages/e9/56/4280069868245d2346e6ec7b42e155c16a19be731f2f57fb726c35661aac/pypdfium2-5.11.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:81356f0503356d6f21629fcd47bbfffcfe26487f47a7989a56c02bd4e3 - Network accessline 340
{ url = "https://files.pythonhosted.org/packages/84/9f/99d962bea28c3305835d07a1732a771104ce958f46e68a1892e740a7c904/pypdfium2-5.11.0-py3-none-musllinux_1_2_ppc64le.whl", hash = "sha256:25be9d70f5776c68fa28b92ec42a7be91de5d6c4085ed5c6c89e1bf - Network accessline 341
{ url = "https://files.pythonhosted.org/packages/e6/4a/c935d1fdd73092fd036627282948c794c8f14a7ddde39cf732898b258866/pypdfium2-5.11.0-py3-none-musllinux_1_2_riscv64.whl", hash = "sha256:8edec20239f77d4dea2eeee5d29ebd83e77e1e2900691b77387fead - Network accessline 342
{ url = "https://files.pythonhosted.org/packages/62/50/f4f1895efa581f8b85748bf8d620ad37550583ca5226feeb9a33dcb3031e/pypdfium2-5.11.0-py3-none-musllinux_1_2_s390x.whl", hash = "sha256:2560db37ce77a6caf651dc129bc44ee610a5fbb0050ec70f5a643f76b - Network accessline 343
{ url = "https://files.pythonhosted.org/packages/21/40/ca5b1071aee0a96937a30007504a0ca484340709e22a459e99650165fd57/pypdfium2-5.11.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:34086bc1fcb964bb8104889d941ba9c8a35a75866250bb81d2f2bb27 - Network accessline 344
{ url = "https://files.pythonhosted.org/packages/28/01/e445a77e784a5b0047a2c30b263630dfaa57318ff3196e6ad3093dca6929/pypdfium2-5.11.0-py3-none-win32.whl", hash = "sha256:324054f36acf6bea42a9d2534eb407da2e312dba746d955c9fd7e324bc160898", size - Network accessline 345
{ url = "https://files.pythonhosted.org/packages/73/d4/8b8af6eedbc5c8af49817d8f37c2e55be8a2c7f75fca9bee78efbfeb40f6/pypdfium2-5.11.0-py3-none-win_amd64.whl", hash = "sha256:d3b698e7b51bdf2d633cc834395677319e1d66757896b30c632dfac7d7236c81", - Network accessline 346
{ url = "https://files.pythonhosted.org/packages/c5/a7/657503553694c70fba0aa5d213144d80401611c82e0205f43f1ff39f40af/pypdfium2-5.11.0-py3-none-win_arm64.whl", hash = "sha256:897788d71b740752e29875856c369fdb52283f609aecf2355f0473db05dfc1b6", - Network accessline 350
name = "pytest" version = "9.1.1" source = { registry = "https://pypi.org/simple" } - Network accessline 351
version = "9.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - Network accessline 352
source = { registry = "https://pypi.org/simple" } - Network accessline 358
{ name = "pygments" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0 - Network accessline 359
] sdist = { url = "https://files.pythonhosted.org/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313", size = 163 - Network accessline 360
sdist = { url = "https://files.pythonhosted.org/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313", size = 16363 - Network accessline 361
wheels = [ { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f - Network accessline 362
{ url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386 - Network accessline 366
name = "pywin32-ctypes" version = "0.2.3" source = { registry = "https://pypi.org/simple" } - Network accessline 367
version = "0.2.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz", hash = "sha256:d16 - Network accessline 368
source = { registry = "https://pypi.org/simple" } - Network accessline 369
sdist = { url = "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz", hash = "sha256:d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", size - Network accessline 370
wheels = [ { url = "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30 - Network accessline 371
{ url = "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", si - Network accessline 375
name = "rich" version = "15.0.0" source = { registry = "https://pypi.org/simple" } - Network accessline 376
version = "15.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - Network accessline 377
source = { registry = "https://pypi.org/simple" } - Network accessline 380
{ name = "pygments" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c0/8f/0722ca900cc807c13a6a0c696dacf35430f72e0ec571c4275d2371fca3e9/rich-15.0.0.tar.gz", hash = "sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c - Network accessline 381
] sdist = { url = "https://files.pythonhosted.org/packages/c0/8f/0722ca900cc807c13a6a0c696dacf35430f72e0ec571c4275d2371fca3e9/rich-15.0.0.tar.gz", hash = "sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36", size = 2306 - Network accessline 382
sdist = { url = "https://files.pythonhosted.org/packages/c0/8f/0722ca900cc807c13a6a0c696dacf35430f72e0ec571c4275d2371fca3e9/rich-15.0.0.tar.gz", hash = "sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36", size = 230680 - Network accessline 383
wheels = [ { url = "https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl", hash = "sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0b - Network accessline 384
{ url = "https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl", hash = "sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb", size = 3106 - Network accessline 388
name = "setuptools" version = "83.0.0" source = { registry = "https://pypi.org/simple" } - Network accessline 389
version = "83.0.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/34/26/f5d29e25ffdb535afef2d35cdb55b325298f96debd670da4c325e08d70f4/setuptools-83.0.0.tar.gz", hash = "sha256:025bc - Network accessline 390
source = { registry = "https://pypi.org/simple" } - Network accessline 391
sdist = { url = "https://files.pythonhosted.org/packages/34/26/f5d29e25ffdb535afef2d35cdb55b325298f96debd670da4c325e08d70f4/setuptools-83.0.0.tar.gz", hash = "sha256:025bccbbf0fa05b6192bc64ae1e7b16e001fd6d6d4d5de03c97b1c1ade523bef", size = - Network accessline 392
wheels = [ { url = "https://files.pythonhosted.org/packages/5d/40/e1e72872c6354b306daef1703549e8e83b4d43cfea356311bf722a043752/setuptools-83.0.0-py3-none-any.whl", hash = "sha256:29b23c360f22f414dc7336bb39178cc7bcbf6021ed2733cde173f09db - Network accessline 393
{ url = "https://files.pythonhosted.org/packages/5d/40/e1e72872c6354b306daef1703549e8e83b4d43cfea356311bf722a043752/setuptools-83.0.0-py3-none-any.whl", hash = "sha256:29b23c360f22f414dc7336bb39178cc7bcbf6021ed2733cde173f09dba19abb3", size - Network accessline 397
name = "shellingham" version = "1.5.4" source = { registry = "https://pypi.org/simple" } - Network accessline 398
version = "1.5.4" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0 - Network accessline 399
source = { registry = "https://pypi.org/simple" } - Network accessline 400
sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = - Network accessline 401
wheels = [ { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1 - Network accessline 402
{ url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", s - Network accessline 406
name = "typer" version = "0.26.8" source = { registry = "https://pypi.org/simple" } - Network accessline 407
version = "0.26.8" source = { registry = "https://pypi.org/simple" } dependencies = [ - Network accessline 408
source = { registry = "https://pypi.org/simple" } - Network accessline 413
{ name = "shellingham" }, ] sdist = { url = "https://files.pythonhosted.org/packages/7c/f7/68adc395201b20b872d68e975386832e8005ffeacedd43a1d837a32815be/typer-0.26.8.tar.gz", hash = "sha256:c244a6bd558886fe3f8780efb6bdd28bb9aff005a94eedebaa5 - Network accessline 414
] sdist = { url = "https://files.pythonhosted.org/packages/7c/f7/68adc395201b20b872d68e975386832e8005ffeacedd43a1d837a32815be/typer-0.26.8.tar.gz", hash = "sha256:c244a6bd558886fe3f8780efb6bdd28bb9aff005a94eedebaa5cb32926fe2f7e", size = 202 - Network accessline 415
sdist = { url = "https://files.pythonhosted.org/packages/7c/f7/68adc395201b20b872d68e975386832e8005ffeacedd43a1d837a32815be/typer-0.26.8.tar.gz", hash = "sha256:c244a6bd558886fe3f8780efb6bdd28bb9aff005a94eedebaa5cb32926fe2f7e", size = 20209 - Network accessline 416
wheels = [ { url = "https://files.pythonhosted.org/packages/80/87/b9fd69c92c6102a066e1b86a35243f53e70bd4c709f2a26d9f4fee4f4dc0/typer-0.26.8-py3-none-any.whl", hash = "sha256:3512ca79ac5c11113414b36e80281b872884477722440691c89d1112e321a4 - Network accessline 417
{ url = "https://files.pythonhosted.org/packages/80/87/b9fd69c92c6102a066e1b86a35243f53e70bd4c709f2a26d9f4fee4f4dc0/typer-0.26.8-py3-none-any.whl", hash = "sha256:3512ca79ac5c11113414b36e80281b872884477722440691c89d1112e321a49c", size = 122 - Network accessline 421
name = "typing-extensions" version = "4.16.0" source = { registry = "https://pypi.org/simple" } - Network accessline 422
version = "4.16.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3306cebfbda2c520f545d36b5be2c7255cc528bb45d6/typing_extensions-4.16.0.tar.gz", hash = "sha25 - Network accessline 423
source = { registry = "https://pypi.org/simple" } - Network accessline 424
sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3306cebfbda2c520f545d36b5be2c7255cc528bb45d6/typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5", - Network accessline 425
wheels = [ { url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f3 - Network accessline 426
{ url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8"
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 500 facts
- Network access in prose of the SKILL.md.claude/skills/verify/SKILL.md:29Low confidence
- Network access in prose of the SKILL.md.claude/skills/verify/SKILL.md:30Low confidence
- Network access in prose of the SKILL.md.claude/skills/verify/SKILL.md:31Low confidence
- Access to secrets in prose of documentationCONTRIBUTING.md:20Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valueCONTRIBUTING.md:25Low confidence
- Network access in code of documentationCONTRIBUTING.md:37Low confidence
- Network access in prose of documentationCONTRIBUTING.md:40Low confidence
- Access to secrets in prose of documentationCONTRIBUTING.md:82Low confidence
- Dangerous shell operation in prose of documentationCONTRIBUTING.md:96Low confidence
- Network access in prose of documentationREADME.md:3Low confidence
- Network access in prose of documentationREADME.md:4Low confidence
- Network access in prose of documentationREADME.md:12Low confidence
- Network access in prose of documentationREADME.md:13Low confidence
- Network access in prose of documentationREADME.md:14Low confidence
- Dangerous shell operation in code of documentationREADME.md:24Low confidence
- Network access in code of documentationREADME.md:24Low confidence
- Network access in code of documentationREADME.md:30Low confidence
- Network access in code of documentationREADME.md:36Low confidence
- Network access in prose of documentationREADME.md:52Low confidence
- Network access in prose of documentationREADME.md:58Low confidence
- Network access in prose of documentationREADME.md:60Low confidence
- Network access in prose of documentationREADME.md:79Low confidence
- Network access in prose of documentationREADME.md:80Low confidence
- Network access in prose of documentationREADME.md:81Low confidence
- Network access in prose of documentationREADME.md:82Low confidence
- Network access in prose of documentationREADME.md:83Low confidence
- Network access in prose of documentationREADME.md:84Low confidence
- Network access in prose of documentationREADME.md:85Low confidence
- Access to secrets in prose of documentationREADME.md:101Low confidence
- Network access in prose of documentationREADME.md:125Low confidence
- Network access in prose of documentationREADME.md:126Low confidence
- Network access in prose of documentationREADME.md:127Low confidence
- Access to secrets in prose of the SKILL.md: a variable, placeholder or call, not a stored valueSKILL.md:25Low confidence
- Access to secrets in prose of the SKILL.md: a variable, placeholder or call, not a stored valueSKILL.md:29Low confidence
- Network access in prose of documentationdocs/ade-cli-v2-proposal.md:322Low confidence
- Network access in prose of documentationdocs/ade-cli-v2-proposal.md:349Low confidence
- Network access in prose of documentationdocs/ade-cli-v2-proposal.md:350Low confidence
- Network access in prose of documentationdocs/ade-cli-v2-proposal.md:351Low confidence
- Dangerous shell operation in prose of documentationdocs/ade-cli-v2-proposal.md:717Low confidence
- Access to secrets in prose of documentation: a variable, placeholder or call, not a stored valuedocs/ade-cli-v2-proposal.md:750Low confidence
- Access to secrets in prose of documentation: a variable, placeholder or call, not a stored valuedocs/ade-cli-v2-proposal.md:805Low confidence
- Network access in prose of documentationdocs/adr/0001-auth-login-selects-logout-per-env.md:14Low confidence
- Network access in prose of documentationdocs/adr/0001-auth-login-selects-logout-per-env.md:16Low confidence
- Access to secrets in prose of documentation: a variable, placeholder or call, not a stored valuedocs/adr/0001-auth-login-selects-logout-per-env.md:44Low confidence
- Network access in prose of documentationdocs/adr/0003-per-invocation-environment.md:10Low confidence
- Network access in prose of documentationdocs/adr/0003-per-invocation-environment.md:12Low confidence
- Access to secrets in prose of documentationdocs/adr/0004-oauth-dark-at-launch.md:30Low confidence
- Network access in prose of documentationdocs/adr/0005-two-doors-serve-and-file.md:6Low confidence
- Network access in prose of documentationdocs/adr/0005-two-doors-serve-and-file.md:7Low confidence
- Network access in prose of documentationdocs/adr/0005-two-doors-serve-and-file.md:8Low confidence
and 450 more
Only the first 500 facts are listed.
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Path .claude/skills/verify/SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/landing-ai-ade-cli/)