Not in the top 1,000 by GitHub stars
MieMieeeee/comfyui-agent-skill
Enable agents to run registered ComfyUI workflows through a local ComfyUI server using this repo’s CLI, returning structured JSON outputs.
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
b42d1076a7ae → b42d1076a7ae
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → b42d1076a7ae
No earlier version was observed for comparison.
Heat
1.1- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
How it works
comfyui-agent-skill-mie
When your agent uses it
Agent skill for running registered ComfyUI workflows through a stable CLI, and for importing a user's own ComfyUI workflow into their private registry after review. Supports image, video, music, and speech generation, plus text-driven matting, face/expression transfer, and voice cloning, on a local or trusted self-hosted ComfyUI server (default http://127.0.0.1:8188). Can check server health, preflight workflow dependencies, and save the server URL. Runs only registered workflows and reviewed private-registry imports; does not execute arbitrary unreviewed workflow JSON.
What it loads into context
Frontmatter
147 tokensAlways available to the agent
SKILL.md
3,750 tokensWhen the skill is activated
Reference documents
44,400 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Purpose
- Hard Rules
- Workflow Selection Policy
- User-Added Workflows
- Setup
- Quick Workflow Choice
- Core Commands
- Prompt Enhancement
- Fail-Fast and Recovery
- Output Handling
- References
Scripts executed separately
scripts/analyze_workflow.pyscripts/comfy_api_simplified/LICENSEscripts/comfy_api_simplified/__init__.pyscripts/comfy_api_simplified/api.pyscripts/comfy_api_simplified/exceptions.pyscripts/comfy_api_simplified/workflow.pyscripts/comfyui/__init__.pyscripts/comfyui/__main__.pyscripts/comfyui/cli.pyscripts/comfyui/cli_admin.pyscripts/comfyui/cli_convert.pyscripts/comfyui/cli_generate.pyscripts/comfyui/cli_validate.pyscripts/comfyui/config.pyscripts/comfyui/models/__init__.pyscripts/comfyui/models/result.pyscripts/comfyui/preflight.pyscripts/comfyui/services/__init__.pyscripts/comfyui/services/errors.pyscripts/comfyui/services/executor.pyscripts/comfyui/services/job_store.pyscripts/comfyui/services/poller.pyscripts/comfyui/services/submitter.pyscripts/comfyui/services/workflow_config.pyscripts/comfyui/services/z_image_turbo.pyscripts/comfyui/tools/__init__.pyscripts/comfyui/tools/analyze_workflow.pyscripts/comfyui/tools/convert_ui_workflow.pyscripts/comfyui/tools/import_workflow.pyscripts/comfyui/workflow_selection.pyscripts/gen_diagram.pyscripts/make_clawhub_bundle.pyscripts/sync_package_assets.pyscripts/test_error_cases.pyscripts/tests/__init__.pyscripts/tests/conftest.pyscripts/tests/test_analyze_workflow.pyscripts/tests/test_cli.pyscripts/tests/test_config.pyscripts/tests/test_console_script.pyscripts/tests/test_convert_ui_workflow.pyscripts/tests/test_custom_workflows_registry.pyscripts/tests/test_docs_entrypoints.pyscripts/tests/test_doctor_command.pyscripts/tests/test_executor.pyscripts/tests/test_executor_qwen3_tts.pyscripts/tests/test_import_workflow.pyscripts/tests/test_install_mode.pyscripts/tests/test_integration.pyscripts/tests/test_job_store.pyscripts/tests/test_package_resources.pyscripts/tests/test_poller.pyscripts/tests/test_preflight.pyscripts/tests/test_resource_mirror.pyscripts/tests/test_result.pyscripts/tests/test_submitter.pyscripts/tests/test_validate_command.pyscripts/tests/test_vendored_comfy_api.pyscripts/tests/test_workflow_config.pyscripts/tests/test_workflow_selection.py
Files
.github/workflows/ci.ymlasset4,088 bytes.gitignoreasset259 bytes.python-versionasset5 bytesCHANGELOG.mddoc9,352 bytesCHANGELOG.zh-CN.mddoc9,378 bytesLICENSEasset11,357 bytesMAINTAINER.mddoc1,592 bytesREADME.mddoc8,867 bytesREADME.zh-CN.mddoc8,402 bytesSKILL.mdcore15,477 bytesSKILL.mdcore15,477 bytesSKILL.mdcore15,477 bytesSKILL.mdcore15,477 bytesSKILL.mdcore15,477 bytesSKILL.mdcore15,477 bytesSKILL.mdcore15,477 bytesSKILL.mdcore15,477 bytesSKILL.mdcore15,477 bytesSKILL.mdcore15,477 bytesSKILL.mdcore15,477 bytesSKILL.mdcore15,477 bytesSKILL.mdcore15,477 bytesSKILL.mdcore15,477 bytesSKILL.mdcore15,477 bytesSKILL.mdcore15,477 bytesVENDORING.mddoc2,662 bytesassets/examples/ace_step_15_music.mp3asset1,923,692 bytesassets/examples/klein_edit.pngasset1,366,866 bytesassets/examples/ltx-23-i2v.mp4asset5,324,167 bytesassets/examples/ltx-23-t2v.mp4asset1,598,715 bytesassets/examples/qwen3_tts.mp3asset25,492 bytesassets/examples/qwen_image_2512_4step.pngasset508,831 bytesassets/examples/reference_to_image.pngasset1,426,045 bytesassets/examples/z_image_turbo.pngasset1,235,256 bytesassets/input/person.pngasset1,326,249 bytesassets/workflows/ace_step_15_music.config.jsonasset1,337 bytesassets/workflows/ace_step_15_music.jsonasset4,067 bytesassets/workflows/anima_turbo.config.jsonasset1,834 bytesassets/workflows/anima_turbo.jsonasset2,420 bytesassets/workflows/klein_edit.config.jsonasset1,581 bytesassets/workflows/klein_edit.jsonasset4,365 bytesassets/workflows/krea2_turbo.config.jsonasset1,783 bytesassets/workflows/krea2_turbo.jsonasset5,415 bytesassets/workflows/liveportrait.config.jsonasset1,589 bytesassets/workflows/liveportrait.jsonasset5,743 bytesassets/workflows/ltx-23-i2v.jsonasset12,903 bytesassets/workflows/ltx-23-t2v.jsonasset11,202 bytesassets/workflows/ltx_23_i2v_distilled.config.jsonasset1,410 bytesassets/workflows/ltx_23_t2v_distill.config.jsonasset1,712 bytesassets/workflows/qwen3_tts.config.jsonasset1,395 bytesassets/workflows/qwen3_tts.jsonasset1,289 bytesassets/workflows/qwen3_tts_clone.config.jsonasset1,850 bytesassets/workflows/qwen3_tts_clone.jsonasset1,504 bytesassets/workflows/qwen_image_2512_4step.config.jsonasset1,798 bytesassets/workflows/qwen_image_2512_4step.jsonasset3,731 bytesassets/workflows/sam3_mat_image.config.jsonasset1,536 bytesassets/workflows/sam3_mat_image.jsonasset1,308 bytesassets/workflows/z_image_turbo.config.jsonasset1,516 bytesassets/workflows/z_image_turbo.jsonasset2,797 bytesdocs/decision-tree.htmlasset11,345 bytesdocs/decision-tree.pngasset541,671 bytesdocs/decision-tree.svgasset25,440 bytesdocs/internal/README.mddoc357 bytesdocs/internal/findings.mddoc2,162 bytesdocs/internal/progress.mddoc1,102 bytesdocs/internal/task_plan.mddoc5,277 bytespyproject.tomlasset1,489 bytesreferences/cli.mddoc13,094 bytesreferences/extension.mddoc7,290 bytesreferences/prompt_enhancement/character.mddoc2,891 bytesreferences/prompt_enhancement/image_to_image.mddoc2,680 bytesreferences/prompt_enhancement/reference_to_image.mddoc5,774 bytesreferences/prompt_enhancement/text_to_speech.mddoc9,322 bytesreferences/workflow_nodes.mddoc1,706 bytesreferences/workflows.mddoc16,418 bytesscripts/analyze_workflow.pyruns1,676 bytesscripts/comfy_api_simplified/LICENSEruns1,070 bytesscripts/comfy_api_simplified/__init__.pyruns594 bytesscripts/comfy_api_simplified/api.pyruns15,784 bytesscripts/comfy_api_simplified/exceptions.pyruns507 bytesscripts/comfy_api_simplified/workflow.pyruns4,799 bytesscripts/comfyui/__init__.pyruns0 bytesscripts/comfyui/__main__.pyruns973 bytesscripts/comfyui/assets/examples/ace_step_15_music.mp3asset1,923,692 bytesscripts/comfyui/assets/examples/klein_edit.pngasset1,366,866 bytesscripts/comfyui/assets/examples/ltx-23-i2v.mp4asset5,324,167 bytesscripts/comfyui/assets/examples/ltx-23-t2v.mp4asset1,598,715 bytesscripts/comfyui/assets/examples/qwen3_tts.mp3asset25,492 bytesscripts/comfyui/assets/examples/qwen_image_2512_4step.pngasset508,831 bytesscripts/comfyui/assets/examples/reference_to_image.pngasset1,426,045 bytesscripts/comfyui/assets/examples/z_image_turbo.pngasset1,235,256 bytesscripts/comfyui/assets/input/person.pngasset1,326,249 bytesscripts/comfyui/assets/workflows/ace_step_15_music.config.jsonasset1,337 bytesscripts/comfyui/assets/workflows/ace_step_15_music.jsonasset4,067 bytesscripts/comfyui/assets/workflows/anima_turbo.config.jsonasset1,834 bytesscripts/comfyui/assets/workflows/anima_turbo.jsonasset2,420 bytesscripts/comfyui/assets/workflows/klein_edit.config.jsonasset1,581 bytesscripts/comfyui/assets/workflows/klein_edit.jsonasset4,365 bytesscripts/comfyui/assets/workflows/krea2_turbo.config.jsonasset1,783 bytesscripts/comfyui/assets/workflows/krea2_turbo.jsonasset5,415 bytesscripts/comfyui/assets/workflows/liveportrait.config.jsonasset1,589 bytesscripts/comfyui/assets/workflows/liveportrait.jsonasset5,743 bytesscripts/comfyui/assets/workflows/ltx-23-i2v.jsonasset12,903 bytesscripts/comfyui/assets/workflows/ltx-23-t2v.jsonasset11,202 bytesscripts/comfyui/assets/workflows/ltx_23_i2v_distilled.config.jsonasset1,410 bytesscripts/comfyui/assets/workflows/ltx_23_t2v_distill.config.jsonasset1,712 bytesscripts/comfyui/assets/workflows/qwen3_tts.config.jsonasset1,395 bytesscripts/comfyui/assets/workflows/qwen3_tts.jsonasset1,289 bytesscripts/comfyui/assets/workflows/qwen3_tts_clone.config.jsonasset1,850 bytesscripts/comfyui/assets/workflows/qwen3_tts_clone.jsonasset1,504 bytesscripts/comfyui/assets/workflows/qwen_image_2512_4step.config.jsonasset1,798 bytesscripts/comfyui/assets/workflows/qwen_image_2512_4step.jsonasset3,731 bytesscripts/comfyui/assets/workflows/sam3_mat_image.config.jsonasset1,536 bytesscripts/comfyui/assets/workflows/sam3_mat_image.jsonasset1,308 bytesscripts/comfyui/assets/workflows/z_image_turbo.config.jsonasset1,516 bytesscripts/comfyui/assets/workflows/z_image_turbo.jsonasset2,797 bytesscripts/comfyui/cli.pyruns3,088 bytesscripts/comfyui/cli_admin.pyruns10,300 bytesscripts/comfyui/cli_convert.pyruns4,687 bytesscripts/comfyui/cli_generate.pyruns27,397 bytesscripts/comfyui/cli_validate.pyruns10,905 bytesscripts/comfyui/config.pyruns7,389 bytesscripts/comfyui/models/__init__.pyruns69 bytesscripts/comfyui/models/result.pyruns859 bytesscripts/comfyui/preflight.pyruns11,871 bytesscripts/comfyui/references/cli.mddoc13,094 bytesscripts/comfyui/references/extension.mddoc7,290 bytesscripts/comfyui/references/prompt_enhancement/character.mddoc2,891 bytesscripts/comfyui/references/prompt_enhancement/image_to_image.mddoc2,680 bytesscripts/comfyui/references/prompt_enhancement/reference_to_image.mddoc5,774 bytesscripts/comfyui/references/prompt_enhancement/text_to_speech.mddoc9,322 bytesscripts/comfyui/references/workflow_nodes.mddoc1,706 bytesscripts/comfyui/references/workflows.mddoc16,418 bytesscripts/comfyui/services/__init__.pyruns0 bytesscripts/comfyui/services/errors.pyruns88 bytesscripts/comfyui/services/executor.pyruns21,701 bytesscripts/comfyui/services/job_store.pyruns5,403 bytesscripts/comfyui/services/poller.pyruns15,285 bytesscripts/comfyui/services/submitter.pyruns9,627 bytesscripts/comfyui/services/workflow_config.pyruns9,610 bytesscripts/comfyui/services/z_image_turbo.pyruns2,445 bytesscripts/comfyui/tools/__init__.pyruns0 bytesscripts/comfyui/tools/analyze_workflow.pyruns20,104 bytesscripts/comfyui/tools/convert_ui_workflow.pyruns9,351 bytesscripts/comfyui/tools/import_workflow.pyruns14,515 bytesscripts/comfyui/workflow_selection.pyruns1,462 bytesscripts/gen_diagram.pyruns25,122 bytesscripts/make_clawhub_bundle.pyruns8,163 bytesscripts/requirements.txtdoc194 bytesscripts/sync_package_assets.pyruns4,267 bytesscripts/test_error_cases.pyruns11,061 bytesscripts/tests/__init__.pyruns0 bytesscripts/tests/conftest.pyruns526 bytesscripts/tests/fixtures/api_media_inputs.jsonasset498 bytesscripts/tests/fixtures/api_no_prompt.jsonasset630 bytesscripts/tests/fixtures/fs-skill.jsonasset831 bytesscripts/tests/fixtures/fs.jsonasset825 bytesscripts/tests/fixtures/ui_format.jsonasset414 bytesscripts/tests/test_analyze_workflow.pyruns10,716 bytesscripts/tests/test_cli.pyruns29,017 bytesscripts/tests/test_config.pyruns7,264 bytesscripts/tests/test_console_script.pyruns369 bytesscripts/tests/test_convert_ui_workflow.pyruns5,403 bytesscripts/tests/test_custom_workflows_registry.pyruns4,000 bytesscripts/tests/test_docs_entrypoints.pyruns9,596 bytesscripts/tests/test_doctor_command.pyruns3,732 bytesscripts/tests/test_executor.pyruns32,451 bytesscripts/tests/test_executor_qwen3_tts.pyruns2,588 bytesscripts/tests/test_import_workflow.pyruns11,578 bytesscripts/tests/test_install_mode.pyruns1,964 bytesscripts/tests/test_integration.pyruns5,909 bytesscripts/tests/test_job_store.pyruns10,990 bytesscripts/tests/test_package_resources.pyruns479 bytesscripts/tests/test_poller.pyruns24,036 bytesscripts/tests/test_preflight.pyruns9,930 bytesscripts/tests/test_resource_mirror.pyruns1,098 bytesscripts/tests/test_result.pyruns2,615 bytesscripts/tests/test_submitter.pyruns17,801 bytesscripts/tests/test_validate_command.pyruns4,717 bytesscripts/tests/test_vendored_comfy_api.pyruns5,704 bytesscripts/tests/test_workflow_config.pyruns17,733 bytesscripts/tests/test_workflow_selection.pyruns5,298 bytesuv.lockasset77,304 bytes
Read SKILL.md
# comfyui-agent-skill-mie
## Purpose
Run registered ComfyUI workflows through a stable Agent-facing CLI, with prompt enhancement, fail-fast errors, and structured JSON results.
Use this skill when the user asks to:
- Generate an image from text.
- Generate a new image inspired by a reference image.
- Edit an input image while preserving some structure or subject details.
- Generate text-to-video or image-to-video MP4 output.
- Generate music / instrumental / song-style MP3 output.View the complete source on GitHubSkills included
- comfyui-agent-skill-mie
Repository facts
- License
- Apache-2.0
- Created
- May 1, 2026
- Last pushed
- Oct 13, 2026
- Forks
- 20
- Open issues
- 0
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 4, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 15 notes
SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 799 network referencesin 32 files: uv.lock:6 scripts/tests/test_cli.py:77 scripts/tests/test_poller.py:16 and 29 more
- No hidden or obfuscated text
- No instruction overrides
- 60 executable scriptsin 60 files: scripts/analyze_workflow.py:1 scripts/comfy_api_simplified/LICENSE:1 scripts/comfy_api_simplified/__init__.py:1 and 57 more
- 21 references to secretsin 10 files: scripts/comfyui/config.py:31 scripts/tests/test_integration.py:24 scripts/comfyui/__main__.py:6 and 7 more
- No requests to vote in Hot
Show all 880 signals by file
.github/workflows/ci.yml
- Network accessline 56
.venv/bin/comfyui-skill --help set +e OUT=$(.venv/bin/comfyui-skill generate --preflight --workflow z_image_turbo --server http://127.0.0.1:59997) - Network accessline 57
set +e OUT=$(.venv/bin/comfyui-skill generate --preflight --workflow z_image_turbo --server http://127.0.0.1:59997) CODE=$? - Network accessline 58
OUT=$(.venv/bin/comfyui-skill generate --preflight --workflow z_image_turbo --server http://127.0.0.1:59997) - Access to secretsline 66
[Credential-related source omitted]
LICENSE
README.md
- Network accessline 90
pipx install "git+https://github.com/MieMieeeee/comfyui-agent-skill.git" - Network accessline 225
- `comfyui-agent-skill-mie doctor` - `uv run --no-sync python -m comfyui doctor` (source mode) - If the agent/skill runs inside WSL/container/sandbox while ComfyUI runs on the host OS, `127.0.0.1` may point to the runtime itself instead o - Network accessline 226
- `uv run --no-sync python -m comfyui doctor` (source mode) - If the agent/skill runs inside WSL/container/sandbox while ComfyUI runs on the host OS, `127.0.0.1` may point to the runtime itself instead of the host. Try `--server http://loca - Network accessline 227
- If the agent/skill runs inside WSL/container/sandbox while ComfyUI runs on the host OS, `127.0.0.1` may point to the runtime itself instead of the host. Try `--server http://localhost:8188` or the host machine IP (and optionally persist i
README.zh-CN.md
- Network accessline 35
git clone https://github.com/MieMieeeee/comfyui-agent-skill.git - Network accessline 80
http://127.0.0.1:8188 - Network accessline 88
comfyui-agent-skill-mie check --server http://localhost:8188 - Network accessline 95
comfyui-agent-skill-mie save-server http://localhost:8188 - Network accessline 236
- `comfyui-agent-skill-mie doctor` - `uv run --no-sync python -m comfyui doctor`(源码模式) - 如果 agent/skill 运行在 WSL/容器/沙箱里,而 ComfyUI 运行在宿主机,那么 `127.0.0.1` 可能指向运行时自身而非宿主机。请尝试 `--server http://localhost:8188` 或宿主机 IP(必要时用 `save-server` 持久化)。 - Network accessline 237
- `uv run --no-sync python -m comfyui doctor`(源码模式) - 如果 agent/skill 运行在 WSL/容器/沙箱里,而 ComfyUI 运行在宿主机,那么 `127.0.0.1` 可能指向运行时自身而非宿主机。请尝试 `--server http://localhost:8188` 或宿主机 IP(必要时用 `save-server` 持久化)。 - `SERVER_UNAVAILABLE`:无法访问目标 ComfyUI。请 - Network accessline 238
- 如果 agent/skill 运行在 WSL/容器/沙箱里,而 ComfyUI 运行在宿主机,那么 `127.0.0.1` 可能指向运行时自身而非宿主机。请尝试 `--server http://localhost:8188` 或宿主机 IP(必要时用 `save-server` 持久化)。
SKILL.md
- Network accessline 6
after review. Supports image, video, music, and speech generation, plus text-driven matting, face/expression transfer, and voice cloning, on a local or trusted self-hosted ComfyUI server (default http://127.0.0.1:8188). Can - Network accessline 7
text-driven matting, face/expression transfer, and voice cloning, on a local or trusted self-hosted ComfyUI server (default http://127.0.0.1:8188). Can check server health, preflight workflow dependencies, and save the server - Network accessline 8
or trusted self-hosted ComfyUI server (default http://127.0.0.1:8188). Can - Network accessline 93
- Default local examples use `http://127.0.0.1:8188` for same-environment setups. - Network accessline 94
- If the agent runs inside WSL/container/sandbox while ComfyUI runs on the host OS, `127.0.0.1` may refer to the runtime itself. Try `--server http://localhost:8188` or the host machine IP (and optionally persist it via `save-server`). - Network accessline 191
uv run --no-sync python -m comfyui generate --workflow z_image_turbo --server http://192.168.1.100:8188 -p "a landscape" - Network accessline 197
uv run --no-sync python -m comfyui save-server http://192.168.1.100:8188 - Network accessline 215
uv run --no-sync python -m comfyui convert-ui path/to/ui_workflow.json --server http://127.0.0.1:8188
VENDORING.md
- Network accessline 5
This skill ships a **minimal** copy of the `comfy_api_simplified` package from the [run_comfyui_workflow](https://github.com/MieMieeeee/run_comfyui_workflow) project - Network accessline 6
[run_comfyui_workflow](https://github.com/MieMieeeee/run_comfyui_workflow) project - Network accessline 18
**Upstream commit** (from the local clone used when vendoring, for traceability; align with `https://github.com/MieMieeeee/run_comfyui_workflow` when re-syncing): - Network accessline 19
`https://github.com/MieMieeeee/run_comfyui_workflow` when re-syncing): - Network accessline 34
1. Clone or update `https://github.com/MieMieeeee/run_comfyui_workflow`.
docs/decision-tree.html
docs/decision-tree.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 2200" width="960" height="2200">
pyproject.toml
- Network accessline 24
[project.urls] Homepage = "https://github.com/MieMieeeee/comfyui-agent-skill" - Network accessline 25
Homepage = "https://github.com/MieMieeeee/comfyui-agent-skill" - Network accessline 26
Repository = "https://github.com/MieMieeeee/comfyui-agent-skill" - Network accessline 27
Issues = "https://github.com/MieMieeeee/comfyui-agent-skill/issues"
references/cli.md
- Network accessline 53
uv run --no-sync python -m comfyui save-server http://192.168.1.100:8188 - Network accessline 61
2. `COMFYUI_URL` environment variable 3. `config.local.json` 4. Default `http://127.0.0.1:8188` - Network accessline 63
4. Default `http://127.0.0.1:8188` - Network accessline 67
If the agent/skill runs inside WSL/container/sandbox while ComfyUI runs on the host OS, `127.0.0.1` may refer to the runtime itself instead of the host. Try `--server http://localhost:8188` or the host machine IP. - Network accessline 193
"outputs": [], "job_id": null, "error": {"code": "SERVER_UNAVAILABLE", "message": "ComfyUI server not available at http://127.0.0.1:8188"}, - Network accessline 194
"job_id": null, "error": {"code": "SERVER_UNAVAILABLE", "message": "ComfyUI server not available at http://127.0.0.1:8188"}, "metadata": {} - Network accessline 195
"error": {"code": "SERVER_UNAVAILABLE", "message": "ComfyUI server not available at http://127.0.0.1:8188"},
scripts/analyze_workflow.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/comfy_api_simplified/LICENSE
- Executable scriptline 1
Executable file
scripts/comfy_api_simplified/__init__.py
- Executable scriptline 1
Executable file
scripts/comfy_api_simplified/api.py
- Executable scriptline 1
Executable file - Network accessline 42
def __init__( self, url: str = "http://127.0.0.1:8188", - Network accessline 43
self, url: str = "http://127.0.0.1:8188", user: str = "", - Network accessline 44
url: str = "http://127.0.0.1:8188", - Network accessline 53
Args: url: ComfyUI 服务器地址,默认为 "http://127.0.0.1:8188" - Network accessline 54
url: ComfyUI 服务器地址,默认为 "http://127.0.0.1:8188" - Network accessline 105
resp = requests.post( - Network accessline 292
resp = requests.get(url, auth=self.auth, timeout=self.timeout) - Network accessline 315
resp = requests.get(url, auth=self.auth, timeout=self.timeout) - Network accessline 370
resp = requests.get(url, auth=self.auth, timeout=self.timeout) - Network accessline 407
resp = requests.get(url, auth=self.auth, timeout=self.timeout) - Network accessline 444
files = {"image": (serv_file, f)} _log.info(f"Posting {filename} to {url} with data {data}") resp = requests.post( - Network accessline 445
_log.info(f"Posting {filename} to {url} with data {data}") resp = requests.post( url, files=files, data=data, auth=self.auth, timeout=self.timeout - Network accessline 446
resp = requests.post( - Network accessline 489
files = {"image": (serv_file, f)} _log.info(f"Posting {filename} to {url} with data {data}") resp = requests.post( - Network accessline 490
_log.info(f"Posting {filename} to {url} with data {data}") resp = requests.post( url, files=files, data=data, auth=self.auth, timeout=self.timeout - Network accessline 491
resp = requests.post(
scripts/comfy_api_simplified/exceptions.py
- Executable scriptline 1
Executable file
scripts/comfy_api_simplified/workflow.py
- Executable scriptline 1
Executable file
scripts/comfyui/__init__.py
- Executable scriptline 1
Executable file
scripts/comfyui/__main__.py
scripts/comfyui/cli.py
- Executable scriptline 1
Executable file
scripts/comfyui/cli_admin.py
- Executable scriptline 1
Executable file - Network accessline 135
def cmd_save_server() -> int: p = argparse.ArgumentParser(description="Save ComfyUI base URL to config.local.json") p.add_argument("url", help="e.g. http://192.168.1.10:8188") - Network accessline 136
p = argparse.ArgumentParser(description="Save ComfyUI base URL to config.local.json") p.add_argument("url", help="e.g. http://192.168.1.10:8188") args = p.parse_args() - Network accessline 137
p.add_argument("url", help="e.g. http://192.168.1.10:8188") - Access to secretsline 240
[Credential-related source omitted]
scripts/comfyui/cli_convert.py
- Executable scriptline 1
Executable file
scripts/comfyui/cli_generate.py
- Executable scriptline 1
Executable file
scripts/comfyui/cli_validate.py
- Executable scriptline 1
Executable file
scripts/comfyui/config.py
- Executable scriptline 1
Executable file - Network accessline 9
DEFAULT_URL = "http://127.0.0.1:8188" - Access to secretsline 31
[Credential-related source omitted] - Access to secretsline 48
[Credential-related source omitted] - Access to secretsline 52
[Credential-related source omitted] - Access to secretsline 58
[Credential-related source omitted] - Access to secretsline 74
[Credential-related source omitted] - Access to secretsline 86
[Credential-related source omitted] - Network accessline 106
Priority: env var COMFYUI_URL > config.local.json > default http://127.0.0.1:8188 - Access to secretsline 108
[Credential-related source omitted] - Access to secretsline 117
[Credential-related source omitted] - Access to secretsline 123
[Credential-related source omitted] - Network accessline 172
parsed = urllib.parse.urlparse(url) if parsed.scheme not in ("http", "https"): raise ValueError(f"URL must start with http:// or https://, got: {url}") - Network accessline 173
if parsed.scheme not in ("http", "https"): raise ValueError(f"URL must start with http:// or https://, got: {url}") if not parsed.netloc: - Network accessline 174
raise ValueError(f"URL must start with http:// or https://, got: {url}") - Network accessline 191
server_url = (url or get_comfyui_url()).rstrip("/") try: req = urllib.request.Request(f"{server_url}/system_stats") - Network accessline 192
try: req = urllib.request.Request(f"{server_url}/system_stats") with urllib.request.urlopen(req, timeout=5) as resp: - Network accessline 193
req = urllib.request.Request(f"{server_url}/system_stats") - Network accessline 194
with urllib.request.urlopen(req, timeout=5) as resp: - Network accessline 199
hint = ( f"Hint / 提示: Make sure ComfyUI is running and the IP/port is correct (current: {server_url}). " f"If running inside WSL/container/sandbox while ComfyUI runs on the host, try --server http://localhost:8188 or - Network accessline 200
f"Hint / 提示: Make sure ComfyUI is running and the IP/port is correct (current: {server_url}). " f"If running inside WSL/container/sandbox while ComfyUI runs on the host, try --server http://localhost:8188 or the host machine IP. - Network accessline 201
f"If running inside WSL/container/sandbox while ComfyUI runs on the host, try --server http://localhost:8188 or the host machine IP. " - Network accessline 202
f"请确认 ComfyUI 已启动,且可访问 {server_url}(检查 IP/端口、防火墙与是否在同一台机器上)。" f"如果当前运行在 WSL/容器/沙箱中,而 ComfyUI 在宿主机上,请尝试 --server http://localhost:8188 或宿主机 IP。" ) - Network accessline 203
f"如果当前运行在 WSL/容器/沙箱中,而 ComfyUI 在宿主机上,请尝试 --server http://localhost:8188 或宿主机 IP。"
scripts/comfyui/models/__init__.py
- Executable scriptline 1
Executable file
scripts/comfyui/models/result.py
- Executable scriptline 1
Executable file
scripts/comfyui/preflight.py
- Executable scriptline 1
Executable file - Network accessline 64
url = base + encoded try: req = urllib.request.Request(url) - Network accessline 65
try: req = urllib.request.Request(url) with urllib.request.urlopen(req, timeout=timeout) as resp: - Network accessline 66
req = urllib.request.Request(url) - Network accessline 67
with urllib.request.urlopen(req, timeout=timeout) as resp:
scripts/comfyui/references/cli.md
- Network accessline 53
uv run --no-sync python -m comfyui save-server http://192.168.1.100:8188 - Network accessline 61
2. `COMFYUI_URL` environment variable 3. `config.local.json` 4. Default `http://127.0.0.1:8188` - Network accessline 63
4. Default `http://127.0.0.1:8188` - Network accessline 67
If the agent/skill runs inside WSL/container/sandbox while ComfyUI runs on the host OS, `127.0.0.1` may refer to the runtime itself instead of the host. Try `--server http://localhost:8188` or the host machine IP. - Network accessline 193
"outputs": [], "job_id": null, "error": {"code": "SERVER_UNAVAILABLE", "message": "ComfyUI server not available at http://127.0.0.1:8188"}, - Network accessline 194
"job_id": null, "error": {"code": "SERVER_UNAVAILABLE", "message": "ComfyUI server not available at http://127.0.0.1:8188"}, "metadata": {} - Network accessline 195
"error": {"code": "SERVER_UNAVAILABLE", "message": "ComfyUI server not available at http://127.0.0.1:8188"},
scripts/comfyui/services/__init__.py
- Executable scriptline 1
Executable file
scripts/comfyui/services/errors.py
- Executable scriptline 1
Executable file
scripts/comfyui/services/executor.py
- Executable scriptline 1
Executable file
scripts/comfyui/services/job_store.py
- Executable scriptline 1
Executable file
scripts/comfyui/services/poller.py
- Executable scriptline 1
Executable file
scripts/comfyui/services/submitter.py
- Executable scriptline 1
Executable file - Network accessline 36
skill_root: Path, job_store_path: Path | None = None, server_url: str = "http://127.0.0.1:8188", - Network accessline 37
job_store_path: Path | None = None, server_url: str = "http://127.0.0.1:8188", input_images: dict[str, Path] | None = None, - Network accessline 38
server_url: str = "http://127.0.0.1:8188",
scripts/comfyui/services/workflow_config.py
- Executable scriptline 1
Executable file
scripts/comfyui/services/z_image_turbo.py
- Executable scriptline 1
Executable file - Network accessline 26
Args: prompt: 英文/自然语言提示词(正面)。 server_url: ComfyUI 服务根 URL;省略时从 `COMFYUI_URL` / `config.local.json` / `http://127.0.0.1:8188` 解析。 - Network accessline 27
prompt: 英文/自然语言提示词(正面)。 server_url: ComfyUI 服务根 URL;省略时从 `COMFYUI_URL` / `config.local.json` / `http://127.0.0.1:8188` 解析。 results_dir: 输出目录;省略时使用技能根下 ``results/%Y%m%d/%H%M%S_{job_id}/``(与 CLI 默认一致)。 - Network accessline 28
server_url: ComfyUI 服务根 URL;省略时从 `COMFYUI_URL` / `config.local.json` / `http://127.0.0.1:8188` 解析。
scripts/comfyui/tools/__init__.py
- Executable scriptline 1
Executable file
scripts/comfyui/tools/analyze_workflow.py
- Executable scriptline 1
Executable file
scripts/comfyui/tools/convert_ui_workflow.py
- Executable scriptline 1
Executable file
scripts/comfyui/tools/import_workflow.py
- Executable scriptline 1
Executable file
scripts/comfyui/workflow_selection.py
- Executable scriptline 1
Executable file
scripts/gen_diagram.py
scripts/make_clawhub_bundle.py
- Executable scriptline 1
Executable file
scripts/sync_package_assets.py
- Executable scriptline 1
Executable file
scripts/test_error_cases.py
scripts/tests/__init__.py
- Executable scriptline 1
Executable file
scripts/tests/conftest.py
- Executable scriptline 1
Executable file
scripts/tests/test_analyze_workflow.py
- Executable scriptline 1
Executable file
scripts/tests/test_cli.py
- Executable scriptline 1
Executable file - Access to secretsline 17
[Credential-related source omitted] - Network accessline 77
"z_image_turbo", "--server", "http://127.0.0.1:59997", - Network accessline 78
"--server", "http://127.0.0.1:59997", ) - Network accessline 79
"http://127.0.0.1:59997", - Network accessline 113
def test_check_with_custom_server(self): result = _run_module("--check", "--server", "http://127.0.0.1:59999") - Network accessline 114
result = _run_module("--check", "--server", "http://127.0.0.1:59999") - Network accessline 130
result = _run_module("--server", "http://127.0.0.1:59999", "--prompt", "test") - Network accessline 140
result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 141
"--server", "http://127.0.0.1:59999", - Network accessline 151
result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 152
"--server", "http://127.0.0.1:59999", - Network accessline 163
result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 164
"--server", "http://127.0.0.1:59999", - Network accessline 172
result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 173
"--server", "http://127.0.0.1:59999", - Network accessline 181
result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 182
"--server", "http://127.0.0.1:59999", - Network accessline 191
def test_tts_requires_speech_text_and_instruct(self): result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 192
result = _run_module( "--server", "http://127.0.0.1:59999", "--workflow", "qwen3_tts", - Network accessline 193
"--server", "http://127.0.0.1:59999", - Network accessline 201
def test_tts_rejects_positional_prompt_with_server_down(self): result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 202
result = _run_module( "--server", "http://127.0.0.1:59999", "--workflow", "qwen3_tts", - Network accessline 203
"--server", "http://127.0.0.1:59999", - Network accessline 212
def test_width_without_height_returns_invalid_param(self): result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 213
result = _run_module( "--server", "http://127.0.0.1:59999", "--prompt", "test", - Network accessline 214
"--server", "http://127.0.0.1:59999", - Network accessline 222
def test_klein_edit_rejects_explicit_dimensions(self): result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 223
result = _run_module( "--server", "http://127.0.0.1:59999", "--workflow", "klein_edit", - Network accessline 224
"--server", "http://127.0.0.1:59999", - Network accessline 234
def test_tts_rejects_width_height(self): result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 235
result = _run_module( "--server", "http://127.0.0.1:59999", "--workflow", "qwen3_tts", - Network accessline 236
"--server", "http://127.0.0.1:59999", - Network accessline 248
result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 249
"--server", "http://127.0.0.1:59999", - Network accessline 262
result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 263
"--server", "http://127.0.0.1:59999", - Network accessline 273
def test_ltx_i2v_without_dims_reaches_server(self): result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 274
result = _run_module( "--server", "http://127.0.0.1:59999", "--workflow", "ltx_23_i2v_distilled", - Network accessline 275
"--server", "http://127.0.0.1:59999", - Network accessline 285
result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 286
"--server", "http://127.0.0.1:59999", - Network accessline 298
def test_qwen_image_accepts_dimensions_dead_server_not_invalid_param(self): result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 299
result = _run_module( "--server", "http://127.0.0.1:59999", "--workflow", "qwen_image_2512_4step", - Network accessline 300
"--server", "http://127.0.0.1:59999", - Network accessline 315
result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 316
"--server", "http://127.0.0.1:59999", - Network accessline 326
result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 327
"--server", "http://127.0.0.1:59999", - Network accessline 340
result = _run_module( "--save-server", "http://192.168.1.100:8188", - Network accessline 341
"--save-server", "http://192.168.1.100:8188", extra_env={"COMFYUI_CONFIG_FILE": str(config_file)}, - Network accessline 342
"http://192.168.1.100:8188", - Network accessline 345
data = json.loads(result.stdout) assert data["saved"] is True assert data["comfyui_url"] == "http://192.168.1.100:8188" - Network accessline 346
assert data["saved"] is True assert data["comfyui_url"] == "http://192.168.1.100:8188" assert Path(data["config_file"]) == config_file.resolve() - Network accessline 347
assert data["comfyui_url"] == "http://192.168.1.100:8188" - Network accessline 349
assert result.returncode == 0 on_disk = json.loads(config_file.read_text(encoding="utf-8")) assert on_disk["comfyui_url"] == "http://192.168.1.100:8188" - Network accessline 351
assert on_disk["comfyui_url"] == "http://192.168.1.100:8188" - Network accessline 355
def test_image_file_not_found(self): result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 356
result = _run_module( "--server", "http://127.0.0.1:59999", "--workflow", "klein_edit", - Network accessline 357
"--server", "http://127.0.0.1:59999", - Network accessline 373
try: result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 374
result = _run_module( "--server", "http://127.0.0.1:59999", "--workflow", "klein_edit", - Network accessline 375
"--server", "http://127.0.0.1:59999", - Network accessline 390
def test_video_file_not_found(self): result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 391
result = _run_module( "--server", "http://127.0.0.1:59999", "--workflow", "klein_edit", - Network accessline 392
"--server", "http://127.0.0.1:59999", - Network accessline 401
def test_audio_file_not_found(self): result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 402
result = _run_module( "--server", "http://127.0.0.1:59999", "--workflow", "klein_edit", - Network accessline 403
"--server", "http://127.0.0.1:59999", - Network accessline 414
result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 415
"--server", "http://127.0.0.1:59999", - Network accessline 434
result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 435
"--server", "http://127.0.0.1:59999", - Network accessline 445
result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 446
"--server", "http://127.0.0.1:59999", - Network accessline 471
video.write_bytes(b"mp4") result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 472
result = _run_module( "--server", "http://127.0.0.1:59999", "--submit", - Network accessline 473
"--server", "http://127.0.0.1:59999", - Network accessline 485
audio.write_bytes(b"mp3") result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 486
result = _run_module( "--server", "http://127.0.0.1:59999", "--submit", - Network accessline 487
"--server", "http://127.0.0.1:59999", - Network accessline 497
def test_submit_voicedesign_still_rejects_positional_prompt(self): result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 498
result = _run_module( "--server", "http://127.0.0.1:59999", "--submit", - Network accessline 499
"--server", "http://127.0.0.1:59999", - Network accessline 535
workflow_id="z_image_turbo", prompt="test", server_url="http://127.0.0.1:8188", - Network accessline 536
prompt="test", server_url="http://127.0.0.1:8188", status="submitted", - Network accessline 537
server_url="http://127.0.0.1:8188", - Network accessline 571
workflow_id="z_image_turbo", prompt="test", server_url="http://127.0.0.1:8188", - Network accessline 572
prompt="test", server_url="http://127.0.0.1:8188", status="submitted", - Network accessline 573
server_url="http://127.0.0.1:8188", - Network accessline 578
workflow_id="z_image_turbo", prompt="test", server_url="http://127.0.0.1:8188", - Network accessline 579
prompt="test", server_url="http://127.0.0.1:8188", status="completed", - Network accessline 580
server_url="http://127.0.0.1:8188", - Network accessline 639
image.write_bytes(b"png") result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 640
result = _run_module( "--server", "http://127.0.0.1:59999", "--submit", - Network accessline 641
"--server", "http://127.0.0.1:59999", - Network accessline 658
video.write_bytes(b"mp4") result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 659
result = _run_module( "--server", "http://127.0.0.1:59999", "--submit", - Network accessline 660
"--server", "http://127.0.0.1:59999", - Network accessline 674
audio.write_bytes(b"mp3") result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 675
result = _run_module( "--server", "http://127.0.0.1:59999", "--submit", - Network accessline 676
"--server", "http://127.0.0.1:59999", - Network accessline 690
image.write_bytes(b"png") result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 691
result = _run_module( "--server", "http://127.0.0.1:59999", "--submit", - Network accessline 692
"--server", "http://127.0.0.1:59999", - Network accessline 704
def test_submit_width_without_height_rejects(self): result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 705
result = _run_module( "--server", "http://127.0.0.1:59999", "--submit", - Network accessline 706
"--server", "http://127.0.0.1:59999", - Network accessline 718
result = _run_module( "--server", "http://127.0.0.1:59999", - Network accessline 719
"--server", "http://127.0.0.1:59999",
scripts/tests/test_config.py
- Executable scriptline 1
Executable file - Network accessline 56
url = f"http://127.0.0.1:{port}" - Network accessline 68
result = check_server("http://127.0.0.1:59999") - Network accessline 69
assert result["available"] is False assert result["url"] == "http://127.0.0.1:59999" assert "error" in result - Network accessline 70
assert result["url"] == "http://127.0.0.1:59999" - Network accessline 99
url = f"http://127.0.0.1:{port}" - Network accessline 119
def test_env_var_overrides_default(self, monkeypatch): monkeypatch.setenv("COMFYUI_URL", "http://192.168.1.100:8188") - Network accessline 120
monkeypatch.setenv("COMFYUI_URL", "http://192.168.1.100:8188") - Network accessline 122
assert url == "http://192.168.1.100:8188" - Network accessline 124
def test_env_var_overrides_local_config(self, tmp_path, monkeypatch): config_path = tmp_path / "config.local.json" config_path.write_text(json.dumps({"comfyui_url": "http://from-config:8188"})) - Network accessline 125
config_path = tmp_path / "config.local.json" config_path.write_text(json.dumps({"comfyui_url": "http://from-config:8188"})) monkeypatch.setenv("COMFYUI_CONFIG_FILE", str(config_path)) - Network accessline 126
config_path.write_text(json.dumps({"comfyui_url": "http://from-config:8188"})) - Network accessline 127
monkeypatch.setenv("COMFYUI_CONFIG_FILE", str(config_path)) monkeypatch.setenv("COMFYUI_URL", "http://from-env:8188") url = get_comfyui_url() - Network accessline 128
monkeypatch.setenv("COMFYUI_URL", "http://from-env:8188") - Network accessline 130
assert url == "http://from-env:8188" - Network accessline 132
def test_local_config_used_when_no_env(self, tmp_path, monkeypatch): config_path = tmp_path / "config.local.json" config_path.write_text(json.dumps({"comfyui_url": "http://192.168.1.50:8188"})) - Network accessline 133
config_path = tmp_path / "config.local.json" config_path.write_text(json.dumps({"comfyui_url": "http://192.168.1.50:8188"})) monkeypatch.delenv("COMFYUI_URL", raising=False) - Network accessline 134
config_path.write_text(json.dumps({"comfyui_url": "http://192.168.1.50:8188"})) - Network accessline 136
monkeypatch.setenv("COMFYUI_CONFIG_FILE", str(config_path)) url = get_comfyui_url() assert url == "http://192.168.1.50:8188" - Network accessline 138
assert url == "http://192.168.1.50:8188" - Network accessline 150
config_path = tmp_path / "config.local.json" monkeypatch.setenv("COMFYUI_CONFIG_FILE", str(config_path)) save_comfyui_url("http://192.168.1.100:8188") - Network accessline 152
save_comfyui_url("http://192.168.1.100:8188") - Network accessline 154
data = json.loads(config_path.read_text(encoding="utf-8")) assert data["comfyui_url"] == "http://192.168.1.100:8188" - Network accessline 155
assert data["comfyui_url"] == "http://192.168.1.100:8188" - Network accessline 159
config_path.write_text(json.dumps({"other_key": "keep_me"})) monkeypatch.setenv("COMFYUI_CONFIG_FILE", str(config_path)) save_comfyui_url("http://new-url:8188") - Network accessline 161
save_comfyui_url("http://new-url:8188") - Network accessline 163
data = json.loads(config_path.read_text(encoding="utf-8")) assert data["comfyui_url"] == "http://new-url:8188" - Network accessline 164
assert data["comfyui_url"] == "http://new-url:8188" - Network accessline 168
config_path = tmp_path / "config.local.json" monkeypatch.setenv("COMFYUI_CONFIG_FILE", str(config_path)) save_comfyui_url("http://192.168.1.100:8188/") - Network accessline 170
save_comfyui_url("http://192.168.1.100:8188/") - Network accessline 172
data = json.loads(config_path.read_text(encoding="utf-8")) assert data["comfyui_url"] == "http://192.168.1.100:8188" - Network accessline 173
assert data["comfyui_url"] == "http://192.168.1.100:8188"
scripts/tests/test_console_script.py
- Executable scriptline 1
Executable file
scripts/tests/test_convert_ui_workflow.py
- Executable scriptline 1
Executable file - Access to secretsline 33
[Credential-related source omitted] - Network accessline 109
def test_source_not_found(self, tmp_path: Path): r = _run_module("convert-ui", str(tmp_path / "missing.json"), "--server", "http://x:1") - Network accessline 110
r = _run_module("convert-ui", str(tmp_path / "missing.json"), "--server", "http://x:1") - Network accessline 122
encoding="utf-8", ) r = _run_module("convert-ui", str(src), "-o", str(tmp_path / "out.json"), "--server", "http://x:1") - Network accessline 123
) r = _run_module("convert-ui", str(src), "-o", str(tmp_path / "out.json"), "--server", "http://x:1") assert r.returncode == 0, r.stderr - Network accessline 124
r = _run_module("convert-ui", str(src), "-o", str(tmp_path / "out.json"), "--server", "http://x:1") - Network accessline 130
src = tmp_path / "weird.json" src.write_text(json.dumps({"foo": "bar"}), encoding="utf-8") r = _run_module("convert-ui", str(src), "-o", str(tmp_path / "out.json"), "--server", "http://x:1") - Network accessline 131
src.write_text(json.dumps({"foo": "bar"}), encoding="utf-8") r = _run_module("convert-ui", str(src), "-o", str(tmp_path / "out.json"), "--server", "http://x:1") assert r.returncode != 0 - Network accessline 132
r = _run_module("convert-ui", str(src), "-o", str(tmp_path / "out.json"), "--server", "http://x:1")
scripts/tests/test_custom_workflows_registry.py
- Executable scriptline 1
Executable file
scripts/tests/test_docs_entrypoints.py
- Executable scriptline 1
Executable file
scripts/tests/test_doctor_command.py
- Executable scriptline 1
Executable file - Network accessline 49
argv0 = sys.argv[0] try: sys.argv = [argv0, "--server", "http://127.0.0.1:8188"] - Network accessline 50
try: sys.argv = [argv0, "--server", "http://127.0.0.1:8188"] rc = cli_admin.cmd_doctor() - Network accessline 51
sys.argv = [argv0, "--server", "http://127.0.0.1:8188"] - Network accessline 86
argv0 = sys.argv[0] try: sys.argv = [argv0, "--server", "http://127.0.0.1:8188"] - Network accessline 87
try: sys.argv = [argv0, "--server", "http://127.0.0.1:8188"] rc = cli_admin.cmd_doctor() - Network accessline 88
sys.argv = [argv0, "--server", "http://127.0.0.1:8188"]
scripts/tests/test_executor.py
- Executable scriptline 1
Executable file
scripts/tests/test_executor_qwen3_tts.py
- Executable scriptline 1
Executable file
scripts/tests/test_import_workflow.py
scripts/tests/test_install_mode.py
- Executable scriptline 1
Executable file - Access to secretsline 13
[Credential-related source omitted] - Network accessline 34
"z_image_turbo", "--server", "http://127.0.0.1:59997", - Network accessline 35
"--server", "http://127.0.0.1:59997", extra_env=env, - Network accessline 36
"http://127.0.0.1:59997", - Network accessline 49
"COMFYUI_SKILL_USER_DATA_ROOT": str(user_root), } r = _run_module_from_cwd(tmp_path, "save-server", "http://127.0.0.1:8188", extra_env=env) - Network accessline 50
} r = _run_module_from_cwd(tmp_path, "save-server", "http://127.0.0.1:8188", extra_env=env) assert r.returncode == 0 - Network accessline 51
r = _run_module_from_cwd(tmp_path, "save-server", "http://127.0.0.1:8188", extra_env=env)
scripts/tests/test_integration.py
scripts/tests/test_job_store.py
- Executable scriptline 1
Executable file - Network accessline 45
workflow_id="z_image_turbo", prompt="a cute cat", server_url="http://127.0.0.1:8188", - Network accessline 46
prompt="a cute cat", server_url="http://127.0.0.1:8188", status="submitted", - Network accessline 47
server_url="http://127.0.0.1:8188", - Network accessline 58
assert row["workflow_id"] == "z_image_turbo" assert row["prompt"] == "a cute cat" assert row["server_url"] == "http://127.0.0.1:8188" - Network accessline 59
assert row["prompt"] == "a cute cat" assert row["server_url"] == "http://127.0.0.1:8188" assert row["status"] == "submitted" - Network accessline 60
assert row["server_url"] == "http://127.0.0.1:8188" - Network accessline 72
workflow_id="z_image_turbo", prompt="a cute cat", server_url="http://127.0.0.1:8188", - Network accessline 73
prompt="a cute cat", server_url="http://127.0.0.1:8188", status="submitted", - Network accessline 74
server_url="http://127.0.0.1:8188", - Network accessline 90
"workflow_id": "klein_edit", "prompt": f"edit {i}", "server_url": "http://127.0.0.1:8188", - Network accessline 91
"prompt": f"edit {i}", "server_url": "http://127.0.0.1:8188", "status": "submitted", - Network accessline 92
"server_url": "http://127.0.0.1:8188", - Network accessline 110
"workflow_id": "z_image_turbo", "prompt": "p1", "server_url": "http://127.0.0.1:8188", - Network accessline 111
"prompt": "p1", "server_url": "http://127.0.0.1:8188", "status": "submitted", - Network accessline 112
"server_url": "http://127.0.0.1:8188", - Network accessline 118
"workflow_id": "z_image_turbo", "prompt": "p2", "server_url": "http://127.0.0.1:8188", - Network accessline 119
"prompt": "p2", "server_url": "http://127.0.0.1:8188", "status": "submitted", - Network accessline 120
"server_url": "http://127.0.0.1:8188", - Network accessline 134
store = JobStore(tmp_path / "jobs.db") store.save_job(job_id="j1", workflow_id="z", prompt="p1", server_url="http://127.0.0.1:8188", status="submitted") - Network accessline 135
store.save_job(job_id="j1", workflow_id="z", prompt="p1", server_url="http://127.0.0.1:8188", status="submitted") store.save_job(job_id="j1", workflow_id="z", prompt="p2", - Network accessline 136
server_url="http://127.0.0.1:8188", status="submitted") - Network accessline 137
store.save_job(job_id="j1", workflow_id="z", prompt="p2", server_url="http://127.0.0.1:8188", status="executing") row = store.get_job("j1") - Network accessline 138
server_url="http://127.0.0.1:8188", status="executing") - Network accessline 150
store = JobStore(tmp_path / "jobs.db") store.save_job(job_id="j1", workflow_id="z", prompt="p", server_url="http://127.0.0.1:8188", status="submitted") - Network accessline 151
store.save_job(job_id="j1", workflow_id="z", prompt="p", server_url="http://127.0.0.1:8188", status="submitted") row = store.get_job("j1") - Network accessline 152
server_url="http://127.0.0.1:8188", status="submitted") - Network accessline 160
store = JobStore(tmp_path / "jobs.db") store.save_job(job_id="j1", workflow_id="z", prompt="p", server_url="http://127.0.0.1:8188", status="submitted") - Network accessline 161
store.save_job(job_id="j1", workflow_id="z", prompt="p", server_url="http://127.0.0.1:8188", status="submitted") store.update_job("j1", status="executing", node="KSampler", phase="executing") - Network accessline 162
server_url="http://127.0.0.1:8188", status="submitted") - Network accessline 170
store = JobStore(tmp_path / "jobs.db") store.save_job(job_id="j1", workflow_id="z", prompt="p", server_url="http://127.0.0.1:8188", status="submitted") - Network accessline 171
store.save_job(job_id="j1", workflow_id="z", prompt="p", server_url="http://127.0.0.1:8188", status="submitted") outputs = json.dumps([{"path": "/results/img.png", "filename": "img.png", "size_bytes": 12345}]) - Network accessline 172
server_url="http://127.0.0.1:8188", status="submitted") - Network accessline 181
store = JobStore(tmp_path / "jobs.db") store.save_job(job_id="j1", workflow_id="z", prompt="p", server_url="http://127.0.0.1:8188", status="submitted") - Network accessline 182
store.save_job(job_id="j1", workflow_id="z", prompt="p", server_url="http://127.0.0.1:8188", status="submitted") store.update_job("j1", status="failed", error="ComfyUI out of memory") - Network accessline 183
server_url="http://127.0.0.1:8188", status="submitted") - Network accessline 198
for i in range(5): store.save_job(job_id=f"j{i}", workflow_id="z", prompt=f"p{i}", server_url="http://127.0.0.1:8188", status="submitted") - Network accessline 199
store.save_job(job_id=f"j{i}", workflow_id="z", prompt=f"p{i}", server_url="http://127.0.0.1:8188", status="submitted") rows = store.list_jobs() - Network accessline 200
server_url="http://127.0.0.1:8188", status="submitted") - Network accessline 205
store = JobStore(tmp_path / "jobs.db") store.save_job(job_id="j1", workflow_id="z", prompt="p1", server_url="http://127.0.0.1:8188", status="submitted") - Network accessline 206
store.save_job(job_id="j1", workflow_id="z", prompt="p1", server_url="http://127.0.0.1:8188", status="submitted") store.save_job(job_id="j2", workflow_id="z", prompt="p2", - Network accessline 207
server_url="http://127.0.0.1:8188", status="submitted") - Network accessline 208
store.save_job(job_id="j2", workflow_id="z", prompt="p2", server_url="http://127.0.0.1:8188", status="completed") rows = store.list_jobs(status="completed") - Network accessline 209
server_url="http://127.0.0.1:8188", status="completed") - Network accessline 216
for i in range(5): store.save_job(job_id=f"j{i}", workflow_id="z", prompt=f"p{i}", server_url="http://127.0.0.1:8188", status="submitted") - Network accessline 217
store.save_job(job_id=f"j{i}", workflow_id="z", prompt=f"p{i}", server_url="http://127.0.0.1:8188", status="submitted") rows = store.list_jobs(limit=3) - Network accessline 218
server_url="http://127.0.0.1:8188", status="submitted") - Network accessline 223
store = JobStore(tmp_path / "jobs.db") store.save_job(job_id="s1", workflow_id="z", prompt="p", server_url="http://127.0.0.1:8188", status="submitted") - Network accessline 224
store.save_job(job_id="s1", workflow_id="z", prompt="p", server_url="http://127.0.0.1:8188", status="submitted") store.save_job(job_id="e1", workflow_id="z", prompt="p", - Network accessline 225
server_url="http://127.0.0.1:8188", status="submitted") - Network accessline 226
store.save_job(job_id="e1", workflow_id="z", prompt="p", server_url="http://127.0.0.1:8188", status="executing") store.save_job(job_id="c1", workflow_id="z", prompt="p", - Network accessline 227
server_url="http://127.0.0.1:8188", status="executing") - Network accessline 228
store.save_job(job_id="c1", workflow_id="z", prompt="p", server_url="http://127.0.0.1:8188", status="completed") rows = store.list_jobs(statuses=("submitted", "executing")) - Network accessline 229
server_url="http://127.0.0.1:8188", status="completed") - Network accessline 237
store = JobStore(tmp_path / "jobs.db") store.save_job(job_id="j1", workflow_id="z", prompt="p", server_url="http://127.0.0.1:8188", status="submitted") - Network accessline 238
store.save_job(job_id="j1", workflow_id="z", prompt="p", server_url="http://127.0.0.1:8188", status="submitted") store.delete_job("j1") - Network accessline 239
server_url="http://127.0.0.1:8188", status="submitted") - Network accessline 252
new_date = datetime.now(timezone.utc).isoformat() store.save_job(job_id="j1", workflow_id="z", prompt="p", server_url="http://127.0.0.1:8188", status="completed", - Network accessline 253
store.save_job(job_id="j1", workflow_id="z", prompt="p", server_url="http://127.0.0.1:8188", status="completed", created_at=old_date) - Network accessline 254
server_url="http://127.0.0.1:8188", status="completed", - Network accessline 255
created_at=old_date) store.save_job(job_id="j2", workflow_id="z", prompt="p", server_url="http://127.0.0.1:8188", status="completed", - Network accessline 256
store.save_job(job_id="j2", workflow_id="z", prompt="p", server_url="http://127.0.0.1:8188", status="completed", created_at=new_date) - Network accessline 257
server_url="http://127.0.0.1:8188", status="completed", - Network accessline 258
created_at=new_date) store.save_job(job_id="j3", workflow_id="z", prompt="p", server_url="http://127.0.0.1:8188", status="executing", - Network accessline 259
store.save_job(job_id="j3", workflow_id="z", prompt="p", server_url="http://127.0.0.1:8188", status="executing", created_at=old_date) - Network accessline 260
server_url="http://127.0.0.1:8188", status="executing",
scripts/tests/test_package_resources.py
- Executable scriptline 1
Executable file
scripts/tests/test_poller.py
- Executable scriptline 1
Executable file - Network accessline 16
from comfyui.services.poller import poll_job store = JobStore(tmp_path / "jobs.db") result = poll_job("nonexistent", store, "http://127.0.0.1:8188") - Network accessline 17
store = JobStore(tmp_path / "jobs.db") result = poll_job("nonexistent", store, "http://127.0.0.1:8188") assert result["success"] is False - Network accessline 18
result = poll_job("nonexistent", store, "http://127.0.0.1:8188") - Network accessline 32
workflow_id="z_image_turbo", prompt="test", server_url="http://127.0.0.1:8188", - Network accessline 33
prompt="test", server_url="http://127.0.0.1:8188", status="submitted", - Network accessline 34
server_url="http://127.0.0.1:8188", - Network accessline 46
result = poll_job("job-sub-1", store, "http://127.0.0.1:8188") - Network accessline 64
workflow_id="z_image_turbo", prompt="test", server_url="http://127.0.0.1:8188", - Network accessline 65
prompt="test", server_url="http://127.0.0.1:8188", status="submitted", - Network accessline 66
server_url="http://127.0.0.1:8188", - Network accessline 90
"job-done-1", store, "http://127.0.0.1:8188", - Network accessline 91
store, "http://127.0.0.1:8188", skill_root=SKILL_ROOT, - Network accessline 92
"http://127.0.0.1:8188", - Network accessline 119
prompt="x", text_inputs=json.dumps({"speech_text": "hello", "instruct": "soft"}, ensure_ascii=True), server_url="http://127.0.0.1:8188", - Network accessline 120
text_inputs=json.dumps({"speech_text": "hello", "instruct": "soft"}, ensure_ascii=True), server_url="http://127.0.0.1:8188", status="submitted", - Network accessline 121
server_url="http://127.0.0.1:8188", - Network accessline 142
"job-audio-1", store, "http://127.0.0.1:8188", - Network accessline 143
store, "http://127.0.0.1:8188", skill_root=SKILL_ROOT, - Network accessline 144
"http://127.0.0.1:8188", - Network accessline 158
workflow_id="z_image_turbo", prompt="test", server_url="http://127.0.0.1:8188", - Network accessline 159
prompt="test", server_url="http://127.0.0.1:8188", status="submitted", - Network accessline 160
server_url="http://127.0.0.1:8188", - Network accessline 174
result = poll_job("job-err-1", store, "http://127.0.0.1:8188") - Network accessline 187
workflow_id="z_image_turbo", prompt="test", server_url="http://127.0.0.1:8188", - Network accessline 188
prompt="test", server_url="http://127.0.0.1:8188", status="executing", - Network accessline 189
server_url="http://127.0.0.1:8188", - Network accessline 198
result = poll_job("job-exec-1", store, "http://127.0.0.1:8188") - Network accessline 210
workflow_id="z_image_turbo", prompt="test", server_url="http://192.168.1.100:8188", - Network accessline 211
prompt="test", server_url="http://192.168.1.100:8188", status="submitted", - Network accessline 212
server_url="http://192.168.1.100:8188", - Network accessline 222
result = poll_job("job-override", store, "http://127.0.0.1:8188") - Network accessline 225
mock_cls.assert_called_with("http://127.0.0.1:8188") - Network accessline 235
workflow_id="z_image_turbo", prompt="test", server_url="http://127.0.0.1:8188", - Network accessline 236
prompt="test", server_url="http://127.0.0.1:8188", status="submitted", - Network accessline 237
server_url="http://127.0.0.1:8188", - Network accessline 246
result = poll_job("job-empty", store, "http://127.0.0.1:8188") - Network accessline 259
workflow_id="z_image_turbo", prompt="test", server_url="http://127.0.0.1:8188", - Network accessline 260
prompt="test", server_url="http://127.0.0.1:8188", status="submitted", - Network accessline 261
server_url="http://127.0.0.1:8188", - Network accessline 273
result = poll_job("job-ws-1", store, "http://127.0.0.1:8188") - Network accessline 286
workflow_id="z_image_turbo", prompt="test", server_url="http://127.0.0.1:8188", - Network accessline 287
prompt="test", server_url="http://127.0.0.1:8188", status="submitted", - Network accessline 288
server_url="http://127.0.0.1:8188", - Network accessline 300
poll_job("job-phase-1", store, "http://127.0.0.1:8188") - Network accessline 313
workflow_id="z_image_turbo", prompt="test", server_url="http://127.0.0.1:8188", - Network accessline 314
prompt="test", server_url="http://127.0.0.1:8188", status="submitted", - Network accessline 315
server_url="http://127.0.0.1:8188", - Network accessline 320
workflow_id="z_image_turbo", prompt="test", server_url="http://127.0.0.1:8188", - Network accessline 321
prompt="test", server_url="http://127.0.0.1:8188", status="executing", - Network accessline 322
server_url="http://127.0.0.1:8188", - Network accessline 328
workflow_id="z_image_turbo", prompt="test", server_url="http://127.0.0.1:8188", - Network accessline 329
prompt="test", server_url="http://127.0.0.1:8188", status="completed", - Network accessline 330
server_url="http://127.0.0.1:8188", - Network accessline 340
results = poll_all_jobs(store, poll_server_url="http://127.0.0.1:8188") - Network accessline 350
workflow_id="z_image_turbo", prompt="test", server_url="http://192.168.1.10:8188", - Network accessline 351
prompt="test", server_url="http://192.168.1.10:8188", status="submitted", - Network accessline 352
server_url="http://192.168.1.10:8188", - Network accessline 357
workflow_id="z_image_turbo", prompt="test", server_url="http://192.168.1.20:8188", - Network accessline 358
prompt="test", server_url="http://192.168.1.20:8188", status="submitted", - Network accessline 359
server_url="http://192.168.1.20:8188", - Network accessline 370
urls = [call[0][0] for call in mock_cls.call_args_list] assert "http://192.168.1.10:8188" in urls - Network accessline 371
assert "http://192.168.1.10:8188" in urls - Network accessline 372
assert "http://192.168.1.20:8188" in urls - Network accessline 376
from comfyui.services.poller import poll_all_jobs store = JobStore(tmp_path / "jobs.db") results = poll_all_jobs(store, poll_server_url="http://127.0.0.1:8188") - Network accessline 377
store = JobStore(tmp_path / "jobs.db") results = poll_all_jobs(store, poll_server_url="http://127.0.0.1:8188") assert results == [] - Network accessline 378
results = poll_all_jobs(store, poll_server_url="http://127.0.0.1:8188") - Network accessline 389
workflow_id="z_image_turbo", prompt="test", server_url="http://127.0.0.1:8188", - Network accessline 390
prompt="test", server_url="http://127.0.0.1:8188", status="submitted", - Network accessline 391
server_url="http://127.0.0.1:8188", - Network accessline 395
with patch("comfyui.services.poller.ComfyApiWrapper", side_effect=Exception("no route")): result = poll_job("job-transient-1", store, "http://127.0.0.1:8188") - Network accessline 396
result = poll_job("job-transient-1", store, "http://127.0.0.1:8188") - Network accessline 410
workflow_id="z_image_turbo", prompt="test", server_url="http://127.0.0.1:8188", - Network accessline 411
prompt="test", server_url="http://127.0.0.1:8188", status="submitted", - Network accessline 412
server_url="http://127.0.0.1:8188", - Network accessline 421
result = poll_job("job-transient-2", store, "http://127.0.0.1:8188") - Network accessline 435
workflow_id="z_image_turbo", prompt="test", server_url="http://127.0.0.1:8188", - Network accessline 436
prompt="test", server_url="http://127.0.0.1:8188", status="submitted", - Network accessline 437
server_url="http://127.0.0.1:8188", - Network accessline 441
with patch("comfyui.services.poller.ComfyApiWrapper", side_effect=Exception("no route")): poll_job("job-transient-3", store, "http://127.0.0.1:8188") - Network accessline 442
poll_job("job-transient-3", store, "http://127.0.0.1:8188") - Network accessline 448
mock_inst.get_history.return_value = {} # success poll, still not completed mock_cls.return_value = mock_inst result = poll_job("job-transient-3", store, "http://127.0.0.1:8188") - Network accessline 450
result = poll_job("job-transient-3", store, "http://127.0.0.1:8188") - Network accessline 464
workflow_id="z_image_turbo", prompt="test", server_url="http://127.0.0.1:8188", - Network accessline 465
prompt="test", server_url="http://127.0.0.1:8188", status="submitted", - Network accessline 466
server_url="http://127.0.0.1:8188", - Network accessline 488
"job-multi", store, "http://127.0.0.1:8188", - Network accessline 489
store, "http://127.0.0.1:8188", skill_root=SKILL_ROOT, - Network accessline 490
"http://127.0.0.1:8188", - Network accessline 505
workflow_id="z_image_turbo", prompt="test", server_url="http://127.0.0.1:8188", - Network accessline 506
prompt="test", server_url="http://127.0.0.1:8188", status="submitted", - Network accessline 507
server_url="http://127.0.0.1:8188", - Network accessline 526
"job-time", store, "http://127.0.0.1:8188", - Network accessline 527
store, "http://127.0.0.1:8188", skill_root=SKILL_ROOT, - Network accessline 528
"http://127.0.0.1:8188", - Network accessline 545
workflow_id="z_image_turbo", prompt="test", server_url="http://127.0.0.1:8188", - Network accessline 546
prompt="test", server_url="http://127.0.0.1:8188", status="submitted", - Network accessline 547
server_url="http://127.0.0.1:8188", - Network accessline 559
result = poll_job("job-fin", store, "http://127.0.0.1:8188") - Network accessline 595
workflow_id="glb_probe", prompt="a 3d model", server_url="http://127.0.0.1:8188", - Network accessline 596
prompt="a 3d model", server_url="http://127.0.0.1:8188", status="submitted", - Network accessline 597
server_url="http://127.0.0.1:8188", - Network accessline 639
"job-3d-1", store, "http://127.0.0.1:8188", - Network accessline 640
store, "http://127.0.0.1:8188", skill_root=SKILL_ROOT, - Network accessline 641
"http://127.0.0.1:8188",
scripts/tests/test_preflight.py
- Executable scriptline 1
Executable file - Network accessline 128
thread = Thread(target=server.serve_forever, daemon=True) thread.start() return f"http://127.0.0.1:{port}", server - Network accessline 130
return f"http://127.0.0.1:{port}", server - Network accessline 214
def test_dead_server_not_reachable(self): r = validate_workflow_resources("http://127.0.0.1:59998", WF_NODE_OK) - Network accessline 215
r = validate_workflow_resources("http://127.0.0.1:59998", WF_NODE_OK) - Network accessline 284
path = skill_root / "assets" / "workflows" / "z_image_turbo.json" wf = load_workflow_json(path) r = validate_workflow_resources("http://127.0.0.1:59997", wf) - Network accessline 285
wf = load_workflow_json(path) r = validate_workflow_resources("http://127.0.0.1:59997", wf) assert r.ok is False - Network accessline 286
r = validate_workflow_resources("http://127.0.0.1:59997", wf)
scripts/tests/test_resource_mirror.py
- Executable scriptline 1
Executable file
scripts/tests/test_result.py
- Executable scriptline 1
Executable file
scripts/tests/test_submitter.py
- Executable scriptline 1
Executable file - Network accessline 50
skill_root=SKILL_ROOT, job_store_path=tmp_path / "jobs.db", server_url="http://127.0.0.1:8188", - Network accessline 51
job_store_path=tmp_path / "jobs.db", server_url="http://127.0.0.1:8188", skip_preflight=False, - Network accessline 52
server_url="http://127.0.0.1:8188", - Network accessline 103
skill_root=SKILL_ROOT, job_store_path=store_path, server_url="http://127.0.0.1:8188", - Network accessline 104
job_store_path=store_path, server_url="http://127.0.0.1:8188", ) - Network accessline 105
server_url="http://127.0.0.1:8188", - Network accessline 115
assert row["prompt"] == "a cute cat" assert row["status"] == "submitted" assert row["server_url"] == "http://127.0.0.1:8188" - Network accessline 117
assert row["server_url"] == "http://127.0.0.1:8188" - Network accessline 129
skill_root=SKILL_ROOT, job_store_path=store_path, server_url="http://127.0.0.1:8188", - Network accessline 130
job_store_path=store_path, server_url="http://127.0.0.1:8188", ) - Network accessline 131
server_url="http://127.0.0.1:8188", - Network accessline 151
job_store_path=store_path, count=3, server_url="http://127.0.0.1:8188", - Network accessline 152
count=3, server_url="http://127.0.0.1:8188", ) - Network accessline 153
server_url="http://127.0.0.1:8188", - Network accessline 177
job_store_path=store_path, count=1, server_url="http://127.0.0.1:8188", - Network accessline 178
count=1, server_url="http://127.0.0.1:8188", ) - Network accessline 179
server_url="http://127.0.0.1:8188", - Network accessline 211
job_store_path=store_path, input_images={"input_image": img_file}, server_url="http://127.0.0.1:8188", - Network accessline 212
input_images={"input_image": img_file}, server_url="http://127.0.0.1:8188", ) - Network accessline 213
server_url="http://127.0.0.1:8188", - Network accessline 230
job_store_path=store_path, input_images={"input_image": tmp_path / "nonexistent.png"}, server_url="http://127.0.0.1:8188", - Network accessline 231
input_images={"input_image": tmp_path / "nonexistent.png"}, server_url="http://127.0.0.1:8188", ) - Network accessline 232
server_url="http://127.0.0.1:8188", - Network accessline 250
skill_root=SKILL_ROOT, job_store_path=store_path, server_url="http://127.0.0.1:8188", - Network accessline 251
job_store_path=store_path, server_url="http://127.0.0.1:8188", ) - Network accessline 252
server_url="http://127.0.0.1:8188", - Network accessline 271
job_store_path=store_path, seed=12345, server_url="http://127.0.0.1:8188", - Network accessline 272
seed=12345, server_url="http://127.0.0.1:8188", ) - Network accessline 273
server_url="http://127.0.0.1:8188", - Network accessline 295
width=1024, height=768, server_url="http://127.0.0.1:8188", - Network accessline 296
height=768, server_url="http://127.0.0.1:8188", ) - Network accessline 297
server_url="http://127.0.0.1:8188", - Network accessline 330
width=512, height=512, server_url="http://127.0.0.1:8188", - Network accessline 331
height=512, server_url="http://127.0.0.1:8188", ) - Network accessline 332
server_url="http://127.0.0.1:8188", - Network accessline 356
width=1920, height=1088, server_url="http://127.0.0.1:8188", - Network accessline 357
height=1088, server_url="http://127.0.0.1:8188", skip_preflight=True, - Network accessline 358
server_url="http://127.0.0.1:8188", - Network accessline 379
skill_root=SKILL_ROOT, job_store_path=store_path, server_url="http://127.0.0.1:8188", - Network accessline 380
job_store_path=store_path, server_url="http://127.0.0.1:8188", skip_preflight=True, - Network accessline 381
server_url="http://127.0.0.1:8188", - Network accessline 414
width=1920, height=1088, server_url="http://127.0.0.1:8188", - Network accessline 415
height=1088, server_url="http://127.0.0.1:8188", skip_preflight=True, - Network accessline 416
server_url="http://127.0.0.1:8188", - Network accessline 441
skill_root=SKILL_ROOT, job_store_path=store_path, server_url="http://127.0.0.1:8188", - Network accessline 442
job_store_path=store_path, server_url="http://127.0.0.1:8188", ) - Network accessline 443
server_url="http://127.0.0.1:8188", - Network accessline 462
skill_root=SKILL_ROOT, job_store_path=store_path, server_url="http://127.0.0.1:8188", - Network accessline 463
job_store_path=store_path, server_url="http://127.0.0.1:8188", text_inputs={"speech_text": "你好", "instruct": "女声"}, - Network accessline 464
server_url="http://127.0.0.1:8188",
scripts/tests/test_validate_command.py
- Executable scriptline 1
Executable file - Network accessline 55
argv0 = sys.argv[0] try: sys.argv = [argv0, "--server", "http://127.0.0.1:8188"] - Network accessline 56
try: sys.argv = [argv0, "--server", "http://127.0.0.1:8188"] rc = cli_validate.cmd_validate() - Network accessline 57
sys.argv = [argv0, "--server", "http://127.0.0.1:8188"] - Network accessline 110
argv0 = sys.argv[0] try: sys.argv = [argv0, "--server", "http://127.0.0.1:8188", "--run", "--output", str(tmp_path)] - Network accessline 111
try: sys.argv = [argv0, "--server", "http://127.0.0.1:8188", "--run", "--output", str(tmp_path)] rc = cli_validate.cmd_validate() - Network accessline 112
sys.argv = [argv0, "--server", "http://127.0.0.1:8188", "--run", "--output", str(tmp_path)]
scripts/tests/test_vendored_comfy_api.py
- Executable scriptline 1
Executable file - Network accessline 22
def test_comfy_api_wrapper_instantiates() -> None: api = ComfyApiWrapper("http://127.0.0.1:8188") - Network accessline 23
api = ComfyApiWrapper("http://127.0.0.1:8188") - Network accessline 42
def test_default_timeouts_are_bounded() -> None: api = ComfyApiWrapper("http://127.0.0.1:8188") - Network accessline 43
api = ComfyApiWrapper("http://127.0.0.1:8188") - Network accessline 47
def test_timeouts_are_configurable() -> None: api = ComfyApiWrapper("http://127.0.0.1:8188", connect_timeout=3.0, read_timeout=7.5) - Network accessline 48
api = ComfyApiWrapper("http://127.0.0.1:8188", connect_timeout=3.0, read_timeout=7.5) - Network accessline 53
def test_queue_prompt_sends_timeout(mock_post) -> None: mock_post.return_value = _ok_response({"prompt_id": "abc"}) api = ComfyApiWrapper("http://127.0.0.1:8188", connect_timeout=3.0, read_timeout=7.5) - Network accessline 55
api = ComfyApiWrapper("http://127.0.0.1:8188", connect_timeout=3.0, read_timeout=7.5) - Network accessline 62
def test_read_calls_send_timeout(mock_get) -> None: mock_get.return_value = _ok_response({"p": 1}) api = ComfyApiWrapper("http://127.0.0.1:8188", connect_timeout=3.0, read_timeout=7.5) - Network accessline 64
api = ComfyApiWrapper("http://127.0.0.1:8188", connect_timeout=3.0, read_timeout=7.5) - Network accessline 79
media = tmp_path / "a.bin" media.write_bytes(b"data") api = ComfyApiWrapper("http://127.0.0.1:8188", connect_timeout=3.0, read_timeout=7.5) - Network accessline 81
api = ComfyApiWrapper("http://127.0.0.1:8188", connect_timeout=3.0, read_timeout=7.5) - Network accessline 95
mock_post.side_effect = requests.exceptions.ReadTimeout("read timed out") api = ComfyApiWrapper("http://127.0.0.1:8188") - Network accessline 96
api = ComfyApiWrapper("http://127.0.0.1:8188") - Network accessline 161
isolated_config.write_text(json.dumps({"http_read_timeout": 25}), encoding="utf-8") save_comfyui_url("http://127.0.0.1:8189") - Network accessline 162
save_comfyui_url("http://127.0.0.1:8189")
scripts/tests/test_workflow_config.py
- Executable scriptline 1
Executable file
scripts/tests/test_workflow_selection.py
- Executable scriptline 1
Executable file
uv.lock
- Network accessline 6
name = "certifi" version = "2026.4.22" source = { registry = "https://pypi.org/simple" } - Network accessline 7
version = "2026.4.22" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/25/ee/6caf7a40c36a1220410afe15a1cc64993a1f864871f698c0f93acb72842a/certifi-2026.4.22.tar.gz", hash = "sha256:8d - Network accessline 8
source = { registry = "https://pypi.org/simple" } - Network accessline 9
sdist = { url = "https://files.pythonhosted.org/packages/25/ee/6caf7a40c36a1220410afe15a1cc64993a1f864871f698c0f93acb72842a/certifi-2026.4.22.tar.gz", hash = "sha256:8d455352a37b71bf76a79caa83a3d6c25afee4a385d632127b6afb3963f1c580", size = - Network accessline 10
wheels = [ { url = "https://files.pythonhosted.org/packages/22/30/7cd8fdcdfbc5b869528b079bfb76dcdf6056b1a2097a662e5e8c04f42965/certifi-2026.4.22-py3-none-any.whl", hash = "sha256:3cb2210c8f88ba2318d29b0388d1023c8492ff72ecdde4ebdaddbb13a - Network accessline 11
{ url = "https://files.pythonhosted.org/packages/22/30/7cd8fdcdfbc5b869528b079bfb76dcdf6056b1a2097a662e5e8c04f42965/certifi-2026.4.22-py3-none-any.whl", hash = "sha256:3cb2210c8f88ba2318d29b0388d1023c8492ff72ecdde4ebdaddbb13a31b1c4a", size - Network accessline 15
name = "charset-normalizer" version = "3.4.7" source = { registry = "https://pypi.org/simple" } - Network accessline 16
version = "3.4.7" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/e7/a1/67fe25fac3c7642725500a3f6cfe5821ad557c3abb11c9d20d12c7008d3e/charset_normalizer-3.4.7.tar.gz", hash = "sha256 - Network accessline 17
source = { registry = "https://pypi.org/simple" } - Network accessline 18
sdist = { url = "https://files.pythonhosted.org/packages/e7/a1/67fe25fac3c7642725500a3f6cfe5821ad557c3abb11c9d20d12c7008d3e/charset_normalizer-3.4.7.tar.gz", hash = "sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5", - Network accessline 19
wheels = [ { url = "https://files.pythonhosted.org/packages/26/08/0f303cb0b529e456bb116f2d50565a482694fbb94340bf56d44677e7ed03/charset_normalizer-3.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cdd68a1fb318e290a2077696b7eb - Network accessline 20
{ url = "https://files.pythonhosted.org/packages/26/08/0f303cb0b529e456bb116f2d50565a482694fbb94340bf56d44677e7ed03/charset_normalizer-3.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cdd68a1fb318e290a2077696b7eb7a21a49163c4559 - Network accessline 21
{ url = "https://files.pythonhosted.org/packages/24/47/b192933e94b546f1b1fe4df9cc1f84fcdbf2359f8d1081d46dd029b50207/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha25 - Network accessline 22
{ url = "https://files.pythonhosted.org/packages/c2/b4/01fa81c5ca6141024d89a8fc15968002b71da7f825dd14113207113fabbd/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha25 - Network accessline 23
{ url = "https://files.pythonhosted.org/packages/20/f7/7b991776844dfa058017e600e6e55ff01984a063290ca5622c0b63162f68/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:007d - Network accessline 24
{ url = "https://files.pythonhosted.org/packages/20/e7/bed0024a0f4ab0c8a9c64d4445f39b30c99bd1acd228291959e3de664247/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c - Network accessline 25
{ url = "https://files.pythonhosted.org/packages/e2/ab/b18f0ab31cdd7b3ddb8bb76c4a414aeb8160c9810fdf1bc62f269a539d87/charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:12d8baf840cc7889b37c7c770f478adea7adce3dcb39 - Network accessline 26
{ url = "https://files.pythonhosted.org/packages/82/e5/7e9440768a06dfb3075936490cb82dbf0ee20a133bf0dd8551fa096914ec/charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d560742f3c0d62afaccf - Network accessline 27
{ url = "https://files.pythonhosted.org/packages/71/94/8c61d8da9f062fdf457c80acfa25060ec22bf1d34bbeaca4350f13bcfd07/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b14b2d9dac08e28bb8046a1a0434b1750eb221c8f5b8 - Network accessline 28
{ url = "https://files.pythonhosted.org/packages/66/cd/6e9889c648e72c0ab2e5967528bb83508f354d706637bc7097190c874e13/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:bc17a677b21b3502a21f66a8cc64f5bfad4df8a0b8434 - Network accessline 29
{ url = "https://files.pythonhosted.org/packages/92/2e/7a951d6a08aefb7eb8e1b54cdfb580b1365afdd9dd484dc4bee9e5d8f258/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:750e02e074872a3fad7f233b47734166440af3cdea0a - Network accessline 30
{ url = "https://files.pythonhosted.org/packages/58/d5/abcf2d83bf8e0a1286df55cd0dc1d49af0da4282aa77e986df343e7de124/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:4e5163c14bffd570ef2affbfdd77bba66383890797df - Network accessline 31
{ url = "https://files.pythonhosted.org/packages/47/3a/7d4cd7ed54be99973a0dc176032cba5cb1f258082c31fa6df35cff46acfc/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6ed74185b2db44f41ef35fd1617c5888e59792da9bbc91 - Network accessline 32
{ url = "https://files.pythonhosted.org/packages/1d/98/3a45bf8247889cf28262ebd3d0872edff11565b2a1e3064ccb132db3fbb0/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:94e1885b270625a9a828c9793b4d52a64445299baa1fe - Network accessline 33
{ url = "https://files.pythonhosted.org/packages/ad/80/2e8b7f8915ed5c9ef13aa828d82738e33888c485b65ebf744d615040c7ea/charset_normalizer-3.4.7-cp310-cp310-win32.whl", hash = "sha256:6785f414ae0f3c733c437e0f3929197934f526d19dfaa75e18fdb4f94c6f - Network accessline 34
{ url = "https://files.pythonhosted.org/packages/35/1b/3b8c8c77184af465ee9ad88b5aea46ea6b2e1f7b9dc9502891e37af21e30/charset_normalizer-3.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:6696b7688f54f5af4462118f0bfa7c1621eeb87154f77fa04b9295ce - Network accessline 35
{ url = "https://files.pythonhosted.org/packages/be/c1/feb40dca40dbb21e0a908801782d9288c64fc8d8e562c2098e9994c8c21b/charset_normalizer-3.4.7-cp310-cp310-win_arm64.whl", hash = "sha256:66671f93accb62ed07da56613636f3641f1a12c13046ce91ffc92372 - Network accessline 36
{ url = "https://files.pythonhosted.org/packages/c2/d7/b5b7020a0565c2e9fa8c09f4b5fa6232feb326b8c20081ccded47ea368fd/charset_normalizer-3.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7641bb8895e77f921102f72833904dcd9901df5d6d7 - Network accessline 37
{ url = "https://files.pythonhosted.org/packages/5a/53/58c29116c340e5456724ecd2fff4196d236b98f3da97b404bc5e51ac3493/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha25 - Network accessline 38
{ url = "https://files.pythonhosted.org/packages/b2/02/e8146dc6591a37a00e5144c63f29fb7c97a734ea8a111190783c0e60ab63/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha25 - Network accessline 39
{ url = "https://files.pythonhosted.org/packages/fb/73/77486c4cd58f1267bf17db420e930c9afa1b3be3fe8c8b8ebbebc9624359/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:532b - Network accessline 40
{ url = "https://files.pythonhosted.org/packages/a1/fa/f74eb381a7d94ded44739e9d94de18dc5edc9c17fb8c11f0a6890696c0a9/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2 - Network accessline 41
{ url = "https://files.pythonhosted.org/packages/dc/92/42bd3cefcf7687253fb86694b45f37b733c97f59af3724f356fa92b8c344/charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:65bcd23054beab4d166035cabbc868a09c1a49d1efe4 - Network accessline 42
{ url = "https://files.pythonhosted.org/packages/4c/3d/069e7184e2aa3b3cddc700e3dd267413dc259854adc3380421c805c6a17d/charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:08e721811161356f97b4 - Network accessline 43
{ url = "https://files.pythonhosted.org/packages/62/51/9d56feb5f2e7074c46f93e0ebdbe61f0848ee246e2f0d89f8e20b89ebb8f/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e060d01aec0a910bdccb8be71faf34e7799ce36950f8 - Network accessline 44
{ url = "https://files.pythonhosted.org/packages/d2/59/893d8f99cc4c837dda1fe2f1139079703deb9f321aabcb032355de13b6c7/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:38c0109396c4cfc574d502df99742a45c72c08eff0a36 - Network accessline 45
{ url = "https://files.pythonhosted.org/packages/7d/1d/ee6f3be3464247578d1ed5c46de545ccc3d3ff933695395c402c21fa6b77/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1c2a768fdd44ee4a9339a9b0b130049139b8ce3c01d2 - Network accessline 46
{ url = "https://files.pythonhosted.org/packages/54/bb/8fb0a946296ea96a488928bdce8ef99023998c48e4713af533e9bb98ef07/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:1a87ca9d5df6fe460483d9a5bbf2b18f620cbed41b43 - Network accessline 47
{ url = "https://files.pythonhosted.org/packages/9a/bc/015b2387f913749f82afd4fcba07846d05b6d784dd16123cb66860e0237d/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:d635aab80466bc95771bb78d5370e74d36d1fe31467b6b - Network accessline 48
{ url = "https://files.pythonhosted.org/packages/17/ab/63133691f56baae417493cba6b7c641571a2130eb7bceba6773367ab9ec5/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ae196f021b5e7c78e918242d217db021ed2a6ace2bc6a - Network accessline 49
{ url = "https://files.pythonhosted.org/packages/06/6d/3be70e827977f20db77c12a97e6a9f973631a45b8d186c084527e53e77a4/charset_normalizer-3.4.7-cp311-cp311-win32.whl", hash = "sha256:adb2597b428735679446b46c8badf467b4ca5f5056aae4d51a19f9570301 - Network accessline 50
{ url = "https://files.pythonhosted.org/packages/20/d9/5f67790f06b735d7c7637171bbfd89882ad67201891b7275e51116ed8207/charset_normalizer-3.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:8e385e4267ab76874ae30db04c627faaaf0b509e1ccc11a95b3fc3e8 - Network accessline 51
{ url = "https://files.pythonhosted.org/packages/ca/83/6413f36c5a34afead88ce6f66684d943d91f233d76dd083798f9602b75ae/charset_normalizer-3.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:d4a48e5b3c2a489fae013b7589308a40146ee081f6f509e047e0e096 - Network accessline 52
{ url = "https://files.pythonhosted.org/packages/0c/eb/4fc8d0a7110eb5fc9cc161723a34a8a6c200ce3b4fbf681bc86feee22308/charset_normalizer-3.4.7-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:eca9705049ad3c7345d574e3510665cb2cf844c2f2 - Network accessline 53
{ url = "https://files.pythonhosted.org/packages/f8/e3/0fadc706008ac9d7b9b5be6dc767c05f9d3e5df51744ce4cc9605de7b9f4/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha25 - Network accessline 54
{ url = "https://files.pythonhosted.org/packages/42/f0/3dd1045c47f4a4604df85ec18ad093912ae1344ac706993aff91d38773a2/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha25 - Network accessline 55
{ url = "https://files.pythonhosted.org/packages/dc/67/675a46eb016118a2fbde5a277a5d15f4f69d5f3f5f338e5ee2f8948fcf43/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:edac - Network accessline 56
{ url = "https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5 - Network accessline 57
{ url = "https://files.pythonhosted.org/packages/b1/f1/6d2b0b261b6c4ceef0fcb0d17a01cc5bc53586c2d4796fa04b5c540bc13d/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:203104ed3e428044fd943bc4bf45fa73c0730391f962 - Network accessline 58
{ url = "https://files.pythonhosted.org/packages/6f/c0/7b1f943f7e87cc3db9626ba17807d042c38645f0a1d4415c7a14afb5591f/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:298930cec56029e05497 - Network accessline 59
{ url = "https://files.pythonhosted.org/packages/38/dd/5a9ab159fe45c6e72079398f277b7d2b523e7f716acc489726115a910097/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:708838739abf24b2ceb208d0e22403dd018faeef86dd - Network accessline 60
{ url = "https://files.pythonhosted.org/packages/d5/ff/531a1cad5ca855d1c1a8b69cb71abfd6d85c0291580146fda7c82857caa1/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:0f7eb884681e3938906ed0434f20c63046eacd0111c4b - Network accessline 61
{ url = "https://files.pythonhosted.org/packages/c1/4c/a5fb52d528a8ca41f7598cb619409ece30a169fbdf9cdce592e53b46c3a6/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4dc1e73c36828f982bfe79fadf5919923f8a6f4df286 - Network accessline 62
{ url = "https://files.pythonhosted.org/packages/59/7a/071feed8124111a32b316b33ae4de83d36923039ef8cf48120266844285b/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:aed52fea0513bac0ccde438c188c8a471c4e0f457c2d - Network accessline 63
{ url = "https://files.pythonhosted.org/packages/fd/35/f7dba3994312d7ba508e041eaac39a36b120f32d4c8662b8814dab876431/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:fea24543955a6a729c45a73fe90e08c743f0b3334bbf32 - Network accessline 64
{ url = "https://files.pythonhosted.org/packages/8a/2d/a572df5c9204ab7688ec1edc895a73ebded3b023bb07364710b05dd1c9be/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bb6d88045545b26da47aa879dd4a89a71d1dce0f0e549 - Network accessline 65
{ url = "https://files.pythonhosted.org/packages/86/eb/890922a8b03a568ca2f336c36585a4713c55d4d67bf0f0c78924be6315ca/charset_normalizer-3.4.7-cp312-cp312-win32.whl", hash = "sha256:2257141f39fe65a3fdf38aeccae4b953e5f3b3324f4ff0daf9f15b851866 - Network accessline 66
{ url = "https://files.pythonhosted.org/packages/35/d9/0e7dffa06c5ab081f75b1b786f0aefc88365825dfcd0ac544bdb7b2b6853/charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:5ed6ab538499c8644b8a3e18debabcd7ce684f3fa91cf867521a7a02 - Network accessline 67
{ url = "https://files.pythonhosted.org/packages/9e/5d/481bcc2a7c88ea6b0878c299547843b2521ccbc40980cb406267088bc701/charset_normalizer-3.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:56be790f86bfb2c98fb742ce566dfb4816e5a83384616ab59c49e060 - Network accessline 68
{ url = "https://files.pythonhosted.org/packages/c1/3b/66777e39d3ae1ddc77ee606be4ec6d8cbd4c801f65e5a1b6f2b11b8346dd/charset_normalizer-3.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f496c9c3cc02230093d8330875c4c3cdfc3b73612a - Network accessline 69
{ url = "https://files.pythonhosted.org/packages/2e/4e/b7f84e617b4854ade48a1b7915c8ccfadeba444d2a18c291f696e37f0d3b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha25 - Network accessline 70
{ url = "https://files.pythonhosted.org/packages/c4/bb/ec73c0257c9e11b268f018f068f5d00aa0ef8c8b09f7753ebd5f2880e248/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha25 - Network accessline 71
{ url = "https://files.pythonhosted.org/packages/85/fb/32d1f5033484494619f701e719429c69b766bfc4dbc61aa9e9c8c166528b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3bec - Network accessline 72
{ url = "https://files.pythonhosted.org/packages/fa/07/330e3a0dda4c404d6da83b327270906e9654a24f6c546dc886a0eb0ffb23/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e - Network accessline 73
{ url = "https://files.pythonhosted.org/packages/e3/7c/fc890655786e423f02556e0216d4b8c6bcb6bdfa890160dc66bf52dee468/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:f495a1652cf3fbab2eb0639776dad966c2fb874d79d8 - Network accessline 74
{ url = "https://files.pythonhosted.org/packages/d8/97/bfb18b3db2aed3b90cf54dc292ad79fdd5ad65c4eae454099475cbeadd0d/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e712b419df8ba5e42b22 - Network accessline 75
{ url = "https://files.pythonhosted.org/packages/6f/a5/a581c13798546a7fd557c82614a5c65a13df2157e9ad6373166d2a3e645d/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7804338df6fcc08105c7745f1502ba68d900f45fd770 - Network accessline 76
{ url = "https://files.pythonhosted.org/packages/8c/bf/b3ab5bcb478e4193d517644b0fb2bf5497fbceeaa7a1bc0f4d5b50953861/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:481551899c856c704d58119b5025793fa6730adda3571 - Network accessline 77
{ url = "https://files.pythonhosted.org/packages/e7/4e/23efd79b65d314fa320ec6017b4b5834d5c12a58ba4610aa353af2e2f577/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f59099f9b66f0d7145115e6f80dd8b1d847176df89b2 - Network accessline 78
{ url = "https://files.pythonhosted.org/packages/b9/9f/1e1941bc3f0e01df116e68dc37a55c4d249df5e6fa77f008841aef68264f/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:f59ad4c0e8f6bba240a9bb85504faa1ab438237199d4 - Network accessline 79
{ url = "https://files.pythonhosted.org/packages/80/0f/088cbb3020d44428964a6c97fe1edfb1b9550396bf6d278330281e8b709c/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:3dedcc22d73ec993f42055eff4fcfed9318d1eeb9a6606 - Network accessline 80
{ url = "https://files.pythonhosted.org/packages/6a/9f/130394f9bbe06f4f63e22641d32fc9b202b7e251c9aef4db044324dac493/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:64f02c6841d7d83f832cd97ccf8eb8a906d06eb95d527 - Network accessline 81
{ url = "https://files.pythonhosted.org/packages/73/55/c469897448a06e49f8fa03f6caae97074fde823f432a98f979cc42b90e69/charset_normalizer-3.4.7-cp313-cp313-win32.whl", hash = "sha256:4042d5c8f957e15221d423ba781e85d553722fc4113f523f2feb7b188cc3 - Network accessline 82
{ url = "https://files.pythonhosted.org/packages/5d/78/1b74c5bbb3f99b77a1715c91b3e0b5bdb6fe302d95ace4f5b1bec37b0167/charset_normalizer-3.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:3946fa46a0cf3e4c8cb1cc52f56bb536310d34f25f01ca9b6c16afa7 - Network accessline 83
{ url = "https://files.pythonhosted.org/packages/68/86/46bd42279d323deb8687c4a5a811fd548cb7d1de10cf6535d099877a9a9f/charset_normalizer-3.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:80d04837f55fc81da168b98de4f4b797ef007fc8a79ab71c6ec9bc4d - Network accessline 84
{ url = "https://files.pythonhosted.org/packages/97/c8/c67cb8c70e19ef1960b97b22ed2a1567711de46c4ddf19799923adc836c2/charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:c36c333c39be2dbca264d7803333c896ab8fa7d4d6 - Network accessline 85
{ url = "https://files.pythonhosted.org/packages/99/85/c091fdee33f20de70d6c8b522743b6f831a2f1cd3ff86de4c6a827c48a76/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha25 - Network accessline 86
{ url = "https://files.pythonhosted.org/packages/87/1c/ab2ce611b984d2fd5d86a5a8a19c1ae26acac6bad967da4967562c75114d/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha25 - Network accessline 87
{ url = "https://files.pythonhosted.org/packages/a8/29/2b1d2cb00bf085f59d29eb773ce58ec2d325430f8c216804a0a5cd83cbca/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7154 - Network accessline 88
{ url = "https://files.pythonhosted.org/packages/47/5c/032c2d5a07fe4d4855fea851209cca2b6f03ebeb6d4e3afdb3358386a684/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b - Network accessline 89
{ url = "https://files.pythonhosted.org/packages/2c/c2/356065d5a8b78ed04499cae5f339f091946a6a74f91e03476c33f0ab7100/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:c45e9440fb78f8ddabcf714b68f936737a121355bf59 - Network accessline 90
{ url = "https://files.pythonhosted.org/packages/0c/cd/a32a84217ced5039f53b29f460962abb2d4420def55afabe45b1c3c7483d/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3534e7dcbdcf757da6b8 - Network accessline 91
{ url = "https://files.pythonhosted.org/packages/44/86/58e6f13ce26cc3b8f4a36b94a0f22ae2f00a72534520f4ae6857c4b81f89/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e8ac484bf18ce6975760921bb6148041faa8fef05472 - Network accessline 92
{ url = "https://files.pythonhosted.org/packages/8f/fe/d17c32dc72e17e155e06883efa84514ca375f8a528ba2546bee73fc4df81/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a5fe03b42827c13cdccd08e6c0247b6a6d4b5e3cdc53f - Network accessline 93
{ url = "https://files.pythonhosted.org/packages/6a/29/f33daa50b06525a237451cdb6c69da366c381a3dadcd833fa5676bc468b3/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:2d6eb928e13016cea4f1f21d1e10c1cebd5a421bc57d - Network accessline 94
{ url = "https://files.pythonhosted.org/packages/b6/6e/52c84015394a6a0bdcd435210a7e944c5f94ea1055f5cc5d56c5fe368e7b/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e74327fb75de8986940def6e8dee4f127cc9752bee73 - Network accessline 95
{ url = "https://files.pythonhosted.org/packages/8c/d7/4353be581b373033fb9198bf1da3cf8f09c1082561e8e922aa7b39bf9fe8/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:d6038d37043bced98a66e68d3aa2b6a35505dc01328cd6 - Network accessline 96
{ url = "https://files.pythonhosted.org/packages/30/45/99d18aa925bd1740098ccd3060e238e21115fffbfdcb8f3ece837d0ace6c/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7579e913a5339fb8fa133f6bbcfd8e6749696206cf05a - Network accessline 97
{ url = "https://files.pythonhosted.org/packages/5c/05/5ee478aa53f4bb7996482153d4bfe1b89e0f087f0ab6b294fcf92d595873/charset_normalizer-3.4.7-cp314-cp314-win32.whl", hash = "sha256:5b77459df20e08151cd6f8b9ef8ef1f961ef73d85c21a555c7eed5b79410 - Network accessline 98
{ url = "https://files.pythonhosted.org/packages/48/77/72dcb0921b2ce86420b2d79d454c7022bf5be40202a2a07906b9f2a35c97/charset_normalizer-3.4.7-cp314-cp314-win_amd64.whl", hash = "sha256:92a0a01ead5e668468e952e4238cccd7c537364eb7d851ab144ab662 - Network accessline 99
{ url = "https://files.pythonhosted.org/packages/c6/a3/c2369911cd72f02386e4e340770f6e158c7980267da16af8f668217abaa0/charset_normalizer-3.4.7-cp314-cp314-win_arm64.whl", hash = "sha256:67f6279d125ca0046a7fd386d01b311c6363844deac3e5b069b514ba - Network accessline 100
{ url = "https://files.pythonhosted.org/packages/94/09/7e8a7f73d24dba1f0035fbbf014d2c36828fc1bf9c88f84093e57d315935/charset_normalizer-3.4.7-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:effc3f449787117233702311a1b7d8f59cba9ced9 - Network accessline 101
{ url = "https://files.pythonhosted.org/packages/8d/da/96975ddb11f8e977f706f45cddd8540fd8242f71ecdb5d18a80723dcf62c/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha2 - Network accessline 102
{ url = "https://files.pythonhosted.org/packages/e5/e8/1d63bf8ef2d388e95c64b2098f45f84758f6d102a087552da1485912637b/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha2 - Network accessline 103
{ url = "https://files.pythonhosted.org/packages/9b/40/e5ff04233e70da2681fa43969ad6f66ca5611d7e669be0246c4c7aaf6dc8/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a89 - Network accessline 104
{ url = "https://files.pythonhosted.org/packages/be/c1/06c6c49d5a5450f76899992f1ee40b41d076aee9279b49cf9974d2f313d5/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256: - Network accessline 105
{ url = "https://files.pythonhosted.org/packages/2b/9f/f2ff16fb050946169e3e1f82134d107e5d4ae72647ec8a1b1446c148480f/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:a180c5e59792af262bf263b21a3c49353f25945d8d9 - Network accessline 106
{ url = "https://files.pythonhosted.org/packages/69/d5/a527c0cd8d64d2eab7459784fb4169a0ac76e5a6fc5237337982fd61347e/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3c9a494bc5ec77d43ce - Network accessline 107
{ url = "https://files.pythonhosted.org/packages/7e/80/8a7b8104a3e203074dc9aa2c613d4b726c0e136bad1cc734594b02867972/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8d828b6667a32a728a1ad1d93957cdf37489c57b97a - Network accessline 108
{ url = "https://files.pythonhosted.org/packages/02/9a/b759b503d507f375b2b5c153e4d2ee0a75aa215b7f2489cf314f4541f2c0/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:cf1493cd8607bec4d8a7b9b004e699fcf8f9103a9284 - Network accessline 109
{ url = "https://files.pythonhosted.org/packages/c2/4e/0f3f5d47b86bdb79256e7290b26ac847a2832d9a4033f7eb2cd4bcf4bb5b/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:0c96c3b819b5c3e9e165495db84d41914d6894d5518 - Network accessline 110
{ url = "https://files.pythonhosted.org/packages/96/23/bce28734eb3ed2c91dcf93abeb8a5cf393a7b2749725030bb630e554fdd8/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:752a45dc4a6934060b3b0dab47e04edc3326575f82b - Network accessline 111
{ url = "https://files.pythonhosted.org/packages/2c/6f/6e897c6984cc4d41af319b077f2f600fc8214eb2fe2d6bcb79141b882400/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:8778f0c7a52e56f75d12dae53ae320fae900a8b9b4164 - Network accessline 112
{ url = "https://files.pythonhosted.org/packages/76/22/ef7bd0fe480a0ae9b656189ec00744b60933f68b4f42a7bb06589f6f576a/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ce3412fbe1e31eb81ea42f4169ed94861c56e643189e - Network accessline 113
{ url = "https://files.pythonhosted.org/packages/c5/a7/0e0ab3e0b5bc1219bd80a6a0d4d72ca74d9250cb2382b7c699c147e06017/charset_normalizer-3.4.7-cp314-cp314t-win32.whl", hash = "sha256:c03a41a8784091e67a39648f70c5f97b5b6a37f216896d44d2cdcb82615 - Network accessline 114
{ url = "https://files.pythonhosted.org/packages/7a/1d/29d32e0fb40864b1f878c7f5a0b343ae676c6e2b271a2d55cc3a152391da/charset_normalizer-3.4.7-cp314-cp314t-win_amd64.whl", hash = "sha256:03853ed82eeebbce3c2abfdbc98c96dc205f32a79627688ac9a2737 - Network accessline 115
{ url = "https://files.pythonhosted.org/packages/de/32/d92444ad05c7a6e41fb2036749777c163baf7a0301a040cb672d6b2b1ae9/charset_normalizer-3.4.7-cp314-cp314t-win_arm64.whl", hash = "sha256:c35abb8bfff0185efac5878da64c45dafd2b37fb0383add1be155a7 - Network accessline 116
{ url = "https://files.pythonhosted.org/packages/db/8f/61959034484a4a7c527811f4721e75d02d653a35afb0b6054474d8185d4c/charset_normalizer-3.4.7-py3-none-any.whl", hash = "sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d" - Network accessline 120
name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } - Network accessline 121
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 122
source = { registry = "https://pypi.org/simple" } - Network accessline 123
sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 276 - Network accessline 124
wheels = [ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57a - Network accessline 125
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size - Network accessline 159
name = "exceptiongroup" version = "1.3.1" source = { registry = "https://pypi.org/simple" } - Network accessline 160
version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - Network accessline 161
source = { registry = "https://pypi.org/simple" } - Network accessline 163
{ name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha - Network accessline 164
] sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", si - Network accessline 165
sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size - Network accessline 166
wheels = [ { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577 - Network accessline 167
{ url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", si - Network accessline 171
name = "idna" version = "3.13" source = { registry = "https://pypi.org/simple" } - Network accessline 172
version = "3.13" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/ce/cc/762dfb036166873f0059f3b7de4565e1b5bc3d6f28a414c13da27e442f99/idna-3.13.tar.gz", hash = "sha256:585ea8fe5d69b91 - Network accessline 173
source = { registry = "https://pypi.org/simple" } - Network accessline 174
sdist = { url = "https://files.pythonhosted.org/packages/ce/cc/762dfb036166873f0059f3b7de4565e1b5bc3d6f28a414c13da27e442f99/idna-3.13.tar.gz", hash = "sha256:585ea8fe5d69b9181ec1afba340451fba6ba764af97026f92a91d4eef164a242", size = 194210, - Network accessline 175
wheels = [ { url = "https://files.pythonhosted.org/packages/5d/13/ad7d7ca3808a898b4612b6fe93cde56b53f3034dcde235acb1f0e1df24c6/idna-3.13-py3-none-any.whl", hash = "sha256:892ea0cde124a99ce773decba204c5552b69c3c67ffd5f232eb7696135bc8bb3" - Network accessline 176
{ url = "https://files.pythonhosted.org/packages/5d/13/ad7d7ca3808a898b4612b6fe93cde56b53f3034dcde235acb1f0e1df24c6/idna-3.13-py3-none-any.whl", hash = "sha256:892ea0cde124a99ce773decba204c5552b69c3c67ffd5f232eb7696135bc8bb3", size = 68629, - Network accessline 180
name = "iniconfig" version = "2.3.0" source = { registry = "https://pypi.org/simple" } - Network accessline 181
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 182
source = { registry = "https://pypi.org/simple" } - Network accessline 183
sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20 - Network accessline 184
wheels = [ { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53 - Network accessline 185
{ url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = - Network accessline 189
name = "packaging" version = "26.2" source = { registry = "https://pypi.org/simple" } - Network accessline 190
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 191
source = { registry = "https://pypi.org/simple" } - Network accessline 192
sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661", size = 228 - Network accessline 193
wheels = [ { url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0 - Network accessline 194
{ url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 1 - Network accessline 198
name = "pluggy" version = "1.6.0" source = { registry = "https://pypi.org/simple" } - Network accessline 199
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 200
source = { registry = "https://pypi.org/simple" } - Network accessline 201
sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412 - Network accessline 202
wheels = [ { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd47 - Network accessline 203
{ url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 205 - Network accessline 207
name = "pygments" version = "2.20.0" source = { registry = "https://pypi.org/simple" } - Network accessline 208
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 209
source = { registry = "https://pypi.org/simple" } - Network accessline 210
sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 49 - Network accessline 211
wheels = [ { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946 - Network accessline 212
{ url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = - Network accessline 216
name = "pytest" version = "9.0.3" source = { registry = "https://pypi.org/simple" } - Network accessline 217
version = "9.0.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - Network accessline 218
source = { registry = "https://pypi.org/simple" } - Network accessline 226
{ name = "tomli", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19 - Network accessline 227
] sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 157 - Network accessline 228
sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 15721 - Network accessline 229
wheels = [ { url = "https://files.pythonhosted.org/packages/d4/24/a372aaf5c9b7208e7112038812994107bc65a84cd00e0354a88c2c77a617/pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5 - Network accessline 230
{ url = "https://files.pythonhosted.org/packages/d4/24/a372aaf5c9b7208e7112038812994107bc65a84cd00e0354a88c2c77a617/pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9", size = 375 - Network accessline 234
name = "requests" version = "2.33.1" source = { registry = "https://pypi.org/simple" } - Network accessline 235
version = "2.33.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - Network accessline 236
source = { registry = "https://pypi.org/simple" } - Network accessline 241
{ name = "urllib3" }, ] sdist = { url = "https://files.pythonhosted.org/packages/5f/a4/98b9c7c6428a668bf7e42ebb7c79d576a1c3c1e3ae2d47e674b468388871/requests-2.33.1.tar.gz", hash = "sha256:18817f8c57c6263968bc123d237e3b8b08ac046f5456bd1e307e - Network accessline 242
] sdist = { url = "https://files.pythonhosted.org/packages/5f/a4/98b9c7c6428a668bf7e42ebb7c79d576a1c3c1e3ae2d47e674b468388871/requests-2.33.1.tar.gz", hash = "sha256:18817f8c57c6263968bc123d237e3b8b08ac046f5456bd1e307ee8f4250d3517", size = - Network accessline 243
sdist = { url = "https://files.pythonhosted.org/packages/5f/a4/98b9c7c6428a668bf7e42ebb7c79d576a1c3c1e3ae2d47e674b468388871/requests-2.33.1.tar.gz", hash = "sha256:18817f8c57c6263968bc123d237e3b8b08ac046f5456bd1e307ee8f4250d3517", size = 13 - Network accessline 244
wheels = [ { url = "https://files.pythonhosted.org/packages/d7/8e/7540e8a2036f79a125c1d2ebadf69ed7901608859186c856fa0388ef4197/requests-2.33.1-py3-none-any.whl", hash = "sha256:4e6d1ef462f3626a1f0a0a9c42dd93c63bad33f9f1c1937509b8c5c8718 - Network accessline 245
{ url = "https://files.pythonhosted.org/packages/d7/8e/7540e8a2036f79a125c1d2ebadf69ed7901608859186c856fa0388ef4197/requests-2.33.1-py3-none-any.whl", hash = "sha256:4e6d1ef462f3626a1f0a0a9c42dd93c63bad33f9f1c1937509b8c5c8718ab56a", size = - Network accessline 249
name = "tomli" version = "2.4.1" source = { registry = "https://pypi.org/simple" } - Network accessline 250
version = "2.4.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/22/de/48c59722572767841493b26183a0d1cc411d54fd759c5607c4590b6563a6/tomli-2.4.1.tar.gz", hash = "sha256:7c7e1a961a0b - Network accessline 251
source = { registry = "https://pypi.org/simple" } - Network accessline 252
sdist = { url = "https://files.pythonhosted.org/packages/22/de/48c59722572767841493b26183a0d1cc411d54fd759c5607c4590b6563a6/tomli-2.4.1.tar.gz", hash = "sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f", size = 17543, - Network accessline 253
wheels = [ { url = "https://files.pythonhosted.org/packages/f4/11/db3d5885d8528263d8adc260bb2d28ebf1270b96e98f0e0268d32b8d9900/tomli-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b9 - Network accessline 254
{ url = "https://files.pythonhosted.org/packages/f4/11/db3d5885d8528263d8adc260bb2d28ebf1270b96e98f0e0268d32b8d9900/tomli-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b984e85f486d65228 - Network accessline 255
{ url = "https://files.pythonhosted.org/packages/6d/f7/675db52c7e46064a9aa928885a9b20f4124ecb9bc2e1ce74c9106648d202/tomli-2.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4ab97e64ccda8756376892c53a72bd1f964e519c77236368527f758fbc36a - Network accessline 256
{ url = "https://files.pythonhosted.org/packages/61/71/81c50943cf953efa35bce7646caab3cf457a7d8c030b27cfb40d7235f9ee/tomli-2.4.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96481a57867 - Network accessline 257
{ url = "https://files.pythonhosted.org/packages/48/c1/f41d9cb618acccca7df82aaf682f9b49013c9397212cb9f53219e3abac37/tomli-2.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a881ab208c0ba - Network accessline 258
{ url = "https://files.pythonhosted.org/packages/22/e4/5a816ecdd1f8ca51fb756ef684b90f2780afc52fc67f987e3c61d800a46d/tomli-2.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47149d5bd38761ac8be13a84864bf0b7b70bc051806bc3669ab1cbc56 - Network accessline 259
{ url = "https://files.pythonhosted.org/packages/6b/49/2b2a0ef529aa6eec245d25f0c703e020a73955ad7edf73e7f54ddc608aa5/tomli-2.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ec9bfaf3ad2df51ace80688143a6a4ebc09a248f6ff781a9945e519370 - Network accessline 260
{ url = "https://files.pythonhosted.org/packages/83/bd/6c1a630eaca337e1e78c5903104f831bda934c426f9231429396ce3c3467/tomli-2.4.1-cp311-cp311-win32.whl", hash = "sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049", size = - Network accessline 261
{ url = "https://files.pythonhosted.org/packages/42/59/71461df1a885647e10b6bb7802d0b8e66480c61f3f43079e0dcd315b3954/tomli-2.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ee18d9ebdb417e384b58fe414e8d6af9f4e7a0ae761519fb50f721de398dd4e", si - Network accessline 262
{ url = "https://files.pythonhosted.org/packages/b8/83/dceca96142499c069475b790e7913b1044c1a4337e700751f48ed723f883/tomli-2.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:c2541745709bad0264b7d4705ad453b76ccd191e64aa6f0fc66b69a293a45ece", si - Network accessline 263
{ url = "https://files.pythonhosted.org/packages/c1/ba/42f134a3fe2b370f555f44b1d72feebb94debcab01676bf918d0cb70e9aa/tomli-2.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c742f741d58a28940ce01d58f0ab2ea3ced8b12402f162f4d534dfe18ba - Network accessline 264
{ url = "https://files.pythonhosted.org/packages/dc/c7/62d7a17c26487ade21c5422b646110f2162f1fcc95980ef7f63e73c68f14/tomli-2.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7f86fd587c4ed9dd76f318225e7d9b29cfc5a9d43de44e5754db8d1128487 - Network accessline 265
{ url = "https://files.pythonhosted.org/packages/5c/05/79d13d7c15f13bdef410bdd49a6485b1c37d28968314eabee452c22a7fda/tomli-2.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ff18e6a727e - Network accessline 266
{ url = "https://files.pythonhosted.org/packages/10/90/d62ce007a1c80d0b2c93e02cab211224756240884751b94ca72df8a875ca/tomli-2.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:136443dbd7e1de - Network accessline 267
{ url = "https://files.pythonhosted.org/packages/1a/7e/caf6496d60152ad4ed09282c1885cca4eea150bfd007da84aea07bcc0a3e/tomli-2.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e262d41726bc187e69af7825504c933b6794dc3fbd5945e41a79bb14 - Network accessline 268
{ url = "https://files.pythonhosted.org/packages/99/e7/c6f69c3120de34bbd882c6fba7975f3d7a746e9218e56ab46a1bc4b42552/tomli-2.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5cb41aa38891e073ee49d55fbc7839cfdb2bc0e600add13874d048c94a - Network accessline 269
{ url = "https://files.pythonhosted.org/packages/d6/2f/4a3c322f22c5c66c4b836ec58211641a4067364f5dcdd7b974b4c5da300c/tomli-2.4.1-cp312-cp312-win32.whl", hash = "sha256:da25dc3563bff5965356133435b757a795a17b17d01dbc0f42fb32447ddfd917", size = - Network accessline 270
{ url = "https://files.pythonhosted.org/packages/24/22/4daacd05391b92c55759d55eaee21e1dfaea86ce5c571f10083360adf534/tomli-2.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:52c8ef851d9a240f11a88c003eacb03c31fc1c9c4ec64a99a0f922b93874fda9", si - Network accessline 271
{ url = "https://files.pythonhosted.org/packages/68/fd/70e768887666ddd9e9f5d85129e84910f2db2796f9096aa02b721a53098d/tomli-2.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:f758f1b9299d059cc3f6546ae2af89670cb1c4d48ea29c3cacc4fe7de3058257", si - Network accessline 272
{ url = "https://files.pythonhosted.org/packages/07/06/b823a7e818c756d9a7123ba2cda7d07bc2dd32835648d1a7b7b7a05d848d/tomli-2.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:36d2bd2ad5fb9eaddba5226aa02c8ec3fa4f192631e347b3ed28186d43b - Network accessline 273
{ url = "https://files.pythonhosted.org/packages/14/6f/12645cf7f08e1a20c7eb8c297c6f11d31c1b50f316a7e7e1e1de6e2e7b7e/tomli-2.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:eb0dc4e38e6a1fd579e5d50369aa2e10acfc9cace504579b2faabb478e769 - Network accessline 274
{ url = "https://files.pythonhosted.org/packages/5c/e0/90637574e5e7212c09099c67ad349b04ec4d6020324539297b634a0192b0/tomli-2.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c7f2c7f2b9c - Network accessline 275
{ url = "https://files.pythonhosted.org/packages/10/8f/d3ddb16c5a4befdf31a23307f72828686ab2096f068eaf56631e136c1fdd/tomli-2.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f3c6818a1a86dd - Network accessline 276
{ url = "https://files.pythonhosted.org/packages/e3/f1/dbeeb9116715abee2485bf0a12d07a8f31af94d71608c171c45f64c0469d/tomli-2.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d312ef37c91508b0ab2cee7da26ec0b3ed2f03ce12bd87a588d771ae1 - Network accessline 277
{ url = "https://files.pythonhosted.org/packages/d3/74/16336ffd19ed4da28a70959f92f506233bd7cfc2332b20bdb01591e8b1d1/tomli-2.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:51529d40e3ca50046d7606fa99ce3956a617f9b36380da3b7f0dd3dd28 - Network accessline 278
{ url = "https://files.pythonhosted.org/packages/16/f9/229fa3434c590ddf6c0aa9af64d3af4b752540686cace29e6281e3458469/tomli-2.4.1-cp313-cp313-win32.whl", hash = "sha256:2190f2e9dd7508d2a90ded5ed369255980a1bcdd58e52f7fe24b8162bf9fedbd", size = - Network accessline 279
{ url = "https://files.pythonhosted.org/packages/6a/1e/71dfd96bcc1c775420cb8befe7a9d35f2e5b1309798f009dca17b7708c1e/tomli-2.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d65a2fbf9d2f8352685bc1364177ee3923d6baf5e7f43ea4959d7d8bc326a36", si - Network accessline 280
{ url = "https://files.pythonhosted.org/packages/83/7a/d34f422a021d62420b78f5c538e5b102f62bea616d1d75a13f0a88acb04a/tomli-2.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:4b605484e43cdc43f0954ddae319fb75f04cc10dd80d830540060ee7cd0243cd", si - Network accessline 281
{ url = "https://files.pythonhosted.org/packages/3c/fb/9a5c8d27dbab540869f7c1f8eb0abb3244189ce780ba9cd73f3770662072/tomli-2.4.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:fd0409a3653af6c147209d267a0e4243f0ae46b011aa978b1080359fddc - Network accessline 282
{ url = "https://files.pythonhosted.org/packages/62/05/d2f816630cc771ad836af54f5001f47a6f611d2d39535364f148b6a92d6b/tomli-2.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a120733b01c45e9a0c34aeef92bf0cf1d56cfe81ed9d47d562f9ed591a982 - Network accessline 283
{ url = "https://files.pythonhosted.org/packages/ce/48/66341bdb858ad9bd0ceab5a86f90eddab127cf8b046418009f2125630ecb/tomli-2.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:559db847dc4 - Network accessline 284
{ url = "https://files.pythonhosted.org/packages/df/6d/c5fad00d82b3c7a3ab6189bd4b10e60466f22cfe8a08a9394185c8a8111c/tomli-2.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01f520d4f53ef9 - Network accessline 285
{ url = "https://files.pythonhosted.org/packages/00/71/3a69e86f3eafe8c7a59d008d245888051005bd657760e96d5fbfb0b740c2/tomli-2.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7f94b27a62cfad8496c8d2513e1a222dd446f095fca8987fceef26122 - Network accessline 286
{ url = "https://files.pythonhosted.org/packages/67/50/361e986652847fec4bd5e4a0208752fbe64689c603c7ae5ea7cb16b1c0ca/tomli-2.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ede3e6487c5ef5d28634ba3f31f989030ad6af71edfb0055cbbd14189f - Network accessline 287
{ url = "https://files.pythonhosted.org/packages/8c/9a/b4173689a9203472e5467217e0154b00e260621caa227b6fa01feab16998/tomli-2.4.1-cp314-cp314-win32.whl", hash = "sha256:3d48a93ee1c9b79c04bb38772ee1b64dcf18ff43085896ea460ca8dec96f35f6", size = - Network accessline 288
{ url = "https://files.pythonhosted.org/packages/14/58/640ac93bf230cd27d002462c9af0d837779f8773bc03dee06b5835208214/tomli-2.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:88dceee75c2c63af144e456745e10101eb67361050196b0b6af5d717254dddf7", si - Network accessline 289
{ url = "https://files.pythonhosted.org/packages/d5/2f/702d5e05b227401c1068f0d386d79a589bb12bf64c3d2c72ce0631e3bc49/tomli-2.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:b8c198f8c1805dc42708689ed6864951fd2494f924149d3e4bce7710f8eb5232", si - Network accessline 290
{ url = "https://files.pythonhosted.org/packages/45/4b/b877b05c8ba62927d9865dd980e34a755de541eb65fffba52b4cc495d4d2/tomli-2.4.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:d4d8fe59808a54658fcc0160ecfb1b30f9089906c50b23bcb4c69eddc1 - Network accessline 291
{ url = "https://files.pythonhosted.org/packages/24/79/6ab420d37a270b89f7195dec5448f79400d9e9c1826df982f3f8e97b24fd/tomli-2.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7008df2e7655c495dd12d2a4ad038ff878d4ca4b81fccaf82b714e07eae4 - Network accessline 292
{ url = "https://files.pythonhosted.org/packages/02/e0/3630057d8eb170310785723ed5adcdfb7d50cb7e6455f85ba8a3deed642b/tomli-2.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d8591993e - Network accessline 293
{ url = "https://files.pythonhosted.org/packages/7a/b4/1613716072e544d1a7891f548d8f9ec6ce2faf42ca65acae01d76ea06bb0/tomli-2.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:734e20b57ba95 - Network accessline 294
{ url = "https://files.pythonhosted.org/packages/05/38/30f541baf6a3f6df77b3df16b01ba319221389e2da59427e221ef417ac0c/tomli-2.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8a650c2dbafa08d42e51ba0b62740dae4ecb9338eefa093aa5c78ceb - Network accessline 295
{ url = "https://files.pythonhosted.org/packages/77/a3/ec9dd4fd2c38e98de34223b995a3b34813e6bdadf86c75314c928350ed14/tomli-2.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:504aa796fe0569bb43171066009ead363de03675276d2d121ac1a4572 - Network accessline 296
{ url = "https://files.pythonhosted.org/packages/ef/be/605a6261cac79fba2ec0c9827e986e00323a1945700969b8ee0b30d85453/tomli-2.4.1-cp314-cp314t-win32.whl", hash = "sha256:b1d22e6e9387bf4739fbe23bfa80e93f6b0373a7f1b96c6227c32bef95a4d7a8", size - Network accessline 297
{ url = "https://files.pythonhosted.org/packages/12/64/da524626d3b9cc40c168a13da8335fe1c51be12c0a63685cc6db7308daae/tomli-2.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2c1c351919aca02858f740c6d33adea0c5deea37f9ecca1cc1ef9e884a619d26", s - Network accessline 298
{ url = "https://files.pythonhosted.org/packages/5a/cd/e80b62269fc78fc36c9af5a6b89c835baa8af28ff5ad28c7028d60860320/tomli-2.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:eab21f45c7f66c13f2a9e0e1535309cee140182a9cdae1e041d02e47291e8396", s - Network accessline 299
{ url = "https://files.pythonhosted.org/packages/7b/61/cceae43728b7de99d9b847560c262873a1f6c98202171fd5ed62640b494b/tomli-2.4.1-py3-none-any.whl", hash = "sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe", size = 1458 - Network accessline 303
name = "typing-extensions" version = "4.15.0" source = { registry = "https://pypi.org/simple" } - Network accessline 304
version = "4.15.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha25 - Network accessline 305
source = { registry = "https://pypi.org/simple" } - Network accessline 306
sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", - Network accessline 307
wheels = [ { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883b - Network accessline 308
{ url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548" - Network accessline 312
name = "urllib3" version = "2.6.3" source = { registry = "https://pypi.org/simple" } - Network accessline 313
version = "2.6.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b68849 - Network accessline 314
source = { registry = "https://pypi.org/simple" } - Network accessline 315
sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 4355 - Network accessline 316
wheels = [ { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0a - Network accessline 317
{ url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 13 - Network accessline 321
name = "websockets" version = "16.0" source = { registry = "https://pypi.org/simple" } - Network accessline 322
version = "16.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/04/24/4b2031d72e840ce4c1ccb255f693b15c334757fc50023e4db9537080b8c4/websockets-16.0.tar.gz", hash = "sha256:5f6261a5e - Network accessline 323
source = { registry = "https://pypi.org/simple" } - Network accessline 324
sdist = { url = "https://files.pythonhosted.org/packages/04/24/4b2031d72e840ce4c1ccb255f693b15c334757fc50023e4db9537080b8c4/websockets-16.0.tar.gz", hash = "sha256:5f6261a5e56e8d5c42a4497b364ea24d94d9563e8fbd44e78ac40879c60179b5", size = 17 - Network accessline 325
wheels = [ { url = "https://files.pythonhosted.org/packages/20/74/221f58decd852f4b59cc3354cccaf87e8ef695fede361d03dc9a7396573b/websockets-16.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:04cdd5d2d1dacbad0a7bf36ccbcd3ccd5a30e - Network accessline 326
{ url = "https://files.pythonhosted.org/packages/20/74/221f58decd852f4b59cc3354cccaf87e8ef695fede361d03dc9a7396573b/websockets-16.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:04cdd5d2d1dacbad0a7bf36ccbcd3ccd5a30ee188f2560b7a62a - Network accessline 327
{ url = "https://files.pythonhosted.org/packages/19/0f/22ef6107ee52ab7f0b710d55d36f5a5d3ef19e8a205541a6d7ffa7994e5a/websockets-16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8ff32bb86522a9e5e31439a58addbb0166f0204d64066fb955265c4e - Network accessline 328
{ url = "https://files.pythonhosted.org/packages/10/40/904a4cb30d9b61c0e278899bf36342e9b0208eb3c470324a9ecbaac2a30f/websockets-16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:583b7c42688636f930688d712885cf1531326ee05effd982028212ccc - Network accessline 329
{ url = "https://files.pythonhosted.org/packages/9d/2f/4b3ca7e106bc608744b1cdae041e005e446124bebb037b18799c2d356864/websockets-16.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7d837379b647c0 - Network accessline 330
{ url = "https://files.pythonhosted.org/packages/86/26/d40eaa2a46d4302becec8d15b0fc5e45bdde05191e7628405a19cf491ccd/websockets-16.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:df57afc - Network accessline 331
{ url = "https://files.pythonhosted.org/packages/b0/ba/6500a0efc94f7373ee8fefa8c271acdfd4dca8bd49a90d4be7ccabfc397e/websockets-16.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2b9f1e0d69bc60a4a87349d50c09a037a2607918746f07de04df9 - Network accessline 332
{ url = "https://files.pythonhosted.org/packages/04/b4/96bf2cee7c8d8102389374a2616200574f5f01128d1082f44102140344cc/websockets-16.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:335c23addf3d5e6a8633f9f8eda77efad001671e80b95c491dd092 - Network accessline 333
{ url = "https://files.pythonhosted.org/packages/02/8e/81f40fb00fd125357814e8c3025738fc4ffc3da4b6b4a4472a82ba304b41/websockets-16.0-cp310-cp310-win32.whl", hash = "sha256:37b31c1623c6605e4c00d466c9d633f9b812ea430c11c8a278774a1fde1acfa9", si - Network accessline 334
{ url = "https://files.pythonhosted.org/packages/b4/5f/7e40efe8df57db9b91c88a43690ac66f7b7aa73a11aa6a66b927e44f26fa/websockets-16.0-cp310-cp310-win_amd64.whl", hash = "sha256:8e1dab317b6e77424356e11e99a432b7cb2f3ec8c5ab4dabbcee6add48f72b35" - Network accessline 335
{ url = "https://files.pythonhosted.org/packages/f2/db/de907251b4ff46ae804ad0409809504153b3f30984daf82a1d84a9875830/websockets-16.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:31a52addea25187bde0797a97d6fc3d2f92b6f72a9370792d65a - Network accessline 336
{ url = "https://files.pythonhosted.org/packages/f3/fa/abe89019d8d8815c8781e90d697dec52523fb8ebe308bf11664e8de1877e/websockets-16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:417b28978cdccab24f46400586d128366313e8a96312e4b9362a4af5 - Network accessline 337
{ url = "https://files.pythonhosted.org/packages/58/5d/88ea17ed1ded2079358b40d31d48abe90a73c9e5819dbcde1606e991e2ad/websockets-16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:af80d74d4edfa3cb9ed973a0a5ba2b2a549371f8a741e0800cb07becd - Network accessline 338
{ url = "https://files.pythonhosted.org/packages/d2/ae/0ee92b33087a33632f37a635e11e1d99d429d3d323329675a6022312aac2/websockets-16.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:08d7af67b64d29 - Network accessline 339
{ url = "https://files.pythonhosted.org/packages/c8/c5/27178df583b6c5b31b29f526ba2da5e2f864ecc79c99dae630a85d68c304/websockets-16.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7be95cf - Network accessline 340
{ url = "https://files.pythonhosted.org/packages/87/05/536652aa84ddc1c018dbb7e2c4cbcd0db884580bf8e95aece7593fde526f/websockets-16.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d6297ce39ce5c2e6feb13c1a996a2ded3b6832155fcfc920265c7 - Network accessline 341
{ url = "https://files.pythonhosted.org/packages/6d/e2/d5332c90da12b1e01f06fb1b85c50cfc489783076547415bf9f0a659ec19/websockets-16.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1c1b30e4f497b0b354057f3467f56244c603a79c0d1dafce1d16c2 - Network accessline 342
{ url = "https://files.pythonhosted.org/packages/77/fb/d3f9576691cae9253b51555f841bc6600bf0a983a461c79500ace5a5b364/websockets-16.0-cp311-cp311-win32.whl", hash = "sha256:5f451484aeb5cafee1ccf789b1b66f535409d038c56966d6101740c1614b86c6", si - Network accessline 343
{ url = "https://files.pythonhosted.org/packages/54/67/eaff76b3dbaf18dcddabc3b8c1dba50b483761cccff67793897945b37408/websockets-16.0-cp311-cp311-win_amd64.whl", hash = "sha256:8d7f0659570eefb578dacde98e24fb60af35350193e4f56e11190787bee77dac" - Network accessline 344
{ url = "https://files.pythonhosted.org/packages/84/7b/bac442e6b96c9d25092695578dda82403c77936104b5682307bd4deb1ad4/websockets-16.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:71c989cbf3254fbd5e84d3bff31e4da39c43f884e64f2551d14 - Network accessline 345
{ url = "https://files.pythonhosted.org/packages/b0/fe/136ccece61bd690d9c1f715baaeefd953bb2360134de73519d5df19d29ca/websockets-16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8b6e209ffee39ff1b6d0fa7bfef6de950c60dfb91b8fcead17da4ee - Network accessline 346
{ url = "https://files.pythonhosted.org/packages/40/1e/9771421ac2286eaab95b8575b0cb701ae3663abf8b5e1f64f1fd90d0a673/websockets-16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:86890e837d61574c92a97496d590968b23c2ef0aeb8a9bc9421d174cd - Network accessline 347
{ url = "https://files.pythonhosted.org/packages/18/29/71729b4671f21e1eaa5d6573031ab810ad2936c8175f03f97f3ff164c802/websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9b5aca38b67492 - Network accessline 348
{ url = "https://files.pythonhosted.org/packages/97/bb/21c36b7dbbafc85d2d480cd65df02a1dc93bf76d97147605a8e27ff9409d/websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e033487 - Network accessline 349
{ url = "https://files.pythonhosted.org/packages/4a/34/9bf8df0c0cf88fa7bfe36678dc7b02970c9a7d5e065a3099292db87b1be2/websockets-16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a0b31e0b424cc6b5a04b8838bbaec1688834b2383256688cf47eb - Network accessline 350
{ url = "https://files.pythonhosted.org/packages/47/88/4dd516068e1a3d6ab3c7c183288404cd424a9a02d585efbac226cb61ff2d/websockets-16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:485c49116d0af10ac698623c513c1cc01c9446c058a4e61e3bf6c1 - Network accessline 351
{ url = "https://files.pythonhosted.org/packages/91/d6/7d4553ad4bf1c0421e1ebd4b18de5d9098383b5caa1d937b63df8d04b565/websockets-16.0-cp312-cp312-win32.whl", hash = "sha256:eaded469f5e5b7294e2bdca0ab06becb6756ea86894a47806456089298813c89", si - Network accessline 352
{ url = "https://files.pythonhosted.org/packages/c3/f0/f3a17365441ed1c27f850a80b2bc680a0fa9505d733fe152fdf5e98c1c0b/websockets-16.0-cp312-cp312-win_amd64.whl", hash = "sha256:5569417dc80977fc8c2d43a86f78e0a5a22fee17565d78621b6bb264a115d4ea" - Network accessline 353
{ url = "https://files.pythonhosted.org/packages/cc/9c/baa8456050d1c1b08dd0ec7346026668cbc6f145ab4e314d707bb845bf0d/websockets-16.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:878b336ac47938b474c8f982ac2f7266a540adc3fa4ad74ae96 - Network accessline 354
{ url = "https://files.pythonhosted.org/packages/7e/0c/8811fc53e9bcff68fe7de2bcbe75116a8d959ac699a3200f4847a8925210/websockets-16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:52a0fec0e6c8d9a784c2c78276a48a2bdf099e4ccc2a4cad53b2771 - Network accessline 355
{ url = "https://files.pythonhosted.org/packages/aa/82/39a5f910cb99ec0b59e482971238c845af9220d3ab9fa76dd9162cda9d62/websockets-16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e6578ed5b6981005df1860a56e3617f14a6c307e6a71b4fff8c48fdc5 - Network accessline 356
{ url = "https://files.pythonhosted.org/packages/bd/28/0a25ee5342eb5d5f297d992a77e56892ecb65e7854c7898fb7d35e9b33bd/websockets-16.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:95724e638f0f9c - Network accessline 357
{ url = "https://files.pythonhosted.org/packages/f9/66/27ea52741752f5107c2e41fda05e8395a682a1e11c4e592a809a90c6a506/websockets-16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0204dc - Network accessline 358
{ url = "https://files.pythonhosted.org/packages/37/e5/8e32857371406a757816a2b471939d51c463509be73fa538216ea52b792a/websockets-16.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:52ac480f44d32970d66763115edea932f1c5b1312de36df06d6b2 - Network accessline 359
{ url = "https://files.pythonhosted.org/packages/9b/67/f926bac29882894669368dc73f4da900fcdf47955d0a0185d60103df5737/websockets-16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6e5a82b677f8f6f59e8dfc34ec06ca6b5b48bc4fcda346acd09369 - Network accessline 360
{ url = "https://files.pythonhosted.org/packages/3c/a1/3d6ccdcd125b0a42a311bcd15a7f705d688f73b2a22d8cf1c0875d35d34a/websockets-16.0-cp313-cp313-win32.whl", hash = "sha256:abf050a199613f64c886ea10f38b47770a65154dc37181bfaff70c160f45315a", si - Network accessline 361
{ url = "https://files.pythonhosted.org/packages/6b/ae/90366304d7c2ce80f9b826096a9e9048b4bb760e44d3b873bb272cba696b/websockets-16.0-cp313-cp313-win_amd64.whl", hash = "sha256:3425ac5cf448801335d6fdc7ae1eb22072055417a96cc6b31b3861f455fbc156" - Network accessline 362
{ url = "https://files.pythonhosted.org/packages/f3/1d/e88022630271f5bd349ed82417136281931e558d628dd52c4d8621b4a0b2/websockets-16.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8cc451a50f2aee53042ac52d2d053d08bf89bcb31ae799cb448 - Network accessline 363
{ url = "https://files.pythonhosted.org/packages/f2/78/e63be1bf0724eeb4616efb1ae1c9044f7c3953b7957799abb5915bffd38e/websockets-16.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:daa3b6ff70a9241cf6c7fc9e949d41232d9d7d26fd3522b1ad2b4d6 - Network accessline 364
{ url = "https://files.pythonhosted.org/packages/bb/f4/d3c9220d818ee955ae390cf319a7c7a467beceb24f05ee7aaaa2414345ba/websockets-16.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:fd3cb4adb94a2a6e2b7c0d8d05cb94e6f1c81a0cf9dc2694fb65c7e8d - Network accessline 365
{ url = "https://files.pythonhosted.org/packages/63/bc/d3e208028de777087e6fb2b122051a6ff7bbcca0d6df9d9c2bf1dd869ae9/websockets-16.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:781caf5e8eee67 - Network accessline 366
{ url = "https://files.pythonhosted.org/packages/ad/6e/9a0927ac24bd33a0a9af834d89e0abc7cfd8e13bed17a86407a66773cc0e/websockets-16.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:caab51a - Network accessline 367
{ url = "https://files.pythonhosted.org/packages/b9/ca/bf1c68440d7a868180e11be653c85959502efd3a709323230314fda6e0b3/websockets-16.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:19c4dc84098e523fd63711e563077d39e90ec6702aff4b5d9e344 - Network accessline 368
{ url = "https://files.pythonhosted.org/packages/c4/f8/fdc34643a989561f217bb477cbc47a3a07212cbda91c0e4389c43c296ebf/websockets-16.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a5e18a238a2b2249c9a9235466b90e96ae4795672598a58772dd80 - Network accessline 369
{ url = "https://files.pythonhosted.org/packages/dd/d1/574fa27e233764dbac9c52730d63fcf2823b16f0856b3329fc6268d6ae4f/websockets-16.0-cp314-cp314-win32.whl", hash = "sha256:a069d734c4a043182729edd3e9f247c3b2a4035415a9172fd0f1b71658a320a8", si - Network accessline 370
{ url = "https://files.pythonhosted.org/packages/8a/f1/ae6b937bf3126b5134ce1f482365fde31a357c784ac51852978768b5eff4/websockets-16.0-cp314-cp314-win_amd64.whl", hash = "sha256:c0ee0e63f23914732c6d7e0cce24915c48f3f1512ec1d079ed01fc629dab269d" - Network accessline 371
{ url = "https://files.pythonhosted.org/packages/06/9b/f791d1db48403e1f0a27577a6beb37afae94254a8c6f08be4a23e4930bc0/websockets-16.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:a35539cacc3febb22b8f4d4a99cc79b104226a756aa7400adc - Network accessline 372
{ url = "https://files.pythonhosted.org/packages/bd/40/53ad02341fa33b3ce489023f635367a4ac98b73570102ad2cdd770dacc9a/websockets-16.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:b784ca5de850f4ce93ec85d3269d24d4c82f22b7212023c974c401 - Network accessline 373
{ url = "https://files.pythonhosted.org/packages/74/9b/6158d4e459b984f949dcbbb0c5d270154c7618e11c01029b9bbd1bb4c4f9/websockets-16.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:569d01a4e7fba956c5ae4fc988f0d4e187900f5497ce46339c996dbf - Network accessline 374
{ url = "https://files.pythonhosted.org/packages/e5/2d/7583b30208b639c8090206f95073646c2c9ffd66f44df967981a64f849ad/websockets-16.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:50f23cdd8343b - Network accessline 375
{ url = "https://files.pythonhosted.org/packages/45/b0/cce3784eb519b7b5ad680d14b9673a31ab8dcb7aad8b64d81709d2430aa8/websockets-16.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:152284 - Network accessline 376
{ url = "https://files.pythonhosted.org/packages/19/60/b8ebe4c7e89fb5f6cdf080623c9d92789a53636950f7abacfc33fe2b3135/websockets-16.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bc59589ab64b0022385f429b94697348a6a234e8ce22544e3681 - Network accessline 377
{ url = "https://files.pythonhosted.org/packages/88/a8/a080593f89b0138b6cba1b28f8df5673b5506f72879322288b031337c0b8/websockets-16.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:32da954ffa2814258030e5a57bc73a3635463238e797c7375dc80 - Network accessline 378
{ url = "https://files.pythonhosted.org/packages/c2/b6/b9afed2afadddaf5ebb2afa801abf4b0868f42f8539bfe4b071b5266c9fe/websockets-16.0-cp314-cp314t-win32.whl", hash = "sha256:5a4b4cc550cb665dd8a47f868c8d04c8230f857363ad3c9caf7a0c3bf8c61ca6", s - Network accessline 379
{ url = "https://files.pythonhosted.org/packages/9f/3e/28135a24e384493fa804216b79a6a6759a38cc4ff59118787b9fb693df93/websockets-16.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b14dc141ed6d2dde437cddb216004bcac6a1df0935d79656387bd41632ba0bbd - Network accessline 380
{ url = "https://files.pythonhosted.org/packages/72/07/c98a68571dcf256e74f1f816b8cc5eae6eb2d3d5cfa44d37f801619d9166/websockets-16.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:349f83cd6c9a415428ee1005cadb5c2c56f4389bc06a9af1 - Network accessline 381
{ url = "https://files.pythonhosted.org/packages/7e/52/93e166a81e0305b33fe416338be92ae863563fe7bce446b0f687b9df5aea/websockets-16.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:4a1aba3340a8dca8db6eb5a7986157f52eb9e436b748137642 - Network accessline 382
{ url = "https://files.pythonhosted.org/packages/56/0c/2dbf513bafd24889d33de2ff0368190a0e69f37bcfa19009ef819fe4d507/websockets-16.0-pp311-pypy311_pp73-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f4a32d1 - Network accessline 383
{ url = "https://files.pythonhosted.org/packages/a5/8f/aea9c71cc92bf9b6cc0f7f70df8f0b420636b6c96ef4feee1e16f80f75dd/websockets-16.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256: - Network accessline 384
{ url = "https://files.pythonhosted.org/packages/9a/3f/f70e03f40ffc9a30d817eef7da1be72ee4956ba8d7255c399a01b135902a/websockets-16.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a653aea902e0324b52f1613332ddf50b00c06fdaf7e92624fbf8c77c78 - Network accessline 385
{ url = "https://files.pythonhosted.org/packages/6f/28/258ebab549c2bf3e64d2b0217b973467394a9cea8c42f70418ca2c5d0d2e/websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec", size =
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.
Declared and executed: 1 fact
- Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionscripts/gen_diagram.py:7High confidence
Signal confidence: 499 facts
- Network access in code of documentationREADME.md:90Low confidence
- Network access in prose of documentationREADME.md:225Low confidence
- Network access in prose of documentationREADME.md:226Low confidence
- Network access in prose of documentationREADME.md:227Low confidence
- Network access in code of documentationREADME.zh-CN.md:35Low confidence
- Network access in code of documentationREADME.zh-CN.md:80Low confidence
- Network access in code of documentationREADME.zh-CN.md:88Low confidence
- Network access in code of documentationREADME.zh-CN.md:95Low confidence
- Network access in prose of documentationREADME.zh-CN.md:236Low confidence
- Network access in prose of documentationREADME.zh-CN.md:237Low confidence
- Network access in prose of documentationREADME.zh-CN.md:238Low confidence
- Network access in the frontmatter of the SKILL.mdSKILL.md:6Low confidence
- Network access in the frontmatter of the SKILL.mdSKILL.md:7Low confidence
- Network access in the frontmatter of the SKILL.mdSKILL.md:8Low confidence
- Network access in prose of the SKILL.mdSKILL.md:93Low confidence
- Network access in prose of the SKILL.mdSKILL.md:94Low confidence
- Network access in code of the SKILL.mdSKILL.md:191High confidence
- Network access in code of the SKILL.mdSKILL.md:197High confidence
- Network access in code of the SKILL.mdSKILL.md:215High confidence
- Network access in prose of documentationVENDORING.md:5Low confidence
- Network access in prose of documentationVENDORING.md:6Low confidence
- Network access in prose of documentationVENDORING.md:18Low confidence
- Network access in prose of documentationVENDORING.md:19Low confidence
- Network access in prose of documentationVENDORING.md:34Low confidence
- Network access in code of documentationreferences/cli.md:53Low confidence
- Network access in prose of documentationreferences/cli.md:61Low confidence
- Network access in prose of documentationreferences/cli.md:63Low confidence
- Network access in prose of documentationreferences/cli.md:67Low confidence
- Network access in code of documentationreferences/cli.md:193Low confidence
- Network access in code of documentationreferences/cli.md:194Low confidence
- Network access in code of documentationreferences/cli.md:195Low confidence
- Executable script in code of a file that runsscripts/analyze_workflow.py:1High confidence
- Executable script in code of a file that runsscripts/comfy_api_simplified/LICENSE:1High confidence
- Executable script in prose of a file that runsscripts/comfy_api_simplified/__init__.py:1Low confidence
- Executable script in prose of a file that runsscripts/comfy_api_simplified/api.py:1Low confidence
- Network access in code of a file that runsscripts/comfy_api_simplified/api.py:42High confidence
- Network access in code of a file that runsscripts/comfy_api_simplified/api.py:43High confidence
- Network access in code of a file that runsscripts/comfy_api_simplified/api.py:44High confidence
- Network access in prose of a file that runsscripts/comfy_api_simplified/api.py:53Low confidence
- Network access in prose of a file that runsscripts/comfy_api_simplified/api.py:54Low confidence
- Network access in code of a file that runsscripts/comfy_api_simplified/api.py:105High confidence
- Network access in code of a file that runsscripts/comfy_api_simplified/api.py:292High confidence
- Network access in code of a file that runsscripts/comfy_api_simplified/api.py:315High confidence
- Network access in code of a file that runsscripts/comfy_api_simplified/api.py:370High confidence
- Network access in code of a file that runsscripts/comfy_api_simplified/api.py:407High confidence
- Network access in code of a file that runsscripts/comfy_api_simplified/api.py:444High confidence
- Network access in code of a file that runsscripts/comfy_api_simplified/api.py:445High confidence
- Network access in code of a file that runsscripts/comfy_api_simplified/api.py:446High confidence
- Network access in code of a file that runsscripts/comfy_api_simplified/api.py:489High confidence
- Network access in code of a file that runsscripts/comfy_api_simplified/api.py:490High confidence
and 449 more
Only the first 500 facts are listed.
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md 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.