mihaiciorobitca commited on
Commit
babf923
·
verified ·
1 Parent(s): 23200b5

Add files using upload-large-folder tool

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .venv-backups/25365439/venv-main-2025-08-28-0900.txt +173 -0
  2. .venv-backups/25365439/venv-main-2025-08-28-1130.txt +173 -0
  3. .venv-backups/25365439/venv-main-2025-08-28-1300.txt +173 -0
  4. .venv-backups/25365439/venv-main-2025-08-28-1330.txt +173 -0
  5. .venv-backups/25468028/backup.log +3 -0
  6. .venv-backups/25468028/venv-main-2025-08-30-0852.txt +165 -0
  7. .venv-backups/25474989/backup.log +12 -0
  8. .venv-backups/25474989/venv-main-2025-08-30-1530.txt +173 -0
  9. .venv-backups/25474989/venv-main-2025-08-30-1600.txt +173 -0
  10. .venv-backups/25474989/venv-main-2025-08-30-1730.txt +173 -0
  11. .venv-backups/25478920/backup.log +63 -0
  12. .venv-backups/25478920/venv-main-2025-08-30-1753.txt +165 -0
  13. .venv-backups/25478920/venv-main-2025-08-30-1900.txt +173 -0
  14. .venv-backups/25478920/venv-main-2025-08-30-2230.txt +173 -0
  15. .venv-backups/25478920/venv-main-2025-08-30-2300.txt +173 -0
  16. .venv-backups/25478920/venv-main-2025-08-30-2330.txt +173 -0
  17. .venv-backups/25478920/venv-main-2025-08-31-0000.txt +173 -0
  18. .venv-backups/25478920/venv-main-2025-08-31-0030.txt +173 -0
  19. .venv-backups/25478920/venv-main-2025-08-31-0100.txt +173 -0
  20. .venv-backups/25478920/venv-main-2025-08-31-0130.txt +173 -0
  21. .venv-backups/25478920/venv-main-2025-08-31-0200.txt +173 -0
  22. .venv-backups/25478920/venv-main-2025-08-31-0230.txt +173 -0
  23. .venv-backups/25478920/venv-main-2025-08-31-0300.txt +173 -0
  24. .venv-backups/25478920/venv-main-2025-08-31-0330.txt +173 -0
  25. .venv-backups/25478920/venv-main-2025-08-31-0400.txt +173 -0
  26. .venv-backups/25478920/venv-main-2025-08-31-0430.txt +173 -0
  27. .venv-backups/25478920/venv-main-2025-08-31-0500.txt +173 -0
  28. .venv-backups/25478920/venv-main-2025-08-31-0530.txt +173 -0
  29. .venv-backups/25478920/venv-main-2025-08-31-0600.txt +173 -0
  30. .venv-backups/25478920/venv-main-2025-08-31-0630.txt +173 -0
  31. .venv-backups/25478920/venv-main-2025-09-03-0700.txt +173 -0
  32. .venv-backups/25478920/venv-main-2025-09-03-0800.txt +173 -0
  33. .venv-backups/25478920/venv-main-latest.txt +173 -0
  34. ComfyUI/.ipynb_checkpoints/install-checkpoint.sh +80 -0
  35. ComfyUI/alembic_db/README.md +4 -0
  36. ComfyUI/alembic_db/env.py +64 -0
  37. ComfyUI/alembic_db/script.py.mako +28 -0
  38. ComfyUI/api_server/__init__.py +0 -0
  39. ComfyUI/app/__init__.py +0 -0
  40. ComfyUI/app/app_settings.py +65 -0
  41. ComfyUI/app/custom_node_manager.py +145 -0
  42. ComfyUI/app/frontend_management.py +361 -0
  43. ComfyUI/app/logger.py +98 -0
  44. ComfyUI/app/model_manager.py +184 -0
  45. ComfyUI/app/user_manager.py +436 -0
  46. ComfyUI/comfy/checkpoint_pickle.py +13 -0
  47. ComfyUI/comfy/cli_args.py +237 -0
  48. ComfyUI/comfy/clip_config_bigg.json +23 -0
  49. ComfyUI/comfy/clip_model.py +244 -0
  50. 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)