Add files using upload-large-folder tool
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .venv-backups/25365439/venv-main-2025-08-28-0900.txt +173 -0
- .venv-backups/25365439/venv-main-2025-08-28-1130.txt +173 -0
- .venv-backups/25365439/venv-main-2025-08-28-1300.txt +173 -0
- .venv-backups/25365439/venv-main-2025-08-28-1330.txt +173 -0
- .venv-backups/25468028/backup.log +3 -0
- .venv-backups/25468028/venv-main-2025-08-30-0852.txt +165 -0
- .venv-backups/25474989/backup.log +12 -0
- .venv-backups/25474989/venv-main-2025-08-30-1530.txt +173 -0
- .venv-backups/25474989/venv-main-2025-08-30-1600.txt +173 -0
- .venv-backups/25474989/venv-main-2025-08-30-1730.txt +173 -0
- .venv-backups/25478920/backup.log +63 -0
- .venv-backups/25478920/venv-main-2025-08-30-1753.txt +165 -0
- .venv-backups/25478920/venv-main-2025-08-30-1900.txt +173 -0
- .venv-backups/25478920/venv-main-2025-08-30-2230.txt +173 -0
- .venv-backups/25478920/venv-main-2025-08-30-2300.txt +173 -0
- .venv-backups/25478920/venv-main-2025-08-30-2330.txt +173 -0
- .venv-backups/25478920/venv-main-2025-08-31-0000.txt +173 -0
- .venv-backups/25478920/venv-main-2025-08-31-0030.txt +173 -0
- .venv-backups/25478920/venv-main-2025-08-31-0100.txt +173 -0
- .venv-backups/25478920/venv-main-2025-08-31-0130.txt +173 -0
- .venv-backups/25478920/venv-main-2025-08-31-0200.txt +173 -0
- .venv-backups/25478920/venv-main-2025-08-31-0230.txt +173 -0
- .venv-backups/25478920/venv-main-2025-08-31-0300.txt +173 -0
- .venv-backups/25478920/venv-main-2025-08-31-0330.txt +173 -0
- .venv-backups/25478920/venv-main-2025-08-31-0400.txt +173 -0
- .venv-backups/25478920/venv-main-2025-08-31-0430.txt +173 -0
- .venv-backups/25478920/venv-main-2025-08-31-0500.txt +173 -0
- .venv-backups/25478920/venv-main-2025-08-31-0530.txt +173 -0
- .venv-backups/25478920/venv-main-2025-08-31-0600.txt +173 -0
- .venv-backups/25478920/venv-main-2025-08-31-0630.txt +173 -0
- .venv-backups/25478920/venv-main-2025-09-03-0700.txt +173 -0
- .venv-backups/25478920/venv-main-2025-09-03-0800.txt +173 -0
- .venv-backups/25478920/venv-main-latest.txt +173 -0
- ComfyUI/.ipynb_checkpoints/install-checkpoint.sh +80 -0
- ComfyUI/alembic_db/README.md +4 -0
- ComfyUI/alembic_db/env.py +64 -0
- ComfyUI/alembic_db/script.py.mako +28 -0
- ComfyUI/api_server/__init__.py +0 -0
- ComfyUI/app/__init__.py +0 -0
- ComfyUI/app/app_settings.py +65 -0
- ComfyUI/app/custom_node_manager.py +145 -0
- ComfyUI/app/frontend_management.py +361 -0
- ComfyUI/app/logger.py +98 -0
- ComfyUI/app/model_manager.py +184 -0
- ComfyUI/app/user_manager.py +436 -0
- ComfyUI/comfy/checkpoint_pickle.py +13 -0
- ComfyUI/comfy/cli_args.py +237 -0
- ComfyUI/comfy/clip_config_bigg.json +23 -0
- ComfyUI/comfy/clip_model.py +244 -0
- ComfyUI/comfy/clip_vision.py +148 -0
.venv-backups/25365439/venv-main-2025-08-28-0900.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.5
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25365439/venv-main-2025-08-28-1130.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.5
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25365439/venv-main-2025-08-28-1300.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.5
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25365439/venv-main-2025-08-28-1330.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.5
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25468028/backup.log
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[2025-08-30 08:52:37] Processing virtual environment: /venv/main
|
| 2 |
+
[2025-08-30 08:52:38] SUCCESS: Created backup at /workspace/.venv-backups/25468028/venv-main-2025-08-30-0852.txt
|
| 3 |
+
[2025-08-30 08:52:38] Backup process completed
|
.venv-backups/25468028/venv-main-2025-08-30-0852.txt
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
cryptography==45.0.5
|
| 25 |
+
debugpy==1.8.14
|
| 26 |
+
decorator==5.2.1
|
| 27 |
+
easydict==1.13
|
| 28 |
+
einops==0.8.1
|
| 29 |
+
executing==2.2.0
|
| 30 |
+
filelock==3.18.0
|
| 31 |
+
frozenlist==1.7.0
|
| 32 |
+
fsspec==2025.5.1
|
| 33 |
+
gdown==5.2.0
|
| 34 |
+
gitdb==4.0.12
|
| 35 |
+
GitPython==3.1.45
|
| 36 |
+
greenlet==3.2.3
|
| 37 |
+
h11==0.16.0
|
| 38 |
+
h2==4.2.0
|
| 39 |
+
hf-xet==1.1.5
|
| 40 |
+
hpack==4.1.0
|
| 41 |
+
huggingface-hub==0.34.3
|
| 42 |
+
hyperframe==6.1.0
|
| 43 |
+
idna==3.10
|
| 44 |
+
imageio==2.37.0
|
| 45 |
+
inquirerpy==0.3.4
|
| 46 |
+
ipykernel==6.29.5
|
| 47 |
+
ipython==9.3.0
|
| 48 |
+
ipython_pygments_lexers==1.1.1
|
| 49 |
+
ipywidgets==8.1.7
|
| 50 |
+
jedi==0.19.2
|
| 51 |
+
Jinja2==3.1.4
|
| 52 |
+
jsonschema==4.25.0
|
| 53 |
+
jsonschema-specifications==2025.4.1
|
| 54 |
+
jupyter_client==8.6.3
|
| 55 |
+
jupyter_core==5.8.1
|
| 56 |
+
jupyterlab_widgets==3.0.15
|
| 57 |
+
kornia==0.8.1
|
| 58 |
+
kornia_rs==0.1.9
|
| 59 |
+
lazy_loader==0.4
|
| 60 |
+
llvmlite==0.44.0
|
| 61 |
+
Mako==1.3.10
|
| 62 |
+
markdown-it-py==3.0.0
|
| 63 |
+
MarkupSafe==2.1.5
|
| 64 |
+
matplotlib-inline==0.1.7
|
| 65 |
+
matrix-nio==0.25.2
|
| 66 |
+
mdurl==0.1.2
|
| 67 |
+
mpmath==1.3.0
|
| 68 |
+
multidict==6.6.3
|
| 69 |
+
nest-asyncio==1.6.0
|
| 70 |
+
networkx==3.3
|
| 71 |
+
numba==0.61.2
|
| 72 |
+
numpy==2.1.2
|
| 73 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 74 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 75 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 76 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 77 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 78 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 79 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 80 |
+
nvidia-curand-cu12==10.3.9.55
|
| 81 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 82 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 83 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 84 |
+
nvidia-nccl-cu12==2.26.2
|
| 85 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 86 |
+
nvidia-nvtx-cu12==12.8.55
|
| 87 |
+
opencv-python==4.12.0.88
|
| 88 |
+
opencv-python-headless==4.12.0.88
|
| 89 |
+
packaging==25.0
|
| 90 |
+
parso==0.8.4
|
| 91 |
+
pexpect==4.9.0
|
| 92 |
+
pfzy==0.3.4
|
| 93 |
+
pillow==11.0.0
|
| 94 |
+
pixeloe==0.1.4
|
| 95 |
+
platformdirs==4.3.8
|
| 96 |
+
pooch==1.8.2
|
| 97 |
+
prompt_toolkit==3.0.51
|
| 98 |
+
propcache==0.3.2
|
| 99 |
+
psutil==7.0.0
|
| 100 |
+
ptyprocess==0.7.0
|
| 101 |
+
pure_eval==0.2.3
|
| 102 |
+
pycparser==2.22
|
| 103 |
+
pycryptodome==3.23.0
|
| 104 |
+
pydantic==2.11.7
|
| 105 |
+
pydantic-settings==2.10.1
|
| 106 |
+
pydantic_core==2.33.2
|
| 107 |
+
PyGithub==2.7.0
|
| 108 |
+
Pygments==2.19.2
|
| 109 |
+
PyJWT==2.10.1
|
| 110 |
+
PyMatting==1.1.14
|
| 111 |
+
PyNaCl==1.5.0
|
| 112 |
+
PySocks==1.7.1
|
| 113 |
+
python-dateutil==2.9.0.post0
|
| 114 |
+
python-dotenv==1.1.1
|
| 115 |
+
python-socks==2.7.1
|
| 116 |
+
PyYAML==6.0.2
|
| 117 |
+
pyzmq==27.0.0
|
| 118 |
+
referencing==0.36.2
|
| 119 |
+
regex==2025.7.34
|
| 120 |
+
rembg==2.0.67
|
| 121 |
+
requests==2.32.4
|
| 122 |
+
rich==14.1.0
|
| 123 |
+
rpds-py==0.26.0
|
| 124 |
+
safetensors==0.5.3
|
| 125 |
+
scikit-image==0.25.2
|
| 126 |
+
scipy==1.16.1
|
| 127 |
+
sentencepiece==0.2.0
|
| 128 |
+
setuptools==80.9.0
|
| 129 |
+
shellingham==1.5.4
|
| 130 |
+
simsimd==6.5.0
|
| 131 |
+
six==1.17.0
|
| 132 |
+
smmap==5.0.2
|
| 133 |
+
soundfile==0.13.1
|
| 134 |
+
soupsieve==2.7
|
| 135 |
+
spandrel==0.4.1
|
| 136 |
+
SQLAlchemy==2.0.42
|
| 137 |
+
stack-data==0.6.3
|
| 138 |
+
stringzilla==3.12.5
|
| 139 |
+
sympy==1.13.3
|
| 140 |
+
tifffile==2025.6.11
|
| 141 |
+
timm==1.0.19
|
| 142 |
+
tokenizers==0.21.4
|
| 143 |
+
toml==0.10.2
|
| 144 |
+
torch==2.7.1+cu128
|
| 145 |
+
torchaudio==2.7.1+cu128
|
| 146 |
+
torchsde==0.2.6
|
| 147 |
+
torchvision==0.22.1+cu128
|
| 148 |
+
tornado==6.5.1
|
| 149 |
+
tqdm==4.67.1
|
| 150 |
+
traitlets==5.14.3
|
| 151 |
+
trampoline==0.1.2
|
| 152 |
+
transformers==4.54.1
|
| 153 |
+
transparent-background==1.3.4
|
| 154 |
+
triton==3.3.1
|
| 155 |
+
typer==0.16.0
|
| 156 |
+
typing-inspection==0.4.1
|
| 157 |
+
typing_extensions==4.14.0
|
| 158 |
+
unpaddedbase64==2.1.0
|
| 159 |
+
urllib3==2.5.0
|
| 160 |
+
uv==0.8.4
|
| 161 |
+
wcwidth==0.2.13
|
| 162 |
+
wget==3.2
|
| 163 |
+
wheel==0.45.1
|
| 164 |
+
widgetsnbextension==4.0.14
|
| 165 |
+
yarl==1.20.1
|
.venv-backups/25474989/backup.log
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[2025-08-30 14:37:04] Processing virtual environment: /venv/main
|
| 2 |
+
[2025-08-30 14:37:04] SUCCESS: Created backup at /workspace/.venv-backups/25474989/venv-main-2025-08-30-1437.txt
|
| 3 |
+
[2025-08-30 14:37:04] Backup process completed
|
| 4 |
+
[2025-08-30 15:30:01] Processing virtual environment: /venv/main
|
| 5 |
+
[2025-08-30 15:30:01] SUCCESS: Created backup at /workspace/.venv-backups/25474989/venv-main-2025-08-30-1530.txt
|
| 6 |
+
[2025-08-30 15:30:02] Backup process completed
|
| 7 |
+
[2025-08-30 16:00:01] Processing virtual environment: /venv/main
|
| 8 |
+
[2025-08-30 16:00:02] SUCCESS: Created backup at /workspace/.venv-backups/25474989/venv-main-2025-08-30-1600.txt
|
| 9 |
+
[2025-08-30 16:00:02] Backup process completed
|
| 10 |
+
[2025-08-30 17:30:01] Processing virtual environment: /venv/main
|
| 11 |
+
[2025-08-30 17:30:01] SUCCESS: Created backup at /workspace/.venv-backups/25474989/venv-main-2025-08-30-1730.txt
|
| 12 |
+
[2025-08-30 17:30:01] Backup process completed
|
.venv-backups/25474989/venv-main-2025-08-30-1530.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25474989/venv-main-2025-08-30-1600.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25474989/venv-main-2025-08-30-1730.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25478920/backup.log
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[2025-08-30 17:53:15] Processing virtual environment: /venv/main
|
| 2 |
+
[2025-08-30 17:53:15] SUCCESS: Created backup at /workspace/.venv-backups/25478920/venv-main-2025-08-30-1753.txt
|
| 3 |
+
[2025-08-30 17:53:16] Backup process completed
|
| 4 |
+
[2025-08-30 19:00:01] Processing virtual environment: /venv/main
|
| 5 |
+
[2025-08-30 19:00:01] SUCCESS: Created backup at /workspace/.venv-backups/25478920/venv-main-2025-08-30-1900.txt
|
| 6 |
+
[2025-08-30 19:00:01] Backup process completed
|
| 7 |
+
[2025-08-30 22:30:01] Processing virtual environment: /venv/main
|
| 8 |
+
[2025-08-30 22:30:01] SUCCESS: Created backup at /workspace/.venv-backups/25478920/venv-main-2025-08-30-2230.txt
|
| 9 |
+
[2025-08-30 22:30:01] Backup process completed
|
| 10 |
+
[2025-08-30 23:00:01] Processing virtual environment: /venv/main
|
| 11 |
+
[2025-08-30 23:00:02] SUCCESS: Created backup at /workspace/.venv-backups/25478920/venv-main-2025-08-30-2300.txt
|
| 12 |
+
[2025-08-30 23:00:02] Backup process completed
|
| 13 |
+
[2025-08-30 23:30:01] Processing virtual environment: /venv/main
|
| 14 |
+
[2025-08-30 23:30:01] SUCCESS: Created backup at /workspace/.venv-backups/25478920/venv-main-2025-08-30-2330.txt
|
| 15 |
+
[2025-08-30 23:30:01] Backup process completed
|
| 16 |
+
[2025-08-31 00:00:01] Processing virtual environment: /venv/main
|
| 17 |
+
[2025-08-31 00:00:02] SUCCESS: Created backup at /workspace/.venv-backups/25478920/venv-main-2025-08-31-0000.txt
|
| 18 |
+
[2025-08-31 00:00:02] Backup process completed
|
| 19 |
+
[2025-08-31 00:30:01] Processing virtual environment: /venv/main
|
| 20 |
+
[2025-08-31 00:30:01] SUCCESS: Created backup at /workspace/.venv-backups/25478920/venv-main-2025-08-31-0030.txt
|
| 21 |
+
[2025-08-31 00:30:01] Backup process completed
|
| 22 |
+
[2025-08-31 01:00:01] Processing virtual environment: /venv/main
|
| 23 |
+
[2025-08-31 01:00:02] SUCCESS: Created backup at /workspace/.venv-backups/25478920/venv-main-2025-08-31-0100.txt
|
| 24 |
+
[2025-08-31 01:00:02] Backup process completed
|
| 25 |
+
[2025-08-31 01:30:01] Processing virtual environment: /venv/main
|
| 26 |
+
[2025-08-31 01:30:01] SUCCESS: Created backup at /workspace/.venv-backups/25478920/venv-main-2025-08-31-0130.txt
|
| 27 |
+
[2025-08-31 01:30:01] Backup process completed
|
| 28 |
+
[2025-08-31 02:00:01] Processing virtual environment: /venv/main
|
| 29 |
+
[2025-08-31 02:00:02] SUCCESS: Created backup at /workspace/.venv-backups/25478920/venv-main-2025-08-31-0200.txt
|
| 30 |
+
[2025-08-31 02:00:02] Backup process completed
|
| 31 |
+
[2025-08-31 02:30:01] Processing virtual environment: /venv/main
|
| 32 |
+
[2025-08-31 02:30:01] SUCCESS: Created backup at /workspace/.venv-backups/25478920/venv-main-2025-08-31-0230.txt
|
| 33 |
+
[2025-08-31 02:30:01] Backup process completed
|
| 34 |
+
[2025-08-31 03:00:01] Processing virtual environment: /venv/main
|
| 35 |
+
[2025-08-31 03:00:02] SUCCESS: Created backup at /workspace/.venv-backups/25478920/venv-main-2025-08-31-0300.txt
|
| 36 |
+
[2025-08-31 03:00:02] Backup process completed
|
| 37 |
+
[2025-08-31 03:30:01] Processing virtual environment: /venv/main
|
| 38 |
+
[2025-08-31 03:30:01] SUCCESS: Created backup at /workspace/.venv-backups/25478920/venv-main-2025-08-31-0330.txt
|
| 39 |
+
[2025-08-31 03:30:01] Backup process completed
|
| 40 |
+
[2025-08-31 04:00:01] Processing virtual environment: /venv/main
|
| 41 |
+
[2025-08-31 04:00:02] SUCCESS: Created backup at /workspace/.venv-backups/25478920/venv-main-2025-08-31-0400.txt
|
| 42 |
+
[2025-08-31 04:00:02] Backup process completed
|
| 43 |
+
[2025-08-31 04:30:01] Processing virtual environment: /venv/main
|
| 44 |
+
[2025-08-31 04:30:01] SUCCESS: Created backup at /workspace/.venv-backups/25478920/venv-main-2025-08-31-0430.txt
|
| 45 |
+
[2025-08-31 04:30:02] Backup process completed
|
| 46 |
+
[2025-08-31 05:00:01] Processing virtual environment: /venv/main
|
| 47 |
+
[2025-08-31 05:00:01] SUCCESS: Created backup at /workspace/.venv-backups/25478920/venv-main-2025-08-31-0500.txt
|
| 48 |
+
[2025-08-31 05:00:01] Backup process completed
|
| 49 |
+
[2025-08-31 05:30:01] Processing virtual environment: /venv/main
|
| 50 |
+
[2025-08-31 05:30:01] SUCCESS: Created backup at /workspace/.venv-backups/25478920/venv-main-2025-08-31-0530.txt
|
| 51 |
+
[2025-08-31 05:30:02] Backup process completed
|
| 52 |
+
[2025-08-31 06:00:01] Processing virtual environment: /venv/main
|
| 53 |
+
[2025-08-31 06:00:01] SUCCESS: Created backup at /workspace/.venv-backups/25478920/venv-main-2025-08-31-0600.txt
|
| 54 |
+
[2025-08-31 06:00:01] Backup process completed
|
| 55 |
+
[2025-08-31 06:30:01] Processing virtual environment: /venv/main
|
| 56 |
+
[2025-08-31 06:30:01] SUCCESS: Created backup at /workspace/.venv-backups/25478920/venv-main-2025-08-31-0630.txt
|
| 57 |
+
[2025-08-31 06:30:02] Backup process completed
|
| 58 |
+
[2025-09-03 07:00:01] Processing virtual environment: /venv/main
|
| 59 |
+
[2025-09-03 07:00:02] SUCCESS: Created backup at /workspace/.venv-backups/25478920/venv-main-2025-09-03-0700.txt
|
| 60 |
+
[2025-09-03 07:00:02] Backup process completed
|
| 61 |
+
[2025-09-03 08:00:01] Processing virtual environment: /venv/main
|
| 62 |
+
[2025-09-03 08:00:01] SUCCESS: Created backup at /workspace/.venv-backups/25478920/venv-main-2025-09-03-0800.txt
|
| 63 |
+
[2025-09-03 08:00:02] Backup process completed
|
.venv-backups/25478920/venv-main-2025-08-30-1753.txt
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
cryptography==45.0.5
|
| 25 |
+
debugpy==1.8.14
|
| 26 |
+
decorator==5.2.1
|
| 27 |
+
easydict==1.13
|
| 28 |
+
einops==0.8.1
|
| 29 |
+
executing==2.2.0
|
| 30 |
+
filelock==3.18.0
|
| 31 |
+
frozenlist==1.7.0
|
| 32 |
+
fsspec==2025.5.1
|
| 33 |
+
gdown==5.2.0
|
| 34 |
+
gitdb==4.0.12
|
| 35 |
+
GitPython==3.1.45
|
| 36 |
+
greenlet==3.2.3
|
| 37 |
+
h11==0.16.0
|
| 38 |
+
h2==4.2.0
|
| 39 |
+
hf-xet==1.1.5
|
| 40 |
+
hpack==4.1.0
|
| 41 |
+
huggingface-hub==0.34.3
|
| 42 |
+
hyperframe==6.1.0
|
| 43 |
+
idna==3.10
|
| 44 |
+
imageio==2.37.0
|
| 45 |
+
inquirerpy==0.3.4
|
| 46 |
+
ipykernel==6.29.5
|
| 47 |
+
ipython==9.3.0
|
| 48 |
+
ipython_pygments_lexers==1.1.1
|
| 49 |
+
ipywidgets==8.1.7
|
| 50 |
+
jedi==0.19.2
|
| 51 |
+
Jinja2==3.1.4
|
| 52 |
+
jsonschema==4.25.0
|
| 53 |
+
jsonschema-specifications==2025.4.1
|
| 54 |
+
jupyter_client==8.6.3
|
| 55 |
+
jupyter_core==5.8.1
|
| 56 |
+
jupyterlab_widgets==3.0.15
|
| 57 |
+
kornia==0.8.1
|
| 58 |
+
kornia_rs==0.1.9
|
| 59 |
+
lazy_loader==0.4
|
| 60 |
+
llvmlite==0.44.0
|
| 61 |
+
Mako==1.3.10
|
| 62 |
+
markdown-it-py==3.0.0
|
| 63 |
+
MarkupSafe==2.1.5
|
| 64 |
+
matplotlib-inline==0.1.7
|
| 65 |
+
matrix-nio==0.25.2
|
| 66 |
+
mdurl==0.1.2
|
| 67 |
+
mpmath==1.3.0
|
| 68 |
+
multidict==6.6.3
|
| 69 |
+
nest-asyncio==1.6.0
|
| 70 |
+
networkx==3.3
|
| 71 |
+
numba==0.61.2
|
| 72 |
+
numpy==2.1.2
|
| 73 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 74 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 75 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 76 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 77 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 78 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 79 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 80 |
+
nvidia-curand-cu12==10.3.9.55
|
| 81 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 82 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 83 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 84 |
+
nvidia-nccl-cu12==2.26.2
|
| 85 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 86 |
+
nvidia-nvtx-cu12==12.8.55
|
| 87 |
+
opencv-python==4.12.0.88
|
| 88 |
+
opencv-python-headless==4.12.0.88
|
| 89 |
+
packaging==25.0
|
| 90 |
+
parso==0.8.4
|
| 91 |
+
pexpect==4.9.0
|
| 92 |
+
pfzy==0.3.4
|
| 93 |
+
pillow==11.0.0
|
| 94 |
+
pixeloe==0.1.4
|
| 95 |
+
platformdirs==4.3.8
|
| 96 |
+
pooch==1.8.2
|
| 97 |
+
prompt_toolkit==3.0.51
|
| 98 |
+
propcache==0.3.2
|
| 99 |
+
psutil==7.0.0
|
| 100 |
+
ptyprocess==0.7.0
|
| 101 |
+
pure_eval==0.2.3
|
| 102 |
+
pycparser==2.22
|
| 103 |
+
pycryptodome==3.23.0
|
| 104 |
+
pydantic==2.11.7
|
| 105 |
+
pydantic-settings==2.10.1
|
| 106 |
+
pydantic_core==2.33.2
|
| 107 |
+
PyGithub==2.7.0
|
| 108 |
+
Pygments==2.19.2
|
| 109 |
+
PyJWT==2.10.1
|
| 110 |
+
PyMatting==1.1.14
|
| 111 |
+
PyNaCl==1.5.0
|
| 112 |
+
PySocks==1.7.1
|
| 113 |
+
python-dateutil==2.9.0.post0
|
| 114 |
+
python-dotenv==1.1.1
|
| 115 |
+
python-socks==2.7.1
|
| 116 |
+
PyYAML==6.0.2
|
| 117 |
+
pyzmq==27.0.0
|
| 118 |
+
referencing==0.36.2
|
| 119 |
+
regex==2025.7.34
|
| 120 |
+
rembg==2.0.67
|
| 121 |
+
requests==2.32.4
|
| 122 |
+
rich==14.1.0
|
| 123 |
+
rpds-py==0.26.0
|
| 124 |
+
safetensors==0.5.3
|
| 125 |
+
scikit-image==0.25.2
|
| 126 |
+
scipy==1.16.1
|
| 127 |
+
sentencepiece==0.2.0
|
| 128 |
+
setuptools==80.9.0
|
| 129 |
+
shellingham==1.5.4
|
| 130 |
+
simsimd==6.5.0
|
| 131 |
+
six==1.17.0
|
| 132 |
+
smmap==5.0.2
|
| 133 |
+
soundfile==0.13.1
|
| 134 |
+
soupsieve==2.7
|
| 135 |
+
spandrel==0.4.1
|
| 136 |
+
SQLAlchemy==2.0.42
|
| 137 |
+
stack-data==0.6.3
|
| 138 |
+
stringzilla==3.12.5
|
| 139 |
+
sympy==1.13.3
|
| 140 |
+
tifffile==2025.6.11
|
| 141 |
+
timm==1.0.19
|
| 142 |
+
tokenizers==0.21.4
|
| 143 |
+
toml==0.10.2
|
| 144 |
+
torch==2.7.1+cu128
|
| 145 |
+
torchaudio==2.7.1+cu128
|
| 146 |
+
torchsde==0.2.6
|
| 147 |
+
torchvision==0.22.1+cu128
|
| 148 |
+
tornado==6.5.1
|
| 149 |
+
tqdm==4.67.1
|
| 150 |
+
traitlets==5.14.3
|
| 151 |
+
trampoline==0.1.2
|
| 152 |
+
transformers==4.54.1
|
| 153 |
+
transparent-background==1.3.4
|
| 154 |
+
triton==3.3.1
|
| 155 |
+
typer==0.16.0
|
| 156 |
+
typing-inspection==0.4.1
|
| 157 |
+
typing_extensions==4.14.0
|
| 158 |
+
unpaddedbase64==2.1.0
|
| 159 |
+
urllib3==2.5.0
|
| 160 |
+
uv==0.8.4
|
| 161 |
+
wcwidth==0.2.13
|
| 162 |
+
wget==3.2
|
| 163 |
+
wheel==0.45.1
|
| 164 |
+
widgetsnbextension==4.0.14
|
| 165 |
+
yarl==1.20.1
|
.venv-backups/25478920/venv-main-2025-08-30-1900.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25478920/venv-main-2025-08-30-2230.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25478920/venv-main-2025-08-30-2300.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25478920/venv-main-2025-08-30-2330.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25478920/venv-main-2025-08-31-0000.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25478920/venv-main-2025-08-31-0030.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25478920/venv-main-2025-08-31-0100.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25478920/venv-main-2025-08-31-0130.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25478920/venv-main-2025-08-31-0200.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25478920/venv-main-2025-08-31-0230.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25478920/venv-main-2025-08-31-0300.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25478920/venv-main-2025-08-31-0330.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25478920/venv-main-2025-08-31-0400.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25478920/venv-main-2025-08-31-0430.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25478920/venv-main-2025-08-31-0500.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25478920/venv-main-2025-08-31-0530.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25478920/venv-main-2025-08-31-0600.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25478920/venv-main-2025-08-31-0630.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25478920/venv-main-2025-09-03-0700.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25478920/venv-main-2025-09-03-0800.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
.venv-backups/25478920/venv-main-latest.txt
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
aiofiles==24.1.0
|
| 2 |
+
aiohappyeyeballs==2.6.1
|
| 3 |
+
aiohttp==3.12.15
|
| 4 |
+
aiohttp_socks==0.10.1
|
| 5 |
+
aiosignal==1.4.0
|
| 6 |
+
albucore==0.0.24
|
| 7 |
+
albumentations==2.0.8
|
| 8 |
+
alembic==1.16.4
|
| 9 |
+
annotated-types==0.7.0
|
| 10 |
+
asttokens==3.0.0
|
| 11 |
+
attrs==25.3.0
|
| 12 |
+
av==15.0.0
|
| 13 |
+
beautifulsoup4==4.13.4
|
| 14 |
+
certifi==2025.6.15
|
| 15 |
+
cffi==1.17.1
|
| 16 |
+
chardet==5.2.0
|
| 17 |
+
charset-normalizer==3.4.2
|
| 18 |
+
click==8.2.1
|
| 19 |
+
colour-science==0.4.6
|
| 20 |
+
comfyui-embedded-docs==0.2.4
|
| 21 |
+
comfyui_frontend_package==1.23.4
|
| 22 |
+
comfyui_workflow_templates==0.1.41
|
| 23 |
+
comm==0.2.2
|
| 24 |
+
contourpy==1.3.3
|
| 25 |
+
cryptography==45.0.5
|
| 26 |
+
cycler==0.12.1
|
| 27 |
+
debugpy==1.8.14
|
| 28 |
+
decorator==5.2.1
|
| 29 |
+
easydict==1.13
|
| 30 |
+
einops==0.8.1
|
| 31 |
+
executing==2.2.0
|
| 32 |
+
filelock==3.18.0
|
| 33 |
+
fonttools==4.59.2
|
| 34 |
+
frozenlist==1.7.0
|
| 35 |
+
fsspec==2025.5.1
|
| 36 |
+
gdown==5.2.0
|
| 37 |
+
gitdb==4.0.12
|
| 38 |
+
GitPython==3.1.45
|
| 39 |
+
greenlet==3.2.3
|
| 40 |
+
h11==0.16.0
|
| 41 |
+
h2==4.2.0
|
| 42 |
+
hf-xet==1.1.5
|
| 43 |
+
hpack==4.1.0
|
| 44 |
+
huggingface-hub==0.34.3
|
| 45 |
+
hyperframe==6.1.0
|
| 46 |
+
idna==3.10
|
| 47 |
+
imageio==2.37.0
|
| 48 |
+
inquirerpy==0.3.4
|
| 49 |
+
ipykernel==6.29.5
|
| 50 |
+
ipython==9.3.0
|
| 51 |
+
ipython_pygments_lexers==1.1.1
|
| 52 |
+
ipywidgets==8.1.7
|
| 53 |
+
jedi==0.19.2
|
| 54 |
+
Jinja2==3.1.4
|
| 55 |
+
jsonschema==4.25.0
|
| 56 |
+
jsonschema-specifications==2025.4.1
|
| 57 |
+
jupyter_client==8.6.3
|
| 58 |
+
jupyter_core==5.8.1
|
| 59 |
+
jupyterlab_widgets==3.0.15
|
| 60 |
+
kiwisolver==1.4.9
|
| 61 |
+
kornia==0.8.1
|
| 62 |
+
kornia_rs==0.1.9
|
| 63 |
+
lazy_loader==0.4
|
| 64 |
+
llvmlite==0.44.0
|
| 65 |
+
Mako==1.3.10
|
| 66 |
+
markdown-it-py==3.0.0
|
| 67 |
+
MarkupSafe==2.1.5
|
| 68 |
+
matplotlib==3.10.6
|
| 69 |
+
matplotlib-inline==0.1.7
|
| 70 |
+
matrix-nio==0.25.2
|
| 71 |
+
mdurl==0.1.2
|
| 72 |
+
mpmath==1.3.0
|
| 73 |
+
multidict==6.6.3
|
| 74 |
+
nest-asyncio==1.6.0
|
| 75 |
+
networkx==3.3
|
| 76 |
+
numba==0.61.2
|
| 77 |
+
numpy==2.1.2
|
| 78 |
+
nvidia-cublas-cu12==12.8.3.14
|
| 79 |
+
nvidia-cuda-cupti-cu12==12.8.57
|
| 80 |
+
nvidia-cuda-nvrtc-cu12==12.8.61
|
| 81 |
+
nvidia-cuda-runtime-cu12==12.8.57
|
| 82 |
+
nvidia-cudnn-cu12==9.7.1.26
|
| 83 |
+
nvidia-cufft-cu12==11.3.3.41
|
| 84 |
+
nvidia-cufile-cu12==1.13.0.11
|
| 85 |
+
nvidia-curand-cu12==10.3.9.55
|
| 86 |
+
nvidia-cusolver-cu12==11.7.2.55
|
| 87 |
+
nvidia-cusparse-cu12==12.5.7.53
|
| 88 |
+
nvidia-cusparselt-cu12==0.6.3
|
| 89 |
+
nvidia-nccl-cu12==2.26.2
|
| 90 |
+
nvidia-nvjitlink-cu12==12.8.61
|
| 91 |
+
nvidia-nvtx-cu12==12.8.55
|
| 92 |
+
opencv-python==4.12.0.88
|
| 93 |
+
opencv-python-headless==4.12.0.88
|
| 94 |
+
packaging==25.0
|
| 95 |
+
parso==0.8.4
|
| 96 |
+
pexpect==4.9.0
|
| 97 |
+
pfzy==0.3.4
|
| 98 |
+
piexif==1.1.3
|
| 99 |
+
pillow==11.0.0
|
| 100 |
+
pixeloe==0.1.4
|
| 101 |
+
platformdirs==4.3.8
|
| 102 |
+
pooch==1.8.2
|
| 103 |
+
prompt_toolkit==3.0.51
|
| 104 |
+
propcache==0.3.2
|
| 105 |
+
psutil==7.0.0
|
| 106 |
+
ptyprocess==0.7.0
|
| 107 |
+
pure_eval==0.2.3
|
| 108 |
+
pycparser==2.22
|
| 109 |
+
pycryptodome==3.23.0
|
| 110 |
+
pydantic==2.11.7
|
| 111 |
+
pydantic-settings==2.10.1
|
| 112 |
+
pydantic_core==2.33.2
|
| 113 |
+
PyGithub==2.7.0
|
| 114 |
+
Pygments==2.19.2
|
| 115 |
+
PyJWT==2.10.1
|
| 116 |
+
PyMatting==1.1.14
|
| 117 |
+
PyNaCl==1.5.0
|
| 118 |
+
pyparsing==3.2.3
|
| 119 |
+
PySocks==1.7.1
|
| 120 |
+
python-dateutil==2.9.0.post0
|
| 121 |
+
python-dotenv==1.1.1
|
| 122 |
+
python-socks==2.7.1
|
| 123 |
+
PyWavelets==1.9.0
|
| 124 |
+
PyYAML==6.0.2
|
| 125 |
+
pyzmq==27.0.0
|
| 126 |
+
referencing==0.36.2
|
| 127 |
+
regex==2025.7.34
|
| 128 |
+
rembg==2.0.67
|
| 129 |
+
requests==2.32.4
|
| 130 |
+
rich==14.1.0
|
| 131 |
+
rpds-py==0.26.0
|
| 132 |
+
safetensors==0.5.3
|
| 133 |
+
scikit-image==0.25.2
|
| 134 |
+
scipy==1.16.1
|
| 135 |
+
sentencepiece==0.2.0
|
| 136 |
+
setuptools==80.9.0
|
| 137 |
+
shellingham==1.5.4
|
| 138 |
+
simsimd==6.5.0
|
| 139 |
+
six==1.17.0
|
| 140 |
+
smmap==5.0.2
|
| 141 |
+
soundfile==0.13.1
|
| 142 |
+
soupsieve==2.7
|
| 143 |
+
spandrel==0.4.1
|
| 144 |
+
SQLAlchemy==2.0.42
|
| 145 |
+
stack-data==0.6.3
|
| 146 |
+
stringzilla==3.12.5
|
| 147 |
+
sympy==1.13.3
|
| 148 |
+
tifffile==2025.6.11
|
| 149 |
+
timm==1.0.19
|
| 150 |
+
tokenizers==0.21.4
|
| 151 |
+
toml==0.10.2
|
| 152 |
+
torch==2.7.1+cu128
|
| 153 |
+
torchaudio==2.7.1+cu128
|
| 154 |
+
torchsde==0.2.6
|
| 155 |
+
torchvision==0.22.1+cu128
|
| 156 |
+
tornado==6.5.1
|
| 157 |
+
tqdm==4.67.1
|
| 158 |
+
traitlets==5.14.3
|
| 159 |
+
trampoline==0.1.2
|
| 160 |
+
transformers==4.54.1
|
| 161 |
+
transparent-background==1.3.4
|
| 162 |
+
triton==3.3.1
|
| 163 |
+
typer==0.16.0
|
| 164 |
+
typing-inspection==0.4.1
|
| 165 |
+
typing_extensions==4.14.0
|
| 166 |
+
unpaddedbase64==2.1.0
|
| 167 |
+
urllib3==2.5.0
|
| 168 |
+
uv==0.8.4
|
| 169 |
+
wcwidth==0.2.13
|
| 170 |
+
wget==3.2
|
| 171 |
+
wheel==0.45.1
|
| 172 |
+
widgetsnbextension==4.0.14
|
| 173 |
+
yarl==1.20.1
|
ComfyUI/.ipynb_checkpoints/install-checkpoint.sh
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
|
| 3 |
+
# Update system packages
|
| 4 |
+
apt update && apt upgrade -y
|
| 5 |
+
|
| 6 |
+
# Install base packages
|
| 7 |
+
apt install -y software-properties-common build-essential git python3-pip wget cmake pkg-config ninja-build
|
| 8 |
+
|
| 9 |
+
# Add deadsnakes PPA and install Python 3.12
|
| 10 |
+
add-apt-repository ppa:deadsnakes/ppa -y
|
| 11 |
+
apt update
|
| 12 |
+
apt install -y python3.12 python3.12-venv python3.12-dev
|
| 13 |
+
|
| 14 |
+
# Set python and python3 to Python 3.12
|
| 15 |
+
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1
|
| 16 |
+
update-alternatives --set python3 /usr/bin/python3.12
|
| 17 |
+
|
| 18 |
+
echo "System Python version: $(python --version)"
|
| 19 |
+
|
| 20 |
+
# Stop nginx if present
|
| 21 |
+
systemctl stop nginx 2>/dev/null || true
|
| 22 |
+
systemctl disable nginx 2>/dev/null || true
|
| 23 |
+
pkill -f nginx || true
|
| 24 |
+
|
| 25 |
+
# Set up workspace
|
| 26 |
+
mkdir -p /workspace && cd /workspace
|
| 27 |
+
|
| 28 |
+
# Clone ComfyUI
|
| 29 |
+
git clone https://github.com/comfyanonymous/ComfyUI.git
|
| 30 |
+
cd ComfyUI
|
| 31 |
+
|
| 32 |
+
# Create and activate Python 3.12 virtual environment
|
| 33 |
+
python3 -m venv venv
|
| 34 |
+
source venv/bin/activate
|
| 35 |
+
|
| 36 |
+
echo "Virtualenv Python version: $(python --version)"
|
| 37 |
+
|
| 38 |
+
# Upgrade pip
|
| 39 |
+
pip install --upgrade pip
|
| 40 |
+
|
| 41 |
+
# Install PyTorch 2.7.0 with CUDA 12.8
|
| 42 |
+
pip install torch==2.7.0 torchvision==0.22.0 torchaudio==2.7.0 --index-url https://download.pytorch.org/whl/cu128
|
| 43 |
+
|
| 44 |
+
# Install Triton (latest)
|
| 45 |
+
pip install triton
|
| 46 |
+
|
| 47 |
+
# Install packaging
|
| 48 |
+
pip install packaging
|
| 49 |
+
|
| 50 |
+
# Install SageAttention2 from prebuilt wheel (no compilation needed)
|
| 51 |
+
cd /workspace
|
| 52 |
+
wget https://huggingface.co/nitin19/flash-attention-wheels/resolve/main/sageattention-2.1.1-cp312-cp312-linux_x86_64.whl
|
| 53 |
+
pip install ./sageattention-2.1.1-cp312-cp312-linux_x86_64.whl
|
| 54 |
+
|
| 55 |
+
# Check torch, CUDA, Triton, compile
|
| 56 |
+
echo "Torch: $(python -c 'import torch; print(torch.__version__)')"
|
| 57 |
+
echo "CUDA: $(python -c 'import torch; print(torch.version.cuda)')"
|
| 58 |
+
echo "Triton: $(python -c 'import triton; print(triton.__version__)')"
|
| 59 |
+
echo "torch.compile available: $(python -c 'import torch; print(hasattr(torch, "compile"))')"
|
| 60 |
+
|
| 61 |
+
# Install ComfyUI requirements
|
| 62 |
+
cd /workspace/ComfyUI
|
| 63 |
+
pip install -r requirements.txt
|
| 64 |
+
|
| 65 |
+
# Install ComfyUI Manager
|
| 66 |
+
mkdir -p custom_nodes && cd custom_nodes
|
| 67 |
+
git clone https://github.com/ltdrdata/ComfyUI-Manager.git
|
| 68 |
+
cd ComfyUI-Manager
|
| 69 |
+
pip install -r requirements.txt
|
| 70 |
+
|
| 71 |
+
# Make sure ComfyUI main is executable
|
| 72 |
+
chmod +x /workspace/ComfyUI/main.py
|
| 73 |
+
|
| 74 |
+
# Kill any process on port 3001
|
| 75 |
+
fuser -k 3001/tcp || true
|
| 76 |
+
|
| 77 |
+
# Start ComfyUI with SageAttention
|
| 78 |
+
cd /workspace/ComfyUI
|
| 79 |
+
source venv/bin/activate
|
| 80 |
+
python main.py --use-sage-attention --listen --port 3001
|
ComfyUI/alembic_db/README.md
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
## Generate new revision
|
| 2 |
+
|
| 3 |
+
1. Update models in `/app/database/models.py`
|
| 4 |
+
2. Run `alembic revision --autogenerate -m "{your message}"`
|
ComfyUI/alembic_db/env.py
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from sqlalchemy import engine_from_config
|
| 2 |
+
from sqlalchemy import pool
|
| 3 |
+
|
| 4 |
+
from alembic import context
|
| 5 |
+
|
| 6 |
+
# this is the Alembic Config object, which provides
|
| 7 |
+
# access to the values within the .ini file in use.
|
| 8 |
+
config = context.config
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
from app.database.models import Base
|
| 12 |
+
target_metadata = Base.metadata
|
| 13 |
+
|
| 14 |
+
# other values from the config, defined by the needs of env.py,
|
| 15 |
+
# can be acquired:
|
| 16 |
+
# my_important_option = config.get_main_option("my_important_option")
|
| 17 |
+
# ... etc.
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
def run_migrations_offline() -> None:
|
| 21 |
+
"""Run migrations in 'offline' mode.
|
| 22 |
+
This configures the context with just a URL
|
| 23 |
+
and not an Engine, though an Engine is acceptable
|
| 24 |
+
here as well. By skipping the Engine creation
|
| 25 |
+
we don't even need a DBAPI to be available.
|
| 26 |
+
Calls to context.execute() here emit the given string to the
|
| 27 |
+
script output.
|
| 28 |
+
"""
|
| 29 |
+
url = config.get_main_option("sqlalchemy.url")
|
| 30 |
+
context.configure(
|
| 31 |
+
url=url,
|
| 32 |
+
target_metadata=target_metadata,
|
| 33 |
+
literal_binds=True,
|
| 34 |
+
dialect_opts={"paramstyle": "named"},
|
| 35 |
+
)
|
| 36 |
+
|
| 37 |
+
with context.begin_transaction():
|
| 38 |
+
context.run_migrations()
|
| 39 |
+
|
| 40 |
+
|
| 41 |
+
def run_migrations_online() -> None:
|
| 42 |
+
"""Run migrations in 'online' mode.
|
| 43 |
+
In this scenario we need to create an Engine
|
| 44 |
+
and associate a connection with the context.
|
| 45 |
+
"""
|
| 46 |
+
connectable = engine_from_config(
|
| 47 |
+
config.get_section(config.config_ini_section, {}),
|
| 48 |
+
prefix="sqlalchemy.",
|
| 49 |
+
poolclass=pool.NullPool,
|
| 50 |
+
)
|
| 51 |
+
|
| 52 |
+
with connectable.connect() as connection:
|
| 53 |
+
context.configure(
|
| 54 |
+
connection=connection, target_metadata=target_metadata
|
| 55 |
+
)
|
| 56 |
+
|
| 57 |
+
with context.begin_transaction():
|
| 58 |
+
context.run_migrations()
|
| 59 |
+
|
| 60 |
+
|
| 61 |
+
if context.is_offline_mode():
|
| 62 |
+
run_migrations_offline()
|
| 63 |
+
else:
|
| 64 |
+
run_migrations_online()
|
ComfyUI/alembic_db/script.py.mako
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""${message}
|
| 2 |
+
|
| 3 |
+
Revision ID: ${up_revision}
|
| 4 |
+
Revises: ${down_revision | comma,n}
|
| 5 |
+
Create Date: ${create_date}
|
| 6 |
+
|
| 7 |
+
"""
|
| 8 |
+
from typing import Sequence, Union
|
| 9 |
+
|
| 10 |
+
from alembic import op
|
| 11 |
+
import sqlalchemy as sa
|
| 12 |
+
${imports if imports else ""}
|
| 13 |
+
|
| 14 |
+
# revision identifiers, used by Alembic.
|
| 15 |
+
revision: str = ${repr(up_revision)}
|
| 16 |
+
down_revision: Union[str, None] = ${repr(down_revision)}
|
| 17 |
+
branch_labels: Union[str, Sequence[str], None] = ${repr(branch_labels)}
|
| 18 |
+
depends_on: Union[str, Sequence[str], None] = ${repr(depends_on)}
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
def upgrade() -> None:
|
| 22 |
+
"""Upgrade schema."""
|
| 23 |
+
${upgrades if upgrades else "pass"}
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
def downgrade() -> None:
|
| 27 |
+
"""Downgrade schema."""
|
| 28 |
+
${downgrades if downgrades else "pass"}
|
ComfyUI/api_server/__init__.py
ADDED
|
File without changes
|
ComfyUI/app/__init__.py
ADDED
|
File without changes
|
ComfyUI/app/app_settings.py
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import json
|
| 3 |
+
from aiohttp import web
|
| 4 |
+
import logging
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
class AppSettings():
|
| 8 |
+
def __init__(self, user_manager):
|
| 9 |
+
self.user_manager = user_manager
|
| 10 |
+
|
| 11 |
+
def get_settings(self, request):
|
| 12 |
+
try:
|
| 13 |
+
file = self.user_manager.get_request_user_filepath(
|
| 14 |
+
request,
|
| 15 |
+
"comfy.settings.json"
|
| 16 |
+
)
|
| 17 |
+
except KeyError as e:
|
| 18 |
+
logging.error("User settings not found.")
|
| 19 |
+
raise web.HTTPUnauthorized() from e
|
| 20 |
+
if os.path.isfile(file):
|
| 21 |
+
try:
|
| 22 |
+
with open(file) as f:
|
| 23 |
+
return json.load(f)
|
| 24 |
+
except:
|
| 25 |
+
logging.error(f"The user settings file is corrupted: {file}")
|
| 26 |
+
return {}
|
| 27 |
+
else:
|
| 28 |
+
return {}
|
| 29 |
+
|
| 30 |
+
def save_settings(self, request, settings):
|
| 31 |
+
file = self.user_manager.get_request_user_filepath(
|
| 32 |
+
request, "comfy.settings.json")
|
| 33 |
+
with open(file, "w") as f:
|
| 34 |
+
f.write(json.dumps(settings, indent=4))
|
| 35 |
+
|
| 36 |
+
def add_routes(self, routes):
|
| 37 |
+
@routes.get("/settings")
|
| 38 |
+
async def get_settings(request):
|
| 39 |
+
return web.json_response(self.get_settings(request))
|
| 40 |
+
|
| 41 |
+
@routes.get("/settings/{id}")
|
| 42 |
+
async def get_setting(request):
|
| 43 |
+
value = None
|
| 44 |
+
settings = self.get_settings(request)
|
| 45 |
+
setting_id = request.match_info.get("id", None)
|
| 46 |
+
if setting_id and setting_id in settings:
|
| 47 |
+
value = settings[setting_id]
|
| 48 |
+
return web.json_response(value)
|
| 49 |
+
|
| 50 |
+
@routes.post("/settings")
|
| 51 |
+
async def post_settings(request):
|
| 52 |
+
settings = self.get_settings(request)
|
| 53 |
+
new_settings = await request.json()
|
| 54 |
+
self.save_settings(request, {**settings, **new_settings})
|
| 55 |
+
return web.Response(status=200)
|
| 56 |
+
|
| 57 |
+
@routes.post("/settings/{id}")
|
| 58 |
+
async def post_setting(request):
|
| 59 |
+
setting_id = request.match_info.get("id", None)
|
| 60 |
+
if not setting_id:
|
| 61 |
+
return web.Response(status=400)
|
| 62 |
+
settings = self.get_settings(request)
|
| 63 |
+
settings[setting_id] = await request.json()
|
| 64 |
+
self.save_settings(request, settings)
|
| 65 |
+
return web.Response(status=200)
|
ComfyUI/app/custom_node_manager.py
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
import os
|
| 4 |
+
import folder_paths
|
| 5 |
+
import glob
|
| 6 |
+
from aiohttp import web
|
| 7 |
+
import json
|
| 8 |
+
import logging
|
| 9 |
+
from functools import lru_cache
|
| 10 |
+
|
| 11 |
+
from utils.json_util import merge_json_recursive
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
# Extra locale files to load into main.json
|
| 15 |
+
EXTRA_LOCALE_FILES = [
|
| 16 |
+
"nodeDefs.json",
|
| 17 |
+
"commands.json",
|
| 18 |
+
"settings.json",
|
| 19 |
+
]
|
| 20 |
+
|
| 21 |
+
|
| 22 |
+
def safe_load_json_file(file_path: str) -> dict:
|
| 23 |
+
if not os.path.exists(file_path):
|
| 24 |
+
return {}
|
| 25 |
+
|
| 26 |
+
try:
|
| 27 |
+
with open(file_path, "r", encoding="utf-8") as f:
|
| 28 |
+
return json.load(f)
|
| 29 |
+
except json.JSONDecodeError:
|
| 30 |
+
logging.error(f"Error loading {file_path}")
|
| 31 |
+
return {}
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
class CustomNodeManager:
|
| 35 |
+
@lru_cache(maxsize=1)
|
| 36 |
+
def build_translations(self):
|
| 37 |
+
"""Load all custom nodes translations during initialization. Translations are
|
| 38 |
+
expected to be loaded from `locales/` folder.
|
| 39 |
+
|
| 40 |
+
The folder structure is expected to be the following:
|
| 41 |
+
- custom_nodes/
|
| 42 |
+
- custom_node_1/
|
| 43 |
+
- locales/
|
| 44 |
+
- en/
|
| 45 |
+
- main.json
|
| 46 |
+
- commands.json
|
| 47 |
+
- settings.json
|
| 48 |
+
|
| 49 |
+
returned translations are expected to be in the following format:
|
| 50 |
+
{
|
| 51 |
+
"en": {
|
| 52 |
+
"nodeDefs": {...},
|
| 53 |
+
"commands": {...},
|
| 54 |
+
"settings": {...},
|
| 55 |
+
...{other main.json keys}
|
| 56 |
+
}
|
| 57 |
+
}
|
| 58 |
+
"""
|
| 59 |
+
|
| 60 |
+
translations = {}
|
| 61 |
+
|
| 62 |
+
for folder in folder_paths.get_folder_paths("custom_nodes"):
|
| 63 |
+
# Sort glob results for deterministic ordering
|
| 64 |
+
for custom_node_dir in sorted(glob.glob(os.path.join(folder, "*/"))):
|
| 65 |
+
locales_dir = os.path.join(custom_node_dir, "locales")
|
| 66 |
+
if not os.path.exists(locales_dir):
|
| 67 |
+
continue
|
| 68 |
+
|
| 69 |
+
for lang_dir in glob.glob(os.path.join(locales_dir, "*/")):
|
| 70 |
+
lang_code = os.path.basename(os.path.dirname(lang_dir))
|
| 71 |
+
|
| 72 |
+
if lang_code not in translations:
|
| 73 |
+
translations[lang_code] = {}
|
| 74 |
+
|
| 75 |
+
# Load main.json
|
| 76 |
+
main_file = os.path.join(lang_dir, "main.json")
|
| 77 |
+
node_translations = safe_load_json_file(main_file)
|
| 78 |
+
|
| 79 |
+
# Load extra locale files
|
| 80 |
+
for extra_file in EXTRA_LOCALE_FILES:
|
| 81 |
+
extra_file_path = os.path.join(lang_dir, extra_file)
|
| 82 |
+
key = extra_file.split(".")[0]
|
| 83 |
+
json_data = safe_load_json_file(extra_file_path)
|
| 84 |
+
if json_data:
|
| 85 |
+
node_translations[key] = json_data
|
| 86 |
+
|
| 87 |
+
if node_translations:
|
| 88 |
+
translations[lang_code] = merge_json_recursive(
|
| 89 |
+
translations[lang_code], node_translations
|
| 90 |
+
)
|
| 91 |
+
|
| 92 |
+
return translations
|
| 93 |
+
|
| 94 |
+
def add_routes(self, routes, webapp, loadedModules):
|
| 95 |
+
|
| 96 |
+
example_workflow_folder_names = ["example_workflows", "example", "examples", "workflow", "workflows"]
|
| 97 |
+
|
| 98 |
+
@routes.get("/workflow_templates")
|
| 99 |
+
async def get_workflow_templates(request):
|
| 100 |
+
"""Returns a web response that contains the map of custom_nodes names and their associated workflow templates. The ones without templates are omitted."""
|
| 101 |
+
|
| 102 |
+
files = []
|
| 103 |
+
|
| 104 |
+
for folder in folder_paths.get_folder_paths("custom_nodes"):
|
| 105 |
+
for folder_name in example_workflow_folder_names:
|
| 106 |
+
pattern = os.path.join(folder, f"*/{folder_name}/*.json")
|
| 107 |
+
matched_files = glob.glob(pattern)
|
| 108 |
+
files.extend(matched_files)
|
| 109 |
+
|
| 110 |
+
workflow_templates_dict = (
|
| 111 |
+
{}
|
| 112 |
+
) # custom_nodes folder name -> example workflow names
|
| 113 |
+
for file in files:
|
| 114 |
+
custom_nodes_name = os.path.basename(
|
| 115 |
+
os.path.dirname(os.path.dirname(file))
|
| 116 |
+
)
|
| 117 |
+
workflow_name = os.path.splitext(os.path.basename(file))[0]
|
| 118 |
+
workflow_templates_dict.setdefault(custom_nodes_name, []).append(
|
| 119 |
+
workflow_name
|
| 120 |
+
)
|
| 121 |
+
return web.json_response(workflow_templates_dict)
|
| 122 |
+
|
| 123 |
+
# Serve workflow templates from custom nodes.
|
| 124 |
+
for module_name, module_dir in loadedModules:
|
| 125 |
+
for folder_name in example_workflow_folder_names:
|
| 126 |
+
workflows_dir = os.path.join(module_dir, folder_name)
|
| 127 |
+
|
| 128 |
+
if os.path.exists(workflows_dir):
|
| 129 |
+
if folder_name != "example_workflows":
|
| 130 |
+
logging.debug(
|
| 131 |
+
"Found example workflow folder '%s' for custom node '%s', consider renaming it to 'example_workflows'",
|
| 132 |
+
folder_name, module_name)
|
| 133 |
+
|
| 134 |
+
webapp.add_routes(
|
| 135 |
+
[
|
| 136 |
+
web.static(
|
| 137 |
+
"/api/workflow_templates/" + module_name, workflows_dir
|
| 138 |
+
)
|
| 139 |
+
]
|
| 140 |
+
)
|
| 141 |
+
|
| 142 |
+
@routes.get("/i18n")
|
| 143 |
+
async def get_i18n(request):
|
| 144 |
+
"""Returns translations from all custom nodes' locales folders."""
|
| 145 |
+
return web.json_response(self.build_translations())
|
ComfyUI/app/frontend_management.py
ADDED
|
@@ -0,0 +1,361 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
import argparse
|
| 3 |
+
import logging
|
| 4 |
+
import os
|
| 5 |
+
import re
|
| 6 |
+
import sys
|
| 7 |
+
import tempfile
|
| 8 |
+
import zipfile
|
| 9 |
+
import importlib
|
| 10 |
+
from dataclasses import dataclass
|
| 11 |
+
from functools import cached_property
|
| 12 |
+
from pathlib import Path
|
| 13 |
+
from typing import TypedDict, Optional
|
| 14 |
+
from importlib.metadata import version
|
| 15 |
+
|
| 16 |
+
import requests
|
| 17 |
+
from typing_extensions import NotRequired
|
| 18 |
+
|
| 19 |
+
from utils.install_util import get_missing_requirements_message, requirements_path
|
| 20 |
+
|
| 21 |
+
from comfy.cli_args import DEFAULT_VERSION_STRING
|
| 22 |
+
import app.logger
|
| 23 |
+
|
| 24 |
+
|
| 25 |
+
def frontend_install_warning_message():
|
| 26 |
+
return f"""
|
| 27 |
+
{get_missing_requirements_message()}
|
| 28 |
+
|
| 29 |
+
This error is happening because the ComfyUI frontend is no longer shipped as part of the main repo but as a pip package instead.
|
| 30 |
+
""".strip()
|
| 31 |
+
|
| 32 |
+
def parse_version(version: str) -> tuple[int, int, int]:
|
| 33 |
+
return tuple(map(int, version.split(".")))
|
| 34 |
+
|
| 35 |
+
def is_valid_version(version: str) -> bool:
|
| 36 |
+
"""Validate if a string is a valid semantic version (X.Y.Z format)."""
|
| 37 |
+
pattern = r"^(\d+)\.(\d+)\.(\d+)$"
|
| 38 |
+
return bool(re.match(pattern, version))
|
| 39 |
+
|
| 40 |
+
def get_installed_frontend_version():
|
| 41 |
+
"""Get the currently installed frontend package version."""
|
| 42 |
+
frontend_version_str = version("comfyui-frontend-package")
|
| 43 |
+
return frontend_version_str
|
| 44 |
+
|
| 45 |
+
def get_required_frontend_version():
|
| 46 |
+
"""Get the required frontend version from requirements.txt."""
|
| 47 |
+
try:
|
| 48 |
+
with open(requirements_path, "r", encoding="utf-8") as f:
|
| 49 |
+
for line in f:
|
| 50 |
+
line = line.strip()
|
| 51 |
+
if line.startswith("comfyui-frontend-package=="):
|
| 52 |
+
version_str = line.split("==")[-1]
|
| 53 |
+
if not is_valid_version(version_str):
|
| 54 |
+
logging.error(f"Invalid version format in requirements.txt: {version_str}")
|
| 55 |
+
return None
|
| 56 |
+
return version_str
|
| 57 |
+
logging.error("comfyui-frontend-package not found in requirements.txt")
|
| 58 |
+
return None
|
| 59 |
+
except FileNotFoundError:
|
| 60 |
+
logging.error("requirements.txt not found. Cannot determine required frontend version.")
|
| 61 |
+
return None
|
| 62 |
+
except Exception as e:
|
| 63 |
+
logging.error(f"Error reading requirements.txt: {e}")
|
| 64 |
+
return None
|
| 65 |
+
|
| 66 |
+
def check_frontend_version():
|
| 67 |
+
"""Check if the frontend version is up to date."""
|
| 68 |
+
|
| 69 |
+
try:
|
| 70 |
+
frontend_version_str = get_installed_frontend_version()
|
| 71 |
+
frontend_version = parse_version(frontend_version_str)
|
| 72 |
+
required_frontend_str = get_required_frontend_version()
|
| 73 |
+
required_frontend = parse_version(required_frontend_str)
|
| 74 |
+
if frontend_version < required_frontend:
|
| 75 |
+
app.logger.log_startup_warning(
|
| 76 |
+
f"""
|
| 77 |
+
________________________________________________________________________
|
| 78 |
+
WARNING WARNING WARNING WARNING WARNING
|
| 79 |
+
|
| 80 |
+
Installed frontend version {".".join(map(str, frontend_version))} is lower than the recommended version {".".join(map(str, required_frontend))}.
|
| 81 |
+
|
| 82 |
+
{frontend_install_warning_message()}
|
| 83 |
+
________________________________________________________________________
|
| 84 |
+
""".strip()
|
| 85 |
+
)
|
| 86 |
+
else:
|
| 87 |
+
logging.info("ComfyUI frontend version: {}".format(frontend_version_str))
|
| 88 |
+
except Exception as e:
|
| 89 |
+
logging.error(f"Failed to check frontend version: {e}")
|
| 90 |
+
|
| 91 |
+
|
| 92 |
+
REQUEST_TIMEOUT = 10 # seconds
|
| 93 |
+
|
| 94 |
+
|
| 95 |
+
class Asset(TypedDict):
|
| 96 |
+
url: str
|
| 97 |
+
|
| 98 |
+
|
| 99 |
+
class Release(TypedDict):
|
| 100 |
+
id: int
|
| 101 |
+
tag_name: str
|
| 102 |
+
name: str
|
| 103 |
+
prerelease: bool
|
| 104 |
+
created_at: str
|
| 105 |
+
published_at: str
|
| 106 |
+
body: str
|
| 107 |
+
assets: NotRequired[list[Asset]]
|
| 108 |
+
|
| 109 |
+
|
| 110 |
+
@dataclass
|
| 111 |
+
class FrontEndProvider:
|
| 112 |
+
owner: str
|
| 113 |
+
repo: str
|
| 114 |
+
|
| 115 |
+
@property
|
| 116 |
+
def folder_name(self) -> str:
|
| 117 |
+
return f"{self.owner}_{self.repo}"
|
| 118 |
+
|
| 119 |
+
@property
|
| 120 |
+
def release_url(self) -> str:
|
| 121 |
+
return f"https://api.github.com/repos/{self.owner}/{self.repo}/releases"
|
| 122 |
+
|
| 123 |
+
@cached_property
|
| 124 |
+
def all_releases(self) -> list[Release]:
|
| 125 |
+
releases = []
|
| 126 |
+
api_url = self.release_url
|
| 127 |
+
while api_url:
|
| 128 |
+
response = requests.get(api_url, timeout=REQUEST_TIMEOUT)
|
| 129 |
+
response.raise_for_status() # Raises an HTTPError if the response was an error
|
| 130 |
+
releases.extend(response.json())
|
| 131 |
+
# GitHub uses the Link header to provide pagination links. Check if it exists and update api_url accordingly.
|
| 132 |
+
if "next" in response.links:
|
| 133 |
+
api_url = response.links["next"]["url"]
|
| 134 |
+
else:
|
| 135 |
+
api_url = None
|
| 136 |
+
return releases
|
| 137 |
+
|
| 138 |
+
@cached_property
|
| 139 |
+
def latest_release(self) -> Release:
|
| 140 |
+
latest_release_url = f"{self.release_url}/latest"
|
| 141 |
+
response = requests.get(latest_release_url, timeout=REQUEST_TIMEOUT)
|
| 142 |
+
response.raise_for_status() # Raises an HTTPError if the response was an error
|
| 143 |
+
return response.json()
|
| 144 |
+
|
| 145 |
+
@cached_property
|
| 146 |
+
def latest_prerelease(self) -> Release:
|
| 147 |
+
"""Get the latest pre-release version - even if it's older than the latest release"""
|
| 148 |
+
release = [release for release in self.all_releases if release["prerelease"]]
|
| 149 |
+
|
| 150 |
+
if not release:
|
| 151 |
+
raise ValueError("No pre-releases found")
|
| 152 |
+
|
| 153 |
+
# GitHub returns releases in reverse chronological order, so first is latest
|
| 154 |
+
return release[0]
|
| 155 |
+
|
| 156 |
+
def get_release(self, version: str) -> Release:
|
| 157 |
+
if version == "latest":
|
| 158 |
+
return self.latest_release
|
| 159 |
+
elif version == "prerelease":
|
| 160 |
+
return self.latest_prerelease
|
| 161 |
+
else:
|
| 162 |
+
for release in self.all_releases:
|
| 163 |
+
if release["tag_name"] in [version, f"v{version}"]:
|
| 164 |
+
return release
|
| 165 |
+
raise ValueError(f"Version {version} not found in releases")
|
| 166 |
+
|
| 167 |
+
|
| 168 |
+
def download_release_asset_zip(release: Release, destination_path: str) -> None:
|
| 169 |
+
"""Download dist.zip from github release."""
|
| 170 |
+
asset_url = None
|
| 171 |
+
for asset in release.get("assets", []):
|
| 172 |
+
if asset["name"] == "dist.zip":
|
| 173 |
+
asset_url = asset["url"]
|
| 174 |
+
break
|
| 175 |
+
|
| 176 |
+
if not asset_url:
|
| 177 |
+
raise ValueError("dist.zip not found in the release assets")
|
| 178 |
+
|
| 179 |
+
# Use a temporary file to download the zip content
|
| 180 |
+
with tempfile.TemporaryFile() as tmp_file:
|
| 181 |
+
headers = {"Accept": "application/octet-stream"}
|
| 182 |
+
response = requests.get(
|
| 183 |
+
asset_url, headers=headers, allow_redirects=True, timeout=REQUEST_TIMEOUT
|
| 184 |
+
)
|
| 185 |
+
response.raise_for_status() # Ensure we got a successful response
|
| 186 |
+
|
| 187 |
+
# Write the content to the temporary file
|
| 188 |
+
tmp_file.write(response.content)
|
| 189 |
+
|
| 190 |
+
# Go back to the beginning of the temporary file
|
| 191 |
+
tmp_file.seek(0)
|
| 192 |
+
|
| 193 |
+
# Extract the zip file content to the destination path
|
| 194 |
+
with zipfile.ZipFile(tmp_file, "r") as zip_ref:
|
| 195 |
+
zip_ref.extractall(destination_path)
|
| 196 |
+
|
| 197 |
+
|
| 198 |
+
class FrontendManager:
|
| 199 |
+
CUSTOM_FRONTENDS_ROOT = str(Path(__file__).parents[1] / "web_custom_versions")
|
| 200 |
+
|
| 201 |
+
@classmethod
|
| 202 |
+
def get_required_frontend_version(cls) -> str:
|
| 203 |
+
"""Get the required frontend package version."""
|
| 204 |
+
return get_required_frontend_version()
|
| 205 |
+
|
| 206 |
+
@classmethod
|
| 207 |
+
def default_frontend_path(cls) -> str:
|
| 208 |
+
try:
|
| 209 |
+
import comfyui_frontend_package
|
| 210 |
+
|
| 211 |
+
return str(importlib.resources.files(comfyui_frontend_package) / "static")
|
| 212 |
+
except ImportError:
|
| 213 |
+
logging.error(
|
| 214 |
+
f"""
|
| 215 |
+
********** ERROR ***********
|
| 216 |
+
|
| 217 |
+
comfyui-frontend-package is not installed.
|
| 218 |
+
|
| 219 |
+
{frontend_install_warning_message()}
|
| 220 |
+
|
| 221 |
+
********** ERROR ***********
|
| 222 |
+
""".strip()
|
| 223 |
+
)
|
| 224 |
+
sys.exit(-1)
|
| 225 |
+
|
| 226 |
+
@classmethod
|
| 227 |
+
def templates_path(cls) -> str:
|
| 228 |
+
try:
|
| 229 |
+
import comfyui_workflow_templates
|
| 230 |
+
|
| 231 |
+
return str(
|
| 232 |
+
importlib.resources.files(comfyui_workflow_templates) / "templates"
|
| 233 |
+
)
|
| 234 |
+
except ImportError:
|
| 235 |
+
logging.error(
|
| 236 |
+
f"""
|
| 237 |
+
********** ERROR ***********
|
| 238 |
+
|
| 239 |
+
comfyui-workflow-templates is not installed.
|
| 240 |
+
|
| 241 |
+
{frontend_install_warning_message()}
|
| 242 |
+
|
| 243 |
+
********** ERROR ***********
|
| 244 |
+
""".strip()
|
| 245 |
+
)
|
| 246 |
+
|
| 247 |
+
@classmethod
|
| 248 |
+
def embedded_docs_path(cls) -> str:
|
| 249 |
+
"""Get the path to embedded documentation"""
|
| 250 |
+
try:
|
| 251 |
+
import comfyui_embedded_docs
|
| 252 |
+
|
| 253 |
+
return str(
|
| 254 |
+
importlib.resources.files(comfyui_embedded_docs) / "docs"
|
| 255 |
+
)
|
| 256 |
+
except ImportError:
|
| 257 |
+
logging.info("comfyui-embedded-docs package not found")
|
| 258 |
+
return None
|
| 259 |
+
|
| 260 |
+
@classmethod
|
| 261 |
+
def parse_version_string(cls, value: str) -> tuple[str, str, str]:
|
| 262 |
+
"""
|
| 263 |
+
Args:
|
| 264 |
+
value (str): The version string to parse.
|
| 265 |
+
|
| 266 |
+
Returns:
|
| 267 |
+
tuple[str, str]: A tuple containing provider name and version.
|
| 268 |
+
|
| 269 |
+
Raises:
|
| 270 |
+
argparse.ArgumentTypeError: If the version string is invalid.
|
| 271 |
+
"""
|
| 272 |
+
VERSION_PATTERN = r"^([a-zA-Z0-9][a-zA-Z0-9-]{0,38})/([a-zA-Z0-9_.-]+)@(v?\d+\.\d+\.\d+[-._a-zA-Z0-9]*|latest|prerelease)$"
|
| 273 |
+
match_result = re.match(VERSION_PATTERN, value)
|
| 274 |
+
if match_result is None:
|
| 275 |
+
raise argparse.ArgumentTypeError(f"Invalid version string: {value}")
|
| 276 |
+
|
| 277 |
+
return match_result.group(1), match_result.group(2), match_result.group(3)
|
| 278 |
+
|
| 279 |
+
@classmethod
|
| 280 |
+
def init_frontend_unsafe(
|
| 281 |
+
cls, version_string: str, provider: Optional[FrontEndProvider] = None
|
| 282 |
+
) -> str:
|
| 283 |
+
"""
|
| 284 |
+
Initializes the frontend for the specified version.
|
| 285 |
+
|
| 286 |
+
Args:
|
| 287 |
+
version_string (str): The version string.
|
| 288 |
+
provider (FrontEndProvider, optional): The provider to use. Defaults to None.
|
| 289 |
+
|
| 290 |
+
Returns:
|
| 291 |
+
str: The path to the initialized frontend.
|
| 292 |
+
|
| 293 |
+
Raises:
|
| 294 |
+
Exception: If there is an error during the initialization process.
|
| 295 |
+
main error source might be request timeout or invalid URL.
|
| 296 |
+
"""
|
| 297 |
+
if version_string == DEFAULT_VERSION_STRING:
|
| 298 |
+
check_frontend_version()
|
| 299 |
+
return cls.default_frontend_path()
|
| 300 |
+
|
| 301 |
+
repo_owner, repo_name, version = cls.parse_version_string(version_string)
|
| 302 |
+
|
| 303 |
+
if version.startswith("v"):
|
| 304 |
+
expected_path = str(
|
| 305 |
+
Path(cls.CUSTOM_FRONTENDS_ROOT)
|
| 306 |
+
/ f"{repo_owner}_{repo_name}"
|
| 307 |
+
/ version.lstrip("v")
|
| 308 |
+
)
|
| 309 |
+
if os.path.exists(expected_path):
|
| 310 |
+
logging.info(
|
| 311 |
+
f"Using existing copy of specific frontend version tag: {repo_owner}/{repo_name}@{version}"
|
| 312 |
+
)
|
| 313 |
+
return expected_path
|
| 314 |
+
|
| 315 |
+
logging.info(
|
| 316 |
+
f"Initializing frontend: {repo_owner}/{repo_name}@{version}, requesting version details from GitHub..."
|
| 317 |
+
)
|
| 318 |
+
|
| 319 |
+
provider = provider or FrontEndProvider(repo_owner, repo_name)
|
| 320 |
+
release = provider.get_release(version)
|
| 321 |
+
|
| 322 |
+
semantic_version = release["tag_name"].lstrip("v")
|
| 323 |
+
web_root = str(
|
| 324 |
+
Path(cls.CUSTOM_FRONTENDS_ROOT) / provider.folder_name / semantic_version
|
| 325 |
+
)
|
| 326 |
+
if not os.path.exists(web_root):
|
| 327 |
+
try:
|
| 328 |
+
os.makedirs(web_root, exist_ok=True)
|
| 329 |
+
logging.info(
|
| 330 |
+
"Downloading frontend(%s) version(%s) to (%s)",
|
| 331 |
+
provider.folder_name,
|
| 332 |
+
semantic_version,
|
| 333 |
+
web_root,
|
| 334 |
+
)
|
| 335 |
+
logging.debug(release)
|
| 336 |
+
download_release_asset_zip(release, destination_path=web_root)
|
| 337 |
+
finally:
|
| 338 |
+
# Clean up the directory if it is empty, i.e. the download failed
|
| 339 |
+
if not os.listdir(web_root):
|
| 340 |
+
os.rmdir(web_root)
|
| 341 |
+
|
| 342 |
+
return web_root
|
| 343 |
+
|
| 344 |
+
@classmethod
|
| 345 |
+
def init_frontend(cls, version_string: str) -> str:
|
| 346 |
+
"""
|
| 347 |
+
Initializes the frontend with the specified version string.
|
| 348 |
+
|
| 349 |
+
Args:
|
| 350 |
+
version_string (str): The version string to initialize the frontend with.
|
| 351 |
+
|
| 352 |
+
Returns:
|
| 353 |
+
str: The path of the initialized frontend.
|
| 354 |
+
"""
|
| 355 |
+
try:
|
| 356 |
+
return cls.init_frontend_unsafe(version_string)
|
| 357 |
+
except Exception as e:
|
| 358 |
+
logging.error("Failed to initialize frontend: %s", e)
|
| 359 |
+
logging.info("Falling back to the default frontend.")
|
| 360 |
+
check_frontend_version()
|
| 361 |
+
return cls.default_frontend_path()
|
ComfyUI/app/logger.py
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from collections import deque
|
| 2 |
+
from datetime import datetime
|
| 3 |
+
import io
|
| 4 |
+
import logging
|
| 5 |
+
import sys
|
| 6 |
+
import threading
|
| 7 |
+
|
| 8 |
+
logs = None
|
| 9 |
+
stdout_interceptor = None
|
| 10 |
+
stderr_interceptor = None
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
class LogInterceptor(io.TextIOWrapper):
|
| 14 |
+
def __init__(self, stream, *args, **kwargs):
|
| 15 |
+
buffer = stream.buffer
|
| 16 |
+
encoding = stream.encoding
|
| 17 |
+
super().__init__(buffer, *args, **kwargs, encoding=encoding, line_buffering=stream.line_buffering)
|
| 18 |
+
self._lock = threading.Lock()
|
| 19 |
+
self._flush_callbacks = []
|
| 20 |
+
self._logs_since_flush = []
|
| 21 |
+
|
| 22 |
+
def write(self, data):
|
| 23 |
+
entry = {"t": datetime.now().isoformat(), "m": data}
|
| 24 |
+
with self._lock:
|
| 25 |
+
self._logs_since_flush.append(entry)
|
| 26 |
+
|
| 27 |
+
# Simple handling for cr to overwrite the last output if it isnt a full line
|
| 28 |
+
# else logs just get full of progress messages
|
| 29 |
+
if isinstance(data, str) and data.startswith("\r") and not logs[-1]["m"].endswith("\n"):
|
| 30 |
+
logs.pop()
|
| 31 |
+
logs.append(entry)
|
| 32 |
+
super().write(data)
|
| 33 |
+
|
| 34 |
+
def flush(self):
|
| 35 |
+
super().flush()
|
| 36 |
+
for cb in self._flush_callbacks:
|
| 37 |
+
cb(self._logs_since_flush)
|
| 38 |
+
self._logs_since_flush = []
|
| 39 |
+
|
| 40 |
+
def on_flush(self, callback):
|
| 41 |
+
self._flush_callbacks.append(callback)
|
| 42 |
+
|
| 43 |
+
|
| 44 |
+
def get_logs():
|
| 45 |
+
return logs
|
| 46 |
+
|
| 47 |
+
|
| 48 |
+
def on_flush(callback):
|
| 49 |
+
if stdout_interceptor is not None:
|
| 50 |
+
stdout_interceptor.on_flush(callback)
|
| 51 |
+
if stderr_interceptor is not None:
|
| 52 |
+
stderr_interceptor.on_flush(callback)
|
| 53 |
+
|
| 54 |
+
def setup_logger(log_level: str = 'INFO', capacity: int = 300, use_stdout: bool = False):
|
| 55 |
+
global logs
|
| 56 |
+
if logs:
|
| 57 |
+
return
|
| 58 |
+
|
| 59 |
+
# Override output streams and log to buffer
|
| 60 |
+
logs = deque(maxlen=capacity)
|
| 61 |
+
|
| 62 |
+
global stdout_interceptor
|
| 63 |
+
global stderr_interceptor
|
| 64 |
+
stdout_interceptor = sys.stdout = LogInterceptor(sys.stdout)
|
| 65 |
+
stderr_interceptor = sys.stderr = LogInterceptor(sys.stderr)
|
| 66 |
+
|
| 67 |
+
# Setup default global logger
|
| 68 |
+
logger = logging.getLogger()
|
| 69 |
+
logger.setLevel(log_level)
|
| 70 |
+
|
| 71 |
+
stream_handler = logging.StreamHandler()
|
| 72 |
+
stream_handler.setFormatter(logging.Formatter("%(message)s"))
|
| 73 |
+
|
| 74 |
+
if use_stdout:
|
| 75 |
+
# Only errors and critical to stderr
|
| 76 |
+
stream_handler.addFilter(lambda record: not record.levelno < logging.ERROR)
|
| 77 |
+
|
| 78 |
+
# Lesser to stdout
|
| 79 |
+
stdout_handler = logging.StreamHandler(sys.stdout)
|
| 80 |
+
stdout_handler.setFormatter(logging.Formatter("%(message)s"))
|
| 81 |
+
stdout_handler.addFilter(lambda record: record.levelno < logging.ERROR)
|
| 82 |
+
logger.addHandler(stdout_handler)
|
| 83 |
+
|
| 84 |
+
logger.addHandler(stream_handler)
|
| 85 |
+
|
| 86 |
+
|
| 87 |
+
STARTUP_WARNINGS = []
|
| 88 |
+
|
| 89 |
+
|
| 90 |
+
def log_startup_warning(msg):
|
| 91 |
+
logging.warning(msg)
|
| 92 |
+
STARTUP_WARNINGS.append(msg)
|
| 93 |
+
|
| 94 |
+
|
| 95 |
+
def print_startup_warnings():
|
| 96 |
+
for s in STARTUP_WARNINGS:
|
| 97 |
+
logging.warning(s)
|
| 98 |
+
STARTUP_WARNINGS.clear()
|
ComfyUI/app/model_manager.py
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
import os
|
| 4 |
+
import base64
|
| 5 |
+
import json
|
| 6 |
+
import time
|
| 7 |
+
import logging
|
| 8 |
+
import folder_paths
|
| 9 |
+
import glob
|
| 10 |
+
import comfy.utils
|
| 11 |
+
from aiohttp import web
|
| 12 |
+
from PIL import Image
|
| 13 |
+
from io import BytesIO
|
| 14 |
+
from folder_paths import map_legacy, filter_files_extensions, filter_files_content_types
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
class ModelFileManager:
|
| 18 |
+
def __init__(self) -> None:
|
| 19 |
+
self.cache: dict[str, tuple[list[dict], dict[str, float], float]] = {}
|
| 20 |
+
|
| 21 |
+
def get_cache(self, key: str, default=None) -> tuple[list[dict], dict[str, float], float] | None:
|
| 22 |
+
return self.cache.get(key, default)
|
| 23 |
+
|
| 24 |
+
def set_cache(self, key: str, value: tuple[list[dict], dict[str, float], float]):
|
| 25 |
+
self.cache[key] = value
|
| 26 |
+
|
| 27 |
+
def clear_cache(self):
|
| 28 |
+
self.cache.clear()
|
| 29 |
+
|
| 30 |
+
def add_routes(self, routes):
|
| 31 |
+
# NOTE: This is an experiment to replace `/models`
|
| 32 |
+
@routes.get("/experiment/models")
|
| 33 |
+
async def get_model_folders(request):
|
| 34 |
+
model_types = list(folder_paths.folder_names_and_paths.keys())
|
| 35 |
+
folder_black_list = ["configs", "custom_nodes"]
|
| 36 |
+
output_folders: list[dict] = []
|
| 37 |
+
for folder in model_types:
|
| 38 |
+
if folder in folder_black_list:
|
| 39 |
+
continue
|
| 40 |
+
output_folders.append({"name": folder, "folders": folder_paths.get_folder_paths(folder)})
|
| 41 |
+
return web.json_response(output_folders)
|
| 42 |
+
|
| 43 |
+
# NOTE: This is an experiment to replace `/models/{folder}`
|
| 44 |
+
@routes.get("/experiment/models/{folder}")
|
| 45 |
+
async def get_all_models(request):
|
| 46 |
+
folder = request.match_info.get("folder", None)
|
| 47 |
+
if not folder in folder_paths.folder_names_and_paths:
|
| 48 |
+
return web.Response(status=404)
|
| 49 |
+
files = self.get_model_file_list(folder)
|
| 50 |
+
return web.json_response(files)
|
| 51 |
+
|
| 52 |
+
@routes.get("/experiment/models/preview/{folder}/{path_index}/{filename:.*}")
|
| 53 |
+
async def get_model_preview(request):
|
| 54 |
+
folder_name = request.match_info.get("folder", None)
|
| 55 |
+
path_index = int(request.match_info.get("path_index", None))
|
| 56 |
+
filename = request.match_info.get("filename", None)
|
| 57 |
+
|
| 58 |
+
if not folder_name in folder_paths.folder_names_and_paths:
|
| 59 |
+
return web.Response(status=404)
|
| 60 |
+
|
| 61 |
+
folders = folder_paths.folder_names_and_paths[folder_name]
|
| 62 |
+
folder = folders[0][path_index]
|
| 63 |
+
full_filename = os.path.join(folder, filename)
|
| 64 |
+
|
| 65 |
+
previews = self.get_model_previews(full_filename)
|
| 66 |
+
default_preview = previews[0] if len(previews) > 0 else None
|
| 67 |
+
if default_preview is None or (isinstance(default_preview, str) and not os.path.isfile(default_preview)):
|
| 68 |
+
return web.Response(status=404)
|
| 69 |
+
|
| 70 |
+
try:
|
| 71 |
+
with Image.open(default_preview) as img:
|
| 72 |
+
img_bytes = BytesIO()
|
| 73 |
+
img.save(img_bytes, format="WEBP")
|
| 74 |
+
img_bytes.seek(0)
|
| 75 |
+
return web.Response(body=img_bytes.getvalue(), content_type="image/webp")
|
| 76 |
+
except:
|
| 77 |
+
return web.Response(status=404)
|
| 78 |
+
|
| 79 |
+
def get_model_file_list(self, folder_name: str):
|
| 80 |
+
folder_name = map_legacy(folder_name)
|
| 81 |
+
folders = folder_paths.folder_names_and_paths[folder_name]
|
| 82 |
+
output_list: list[dict] = []
|
| 83 |
+
|
| 84 |
+
for index, folder in enumerate(folders[0]):
|
| 85 |
+
if not os.path.isdir(folder):
|
| 86 |
+
continue
|
| 87 |
+
out = self.cache_model_file_list_(folder)
|
| 88 |
+
if out is None:
|
| 89 |
+
out = self.recursive_search_models_(folder, index)
|
| 90 |
+
self.set_cache(folder, out)
|
| 91 |
+
output_list.extend(out[0])
|
| 92 |
+
|
| 93 |
+
return output_list
|
| 94 |
+
|
| 95 |
+
def cache_model_file_list_(self, folder: str):
|
| 96 |
+
model_file_list_cache = self.get_cache(folder)
|
| 97 |
+
|
| 98 |
+
if model_file_list_cache is None:
|
| 99 |
+
return None
|
| 100 |
+
if not os.path.isdir(folder):
|
| 101 |
+
return None
|
| 102 |
+
if os.path.getmtime(folder) != model_file_list_cache[1]:
|
| 103 |
+
return None
|
| 104 |
+
for x in model_file_list_cache[1]:
|
| 105 |
+
time_modified = model_file_list_cache[1][x]
|
| 106 |
+
folder = x
|
| 107 |
+
if os.path.getmtime(folder) != time_modified:
|
| 108 |
+
return None
|
| 109 |
+
|
| 110 |
+
return model_file_list_cache
|
| 111 |
+
|
| 112 |
+
def recursive_search_models_(self, directory: str, pathIndex: int) -> tuple[list[str], dict[str, float], float]:
|
| 113 |
+
if not os.path.isdir(directory):
|
| 114 |
+
return [], {}, time.perf_counter()
|
| 115 |
+
|
| 116 |
+
excluded_dir_names = [".git"]
|
| 117 |
+
# TODO use settings
|
| 118 |
+
include_hidden_files = False
|
| 119 |
+
|
| 120 |
+
result: list[str] = []
|
| 121 |
+
dirs: dict[str, float] = {}
|
| 122 |
+
|
| 123 |
+
for dirpath, subdirs, filenames in os.walk(directory, followlinks=True, topdown=True):
|
| 124 |
+
subdirs[:] = [d for d in subdirs if d not in excluded_dir_names]
|
| 125 |
+
if not include_hidden_files:
|
| 126 |
+
subdirs[:] = [d for d in subdirs if not d.startswith(".")]
|
| 127 |
+
filenames = [f for f in filenames if not f.startswith(".")]
|
| 128 |
+
|
| 129 |
+
filenames = filter_files_extensions(filenames, folder_paths.supported_pt_extensions)
|
| 130 |
+
|
| 131 |
+
for file_name in filenames:
|
| 132 |
+
try:
|
| 133 |
+
relative_path = os.path.relpath(os.path.join(dirpath, file_name), directory)
|
| 134 |
+
result.append(relative_path)
|
| 135 |
+
except:
|
| 136 |
+
logging.warning(f"Warning: Unable to access {file_name}. Skipping this file.")
|
| 137 |
+
continue
|
| 138 |
+
|
| 139 |
+
for d in subdirs:
|
| 140 |
+
path: str = os.path.join(dirpath, d)
|
| 141 |
+
try:
|
| 142 |
+
dirs[path] = os.path.getmtime(path)
|
| 143 |
+
except FileNotFoundError:
|
| 144 |
+
logging.warning(f"Warning: Unable to access {path}. Skipping this path.")
|
| 145 |
+
continue
|
| 146 |
+
|
| 147 |
+
return [{"name": f, "pathIndex": pathIndex} for f in result], dirs, time.perf_counter()
|
| 148 |
+
|
| 149 |
+
def get_model_previews(self, filepath: str) -> list[str | BytesIO]:
|
| 150 |
+
dirname = os.path.dirname(filepath)
|
| 151 |
+
|
| 152 |
+
if not os.path.exists(dirname):
|
| 153 |
+
return []
|
| 154 |
+
|
| 155 |
+
basename = os.path.splitext(filepath)[0]
|
| 156 |
+
match_files = glob.glob(f"{basename}.*", recursive=False)
|
| 157 |
+
image_files = filter_files_content_types(match_files, "image")
|
| 158 |
+
safetensors_file = next(filter(lambda x: x.endswith(".safetensors"), match_files), None)
|
| 159 |
+
safetensors_metadata = {}
|
| 160 |
+
|
| 161 |
+
result: list[str | BytesIO] = []
|
| 162 |
+
|
| 163 |
+
for filename in image_files:
|
| 164 |
+
_basename = os.path.splitext(filename)[0]
|
| 165 |
+
if _basename == basename:
|
| 166 |
+
result.append(filename)
|
| 167 |
+
if _basename == f"{basename}.preview":
|
| 168 |
+
result.append(filename)
|
| 169 |
+
|
| 170 |
+
if safetensors_file:
|
| 171 |
+
safetensors_filepath = os.path.join(dirname, safetensors_file)
|
| 172 |
+
header = comfy.utils.safetensors_header(safetensors_filepath, max_size=8*1024*1024)
|
| 173 |
+
if header:
|
| 174 |
+
safetensors_metadata = json.loads(header)
|
| 175 |
+
safetensors_images = safetensors_metadata.get("__metadata__", {}).get("ssmd_cover_images", None)
|
| 176 |
+
if safetensors_images:
|
| 177 |
+
safetensors_images = json.loads(safetensors_images)
|
| 178 |
+
for image in safetensors_images:
|
| 179 |
+
result.append(BytesIO(base64.b64decode(image)))
|
| 180 |
+
|
| 181 |
+
return result
|
| 182 |
+
|
| 183 |
+
def __exit__(self, exc_type, exc_value, traceback):
|
| 184 |
+
self.clear_cache()
|
ComfyUI/app/user_manager.py
ADDED
|
@@ -0,0 +1,436 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
import json
|
| 3 |
+
import os
|
| 4 |
+
import re
|
| 5 |
+
import uuid
|
| 6 |
+
import glob
|
| 7 |
+
import shutil
|
| 8 |
+
import logging
|
| 9 |
+
from aiohttp import web
|
| 10 |
+
from urllib import parse
|
| 11 |
+
from comfy.cli_args import args
|
| 12 |
+
import folder_paths
|
| 13 |
+
from .app_settings import AppSettings
|
| 14 |
+
from typing import TypedDict
|
| 15 |
+
|
| 16 |
+
default_user = "default"
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
class FileInfo(TypedDict):
|
| 20 |
+
path: str
|
| 21 |
+
size: int
|
| 22 |
+
modified: int
|
| 23 |
+
|
| 24 |
+
|
| 25 |
+
def get_file_info(path: str, relative_to: str) -> FileInfo:
|
| 26 |
+
return {
|
| 27 |
+
"path": os.path.relpath(path, relative_to).replace(os.sep, '/'),
|
| 28 |
+
"size": os.path.getsize(path),
|
| 29 |
+
"modified": os.path.getmtime(path)
|
| 30 |
+
}
|
| 31 |
+
|
| 32 |
+
|
| 33 |
+
class UserManager():
|
| 34 |
+
def __init__(self):
|
| 35 |
+
user_directory = folder_paths.get_user_directory()
|
| 36 |
+
|
| 37 |
+
self.settings = AppSettings(self)
|
| 38 |
+
if not os.path.exists(user_directory):
|
| 39 |
+
os.makedirs(user_directory, exist_ok=True)
|
| 40 |
+
if not args.multi_user:
|
| 41 |
+
logging.warning("****** User settings have been changed to be stored on the server instead of browser storage. ******")
|
| 42 |
+
logging.warning("****** For multi-user setups add the --multi-user CLI argument to enable multiple user profiles. ******")
|
| 43 |
+
|
| 44 |
+
if args.multi_user:
|
| 45 |
+
if os.path.isfile(self.get_users_file()):
|
| 46 |
+
with open(self.get_users_file()) as f:
|
| 47 |
+
self.users = json.load(f)
|
| 48 |
+
else:
|
| 49 |
+
self.users = {}
|
| 50 |
+
else:
|
| 51 |
+
self.users = {"default": "default"}
|
| 52 |
+
|
| 53 |
+
def get_users_file(self):
|
| 54 |
+
return os.path.join(folder_paths.get_user_directory(), "users.json")
|
| 55 |
+
|
| 56 |
+
def get_request_user_id(self, request):
|
| 57 |
+
user = "default"
|
| 58 |
+
if args.multi_user and "comfy-user" in request.headers:
|
| 59 |
+
user = request.headers["comfy-user"]
|
| 60 |
+
|
| 61 |
+
if user not in self.users:
|
| 62 |
+
raise KeyError("Unknown user: " + user)
|
| 63 |
+
|
| 64 |
+
return user
|
| 65 |
+
|
| 66 |
+
def get_request_user_filepath(self, request, file, type="userdata", create_dir=True):
|
| 67 |
+
user_directory = folder_paths.get_user_directory()
|
| 68 |
+
|
| 69 |
+
if type == "userdata":
|
| 70 |
+
root_dir = user_directory
|
| 71 |
+
else:
|
| 72 |
+
raise KeyError("Unknown filepath type:" + type)
|
| 73 |
+
|
| 74 |
+
user = self.get_request_user_id(request)
|
| 75 |
+
path = user_root = os.path.abspath(os.path.join(root_dir, user))
|
| 76 |
+
|
| 77 |
+
# prevent leaving /{type}
|
| 78 |
+
if os.path.commonpath((root_dir, user_root)) != root_dir:
|
| 79 |
+
return None
|
| 80 |
+
|
| 81 |
+
if file is not None:
|
| 82 |
+
# Check if filename is url encoded
|
| 83 |
+
if "%" in file:
|
| 84 |
+
file = parse.unquote(file)
|
| 85 |
+
|
| 86 |
+
# prevent leaving /{type}/{user}
|
| 87 |
+
path = os.path.abspath(os.path.join(user_root, file))
|
| 88 |
+
if os.path.commonpath((user_root, path)) != user_root:
|
| 89 |
+
return None
|
| 90 |
+
|
| 91 |
+
parent = os.path.split(path)[0]
|
| 92 |
+
|
| 93 |
+
if create_dir and not os.path.exists(parent):
|
| 94 |
+
os.makedirs(parent, exist_ok=True)
|
| 95 |
+
|
| 96 |
+
return path
|
| 97 |
+
|
| 98 |
+
def add_user(self, name):
|
| 99 |
+
name = name.strip()
|
| 100 |
+
if not name:
|
| 101 |
+
raise ValueError("username not provided")
|
| 102 |
+
user_id = re.sub("[^a-zA-Z0-9-_]+", '-', name)
|
| 103 |
+
user_id = user_id + "_" + str(uuid.uuid4())
|
| 104 |
+
|
| 105 |
+
self.users[user_id] = name
|
| 106 |
+
|
| 107 |
+
with open(self.get_users_file(), "w") as f:
|
| 108 |
+
json.dump(self.users, f)
|
| 109 |
+
|
| 110 |
+
return user_id
|
| 111 |
+
|
| 112 |
+
def add_routes(self, routes):
|
| 113 |
+
self.settings.add_routes(routes)
|
| 114 |
+
|
| 115 |
+
@routes.get("/users")
|
| 116 |
+
async def get_users(request):
|
| 117 |
+
if args.multi_user:
|
| 118 |
+
return web.json_response({"storage": "server", "users": self.users})
|
| 119 |
+
else:
|
| 120 |
+
user_dir = self.get_request_user_filepath(request, None, create_dir=False)
|
| 121 |
+
return web.json_response({
|
| 122 |
+
"storage": "server",
|
| 123 |
+
"migrated": os.path.exists(user_dir)
|
| 124 |
+
})
|
| 125 |
+
|
| 126 |
+
@routes.post("/users")
|
| 127 |
+
async def post_users(request):
|
| 128 |
+
body = await request.json()
|
| 129 |
+
username = body["username"]
|
| 130 |
+
if username in self.users.values():
|
| 131 |
+
return web.json_response({"error": "Duplicate username."}, status=400)
|
| 132 |
+
|
| 133 |
+
user_id = self.add_user(username)
|
| 134 |
+
return web.json_response(user_id)
|
| 135 |
+
|
| 136 |
+
@routes.get("/userdata")
|
| 137 |
+
async def listuserdata(request):
|
| 138 |
+
"""
|
| 139 |
+
List user data files in a specified directory.
|
| 140 |
+
|
| 141 |
+
This endpoint allows listing files in a user's data directory, with options for recursion,
|
| 142 |
+
full file information, and path splitting.
|
| 143 |
+
|
| 144 |
+
Query Parameters:
|
| 145 |
+
- dir (required): The directory to list files from.
|
| 146 |
+
- recurse (optional): If "true", recursively list files in subdirectories.
|
| 147 |
+
- full_info (optional): If "true", return detailed file information (path, size, modified time).
|
| 148 |
+
- split (optional): If "true", split file paths into components (only applies when full_info is false).
|
| 149 |
+
|
| 150 |
+
Returns:
|
| 151 |
+
- 400: If 'dir' parameter is missing.
|
| 152 |
+
- 403: If the requested path is not allowed.
|
| 153 |
+
- 404: If the requested directory does not exist.
|
| 154 |
+
- 200: JSON response with the list of files or file information.
|
| 155 |
+
|
| 156 |
+
The response format depends on the query parameters:
|
| 157 |
+
- Default: List of relative file paths.
|
| 158 |
+
- full_info=true: List of dictionaries with file details.
|
| 159 |
+
- split=true (and full_info=false): List of lists, each containing path components.
|
| 160 |
+
"""
|
| 161 |
+
directory = request.rel_url.query.get('dir', '')
|
| 162 |
+
if not directory:
|
| 163 |
+
return web.Response(status=400, text="Directory not provided")
|
| 164 |
+
|
| 165 |
+
path = self.get_request_user_filepath(request, directory)
|
| 166 |
+
if not path:
|
| 167 |
+
return web.Response(status=403, text="Invalid directory")
|
| 168 |
+
|
| 169 |
+
if not os.path.exists(path):
|
| 170 |
+
return web.Response(status=404, text="Directory not found")
|
| 171 |
+
|
| 172 |
+
recurse = request.rel_url.query.get('recurse', '').lower() == "true"
|
| 173 |
+
full_info = request.rel_url.query.get('full_info', '').lower() == "true"
|
| 174 |
+
split_path = request.rel_url.query.get('split', '').lower() == "true"
|
| 175 |
+
|
| 176 |
+
# Use different patterns based on whether we're recursing or not
|
| 177 |
+
if recurse:
|
| 178 |
+
pattern = os.path.join(glob.escape(path), '**', '*')
|
| 179 |
+
else:
|
| 180 |
+
pattern = os.path.join(glob.escape(path), '*')
|
| 181 |
+
|
| 182 |
+
def process_full_path(full_path: str) -> FileInfo | str | list[str]:
|
| 183 |
+
if full_info:
|
| 184 |
+
return get_file_info(full_path, path)
|
| 185 |
+
|
| 186 |
+
rel_path = os.path.relpath(full_path, path).replace(os.sep, '/')
|
| 187 |
+
if split_path:
|
| 188 |
+
return [rel_path] + rel_path.split('/')
|
| 189 |
+
|
| 190 |
+
return rel_path
|
| 191 |
+
|
| 192 |
+
results = [
|
| 193 |
+
process_full_path(full_path)
|
| 194 |
+
for full_path in glob.glob(pattern, recursive=recurse)
|
| 195 |
+
if os.path.isfile(full_path)
|
| 196 |
+
]
|
| 197 |
+
|
| 198 |
+
return web.json_response(results)
|
| 199 |
+
|
| 200 |
+
@routes.get("/v2/userdata")
|
| 201 |
+
async def list_userdata_v2(request):
|
| 202 |
+
"""
|
| 203 |
+
List files and directories in a user's data directory.
|
| 204 |
+
|
| 205 |
+
This endpoint provides a structured listing of contents within a specified
|
| 206 |
+
subdirectory of the user's data storage.
|
| 207 |
+
|
| 208 |
+
Query Parameters:
|
| 209 |
+
- path (optional): The relative path within the user's data directory
|
| 210 |
+
to list. Defaults to the root ('').
|
| 211 |
+
|
| 212 |
+
Returns:
|
| 213 |
+
- 400: If the requested path is invalid, outside the user's data directory, or is not a directory.
|
| 214 |
+
- 404: If the requested path does not exist.
|
| 215 |
+
- 403: If the user is invalid.
|
| 216 |
+
- 500: If there is an error reading the directory contents.
|
| 217 |
+
- 200: JSON response containing a list of file and directory objects.
|
| 218 |
+
Each object includes:
|
| 219 |
+
- name: The name of the file or directory.
|
| 220 |
+
- type: 'file' or 'directory'.
|
| 221 |
+
- path: The relative path from the user's data root.
|
| 222 |
+
- size (for files): The size in bytes.
|
| 223 |
+
- modified (for files): The last modified timestamp (Unix epoch).
|
| 224 |
+
"""
|
| 225 |
+
requested_rel_path = request.rel_url.query.get('path', '')
|
| 226 |
+
|
| 227 |
+
# URL-decode the path parameter
|
| 228 |
+
try:
|
| 229 |
+
requested_rel_path = parse.unquote(requested_rel_path)
|
| 230 |
+
except Exception as e:
|
| 231 |
+
logging.warning(f"Failed to decode path parameter: {requested_rel_path}, Error: {e}")
|
| 232 |
+
return web.Response(status=400, text="Invalid characters in path parameter")
|
| 233 |
+
|
| 234 |
+
|
| 235 |
+
# Check user validity and get the absolute path for the requested directory
|
| 236 |
+
try:
|
| 237 |
+
base_user_path = self.get_request_user_filepath(request, None, create_dir=False)
|
| 238 |
+
|
| 239 |
+
if requested_rel_path:
|
| 240 |
+
target_abs_path = self.get_request_user_filepath(request, requested_rel_path, create_dir=False)
|
| 241 |
+
else:
|
| 242 |
+
target_abs_path = base_user_path
|
| 243 |
+
|
| 244 |
+
except KeyError as e:
|
| 245 |
+
# Invalid user detected by get_request_user_id inside get_request_user_filepath
|
| 246 |
+
logging.warning(f"Access denied for user: {e}")
|
| 247 |
+
return web.Response(status=403, text="Invalid user specified in request")
|
| 248 |
+
|
| 249 |
+
|
| 250 |
+
if not target_abs_path:
|
| 251 |
+
# Path traversal or other issue detected by get_request_user_filepath
|
| 252 |
+
return web.Response(status=400, text="Invalid path requested")
|
| 253 |
+
|
| 254 |
+
# Handle cases where the user directory or target path doesn't exist
|
| 255 |
+
if not os.path.exists(target_abs_path):
|
| 256 |
+
# Check if it's the base user directory that's missing (new user case)
|
| 257 |
+
if target_abs_path == base_user_path:
|
| 258 |
+
# It's okay if the base user directory doesn't exist yet, return empty list
|
| 259 |
+
return web.json_response([])
|
| 260 |
+
else:
|
| 261 |
+
# A specific subdirectory was requested but doesn't exist
|
| 262 |
+
return web.Response(status=404, text="Requested path not found")
|
| 263 |
+
|
| 264 |
+
if not os.path.isdir(target_abs_path):
|
| 265 |
+
return web.Response(status=400, text="Requested path is not a directory")
|
| 266 |
+
|
| 267 |
+
results = []
|
| 268 |
+
try:
|
| 269 |
+
for root, dirs, files in os.walk(target_abs_path, topdown=True):
|
| 270 |
+
# Process directories
|
| 271 |
+
for dir_name in dirs:
|
| 272 |
+
dir_path = os.path.join(root, dir_name)
|
| 273 |
+
rel_path = os.path.relpath(dir_path, base_user_path).replace(os.sep, '/')
|
| 274 |
+
results.append({
|
| 275 |
+
"name": dir_name,
|
| 276 |
+
"path": rel_path,
|
| 277 |
+
"type": "directory"
|
| 278 |
+
})
|
| 279 |
+
|
| 280 |
+
# Process files
|
| 281 |
+
for file_name in files:
|
| 282 |
+
file_path = os.path.join(root, file_name)
|
| 283 |
+
rel_path = os.path.relpath(file_path, base_user_path).replace(os.sep, '/')
|
| 284 |
+
entry_info = {
|
| 285 |
+
"name": file_name,
|
| 286 |
+
"path": rel_path,
|
| 287 |
+
"type": "file"
|
| 288 |
+
}
|
| 289 |
+
try:
|
| 290 |
+
stats = os.stat(file_path) # Use os.stat for potentially better performance with os.walk
|
| 291 |
+
entry_info["size"] = stats.st_size
|
| 292 |
+
entry_info["modified"] = stats.st_mtime
|
| 293 |
+
except OSError as stat_error:
|
| 294 |
+
logging.warning(f"Could not stat file {file_path}: {stat_error}")
|
| 295 |
+
pass # Include file with available info
|
| 296 |
+
results.append(entry_info)
|
| 297 |
+
except OSError as e:
|
| 298 |
+
logging.error(f"Error listing directory {target_abs_path}: {e}")
|
| 299 |
+
return web.Response(status=500, text="Error reading directory contents")
|
| 300 |
+
|
| 301 |
+
# Sort results alphabetically, directories first then files
|
| 302 |
+
results.sort(key=lambda x: (x['type'] != 'directory', x['name'].lower()))
|
| 303 |
+
|
| 304 |
+
return web.json_response(results)
|
| 305 |
+
|
| 306 |
+
def get_user_data_path(request, check_exists = False, param = "file"):
|
| 307 |
+
file = request.match_info.get(param, None)
|
| 308 |
+
if not file:
|
| 309 |
+
return web.Response(status=400)
|
| 310 |
+
|
| 311 |
+
path = self.get_request_user_filepath(request, file)
|
| 312 |
+
if not path:
|
| 313 |
+
return web.Response(status=403)
|
| 314 |
+
|
| 315 |
+
if check_exists and not os.path.exists(path):
|
| 316 |
+
return web.Response(status=404)
|
| 317 |
+
|
| 318 |
+
return path
|
| 319 |
+
|
| 320 |
+
@routes.get("/userdata/{file}")
|
| 321 |
+
async def getuserdata(request):
|
| 322 |
+
path = get_user_data_path(request, check_exists=True)
|
| 323 |
+
if not isinstance(path, str):
|
| 324 |
+
return path
|
| 325 |
+
|
| 326 |
+
return web.FileResponse(path)
|
| 327 |
+
|
| 328 |
+
@routes.post("/userdata/{file}")
|
| 329 |
+
async def post_userdata(request):
|
| 330 |
+
"""
|
| 331 |
+
Upload or update a user data file.
|
| 332 |
+
|
| 333 |
+
This endpoint handles file uploads to a user's data directory, with options for
|
| 334 |
+
controlling overwrite behavior and response format.
|
| 335 |
+
|
| 336 |
+
Query Parameters:
|
| 337 |
+
- overwrite (optional): If "false", prevents overwriting existing files. Defaults to "true".
|
| 338 |
+
- full_info (optional): If "true", returns detailed file information (path, size, modified time).
|
| 339 |
+
If "false", returns only the relative file path.
|
| 340 |
+
|
| 341 |
+
Path Parameters:
|
| 342 |
+
- file: The target file path (URL encoded if necessary).
|
| 343 |
+
|
| 344 |
+
Returns:
|
| 345 |
+
- 400: If 'file' parameter is missing.
|
| 346 |
+
- 403: If the requested path is not allowed.
|
| 347 |
+
- 409: If overwrite=false and the file already exists.
|
| 348 |
+
- 200: JSON response with either:
|
| 349 |
+
- Full file information (if full_info=true)
|
| 350 |
+
- Relative file path (if full_info=false)
|
| 351 |
+
|
| 352 |
+
The request body should contain the raw file content to be written.
|
| 353 |
+
"""
|
| 354 |
+
path = get_user_data_path(request)
|
| 355 |
+
if not isinstance(path, str):
|
| 356 |
+
return path
|
| 357 |
+
|
| 358 |
+
overwrite = request.query.get("overwrite", 'true') != "false"
|
| 359 |
+
full_info = request.query.get('full_info', 'false').lower() == "true"
|
| 360 |
+
|
| 361 |
+
if not overwrite and os.path.exists(path):
|
| 362 |
+
return web.Response(status=409, text="File already exists")
|
| 363 |
+
|
| 364 |
+
body = await request.read()
|
| 365 |
+
|
| 366 |
+
with open(path, "wb") as f:
|
| 367 |
+
f.write(body)
|
| 368 |
+
|
| 369 |
+
user_path = self.get_request_user_filepath(request, None)
|
| 370 |
+
if full_info:
|
| 371 |
+
resp = get_file_info(path, user_path)
|
| 372 |
+
else:
|
| 373 |
+
resp = os.path.relpath(path, user_path)
|
| 374 |
+
|
| 375 |
+
return web.json_response(resp)
|
| 376 |
+
|
| 377 |
+
@routes.delete("/userdata/{file}")
|
| 378 |
+
async def delete_userdata(request):
|
| 379 |
+
path = get_user_data_path(request, check_exists=True)
|
| 380 |
+
if not isinstance(path, str):
|
| 381 |
+
return path
|
| 382 |
+
|
| 383 |
+
os.remove(path)
|
| 384 |
+
|
| 385 |
+
return web.Response(status=204)
|
| 386 |
+
|
| 387 |
+
@routes.post("/userdata/{file}/move/{dest}")
|
| 388 |
+
async def move_userdata(request):
|
| 389 |
+
"""
|
| 390 |
+
Move or rename a user data file.
|
| 391 |
+
|
| 392 |
+
This endpoint handles moving or renaming files within a user's data directory, with options for
|
| 393 |
+
controlling overwrite behavior and response format.
|
| 394 |
+
|
| 395 |
+
Path Parameters:
|
| 396 |
+
- file: The source file path (URL encoded if necessary)
|
| 397 |
+
- dest: The destination file path (URL encoded if necessary)
|
| 398 |
+
|
| 399 |
+
Query Parameters:
|
| 400 |
+
- overwrite (optional): If "false", prevents overwriting existing files. Defaults to "true".
|
| 401 |
+
- full_info (optional): If "true", returns detailed file information (path, size, modified time).
|
| 402 |
+
If "false", returns only the relative file path.
|
| 403 |
+
|
| 404 |
+
Returns:
|
| 405 |
+
- 400: If either 'file' or 'dest' parameter is missing
|
| 406 |
+
- 403: If either requested path is not allowed
|
| 407 |
+
- 404: If the source file does not exist
|
| 408 |
+
- 409: If overwrite=false and the destination file already exists
|
| 409 |
+
- 200: JSON response with either:
|
| 410 |
+
- Full file information (if full_info=true)
|
| 411 |
+
- Relative file path (if full_info=false)
|
| 412 |
+
"""
|
| 413 |
+
source = get_user_data_path(request, check_exists=True)
|
| 414 |
+
if not isinstance(source, str):
|
| 415 |
+
return source
|
| 416 |
+
|
| 417 |
+
dest = get_user_data_path(request, check_exists=False, param="dest")
|
| 418 |
+
if not isinstance(source, str):
|
| 419 |
+
return dest
|
| 420 |
+
|
| 421 |
+
overwrite = request.query.get("overwrite", 'true') != "false"
|
| 422 |
+
full_info = request.query.get('full_info', 'false').lower() == "true"
|
| 423 |
+
|
| 424 |
+
if not overwrite and os.path.exists(dest):
|
| 425 |
+
return web.Response(status=409, text="File already exists")
|
| 426 |
+
|
| 427 |
+
logging.info(f"moving '{source}' -> '{dest}'")
|
| 428 |
+
shutil.move(source, dest)
|
| 429 |
+
|
| 430 |
+
user_path = self.get_request_user_filepath(request, None)
|
| 431 |
+
if full_info:
|
| 432 |
+
resp = get_file_info(dest, user_path)
|
| 433 |
+
else:
|
| 434 |
+
resp = os.path.relpath(dest, user_path)
|
| 435 |
+
|
| 436 |
+
return web.json_response(resp)
|
ComfyUI/comfy/checkpoint_pickle.py
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import pickle
|
| 2 |
+
|
| 3 |
+
load = pickle.load
|
| 4 |
+
|
| 5 |
+
class Empty:
|
| 6 |
+
pass
|
| 7 |
+
|
| 8 |
+
class Unpickler(pickle.Unpickler):
|
| 9 |
+
def find_class(self, module, name):
|
| 10 |
+
#TODO: safe unpickle
|
| 11 |
+
if module.startswith("pytorch_lightning"):
|
| 12 |
+
return Empty
|
| 13 |
+
return super().find_class(module, name)
|
ComfyUI/comfy/cli_args.py
ADDED
|
@@ -0,0 +1,237 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import argparse
|
| 2 |
+
import enum
|
| 3 |
+
import os
|
| 4 |
+
import comfy.options
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
class EnumAction(argparse.Action):
|
| 8 |
+
"""
|
| 9 |
+
Argparse action for handling Enums
|
| 10 |
+
"""
|
| 11 |
+
def __init__(self, **kwargs):
|
| 12 |
+
# Pop off the type value
|
| 13 |
+
enum_type = kwargs.pop("type", None)
|
| 14 |
+
|
| 15 |
+
# Ensure an Enum subclass is provided
|
| 16 |
+
if enum_type is None:
|
| 17 |
+
raise ValueError("type must be assigned an Enum when using EnumAction")
|
| 18 |
+
if not issubclass(enum_type, enum.Enum):
|
| 19 |
+
raise TypeError("type must be an Enum when using EnumAction")
|
| 20 |
+
|
| 21 |
+
# Generate choices from the Enum
|
| 22 |
+
choices = tuple(e.value for e in enum_type)
|
| 23 |
+
kwargs.setdefault("choices", choices)
|
| 24 |
+
kwargs.setdefault("metavar", f"[{','.join(list(choices))}]")
|
| 25 |
+
|
| 26 |
+
super(EnumAction, self).__init__(**kwargs)
|
| 27 |
+
|
| 28 |
+
self._enum = enum_type
|
| 29 |
+
|
| 30 |
+
def __call__(self, parser, namespace, values, option_string=None):
|
| 31 |
+
# Convert value back into an Enum
|
| 32 |
+
value = self._enum(values)
|
| 33 |
+
setattr(namespace, self.dest, value)
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
parser = argparse.ArgumentParser()
|
| 37 |
+
|
| 38 |
+
parser.add_argument("--listen", type=str, default="127.0.0.1", metavar="IP", nargs="?", const="0.0.0.0,::", help="Specify the IP address to listen on (default: 127.0.0.1). You can give a list of ip addresses by separating them with a comma like: 127.2.2.2,127.3.3.3 If --listen is provided without an argument, it defaults to 0.0.0.0,:: (listens on all ipv4 and ipv6)")
|
| 39 |
+
parser.add_argument("--port", type=int, default=8188, help="Set the listen port.")
|
| 40 |
+
parser.add_argument("--tls-keyfile", type=str, help="Path to TLS (SSL) key file. Enables TLS, makes app accessible at https://... requires --tls-certfile to function")
|
| 41 |
+
parser.add_argument("--tls-certfile", type=str, help="Path to TLS (SSL) certificate file. Enables TLS, makes app accessible at https://... requires --tls-keyfile to function")
|
| 42 |
+
parser.add_argument("--enable-cors-header", type=str, default=None, metavar="ORIGIN", nargs="?", const="*", help="Enable CORS (Cross-Origin Resource Sharing) with optional origin or allow all with default '*'.")
|
| 43 |
+
parser.add_argument("--max-upload-size", type=float, default=100, help="Set the maximum upload size in MB.")
|
| 44 |
+
|
| 45 |
+
parser.add_argument("--base-directory", type=str, default=None, help="Set the ComfyUI base directory for models, custom_nodes, input, output, temp, and user directories.")
|
| 46 |
+
parser.add_argument("--extra-model-paths-config", type=str, default=None, metavar="PATH", nargs='+', action='append', help="Load one or more extra_model_paths.yaml files.")
|
| 47 |
+
parser.add_argument("--output-directory", type=str, default=None, help="Set the ComfyUI output directory. Overrides --base-directory.")
|
| 48 |
+
parser.add_argument("--temp-directory", type=str, default=None, help="Set the ComfyUI temp directory (default is in the ComfyUI directory). Overrides --base-directory.")
|
| 49 |
+
parser.add_argument("--input-directory", type=str, default=None, help="Set the ComfyUI input directory. Overrides --base-directory.")
|
| 50 |
+
parser.add_argument("--auto-launch", action="store_true", help="Automatically launch ComfyUI in the default browser.")
|
| 51 |
+
parser.add_argument("--disable-auto-launch", action="store_true", help="Disable auto launching the browser.")
|
| 52 |
+
parser.add_argument("--cuda-device", type=int, default=None, metavar="DEVICE_ID", help="Set the id of the cuda device this instance will use. All other devices will not be visible.")
|
| 53 |
+
parser.add_argument("--default-device", type=int, default=None, metavar="DEFAULT_DEVICE_ID", help="Set the id of the default device, all other devices will stay visible.")
|
| 54 |
+
cm_group = parser.add_mutually_exclusive_group()
|
| 55 |
+
cm_group.add_argument("--cuda-malloc", action="store_true", help="Enable cudaMallocAsync (enabled by default for torch 2.0 and up).")
|
| 56 |
+
cm_group.add_argument("--disable-cuda-malloc", action="store_true", help="Disable cudaMallocAsync.")
|
| 57 |
+
|
| 58 |
+
|
| 59 |
+
fp_group = parser.add_mutually_exclusive_group()
|
| 60 |
+
fp_group.add_argument("--force-fp32", action="store_true", help="Force fp32 (If this makes your GPU work better please report it).")
|
| 61 |
+
fp_group.add_argument("--force-fp16", action="store_true", help="Force fp16.")
|
| 62 |
+
|
| 63 |
+
fpunet_group = parser.add_mutually_exclusive_group()
|
| 64 |
+
fpunet_group.add_argument("--fp32-unet", action="store_true", help="Run the diffusion model in fp32.")
|
| 65 |
+
fpunet_group.add_argument("--fp64-unet", action="store_true", help="Run the diffusion model in fp64.")
|
| 66 |
+
fpunet_group.add_argument("--bf16-unet", action="store_true", help="Run the diffusion model in bf16.")
|
| 67 |
+
fpunet_group.add_argument("--fp16-unet", action="store_true", help="Run the diffusion model in fp16")
|
| 68 |
+
fpunet_group.add_argument("--fp8_e4m3fn-unet", action="store_true", help="Store unet weights in fp8_e4m3fn.")
|
| 69 |
+
fpunet_group.add_argument("--fp8_e5m2-unet", action="store_true", help="Store unet weights in fp8_e5m2.")
|
| 70 |
+
fpunet_group.add_argument("--fp8_e8m0fnu-unet", action="store_true", help="Store unet weights in fp8_e8m0fnu.")
|
| 71 |
+
|
| 72 |
+
fpvae_group = parser.add_mutually_exclusive_group()
|
| 73 |
+
fpvae_group.add_argument("--fp16-vae", action="store_true", help="Run the VAE in fp16, might cause black images.")
|
| 74 |
+
fpvae_group.add_argument("--fp32-vae", action="store_true", help="Run the VAE in full precision fp32.")
|
| 75 |
+
fpvae_group.add_argument("--bf16-vae", action="store_true", help="Run the VAE in bf16.")
|
| 76 |
+
|
| 77 |
+
parser.add_argument("--cpu-vae", action="store_true", help="Run the VAE on the CPU.")
|
| 78 |
+
|
| 79 |
+
fpte_group = parser.add_mutually_exclusive_group()
|
| 80 |
+
fpte_group.add_argument("--fp8_e4m3fn-text-enc", action="store_true", help="Store text encoder weights in fp8 (e4m3fn variant).")
|
| 81 |
+
fpte_group.add_argument("--fp8_e5m2-text-enc", action="store_true", help="Store text encoder weights in fp8 (e5m2 variant).")
|
| 82 |
+
fpte_group.add_argument("--fp16-text-enc", action="store_true", help="Store text encoder weights in fp16.")
|
| 83 |
+
fpte_group.add_argument("--fp32-text-enc", action="store_true", help="Store text encoder weights in fp32.")
|
| 84 |
+
fpte_group.add_argument("--bf16-text-enc", action="store_true", help="Store text encoder weights in bf16.")
|
| 85 |
+
|
| 86 |
+
parser.add_argument("--force-channels-last", action="store_true", help="Force channels last format when inferencing the models.")
|
| 87 |
+
|
| 88 |
+
parser.add_argument("--directml", type=int, nargs="?", metavar="DIRECTML_DEVICE", const=-1, help="Use torch-directml.")
|
| 89 |
+
|
| 90 |
+
parser.add_argument("--oneapi-device-selector", type=str, default=None, metavar="SELECTOR_STRING", help="Sets the oneAPI device(s) this instance will use.")
|
| 91 |
+
parser.add_argument("--disable-ipex-optimize", action="store_true", help="Disables ipex.optimize default when loading models with Intel's Extension for Pytorch.")
|
| 92 |
+
parser.add_argument("--supports-fp8-compute", action="store_true", help="ComfyUI will act like if the device supports fp8 compute.")
|
| 93 |
+
|
| 94 |
+
class LatentPreviewMethod(enum.Enum):
|
| 95 |
+
NoPreviews = "none"
|
| 96 |
+
Auto = "auto"
|
| 97 |
+
Latent2RGB = "latent2rgb"
|
| 98 |
+
TAESD = "taesd"
|
| 99 |
+
|
| 100 |
+
parser.add_argument("--preview-method", type=LatentPreviewMethod, default=LatentPreviewMethod.NoPreviews, help="Default preview method for sampler nodes.", action=EnumAction)
|
| 101 |
+
|
| 102 |
+
parser.add_argument("--preview-size", type=int, default=512, help="Sets the maximum preview size for sampler nodes.")
|
| 103 |
+
|
| 104 |
+
cache_group = parser.add_mutually_exclusive_group()
|
| 105 |
+
cache_group.add_argument("--cache-classic", action="store_true", help="Use the old style (aggressive) caching.")
|
| 106 |
+
cache_group.add_argument("--cache-lru", type=int, default=0, help="Use LRU caching with a maximum of N node results cached. May use more RAM/VRAM.")
|
| 107 |
+
cache_group.add_argument("--cache-none", action="store_true", help="Reduced RAM/VRAM usage at the expense of executing every node for each run.")
|
| 108 |
+
|
| 109 |
+
attn_group = parser.add_mutually_exclusive_group()
|
| 110 |
+
attn_group.add_argument("--use-split-cross-attention", action="store_true", help="Use the split cross attention optimization. Ignored when xformers is used.")
|
| 111 |
+
attn_group.add_argument("--use-quad-cross-attention", action="store_true", help="Use the sub-quadratic cross attention optimization . Ignored when xformers is used.")
|
| 112 |
+
attn_group.add_argument("--use-pytorch-cross-attention", action="store_true", help="Use the new pytorch 2.0 cross attention function.")
|
| 113 |
+
attn_group.add_argument("--use-sage-attention", action="store_true", help="Use sage attention.")
|
| 114 |
+
attn_group.add_argument("--use-flash-attention", action="store_true", help="Use FlashAttention.")
|
| 115 |
+
|
| 116 |
+
parser.add_argument("--disable-xformers", action="store_true", help="Disable xformers.")
|
| 117 |
+
|
| 118 |
+
upcast = parser.add_mutually_exclusive_group()
|
| 119 |
+
upcast.add_argument("--force-upcast-attention", action="store_true", help="Force enable attention upcasting, please report if it fixes black images.")
|
| 120 |
+
upcast.add_argument("--dont-upcast-attention", action="store_true", help="Disable all upcasting of attention. Should be unnecessary except for debugging.")
|
| 121 |
+
|
| 122 |
+
|
| 123 |
+
vram_group = parser.add_mutually_exclusive_group()
|
| 124 |
+
vram_group.add_argument("--gpu-only", action="store_true", help="Store and run everything (text encoders/CLIP models, etc... on the GPU).")
|
| 125 |
+
vram_group.add_argument("--highvram", action="store_true", help="By default models will be unloaded to CPU memory after being used. This option keeps them in GPU memory.")
|
| 126 |
+
vram_group.add_argument("--normalvram", action="store_true", help="Used to force normal vram use if lowvram gets automatically enabled.")
|
| 127 |
+
vram_group.add_argument("--lowvram", action="store_true", help="Split the unet in parts to use less vram.")
|
| 128 |
+
vram_group.add_argument("--novram", action="store_true", help="When lowvram isn't enough.")
|
| 129 |
+
vram_group.add_argument("--cpu", action="store_true", help="To use the CPU for everything (slow).")
|
| 130 |
+
|
| 131 |
+
parser.add_argument("--reserve-vram", type=float, default=None, help="Set the amount of vram in GB you want to reserve for use by your OS/other software. By default some amount is reserved depending on your OS.")
|
| 132 |
+
|
| 133 |
+
parser.add_argument("--async-offload", action="store_true", help="Use async weight offloading.")
|
| 134 |
+
|
| 135 |
+
parser.add_argument("--default-hashing-function", type=str, choices=['md5', 'sha1', 'sha256', 'sha512'], default='sha256', help="Allows you to choose the hash function to use for duplicate filename / contents comparison. Default is sha256.")
|
| 136 |
+
|
| 137 |
+
parser.add_argument("--disable-smart-memory", action="store_true", help="Force ComfyUI to agressively offload to regular ram instead of keeping models in vram when it can.")
|
| 138 |
+
parser.add_argument("--deterministic", action="store_true", help="Make pytorch use slower deterministic algorithms when it can. Note that this might not make images deterministic in all cases.")
|
| 139 |
+
|
| 140 |
+
class PerformanceFeature(enum.Enum):
|
| 141 |
+
Fp16Accumulation = "fp16_accumulation"
|
| 142 |
+
Fp8MatrixMultiplication = "fp8_matrix_mult"
|
| 143 |
+
CublasOps = "cublas_ops"
|
| 144 |
+
|
| 145 |
+
parser.add_argument("--fast", nargs="*", type=PerformanceFeature, help="Enable some untested and potentially quality deteriorating optimizations. --fast with no arguments enables everything. You can pass a list specific optimizations if you only want to enable specific ones. Current valid optimizations: fp16_accumulation fp8_matrix_mult cublas_ops")
|
| 146 |
+
|
| 147 |
+
parser.add_argument("--mmap-torch-files", action="store_true", help="Use mmap when loading ckpt/pt files.")
|
| 148 |
+
parser.add_argument("--disable-mmap", action="store_true", help="Don't use mmap when loading safetensors.")
|
| 149 |
+
|
| 150 |
+
parser.add_argument("--dont-print-server", action="store_true", help="Don't print server output.")
|
| 151 |
+
parser.add_argument("--quick-test-for-ci", action="store_true", help="Quick test for CI.")
|
| 152 |
+
parser.add_argument("--windows-standalone-build", action="store_true", help="Windows standalone build: Enable convenient things that most people using the standalone windows build will probably enjoy (like auto opening the page on startup).")
|
| 153 |
+
|
| 154 |
+
parser.add_argument("--disable-metadata", action="store_true", help="Disable saving prompt metadata in files.")
|
| 155 |
+
parser.add_argument("--disable-all-custom-nodes", action="store_true", help="Disable loading all custom nodes.")
|
| 156 |
+
parser.add_argument("--whitelist-custom-nodes", type=str, nargs='+', default=[], help="Specify custom node folders to load even when --disable-all-custom-nodes is enabled.")
|
| 157 |
+
parser.add_argument("--disable-api-nodes", action="store_true", help="Disable loading all api nodes.")
|
| 158 |
+
|
| 159 |
+
parser.add_argument("--multi-user", action="store_true", help="Enables per-user storage.")
|
| 160 |
+
|
| 161 |
+
parser.add_argument("--verbose", default='INFO', const='DEBUG', nargs="?", choices=['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'], help='Set the logging level')
|
| 162 |
+
parser.add_argument("--log-stdout", action="store_true", help="Send normal process output to stdout instead of stderr (default).")
|
| 163 |
+
|
| 164 |
+
# The default built-in provider hosted under web/
|
| 165 |
+
DEFAULT_VERSION_STRING = "comfyanonymous/ComfyUI@latest"
|
| 166 |
+
|
| 167 |
+
parser.add_argument(
|
| 168 |
+
"--front-end-version",
|
| 169 |
+
type=str,
|
| 170 |
+
default=DEFAULT_VERSION_STRING,
|
| 171 |
+
help="""
|
| 172 |
+
Specifies the version of the frontend to be used. This command needs internet connectivity to query and
|
| 173 |
+
download available frontend implementations from GitHub releases.
|
| 174 |
+
|
| 175 |
+
The version string should be in the format of:
|
| 176 |
+
[repoOwner]/[repoName]@[version]
|
| 177 |
+
where version is one of: "latest" or a valid version number (e.g. "1.0.0")
|
| 178 |
+
""",
|
| 179 |
+
)
|
| 180 |
+
|
| 181 |
+
def is_valid_directory(path: str) -> str:
|
| 182 |
+
"""Validate if the given path is a directory, and check permissions."""
|
| 183 |
+
if not os.path.exists(path):
|
| 184 |
+
raise argparse.ArgumentTypeError(f"The path '{path}' does not exist.")
|
| 185 |
+
if not os.path.isdir(path):
|
| 186 |
+
raise argparse.ArgumentTypeError(f"'{path}' is not a directory.")
|
| 187 |
+
if not os.access(path, os.R_OK):
|
| 188 |
+
raise argparse.ArgumentTypeError(f"You do not have read permissions for '{path}'.")
|
| 189 |
+
return path
|
| 190 |
+
|
| 191 |
+
parser.add_argument(
|
| 192 |
+
"--front-end-root",
|
| 193 |
+
type=is_valid_directory,
|
| 194 |
+
default=None,
|
| 195 |
+
help="The local filesystem path to the directory where the frontend is located. Overrides --front-end-version.",
|
| 196 |
+
)
|
| 197 |
+
|
| 198 |
+
parser.add_argument("--user-directory", type=is_valid_directory, default=None, help="Set the ComfyUI user directory with an absolute path. Overrides --base-directory.")
|
| 199 |
+
|
| 200 |
+
parser.add_argument("--enable-compress-response-body", action="store_true", help="Enable compressing response body.")
|
| 201 |
+
|
| 202 |
+
parser.add_argument(
|
| 203 |
+
"--comfy-api-base",
|
| 204 |
+
type=str,
|
| 205 |
+
default="https://api.comfy.org",
|
| 206 |
+
help="Set the base URL for the ComfyUI API. (default: https://api.comfy.org)",
|
| 207 |
+
)
|
| 208 |
+
|
| 209 |
+
database_default_path = os.path.abspath(
|
| 210 |
+
os.path.join(os.path.dirname(__file__), "..", "user", "comfyui.db")
|
| 211 |
+
)
|
| 212 |
+
parser.add_argument("--database-url", type=str, default=f"sqlite:///{database_default_path}", help="Specify the database URL, e.g. for an in-memory database you can use 'sqlite:///:memory:'.")
|
| 213 |
+
|
| 214 |
+
if comfy.options.args_parsing:
|
| 215 |
+
args = parser.parse_args()
|
| 216 |
+
else:
|
| 217 |
+
args = parser.parse_args([])
|
| 218 |
+
|
| 219 |
+
if args.windows_standalone_build:
|
| 220 |
+
args.auto_launch = True
|
| 221 |
+
|
| 222 |
+
if args.disable_auto_launch:
|
| 223 |
+
args.auto_launch = False
|
| 224 |
+
|
| 225 |
+
if args.force_fp16:
|
| 226 |
+
args.fp16_unet = True
|
| 227 |
+
|
| 228 |
+
|
| 229 |
+
# '--fast' is not provided, use an empty set
|
| 230 |
+
if args.fast is None:
|
| 231 |
+
args.fast = set()
|
| 232 |
+
# '--fast' is provided with an empty list, enable all optimizations
|
| 233 |
+
elif args.fast == []:
|
| 234 |
+
args.fast = set(PerformanceFeature)
|
| 235 |
+
# '--fast' is provided with a list of performance features, use that list
|
| 236 |
+
else:
|
| 237 |
+
args.fast = set(args.fast)
|
ComfyUI/comfy/clip_config_bigg.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"architectures": [
|
| 3 |
+
"CLIPTextModel"
|
| 4 |
+
],
|
| 5 |
+
"attention_dropout": 0.0,
|
| 6 |
+
"bos_token_id": 0,
|
| 7 |
+
"dropout": 0.0,
|
| 8 |
+
"eos_token_id": 49407,
|
| 9 |
+
"hidden_act": "gelu",
|
| 10 |
+
"hidden_size": 1280,
|
| 11 |
+
"initializer_factor": 1.0,
|
| 12 |
+
"initializer_range": 0.02,
|
| 13 |
+
"intermediate_size": 5120,
|
| 14 |
+
"layer_norm_eps": 1e-05,
|
| 15 |
+
"max_position_embeddings": 77,
|
| 16 |
+
"model_type": "clip_text_model",
|
| 17 |
+
"num_attention_heads": 20,
|
| 18 |
+
"num_hidden_layers": 32,
|
| 19 |
+
"pad_token_id": 1,
|
| 20 |
+
"projection_dim": 1280,
|
| 21 |
+
"torch_dtype": "float32",
|
| 22 |
+
"vocab_size": 49408
|
| 23 |
+
}
|
ComfyUI/comfy/clip_model.py
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
from comfy.ldm.modules.attention import optimized_attention_for_device
|
| 3 |
+
import comfy.ops
|
| 4 |
+
|
| 5 |
+
class CLIPAttention(torch.nn.Module):
|
| 6 |
+
def __init__(self, embed_dim, heads, dtype, device, operations):
|
| 7 |
+
super().__init__()
|
| 8 |
+
|
| 9 |
+
self.heads = heads
|
| 10 |
+
self.q_proj = operations.Linear(embed_dim, embed_dim, bias=True, dtype=dtype, device=device)
|
| 11 |
+
self.k_proj = operations.Linear(embed_dim, embed_dim, bias=True, dtype=dtype, device=device)
|
| 12 |
+
self.v_proj = operations.Linear(embed_dim, embed_dim, bias=True, dtype=dtype, device=device)
|
| 13 |
+
|
| 14 |
+
self.out_proj = operations.Linear(embed_dim, embed_dim, bias=True, dtype=dtype, device=device)
|
| 15 |
+
|
| 16 |
+
def forward(self, x, mask=None, optimized_attention=None):
|
| 17 |
+
q = self.q_proj(x)
|
| 18 |
+
k = self.k_proj(x)
|
| 19 |
+
v = self.v_proj(x)
|
| 20 |
+
|
| 21 |
+
out = optimized_attention(q, k, v, self.heads, mask)
|
| 22 |
+
return self.out_proj(out)
|
| 23 |
+
|
| 24 |
+
ACTIVATIONS = {"quick_gelu": lambda a: a * torch.sigmoid(1.702 * a),
|
| 25 |
+
"gelu": torch.nn.functional.gelu,
|
| 26 |
+
"gelu_pytorch_tanh": lambda a: torch.nn.functional.gelu(a, approximate="tanh"),
|
| 27 |
+
}
|
| 28 |
+
|
| 29 |
+
class CLIPMLP(torch.nn.Module):
|
| 30 |
+
def __init__(self, embed_dim, intermediate_size, activation, dtype, device, operations):
|
| 31 |
+
super().__init__()
|
| 32 |
+
self.fc1 = operations.Linear(embed_dim, intermediate_size, bias=True, dtype=dtype, device=device)
|
| 33 |
+
self.activation = ACTIVATIONS[activation]
|
| 34 |
+
self.fc2 = operations.Linear(intermediate_size, embed_dim, bias=True, dtype=dtype, device=device)
|
| 35 |
+
|
| 36 |
+
def forward(self, x):
|
| 37 |
+
x = self.fc1(x)
|
| 38 |
+
x = self.activation(x)
|
| 39 |
+
x = self.fc2(x)
|
| 40 |
+
return x
|
| 41 |
+
|
| 42 |
+
class CLIPLayer(torch.nn.Module):
|
| 43 |
+
def __init__(self, embed_dim, heads, intermediate_size, intermediate_activation, dtype, device, operations):
|
| 44 |
+
super().__init__()
|
| 45 |
+
self.layer_norm1 = operations.LayerNorm(embed_dim, dtype=dtype, device=device)
|
| 46 |
+
self.self_attn = CLIPAttention(embed_dim, heads, dtype, device, operations)
|
| 47 |
+
self.layer_norm2 = operations.LayerNorm(embed_dim, dtype=dtype, device=device)
|
| 48 |
+
self.mlp = CLIPMLP(embed_dim, intermediate_size, intermediate_activation, dtype, device, operations)
|
| 49 |
+
|
| 50 |
+
def forward(self, x, mask=None, optimized_attention=None):
|
| 51 |
+
x += self.self_attn(self.layer_norm1(x), mask, optimized_attention)
|
| 52 |
+
x += self.mlp(self.layer_norm2(x))
|
| 53 |
+
return x
|
| 54 |
+
|
| 55 |
+
|
| 56 |
+
class CLIPEncoder(torch.nn.Module):
|
| 57 |
+
def __init__(self, num_layers, embed_dim, heads, intermediate_size, intermediate_activation, dtype, device, operations):
|
| 58 |
+
super().__init__()
|
| 59 |
+
self.layers = torch.nn.ModuleList([CLIPLayer(embed_dim, heads, intermediate_size, intermediate_activation, dtype, device, operations) for i in range(num_layers)])
|
| 60 |
+
|
| 61 |
+
def forward(self, x, mask=None, intermediate_output=None):
|
| 62 |
+
optimized_attention = optimized_attention_for_device(x.device, mask=mask is not None, small_input=True)
|
| 63 |
+
|
| 64 |
+
if intermediate_output is not None:
|
| 65 |
+
if intermediate_output < 0:
|
| 66 |
+
intermediate_output = len(self.layers) + intermediate_output
|
| 67 |
+
|
| 68 |
+
intermediate = None
|
| 69 |
+
for i, l in enumerate(self.layers):
|
| 70 |
+
x = l(x, mask, optimized_attention)
|
| 71 |
+
if i == intermediate_output:
|
| 72 |
+
intermediate = x.clone()
|
| 73 |
+
return x, intermediate
|
| 74 |
+
|
| 75 |
+
class CLIPEmbeddings(torch.nn.Module):
|
| 76 |
+
def __init__(self, embed_dim, vocab_size=49408, num_positions=77, dtype=None, device=None, operations=None):
|
| 77 |
+
super().__init__()
|
| 78 |
+
self.token_embedding = operations.Embedding(vocab_size, embed_dim, dtype=dtype, device=device)
|
| 79 |
+
self.position_embedding = operations.Embedding(num_positions, embed_dim, dtype=dtype, device=device)
|
| 80 |
+
|
| 81 |
+
def forward(self, input_tokens, dtype=torch.float32):
|
| 82 |
+
return self.token_embedding(input_tokens, out_dtype=dtype) + comfy.ops.cast_to(self.position_embedding.weight, dtype=dtype, device=input_tokens.device)
|
| 83 |
+
|
| 84 |
+
|
| 85 |
+
class CLIPTextModel_(torch.nn.Module):
|
| 86 |
+
def __init__(self, config_dict, dtype, device, operations):
|
| 87 |
+
num_layers = config_dict["num_hidden_layers"]
|
| 88 |
+
embed_dim = config_dict["hidden_size"]
|
| 89 |
+
heads = config_dict["num_attention_heads"]
|
| 90 |
+
intermediate_size = config_dict["intermediate_size"]
|
| 91 |
+
intermediate_activation = config_dict["hidden_act"]
|
| 92 |
+
num_positions = config_dict["max_position_embeddings"]
|
| 93 |
+
self.eos_token_id = config_dict["eos_token_id"]
|
| 94 |
+
|
| 95 |
+
super().__init__()
|
| 96 |
+
self.embeddings = CLIPEmbeddings(embed_dim, num_positions=num_positions, dtype=dtype, device=device, operations=operations)
|
| 97 |
+
self.encoder = CLIPEncoder(num_layers, embed_dim, heads, intermediate_size, intermediate_activation, dtype, device, operations)
|
| 98 |
+
self.final_layer_norm = operations.LayerNorm(embed_dim, dtype=dtype, device=device)
|
| 99 |
+
|
| 100 |
+
def forward(self, input_tokens=None, attention_mask=None, embeds=None, num_tokens=None, intermediate_output=None, final_layer_norm_intermediate=True, dtype=torch.float32):
|
| 101 |
+
if embeds is not None:
|
| 102 |
+
x = embeds + comfy.ops.cast_to(self.embeddings.position_embedding.weight, dtype=dtype, device=embeds.device)
|
| 103 |
+
else:
|
| 104 |
+
x = self.embeddings(input_tokens, dtype=dtype)
|
| 105 |
+
|
| 106 |
+
mask = None
|
| 107 |
+
if attention_mask is not None:
|
| 108 |
+
mask = 1.0 - attention_mask.to(x.dtype).reshape((attention_mask.shape[0], 1, -1, attention_mask.shape[-1])).expand(attention_mask.shape[0], 1, attention_mask.shape[-1], attention_mask.shape[-1])
|
| 109 |
+
mask = mask.masked_fill(mask.to(torch.bool), -torch.finfo(x.dtype).max)
|
| 110 |
+
|
| 111 |
+
causal_mask = torch.full((x.shape[1], x.shape[1]), -torch.finfo(x.dtype).max, dtype=x.dtype, device=x.device).triu_(1)
|
| 112 |
+
|
| 113 |
+
if mask is not None:
|
| 114 |
+
mask += causal_mask
|
| 115 |
+
else:
|
| 116 |
+
mask = causal_mask
|
| 117 |
+
|
| 118 |
+
x, i = self.encoder(x, mask=mask, intermediate_output=intermediate_output)
|
| 119 |
+
x = self.final_layer_norm(x)
|
| 120 |
+
if i is not None and final_layer_norm_intermediate:
|
| 121 |
+
i = self.final_layer_norm(i)
|
| 122 |
+
|
| 123 |
+
if num_tokens is not None:
|
| 124 |
+
pooled_output = x[list(range(x.shape[0])), list(map(lambda a: a - 1, num_tokens))]
|
| 125 |
+
else:
|
| 126 |
+
pooled_output = x[torch.arange(x.shape[0], device=x.device), (torch.round(input_tokens).to(dtype=torch.int, device=x.device) == self.eos_token_id).int().argmax(dim=-1),]
|
| 127 |
+
return x, i, pooled_output
|
| 128 |
+
|
| 129 |
+
class CLIPTextModel(torch.nn.Module):
|
| 130 |
+
def __init__(self, config_dict, dtype, device, operations):
|
| 131 |
+
super().__init__()
|
| 132 |
+
self.num_layers = config_dict["num_hidden_layers"]
|
| 133 |
+
self.text_model = CLIPTextModel_(config_dict, dtype, device, operations)
|
| 134 |
+
embed_dim = config_dict["hidden_size"]
|
| 135 |
+
self.text_projection = operations.Linear(embed_dim, embed_dim, bias=False, dtype=dtype, device=device)
|
| 136 |
+
self.dtype = dtype
|
| 137 |
+
|
| 138 |
+
def get_input_embeddings(self):
|
| 139 |
+
return self.text_model.embeddings.token_embedding
|
| 140 |
+
|
| 141 |
+
def set_input_embeddings(self, embeddings):
|
| 142 |
+
self.text_model.embeddings.token_embedding = embeddings
|
| 143 |
+
|
| 144 |
+
def forward(self, *args, **kwargs):
|
| 145 |
+
x = self.text_model(*args, **kwargs)
|
| 146 |
+
out = self.text_projection(x[2])
|
| 147 |
+
return (x[0], x[1], out, x[2])
|
| 148 |
+
|
| 149 |
+
|
| 150 |
+
class CLIPVisionEmbeddings(torch.nn.Module):
|
| 151 |
+
def __init__(self, embed_dim, num_channels=3, patch_size=14, image_size=224, model_type="", dtype=None, device=None, operations=None):
|
| 152 |
+
super().__init__()
|
| 153 |
+
|
| 154 |
+
num_patches = (image_size // patch_size) ** 2
|
| 155 |
+
if model_type == "siglip_vision_model":
|
| 156 |
+
self.class_embedding = None
|
| 157 |
+
patch_bias = True
|
| 158 |
+
else:
|
| 159 |
+
num_patches = num_patches + 1
|
| 160 |
+
self.class_embedding = torch.nn.Parameter(torch.empty(embed_dim, dtype=dtype, device=device))
|
| 161 |
+
patch_bias = False
|
| 162 |
+
|
| 163 |
+
self.patch_embedding = operations.Conv2d(
|
| 164 |
+
in_channels=num_channels,
|
| 165 |
+
out_channels=embed_dim,
|
| 166 |
+
kernel_size=patch_size,
|
| 167 |
+
stride=patch_size,
|
| 168 |
+
bias=patch_bias,
|
| 169 |
+
dtype=dtype,
|
| 170 |
+
device=device
|
| 171 |
+
)
|
| 172 |
+
|
| 173 |
+
self.position_embedding = operations.Embedding(num_patches, embed_dim, dtype=dtype, device=device)
|
| 174 |
+
|
| 175 |
+
def forward(self, pixel_values):
|
| 176 |
+
embeds = self.patch_embedding(pixel_values).flatten(2).transpose(1, 2)
|
| 177 |
+
if self.class_embedding is not None:
|
| 178 |
+
embeds = torch.cat([comfy.ops.cast_to_input(self.class_embedding, embeds).expand(pixel_values.shape[0], 1, -1), embeds], dim=1)
|
| 179 |
+
return embeds + comfy.ops.cast_to_input(self.position_embedding.weight, embeds)
|
| 180 |
+
|
| 181 |
+
|
| 182 |
+
class CLIPVision(torch.nn.Module):
|
| 183 |
+
def __init__(self, config_dict, dtype, device, operations):
|
| 184 |
+
super().__init__()
|
| 185 |
+
num_layers = config_dict["num_hidden_layers"]
|
| 186 |
+
embed_dim = config_dict["hidden_size"]
|
| 187 |
+
heads = config_dict["num_attention_heads"]
|
| 188 |
+
intermediate_size = config_dict["intermediate_size"]
|
| 189 |
+
intermediate_activation = config_dict["hidden_act"]
|
| 190 |
+
model_type = config_dict["model_type"]
|
| 191 |
+
|
| 192 |
+
self.embeddings = CLIPVisionEmbeddings(embed_dim, config_dict["num_channels"], config_dict["patch_size"], config_dict["image_size"], model_type=model_type, dtype=dtype, device=device, operations=operations)
|
| 193 |
+
if model_type == "siglip_vision_model":
|
| 194 |
+
self.pre_layrnorm = lambda a: a
|
| 195 |
+
self.output_layernorm = True
|
| 196 |
+
else:
|
| 197 |
+
self.pre_layrnorm = operations.LayerNorm(embed_dim)
|
| 198 |
+
self.output_layernorm = False
|
| 199 |
+
self.encoder = CLIPEncoder(num_layers, embed_dim, heads, intermediate_size, intermediate_activation, dtype, device, operations)
|
| 200 |
+
self.post_layernorm = operations.LayerNorm(embed_dim)
|
| 201 |
+
|
| 202 |
+
def forward(self, pixel_values, attention_mask=None, intermediate_output=None):
|
| 203 |
+
x = self.embeddings(pixel_values)
|
| 204 |
+
x = self.pre_layrnorm(x)
|
| 205 |
+
#TODO: attention_mask?
|
| 206 |
+
x, i = self.encoder(x, mask=None, intermediate_output=intermediate_output)
|
| 207 |
+
if self.output_layernorm:
|
| 208 |
+
x = self.post_layernorm(x)
|
| 209 |
+
pooled_output = x
|
| 210 |
+
else:
|
| 211 |
+
pooled_output = self.post_layernorm(x[:, 0, :])
|
| 212 |
+
return x, i, pooled_output
|
| 213 |
+
|
| 214 |
+
class LlavaProjector(torch.nn.Module):
|
| 215 |
+
def __init__(self, in_dim, out_dim, dtype, device, operations):
|
| 216 |
+
super().__init__()
|
| 217 |
+
self.linear_1 = operations.Linear(in_dim, out_dim, bias=True, device=device, dtype=dtype)
|
| 218 |
+
self.linear_2 = operations.Linear(out_dim, out_dim, bias=True, device=device, dtype=dtype)
|
| 219 |
+
|
| 220 |
+
def forward(self, x):
|
| 221 |
+
return self.linear_2(torch.nn.functional.gelu(self.linear_1(x[:, 1:])))
|
| 222 |
+
|
| 223 |
+
class CLIPVisionModelProjection(torch.nn.Module):
|
| 224 |
+
def __init__(self, config_dict, dtype, device, operations):
|
| 225 |
+
super().__init__()
|
| 226 |
+
self.vision_model = CLIPVision(config_dict, dtype, device, operations)
|
| 227 |
+
if "projection_dim" in config_dict:
|
| 228 |
+
self.visual_projection = operations.Linear(config_dict["hidden_size"], config_dict["projection_dim"], bias=False)
|
| 229 |
+
else:
|
| 230 |
+
self.visual_projection = lambda a: a
|
| 231 |
+
|
| 232 |
+
if "llava3" == config_dict.get("projector_type", None):
|
| 233 |
+
self.multi_modal_projector = LlavaProjector(config_dict["hidden_size"], 4096, dtype, device, operations)
|
| 234 |
+
else:
|
| 235 |
+
self.multi_modal_projector = None
|
| 236 |
+
|
| 237 |
+
def forward(self, *args, **kwargs):
|
| 238 |
+
x = self.vision_model(*args, **kwargs)
|
| 239 |
+
out = self.visual_projection(x[2])
|
| 240 |
+
projected = None
|
| 241 |
+
if self.multi_modal_projector is not None:
|
| 242 |
+
projected = self.multi_modal_projector(x[1])
|
| 243 |
+
|
| 244 |
+
return (x[0], x[1], out, projected)
|
ComfyUI/comfy/clip_vision.py
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from .utils import load_torch_file, transformers_convert, state_dict_prefix_replace
|
| 2 |
+
import os
|
| 3 |
+
import torch
|
| 4 |
+
import json
|
| 5 |
+
import logging
|
| 6 |
+
|
| 7 |
+
import comfy.ops
|
| 8 |
+
import comfy.model_patcher
|
| 9 |
+
import comfy.model_management
|
| 10 |
+
import comfy.utils
|
| 11 |
+
import comfy.clip_model
|
| 12 |
+
import comfy.image_encoders.dino2
|
| 13 |
+
|
| 14 |
+
class Output:
|
| 15 |
+
def __getitem__(self, key):
|
| 16 |
+
return getattr(self, key)
|
| 17 |
+
def __setitem__(self, key, item):
|
| 18 |
+
setattr(self, key, item)
|
| 19 |
+
|
| 20 |
+
def clip_preprocess(image, size=224, mean=[0.48145466, 0.4578275, 0.40821073], std=[0.26862954, 0.26130258, 0.27577711], crop=True):
|
| 21 |
+
image = image[:, :, :, :3] if image.shape[3] > 3 else image
|
| 22 |
+
mean = torch.tensor(mean, device=image.device, dtype=image.dtype)
|
| 23 |
+
std = torch.tensor(std, device=image.device, dtype=image.dtype)
|
| 24 |
+
image = image.movedim(-1, 1)
|
| 25 |
+
if not (image.shape[2] == size and image.shape[3] == size):
|
| 26 |
+
if crop:
|
| 27 |
+
scale = (size / min(image.shape[2], image.shape[3]))
|
| 28 |
+
scale_size = (round(scale * image.shape[2]), round(scale * image.shape[3]))
|
| 29 |
+
else:
|
| 30 |
+
scale_size = (size, size)
|
| 31 |
+
|
| 32 |
+
image = torch.nn.functional.interpolate(image, size=scale_size, mode="bicubic", antialias=True)
|
| 33 |
+
h = (image.shape[2] - size)//2
|
| 34 |
+
w = (image.shape[3] - size)//2
|
| 35 |
+
image = image[:,:,h:h+size,w:w+size]
|
| 36 |
+
image = torch.clip((255. * image), 0, 255).round() / 255.0
|
| 37 |
+
return (image - mean.view([3,1,1])) / std.view([3,1,1])
|
| 38 |
+
|
| 39 |
+
IMAGE_ENCODERS = {
|
| 40 |
+
"clip_vision_model": comfy.clip_model.CLIPVisionModelProjection,
|
| 41 |
+
"siglip_vision_model": comfy.clip_model.CLIPVisionModelProjection,
|
| 42 |
+
"dinov2": comfy.image_encoders.dino2.Dinov2Model,
|
| 43 |
+
}
|
| 44 |
+
|
| 45 |
+
class ClipVisionModel():
|
| 46 |
+
def __init__(self, json_config):
|
| 47 |
+
with open(json_config) as f:
|
| 48 |
+
config = json.load(f)
|
| 49 |
+
|
| 50 |
+
self.image_size = config.get("image_size", 224)
|
| 51 |
+
self.image_mean = config.get("image_mean", [0.48145466, 0.4578275, 0.40821073])
|
| 52 |
+
self.image_std = config.get("image_std", [0.26862954, 0.26130258, 0.27577711])
|
| 53 |
+
model_class = IMAGE_ENCODERS.get(config.get("model_type", "clip_vision_model"))
|
| 54 |
+
self.load_device = comfy.model_management.text_encoder_device()
|
| 55 |
+
offload_device = comfy.model_management.text_encoder_offload_device()
|
| 56 |
+
self.dtype = comfy.model_management.text_encoder_dtype(self.load_device)
|
| 57 |
+
self.model = model_class(config, self.dtype, offload_device, comfy.ops.manual_cast)
|
| 58 |
+
self.model.eval()
|
| 59 |
+
|
| 60 |
+
self.patcher = comfy.model_patcher.ModelPatcher(self.model, load_device=self.load_device, offload_device=offload_device)
|
| 61 |
+
|
| 62 |
+
def load_sd(self, sd):
|
| 63 |
+
return self.model.load_state_dict(sd, strict=False)
|
| 64 |
+
|
| 65 |
+
def get_sd(self):
|
| 66 |
+
return self.model.state_dict()
|
| 67 |
+
|
| 68 |
+
def encode_image(self, image, crop=True):
|
| 69 |
+
comfy.model_management.load_model_gpu(self.patcher)
|
| 70 |
+
pixel_values = clip_preprocess(image.to(self.load_device), size=self.image_size, mean=self.image_mean, std=self.image_std, crop=crop).float()
|
| 71 |
+
out = self.model(pixel_values=pixel_values, intermediate_output=-2)
|
| 72 |
+
|
| 73 |
+
outputs = Output()
|
| 74 |
+
outputs["last_hidden_state"] = out[0].to(comfy.model_management.intermediate_device())
|
| 75 |
+
outputs["image_embeds"] = out[2].to(comfy.model_management.intermediate_device())
|
| 76 |
+
outputs["penultimate_hidden_states"] = out[1].to(comfy.model_management.intermediate_device())
|
| 77 |
+
outputs["mm_projected"] = out[3]
|
| 78 |
+
return outputs
|
| 79 |
+
|
| 80 |
+
def convert_to_transformers(sd, prefix):
|
| 81 |
+
sd_k = sd.keys()
|
| 82 |
+
if "{}transformer.resblocks.0.attn.in_proj_weight".format(prefix) in sd_k:
|
| 83 |
+
keys_to_replace = {
|
| 84 |
+
"{}class_embedding".format(prefix): "vision_model.embeddings.class_embedding",
|
| 85 |
+
"{}conv1.weight".format(prefix): "vision_model.embeddings.patch_embedding.weight",
|
| 86 |
+
"{}positional_embedding".format(prefix): "vision_model.embeddings.position_embedding.weight",
|
| 87 |
+
"{}ln_post.bias".format(prefix): "vision_model.post_layernorm.bias",
|
| 88 |
+
"{}ln_post.weight".format(prefix): "vision_model.post_layernorm.weight",
|
| 89 |
+
"{}ln_pre.bias".format(prefix): "vision_model.pre_layrnorm.bias",
|
| 90 |
+
"{}ln_pre.weight".format(prefix): "vision_model.pre_layrnorm.weight",
|
| 91 |
+
}
|
| 92 |
+
|
| 93 |
+
for x in keys_to_replace:
|
| 94 |
+
if x in sd_k:
|
| 95 |
+
sd[keys_to_replace[x]] = sd.pop(x)
|
| 96 |
+
|
| 97 |
+
if "{}proj".format(prefix) in sd_k:
|
| 98 |
+
sd['visual_projection.weight'] = sd.pop("{}proj".format(prefix)).transpose(0, 1)
|
| 99 |
+
|
| 100 |
+
sd = transformers_convert(sd, prefix, "vision_model.", 48)
|
| 101 |
+
else:
|
| 102 |
+
replace_prefix = {prefix: ""}
|
| 103 |
+
sd = state_dict_prefix_replace(sd, replace_prefix)
|
| 104 |
+
return sd
|
| 105 |
+
|
| 106 |
+
def load_clipvision_from_sd(sd, prefix="", convert_keys=False):
|
| 107 |
+
if convert_keys:
|
| 108 |
+
sd = convert_to_transformers(sd, prefix)
|
| 109 |
+
if "vision_model.encoder.layers.47.layer_norm1.weight" in sd:
|
| 110 |
+
json_config = os.path.join(os.path.dirname(os.path.realpath(__file__)), "clip_vision_config_g.json")
|
| 111 |
+
elif "vision_model.encoder.layers.30.layer_norm1.weight" in sd:
|
| 112 |
+
json_config = os.path.join(os.path.dirname(os.path.realpath(__file__)), "clip_vision_config_h.json")
|
| 113 |
+
elif "vision_model.encoder.layers.22.layer_norm1.weight" in sd:
|
| 114 |
+
embed_shape = sd["vision_model.embeddings.position_embedding.weight"].shape[0]
|
| 115 |
+
if sd["vision_model.encoder.layers.0.layer_norm1.weight"].shape[0] == 1152:
|
| 116 |
+
if embed_shape == 729:
|
| 117 |
+
json_config = os.path.join(os.path.dirname(os.path.realpath(__file__)), "clip_vision_siglip_384.json")
|
| 118 |
+
elif embed_shape == 1024:
|
| 119 |
+
json_config = os.path.join(os.path.dirname(os.path.realpath(__file__)), "clip_vision_siglip_512.json")
|
| 120 |
+
elif embed_shape == 577:
|
| 121 |
+
if "multi_modal_projector.linear_1.bias" in sd:
|
| 122 |
+
json_config = os.path.join(os.path.dirname(os.path.realpath(__file__)), "clip_vision_config_vitl_336_llava.json")
|
| 123 |
+
else:
|
| 124 |
+
json_config = os.path.join(os.path.dirname(os.path.realpath(__file__)), "clip_vision_config_vitl_336.json")
|
| 125 |
+
else:
|
| 126 |
+
json_config = os.path.join(os.path.dirname(os.path.realpath(__file__)), "clip_vision_config_vitl.json")
|
| 127 |
+
elif "embeddings.patch_embeddings.projection.weight" in sd:
|
| 128 |
+
json_config = os.path.join(os.path.join(os.path.dirname(os.path.realpath(__file__)), "image_encoders"), "dino2_giant.json")
|
| 129 |
+
else:
|
| 130 |
+
return None
|
| 131 |
+
|
| 132 |
+
clip = ClipVisionModel(json_config)
|
| 133 |
+
m, u = clip.load_sd(sd)
|
| 134 |
+
if len(m) > 0:
|
| 135 |
+
logging.warning("missing clip vision: {}".format(m))
|
| 136 |
+
u = set(u)
|
| 137 |
+
keys = list(sd.keys())
|
| 138 |
+
for k in keys:
|
| 139 |
+
if k not in u:
|
| 140 |
+
sd.pop(k)
|
| 141 |
+
return clip
|
| 142 |
+
|
| 143 |
+
def load(ckpt_path):
|
| 144 |
+
sd = load_torch_file(ckpt_path)
|
| 145 |
+
if "visual.transformer.resblocks.0.attn.in_proj_weight" in sd:
|
| 146 |
+
return load_clipvision_from_sd(sd, prefix="visual.", convert_keys=True)
|
| 147 |
+
else:
|
| 148 |
+
return load_clipvision_from_sd(sd)
|