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

Compare on GitHub

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.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit b42d1076a7ae4ea8084fe6580080aaaeb0610eeb

119GitHub stars
-1star in 7 days
1skill in this repository
2commits in 30 days

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

Oct 25, 2026Nov 3, 2026120

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 tokens

Always available to the agent

SKILL.md

3,750 tokens

When the skill is activated

Reference documents

44,400 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Purpose
  2. Hard Rules
  3. Workflow Selection Policy
  4. User-Added Workflows
  5. Setup
  6. Quick Workflow Choice
  7. Core Commands
  8. Prompt Enhancement
  9. Fail-Fast and Recovery
  10. Output Handling
  11. References

Scripts executed separately

  • scripts/analyze_workflow.py
  • scripts/comfy_api_simplified/LICENSE
  • scripts/comfy_api_simplified/__init__.py
  • scripts/comfy_api_simplified/api.py
  • scripts/comfy_api_simplified/exceptions.py
  • scripts/comfy_api_simplified/workflow.py
  • scripts/comfyui/__init__.py
  • scripts/comfyui/__main__.py
  • scripts/comfyui/cli.py
  • scripts/comfyui/cli_admin.py
  • scripts/comfyui/cli_convert.py
  • scripts/comfyui/cli_generate.py
  • scripts/comfyui/cli_validate.py
  • scripts/comfyui/config.py
  • scripts/comfyui/models/__init__.py
  • scripts/comfyui/models/result.py
  • scripts/comfyui/preflight.py
  • scripts/comfyui/services/__init__.py
  • scripts/comfyui/services/errors.py
  • scripts/comfyui/services/executor.py
  • scripts/comfyui/services/job_store.py
  • scripts/comfyui/services/poller.py
  • scripts/comfyui/services/submitter.py
  • scripts/comfyui/services/workflow_config.py
  • scripts/comfyui/services/z_image_turbo.py
  • scripts/comfyui/tools/__init__.py
  • scripts/comfyui/tools/analyze_workflow.py
  • scripts/comfyui/tools/convert_ui_workflow.py
  • scripts/comfyui/tools/import_workflow.py
  • scripts/comfyui/workflow_selection.py
  • scripts/gen_diagram.py
  • scripts/make_clawhub_bundle.py
  • scripts/sync_package_assets.py
  • scripts/test_error_cases.py
  • scripts/tests/__init__.py
  • scripts/tests/conftest.py
  • scripts/tests/test_analyze_workflow.py
  • scripts/tests/test_cli.py
  • scripts/tests/test_config.py
  • scripts/tests/test_console_script.py
  • scripts/tests/test_convert_ui_workflow.py
  • scripts/tests/test_custom_workflows_registry.py
  • scripts/tests/test_docs_entrypoints.py
  • scripts/tests/test_doctor_command.py
  • scripts/tests/test_executor.py
  • scripts/tests/test_executor_qwen3_tts.py
  • scripts/tests/test_import_workflow.py
  • scripts/tests/test_install_mode.py
  • scripts/tests/test_integration.py
  • scripts/tests/test_job_store.py
  • scripts/tests/test_package_resources.py
  • scripts/tests/test_poller.py
  • scripts/tests/test_preflight.py
  • scripts/tests/test_resource_mirror.py
  • scripts/tests/test_result.py
  • scripts/tests/test_submitter.py
  • scripts/tests/test_validate_command.py
  • scripts/tests/test_vendored_comfy_api.py
  • scripts/tests/test_workflow_config.py
  • scripts/tests/test_workflow_selection.py

Files

  • .github/workflows/ci.ymlasset4,088 bytes
  • .gitignoreasset259 bytes
  • .python-versionasset5 bytes
  • CHANGELOG.mddoc9,352 bytes
  • CHANGELOG.zh-CN.mddoc9,378 bytes
  • LICENSEasset11,357 bytes
  • MAINTAINER.mddoc1,592 bytes
  • README.mddoc8,867 bytes
  • README.zh-CN.mddoc8,402 bytes
  • SKILL.mdcore15,477 bytes
  • SKILL.mdcore15,477 bytes
  • SKILL.mdcore15,477 bytes
  • SKILL.mdcore15,477 bytes
  • SKILL.mdcore15,477 bytes
  • SKILL.mdcore15,477 bytes
  • SKILL.mdcore15,477 bytes
  • SKILL.mdcore15,477 bytes
  • SKILL.mdcore15,477 bytes
  • SKILL.mdcore15,477 bytes
  • SKILL.mdcore15,477 bytes
  • SKILL.mdcore15,477 bytes
  • SKILL.mdcore15,477 bytes
  • SKILL.mdcore15,477 bytes
  • SKILL.mdcore15,477 bytes
  • SKILL.mdcore15,477 bytes
  • VENDORING.mddoc2,662 bytes
  • assets/examples/ace_step_15_music.mp3asset1,923,692 bytes
  • assets/examples/klein_edit.pngasset1,366,866 bytes
  • assets/examples/ltx-23-i2v.mp4asset5,324,167 bytes
  • assets/examples/ltx-23-t2v.mp4asset1,598,715 bytes
  • assets/examples/qwen3_tts.mp3asset25,492 bytes
  • assets/examples/qwen_image_2512_4step.pngasset508,831 bytes
  • assets/examples/reference_to_image.pngasset1,426,045 bytes
  • assets/examples/z_image_turbo.pngasset1,235,256 bytes
  • assets/input/person.pngasset1,326,249 bytes
  • assets/workflows/ace_step_15_music.config.jsonasset1,337 bytes
  • assets/workflows/ace_step_15_music.jsonasset4,067 bytes
  • assets/workflows/anima_turbo.config.jsonasset1,834 bytes
  • assets/workflows/anima_turbo.jsonasset2,420 bytes
  • assets/workflows/klein_edit.config.jsonasset1,581 bytes
  • assets/workflows/klein_edit.jsonasset4,365 bytes
  • assets/workflows/krea2_turbo.config.jsonasset1,783 bytes
  • assets/workflows/krea2_turbo.jsonasset5,415 bytes
  • assets/workflows/liveportrait.config.jsonasset1,589 bytes
  • assets/workflows/liveportrait.jsonasset5,743 bytes
  • assets/workflows/ltx-23-i2v.jsonasset12,903 bytes
  • assets/workflows/ltx-23-t2v.jsonasset11,202 bytes
  • assets/workflows/ltx_23_i2v_distilled.config.jsonasset1,410 bytes
  • assets/workflows/ltx_23_t2v_distill.config.jsonasset1,712 bytes
  • assets/workflows/qwen3_tts.config.jsonasset1,395 bytes
  • assets/workflows/qwen3_tts.jsonasset1,289 bytes
  • assets/workflows/qwen3_tts_clone.config.jsonasset1,850 bytes
  • assets/workflows/qwen3_tts_clone.jsonasset1,504 bytes
  • assets/workflows/qwen_image_2512_4step.config.jsonasset1,798 bytes
  • assets/workflows/qwen_image_2512_4step.jsonasset3,731 bytes
  • assets/workflows/sam3_mat_image.config.jsonasset1,536 bytes
  • assets/workflows/sam3_mat_image.jsonasset1,308 bytes
  • assets/workflows/z_image_turbo.config.jsonasset1,516 bytes
  • assets/workflows/z_image_turbo.jsonasset2,797 bytes
  • docs/decision-tree.htmlasset11,345 bytes
  • docs/decision-tree.pngasset541,671 bytes
  • docs/decision-tree.svgasset25,440 bytes
  • docs/internal/README.mddoc357 bytes
  • docs/internal/findings.mddoc2,162 bytes
  • docs/internal/progress.mddoc1,102 bytes
  • docs/internal/task_plan.mddoc5,277 bytes
  • pyproject.tomlasset1,489 bytes
  • references/cli.mddoc13,094 bytes
  • references/extension.mddoc7,290 bytes
  • references/prompt_enhancement/character.mddoc2,891 bytes
  • references/prompt_enhancement/image_to_image.mddoc2,680 bytes
  • references/prompt_enhancement/reference_to_image.mddoc5,774 bytes
  • references/prompt_enhancement/text_to_speech.mddoc9,322 bytes
  • references/workflow_nodes.mddoc1,706 bytes
  • references/workflows.mddoc16,418 bytes
  • scripts/analyze_workflow.pyruns1,676 bytes
  • scripts/comfy_api_simplified/LICENSEruns1,070 bytes
  • scripts/comfy_api_simplified/__init__.pyruns594 bytes
  • scripts/comfy_api_simplified/api.pyruns15,784 bytes
  • scripts/comfy_api_simplified/exceptions.pyruns507 bytes
  • scripts/comfy_api_simplified/workflow.pyruns4,799 bytes
  • scripts/comfyui/__init__.pyruns0 bytes
  • scripts/comfyui/__main__.pyruns973 bytes
  • scripts/comfyui/assets/examples/ace_step_15_music.mp3asset1,923,692 bytes
  • scripts/comfyui/assets/examples/klein_edit.pngasset1,366,866 bytes
  • scripts/comfyui/assets/examples/ltx-23-i2v.mp4asset5,324,167 bytes
  • scripts/comfyui/assets/examples/ltx-23-t2v.mp4asset1,598,715 bytes
  • scripts/comfyui/assets/examples/qwen3_tts.mp3asset25,492 bytes
  • scripts/comfyui/assets/examples/qwen_image_2512_4step.pngasset508,831 bytes
  • scripts/comfyui/assets/examples/reference_to_image.pngasset1,426,045 bytes
  • scripts/comfyui/assets/examples/z_image_turbo.pngasset1,235,256 bytes
  • scripts/comfyui/assets/input/person.pngasset1,326,249 bytes
  • scripts/comfyui/assets/workflows/ace_step_15_music.config.jsonasset1,337 bytes
  • scripts/comfyui/assets/workflows/ace_step_15_music.jsonasset4,067 bytes
  • scripts/comfyui/assets/workflows/anima_turbo.config.jsonasset1,834 bytes
  • scripts/comfyui/assets/workflows/anima_turbo.jsonasset2,420 bytes
  • scripts/comfyui/assets/workflows/klein_edit.config.jsonasset1,581 bytes
  • scripts/comfyui/assets/workflows/klein_edit.jsonasset4,365 bytes
  • scripts/comfyui/assets/workflows/krea2_turbo.config.jsonasset1,783 bytes
  • scripts/comfyui/assets/workflows/krea2_turbo.jsonasset5,415 bytes
  • scripts/comfyui/assets/workflows/liveportrait.config.jsonasset1,589 bytes
  • scripts/comfyui/assets/workflows/liveportrait.jsonasset5,743 bytes
  • scripts/comfyui/assets/workflows/ltx-23-i2v.jsonasset12,903 bytes
  • scripts/comfyui/assets/workflows/ltx-23-t2v.jsonasset11,202 bytes
  • scripts/comfyui/assets/workflows/ltx_23_i2v_distilled.config.jsonasset1,410 bytes
  • scripts/comfyui/assets/workflows/ltx_23_t2v_distill.config.jsonasset1,712 bytes
  • scripts/comfyui/assets/workflows/qwen3_tts.config.jsonasset1,395 bytes
  • scripts/comfyui/assets/workflows/qwen3_tts.jsonasset1,289 bytes
  • scripts/comfyui/assets/workflows/qwen3_tts_clone.config.jsonasset1,850 bytes
  • scripts/comfyui/assets/workflows/qwen3_tts_clone.jsonasset1,504 bytes
  • scripts/comfyui/assets/workflows/qwen_image_2512_4step.config.jsonasset1,798 bytes
  • scripts/comfyui/assets/workflows/qwen_image_2512_4step.jsonasset3,731 bytes
  • scripts/comfyui/assets/workflows/sam3_mat_image.config.jsonasset1,536 bytes
  • scripts/comfyui/assets/workflows/sam3_mat_image.jsonasset1,308 bytes
  • scripts/comfyui/assets/workflows/z_image_turbo.config.jsonasset1,516 bytes
  • scripts/comfyui/assets/workflows/z_image_turbo.jsonasset2,797 bytes
  • scripts/comfyui/cli.pyruns3,088 bytes
  • scripts/comfyui/cli_admin.pyruns10,300 bytes
  • scripts/comfyui/cli_convert.pyruns4,687 bytes
  • scripts/comfyui/cli_generate.pyruns27,397 bytes
  • scripts/comfyui/cli_validate.pyruns10,905 bytes
  • scripts/comfyui/config.pyruns7,389 bytes
  • scripts/comfyui/models/__init__.pyruns69 bytes
  • scripts/comfyui/models/result.pyruns859 bytes
  • scripts/comfyui/preflight.pyruns11,871 bytes
  • scripts/comfyui/references/cli.mddoc13,094 bytes
  • scripts/comfyui/references/extension.mddoc7,290 bytes
  • scripts/comfyui/references/prompt_enhancement/character.mddoc2,891 bytes
  • scripts/comfyui/references/prompt_enhancement/image_to_image.mddoc2,680 bytes
  • scripts/comfyui/references/prompt_enhancement/reference_to_image.mddoc5,774 bytes
  • scripts/comfyui/references/prompt_enhancement/text_to_speech.mddoc9,322 bytes
  • scripts/comfyui/references/workflow_nodes.mddoc1,706 bytes
  • scripts/comfyui/references/workflows.mddoc16,418 bytes
  • scripts/comfyui/services/__init__.pyruns0 bytes
  • scripts/comfyui/services/errors.pyruns88 bytes
  • scripts/comfyui/services/executor.pyruns21,701 bytes
  • scripts/comfyui/services/job_store.pyruns5,403 bytes
  • scripts/comfyui/services/poller.pyruns15,285 bytes
  • scripts/comfyui/services/submitter.pyruns9,627 bytes
  • scripts/comfyui/services/workflow_config.pyruns9,610 bytes
  • scripts/comfyui/services/z_image_turbo.pyruns2,445 bytes
  • scripts/comfyui/tools/__init__.pyruns0 bytes
  • scripts/comfyui/tools/analyze_workflow.pyruns20,104 bytes
  • scripts/comfyui/tools/convert_ui_workflow.pyruns9,351 bytes
  • scripts/comfyui/tools/import_workflow.pyruns14,515 bytes
  • scripts/comfyui/workflow_selection.pyruns1,462 bytes
  • scripts/gen_diagram.pyruns25,122 bytes
  • scripts/make_clawhub_bundle.pyruns8,163 bytes
  • scripts/requirements.txtdoc194 bytes
  • scripts/sync_package_assets.pyruns4,267 bytes
  • scripts/test_error_cases.pyruns11,061 bytes
  • scripts/tests/__init__.pyruns0 bytes
  • scripts/tests/conftest.pyruns526 bytes
  • scripts/tests/fixtures/api_media_inputs.jsonasset498 bytes
  • scripts/tests/fixtures/api_no_prompt.jsonasset630 bytes
  • scripts/tests/fixtures/fs-skill.jsonasset831 bytes
  • scripts/tests/fixtures/fs.jsonasset825 bytes
  • scripts/tests/fixtures/ui_format.jsonasset414 bytes
  • scripts/tests/test_analyze_workflow.pyruns10,716 bytes
  • scripts/tests/test_cli.pyruns29,017 bytes
  • scripts/tests/test_config.pyruns7,264 bytes
  • scripts/tests/test_console_script.pyruns369 bytes
  • scripts/tests/test_convert_ui_workflow.pyruns5,403 bytes
  • scripts/tests/test_custom_workflows_registry.pyruns4,000 bytes
  • scripts/tests/test_docs_entrypoints.pyruns9,596 bytes
  • scripts/tests/test_doctor_command.pyruns3,732 bytes
  • scripts/tests/test_executor.pyruns32,451 bytes
  • scripts/tests/test_executor_qwen3_tts.pyruns2,588 bytes
  • scripts/tests/test_import_workflow.pyruns11,578 bytes
  • scripts/tests/test_install_mode.pyruns1,964 bytes
  • scripts/tests/test_integration.pyruns5,909 bytes
  • scripts/tests/test_job_store.pyruns10,990 bytes
  • scripts/tests/test_package_resources.pyruns479 bytes
  • scripts/tests/test_poller.pyruns24,036 bytes
  • scripts/tests/test_preflight.pyruns9,930 bytes
  • scripts/tests/test_resource_mirror.pyruns1,098 bytes
  • scripts/tests/test_result.pyruns2,615 bytes
  • scripts/tests/test_submitter.pyruns17,801 bytes
  • scripts/tests/test_validate_command.pyruns4,717 bytes
  • scripts/tests/test_vendored_comfy_api.pyruns5,704 bytes
  • scripts/tests/test_workflow_config.pyruns17,733 bytes
  • scripts/tests/test_workflow_selection.pyruns5,298 bytes
  • uv.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 GitHub

Skills 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 shell

Automated 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:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
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

  • Network accessline 1
    Apache License                            Version 2.0, January 2004                         http://www.apache.org/licenses/
  • Network accessline 3
    http://www.apache.org/licenses/
  • Network accessline 195
    http://www.apache.org/licenses/LICENSE-2.0

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

  • Access to secretsline 129
    [Credential-related source omitted]
  • Network accessline 240
    <script src="https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js"></script>

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 6
    [Credential-related source omitted]
  • Access to secretsline 7
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Network accessline 7
    lines.append(f'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 {W} {H}" width="{W}" height="{H}">')

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

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 15
    SERVER_URL = "http://192.168.31.120:8188"

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 15
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Network accessline 19
    SERVER_URL = "http://127.0.0.1:8188"
  • Access to secretsline 24
    [Credential-related source omitted]
  • Access to secretsline 140
    [Credential-related source omitted]
  • Access to secretsline 168
    [Credential-related source omitted]

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

and 449 more

Only the first 500 facts are listed.

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard 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.