comfy-env 0.0.65__py3-none-any.whl → 0.0.67__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- comfy_env/__init__.py +68 -122
- comfy_env/cli.py +74 -204
- comfy_env/config/__init__.py +19 -0
- comfy_env/config/parser.py +151 -0
- comfy_env/config/types.py +64 -0
- comfy_env/install.py +83 -361
- comfy_env/isolation/__init__.py +9 -0
- comfy_env/isolation/wrap.py +351 -0
- comfy_env/nodes.py +2 -2
- comfy_env/pixi/__init__.py +48 -0
- comfy_env/pixi/core.py +356 -0
- comfy_env/{resolver.py → pixi/resolver.py} +1 -14
- comfy_env/prestartup.py +60 -0
- comfy_env/templates/comfy-env-instructions.txt +30 -87
- comfy_env/templates/comfy-env.toml +69 -128
- comfy_env/workers/__init__.py +21 -32
- comfy_env/workers/base.py +1 -1
- comfy_env/workers/{torch_mp.py → mp.py} +47 -14
- comfy_env/workers/{venv.py → subprocess.py} +397 -443
- {comfy_env-0.0.65.dist-info → comfy_env-0.0.67.dist-info}/METADATA +23 -92
- comfy_env-0.0.67.dist-info/RECORD +32 -0
- comfy_env/decorator.py +0 -700
- comfy_env/env/__init__.py +0 -46
- comfy_env/env/config.py +0 -191
- comfy_env/env/config_file.py +0 -706
- comfy_env/env/manager.py +0 -636
- comfy_env/env/security.py +0 -267
- comfy_env/ipc/__init__.py +0 -55
- comfy_env/ipc/bridge.py +0 -476
- comfy_env/ipc/protocol.py +0 -265
- comfy_env/ipc/tensor.py +0 -371
- comfy_env/ipc/torch_bridge.py +0 -401
- comfy_env/ipc/transport.py +0 -318
- comfy_env/ipc/worker.py +0 -221
- comfy_env/isolation.py +0 -310
- comfy_env/pixi.py +0 -760
- comfy_env/registry.py +0 -130
- comfy_env/stub_imports.py +0 -270
- comfy_env/stubs/__init__.py +0 -1
- comfy_env/stubs/comfy/__init__.py +0 -6
- comfy_env/stubs/comfy/model_management.py +0 -58
- comfy_env/stubs/comfy/utils.py +0 -29
- comfy_env/stubs/folder_paths.py +0 -71
- comfy_env/wheel_sources.yml +0 -141
- comfy_env/workers/pool.py +0 -241
- comfy_env-0.0.65.dist-info/RECORD +0 -48
- /comfy_env/{env/cuda_gpu_detection.py → pixi/cuda_detection.py} +0 -0
- /comfy_env/{env → pixi}/platform/__init__.py +0 -0
- /comfy_env/{env → pixi}/platform/base.py +0 -0
- /comfy_env/{env → pixi}/platform/darwin.py +0 -0
- /comfy_env/{env → pixi}/platform/linux.py +0 -0
- /comfy_env/{env → pixi}/platform/windows.py +0 -0
- {comfy_env-0.0.65.dist-info → comfy_env-0.0.67.dist-info}/WHEEL +0 -0
- {comfy_env-0.0.65.dist-info → comfy_env-0.0.67.dist-info}/entry_points.txt +0 -0
- {comfy_env-0.0.65.dist-info → comfy_env-0.0.67.dist-info}/licenses/LICENSE +0 -0
comfy_env/wheel_sources.yml
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
# Wheel sources registry for CUDA packages
|
|
2
|
-
#
|
|
3
|
-
# Each package has a single wheel_template that resolves to a direct .whl URL.
|
|
4
|
-
# Users can override these in their comfy-env.toml [wheel_sources] section.
|
|
5
|
-
#
|
|
6
|
-
# Template variables:
|
|
7
|
-
# {version} - Package version (e.g., "0.4.0")
|
|
8
|
-
# {cuda_version} - Full CUDA version (e.g., "12.8")
|
|
9
|
-
# {cuda_short} - CUDA without dot (e.g., "128")
|
|
10
|
-
# {cuda_major} - CUDA major version (e.g., "12")
|
|
11
|
-
# {torch_version} - Full PyTorch version (e.g., "2.8.0")
|
|
12
|
-
# {torch_short} - PyTorch without dots (e.g., "280")
|
|
13
|
-
# {torch_mm} - PyTorch major.minor no dot (e.g., "28")
|
|
14
|
-
# {torch_dotted_mm}- PyTorch major.minor with dot (e.g., "2.8")
|
|
15
|
-
# {py_version} - Python version (e.g., "3.10")
|
|
16
|
-
# {py_short} - Python without dot (e.g., "310")
|
|
17
|
-
# {py_minor} - Python minor version only (e.g., "10")
|
|
18
|
-
# {py_tag} - Python tag (e.g., "cp310")
|
|
19
|
-
# {platform} - Platform tag (e.g., "linux_x86_64")
|
|
20
|
-
|
|
21
|
-
packages:
|
|
22
|
-
# ===========================================================================
|
|
23
|
-
# PyTorch Geometric (PyG) - official wheels
|
|
24
|
-
# https://pytorch-geometric.readthedocs.io/en/latest/install/installation.html
|
|
25
|
-
# ===========================================================================
|
|
26
|
-
torch-scatter:
|
|
27
|
-
wheel_template: "https://data.pyg.org/whl/torch-{torch_version}%2Bcu{cuda_short}/torch_scatter-{version}%2Bpt{torch_mm}cu{cuda_short}-{py_tag}-{py_tag}-{platform}.whl"
|
|
28
|
-
default_version: "2.1.2"
|
|
29
|
-
description: Scatter operations for PyTorch
|
|
30
|
-
|
|
31
|
-
torch-cluster:
|
|
32
|
-
wheel_template: "https://data.pyg.org/whl/torch-{torch_version}%2Bcu{cuda_short}/torch_cluster-{version}%2Bpt{torch_mm}cu{cuda_short}-{py_tag}-{py_tag}-{platform}.whl"
|
|
33
|
-
default_version: "1.6.3"
|
|
34
|
-
description: Clustering algorithms for PyTorch
|
|
35
|
-
|
|
36
|
-
torch-sparse:
|
|
37
|
-
wheel_template: "https://data.pyg.org/whl/torch-{torch_version}%2Bcu{cuda_short}/torch_sparse-{version}%2Bpt{torch_mm}cu{cuda_short}-{py_tag}-{py_tag}-{platform}.whl"
|
|
38
|
-
default_version: "0.6.18"
|
|
39
|
-
description: Sparse tensor operations for PyTorch
|
|
40
|
-
|
|
41
|
-
torch-spline-conv:
|
|
42
|
-
wheel_template: "https://data.pyg.org/whl/torch-{torch_version}%2Bcu{cuda_short}/torch_spline_conv-{version}%2Bpt{torch_mm}cu{cuda_short}-{py_tag}-{py_tag}-{platform}.whl"
|
|
43
|
-
default_version: "1.2.2"
|
|
44
|
-
description: Spline convolutions for PyTorch
|
|
45
|
-
|
|
46
|
-
# ===========================================================================
|
|
47
|
-
# PozzettiAndrea cuda-wheels (GitHub releases)
|
|
48
|
-
# https://github.com/PozzettiAndrea/cuda-wheels/releases
|
|
49
|
-
# ===========================================================================
|
|
50
|
-
pytorch3d:
|
|
51
|
-
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/pytorch3d-latest/pytorch3d-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
52
|
-
default_version: "0.7.9"
|
|
53
|
-
description: PyTorch3D - 3D deep learning library
|
|
54
|
-
|
|
55
|
-
nvdiffrast:
|
|
56
|
-
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/nvdiffrast-latest/nvdiffrast-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
57
|
-
default_version: "0.4.0"
|
|
58
|
-
description: NVIDIA differentiable rasterizer
|
|
59
|
-
|
|
60
|
-
cumesh:
|
|
61
|
-
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/cumesh-latest/cumesh-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
62
|
-
default_version: "0.0.1"
|
|
63
|
-
description: CUDA-accelerated mesh utilities
|
|
64
|
-
|
|
65
|
-
cubvh:
|
|
66
|
-
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/cubvh-latest/cubvh-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
67
|
-
default_version: "0.1.2"
|
|
68
|
-
description: CUDA BVH acceleration for mesh operations and marching cubes
|
|
69
|
-
|
|
70
|
-
o_voxel:
|
|
71
|
-
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/o_voxel-latest/o_voxel-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
72
|
-
default_version: "0.0.1"
|
|
73
|
-
description: O-Voxel CUDA extension for TRELLIS
|
|
74
|
-
|
|
75
|
-
flex_gemm:
|
|
76
|
-
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/flex_gemm-latest/flex_gemm-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
77
|
-
default_version: "1.0.0"
|
|
78
|
-
description: Flexible GEMM operations
|
|
79
|
-
|
|
80
|
-
nvdiffrec_render:
|
|
81
|
-
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/nvdiffrec_render-latest/nvdiffrec_render-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
82
|
-
default_version: "0.0.1"
|
|
83
|
-
description: NVDiffRec rendering utilities
|
|
84
|
-
|
|
85
|
-
gsplat:
|
|
86
|
-
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/gsplat-latest/gsplat-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
87
|
-
default_version: "1.5.3"
|
|
88
|
-
description: Gaussian splatting rasterization
|
|
89
|
-
|
|
90
|
-
cc_torch:
|
|
91
|
-
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/cc_torch-latest/cc_torch-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
92
|
-
default_version: "0.2"
|
|
93
|
-
description: GPU-accelerated connected components
|
|
94
|
-
|
|
95
|
-
torch_generic_nms:
|
|
96
|
-
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/torch_generic_nms-latest/torch_generic_nms-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
97
|
-
default_version: "0.1"
|
|
98
|
-
description: GPU-accelerated Non-Maximum Suppression
|
|
99
|
-
|
|
100
|
-
lietorch:
|
|
101
|
-
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/lietorch-latest/lietorch-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
102
|
-
default_version: "0.3"
|
|
103
|
-
description: Lie group operations for PyTorch (DPVO dependency)
|
|
104
|
-
|
|
105
|
-
sageattention:
|
|
106
|
-
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/sageattention-latest/sageattention-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
107
|
-
default_version: "2.2.0"
|
|
108
|
-
description: SageAttention - 2-5x faster than FlashAttention with quantized kernels
|
|
109
|
-
|
|
110
|
-
dpvo-cuda:
|
|
111
|
-
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/dpvo_cuda-latest/dpvo_cuda-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
112
|
-
default_version: "0.0.0"
|
|
113
|
-
description: DPVO CUDA extensions (cuda_corr, cuda_ba, lietorch_backends) - torch 2.4 only
|
|
114
|
-
|
|
115
|
-
# ===========================================================================
|
|
116
|
-
# detectron2 - Facebook's detection library
|
|
117
|
-
# https://github.com/facebookresearch/detectron2
|
|
118
|
-
# Prebuilt wheels from miropsota's torch_packages_builder
|
|
119
|
-
# ===========================================================================
|
|
120
|
-
detectron2:
|
|
121
|
-
find_links: "https://miropsota.github.io/torch_packages_builder/detectron2/"
|
|
122
|
-
default_version: "0.6"
|
|
123
|
-
description: Detectron2 - Facebook's detection and segmentation library
|
|
124
|
-
|
|
125
|
-
# ===========================================================================
|
|
126
|
-
# flash-attn - Dao-AILab (Linux x86_64)
|
|
127
|
-
# For other platforms, users should add custom wheel_source in their config
|
|
128
|
-
# ===========================================================================
|
|
129
|
-
flash-attn:
|
|
130
|
-
wheel_template: "https://github.com/Dao-AILab/flash-attention/releases/download/v{version}/flash_attn-{version}%2Bcu{cuda_major}torch{torch_dotted_mm}cxx11abiTRUE-{py_tag}-{py_tag}-linux_x86_64.whl"
|
|
131
|
-
description: Flash Attention for fast transformer inference (Linux x86_64)
|
|
132
|
-
|
|
133
|
-
# ===========================================================================
|
|
134
|
-
# spconv - Sparse convolution library
|
|
135
|
-
# PyPI with CUDA-versioned package names (spconv-cu124, spconv-cu126, etc.)
|
|
136
|
-
# Note: This uses a special package_name field, not wheel_template
|
|
137
|
-
# ===========================================================================
|
|
138
|
-
spconv:
|
|
139
|
-
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/spconv_cu{cuda_short}-latest/spconv_cu{cuda_short}-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
140
|
-
default_version: "2.3.8"
|
|
141
|
-
description: Sparse convolution library
|
comfy_env/workers/pool.py
DELETED
|
@@ -1,241 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
WorkerPool - Global registry and management of named workers.
|
|
3
|
-
|
|
4
|
-
Provides a simple API for getting workers by name:
|
|
5
|
-
|
|
6
|
-
from comfy_env.workers import get_worker
|
|
7
|
-
|
|
8
|
-
worker = get_worker("sam3d")
|
|
9
|
-
result = worker.call_module("my_module", "my_func", image=tensor)
|
|
10
|
-
|
|
11
|
-
Workers are registered at startup and reused across calls:
|
|
12
|
-
|
|
13
|
-
from comfy_env.workers import register_worker, TorchMPWorker
|
|
14
|
-
|
|
15
|
-
register_worker("default", TorchMPWorker())
|
|
16
|
-
register_worker("sam3d", PersistentVenvWorker(
|
|
17
|
-
python="/path/to/venv/bin/python",
|
|
18
|
-
working_dir="/path/to/nodes",
|
|
19
|
-
))
|
|
20
|
-
"""
|
|
21
|
-
|
|
22
|
-
import atexit
|
|
23
|
-
import threading
|
|
24
|
-
from typing import Dict, Optional, Union
|
|
25
|
-
from pathlib import Path
|
|
26
|
-
|
|
27
|
-
from .base import Worker
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
class WorkerPool:
|
|
31
|
-
"""
|
|
32
|
-
Singleton pool of named workers.
|
|
33
|
-
|
|
34
|
-
Manages worker lifecycle, provides access by name, handles cleanup.
|
|
35
|
-
"""
|
|
36
|
-
|
|
37
|
-
_instance: Optional["WorkerPool"] = None
|
|
38
|
-
_lock = threading.Lock()
|
|
39
|
-
|
|
40
|
-
def __new__(cls):
|
|
41
|
-
if cls._instance is None:
|
|
42
|
-
with cls._lock:
|
|
43
|
-
if cls._instance is None:
|
|
44
|
-
cls._instance = super().__new__(cls)
|
|
45
|
-
cls._instance._initialized = False
|
|
46
|
-
return cls._instance
|
|
47
|
-
|
|
48
|
-
def __init__(self):
|
|
49
|
-
if self._initialized:
|
|
50
|
-
return
|
|
51
|
-
self._initialized = True
|
|
52
|
-
self._workers: Dict[str, Worker] = {}
|
|
53
|
-
self._factories: Dict[str, callable] = {}
|
|
54
|
-
self._worker_lock = threading.Lock()
|
|
55
|
-
|
|
56
|
-
def register(
|
|
57
|
-
self,
|
|
58
|
-
name: str,
|
|
59
|
-
worker: Optional[Worker] = None,
|
|
60
|
-
factory: Optional[callable] = None,
|
|
61
|
-
) -> None:
|
|
62
|
-
"""
|
|
63
|
-
Register a worker or worker factory.
|
|
64
|
-
|
|
65
|
-
Args:
|
|
66
|
-
name: Name to register under.
|
|
67
|
-
worker: Pre-created worker instance.
|
|
68
|
-
factory: Callable that creates worker on first use (lazy).
|
|
69
|
-
|
|
70
|
-
Only one of worker or factory should be provided.
|
|
71
|
-
"""
|
|
72
|
-
if worker is not None and factory is not None:
|
|
73
|
-
raise ValueError("Provide either worker or factory, not both")
|
|
74
|
-
if worker is None and factory is None:
|
|
75
|
-
raise ValueError("Must provide worker or factory")
|
|
76
|
-
|
|
77
|
-
with self._worker_lock:
|
|
78
|
-
# Shutdown existing worker if replacing
|
|
79
|
-
if name in self._workers:
|
|
80
|
-
try:
|
|
81
|
-
self._workers[name].shutdown()
|
|
82
|
-
except:
|
|
83
|
-
pass
|
|
84
|
-
|
|
85
|
-
if worker is not None:
|
|
86
|
-
self._workers[name] = worker
|
|
87
|
-
self._factories.pop(name, None)
|
|
88
|
-
else:
|
|
89
|
-
self._factories[name] = factory
|
|
90
|
-
self._workers.pop(name, None)
|
|
91
|
-
|
|
92
|
-
def get(self, name: str) -> Worker:
|
|
93
|
-
"""
|
|
94
|
-
Get a worker by name.
|
|
95
|
-
|
|
96
|
-
Args:
|
|
97
|
-
name: Registered worker name.
|
|
98
|
-
|
|
99
|
-
Returns:
|
|
100
|
-
The worker instance.
|
|
101
|
-
|
|
102
|
-
Raises:
|
|
103
|
-
KeyError: If no worker registered with that name.
|
|
104
|
-
"""
|
|
105
|
-
with self._worker_lock:
|
|
106
|
-
# Check for existing worker
|
|
107
|
-
if name in self._workers:
|
|
108
|
-
worker = self._workers[name]
|
|
109
|
-
if worker.is_alive():
|
|
110
|
-
return worker
|
|
111
|
-
# Worker died, try to recreate from factory
|
|
112
|
-
if name not in self._factories:
|
|
113
|
-
raise RuntimeError(f"Worker '{name}' died and no factory to recreate")
|
|
114
|
-
|
|
115
|
-
# Create from factory
|
|
116
|
-
if name in self._factories:
|
|
117
|
-
worker = self._factories[name]()
|
|
118
|
-
self._workers[name] = worker
|
|
119
|
-
return worker
|
|
120
|
-
|
|
121
|
-
raise KeyError(f"No worker registered with name: {name}")
|
|
122
|
-
|
|
123
|
-
def shutdown(self, name: Optional[str] = None) -> None:
|
|
124
|
-
"""
|
|
125
|
-
Shutdown workers.
|
|
126
|
-
|
|
127
|
-
Args:
|
|
128
|
-
name: If provided, shutdown only this worker.
|
|
129
|
-
If None, shutdown all workers.
|
|
130
|
-
"""
|
|
131
|
-
with self._worker_lock:
|
|
132
|
-
if name is not None:
|
|
133
|
-
if name in self._workers:
|
|
134
|
-
try:
|
|
135
|
-
self._workers[name].shutdown()
|
|
136
|
-
except:
|
|
137
|
-
pass
|
|
138
|
-
del self._workers[name]
|
|
139
|
-
else:
|
|
140
|
-
for worker in self._workers.values():
|
|
141
|
-
try:
|
|
142
|
-
worker.shutdown()
|
|
143
|
-
except:
|
|
144
|
-
pass
|
|
145
|
-
self._workers.clear()
|
|
146
|
-
|
|
147
|
-
def list_workers(self) -> Dict[str, str]:
|
|
148
|
-
"""
|
|
149
|
-
List all registered workers.
|
|
150
|
-
|
|
151
|
-
Returns:
|
|
152
|
-
Dict of name -> status string.
|
|
153
|
-
"""
|
|
154
|
-
with self._worker_lock:
|
|
155
|
-
result = {}
|
|
156
|
-
for name, worker in self._workers.items():
|
|
157
|
-
status = "alive" if worker.is_alive() else "dead"
|
|
158
|
-
result[name] = f"{type(worker).__name__} ({status})"
|
|
159
|
-
for name in self._factories:
|
|
160
|
-
if name not in result:
|
|
161
|
-
result[name] = f"factory (not started)"
|
|
162
|
-
return result
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
# Global pool instance
|
|
166
|
-
_pool = WorkerPool()
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
def get_worker(name: str) -> Worker:
|
|
170
|
-
"""
|
|
171
|
-
Get a worker by name from the global pool.
|
|
172
|
-
|
|
173
|
-
Args:
|
|
174
|
-
name: Registered worker name.
|
|
175
|
-
|
|
176
|
-
Returns:
|
|
177
|
-
Worker instance.
|
|
178
|
-
|
|
179
|
-
Example:
|
|
180
|
-
worker = get_worker("sam3d")
|
|
181
|
-
result = worker.call_module("my_module", "my_func", image=tensor)
|
|
182
|
-
"""
|
|
183
|
-
return _pool.get(name)
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
def register_worker(
|
|
187
|
-
name: str,
|
|
188
|
-
worker: Optional[Worker] = None,
|
|
189
|
-
factory: Optional[callable] = None,
|
|
190
|
-
) -> None:
|
|
191
|
-
"""
|
|
192
|
-
Register a worker in the global pool.
|
|
193
|
-
|
|
194
|
-
Args:
|
|
195
|
-
name: Name to register under.
|
|
196
|
-
worker: Pre-created worker instance.
|
|
197
|
-
factory: Callable that creates worker on demand.
|
|
198
|
-
|
|
199
|
-
Example:
|
|
200
|
-
# Register pre-created worker
|
|
201
|
-
register_worker("default", TorchMPWorker())
|
|
202
|
-
|
|
203
|
-
# Register factory for lazy creation
|
|
204
|
-
register_worker("sam3d", factory=lambda: PersistentVenvWorker(
|
|
205
|
-
python="/path/to/venv/bin/python",
|
|
206
|
-
))
|
|
207
|
-
"""
|
|
208
|
-
_pool.register(name, worker=worker, factory=factory)
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
def shutdown_workers(name: Optional[str] = None) -> None:
|
|
212
|
-
"""
|
|
213
|
-
Shutdown workers in the global pool.
|
|
214
|
-
|
|
215
|
-
Args:
|
|
216
|
-
name: If provided, shutdown only this worker.
|
|
217
|
-
If None, shutdown all workers.
|
|
218
|
-
"""
|
|
219
|
-
_pool.shutdown(name)
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
def list_workers() -> Dict[str, str]:
|
|
223
|
-
"""
|
|
224
|
-
List all registered workers.
|
|
225
|
-
|
|
226
|
-
Returns:
|
|
227
|
-
Dict of name -> status description.
|
|
228
|
-
"""
|
|
229
|
-
return _pool.list_workers()
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
# Register default worker (TorchMPWorker) on import
|
|
233
|
-
def _register_default():
|
|
234
|
-
from .torch_mp import TorchMPWorker
|
|
235
|
-
register_worker("default", factory=lambda: TorchMPWorker(name="default"))
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
_register_default()
|
|
239
|
-
|
|
240
|
-
# Cleanup on exit
|
|
241
|
-
atexit.register(lambda: shutdown_workers())
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
comfy_env/__init__.py,sha256=DvOCFCq-EuXZ_e6vsPCObgTPYSRLZqiG3w35SOD-e4E,4101
|
|
2
|
-
comfy_env/cli.py,sha256=Pjzb-jsoH67lyHxmBFOWvasWX01eHFE_BEjUk1l-uEo,14509
|
|
3
|
-
comfy_env/decorator.py,sha256=SL2duhj8EpQuK-TuEgNA9anTgQI9gWza5ikPlLXESjA,27018
|
|
4
|
-
comfy_env/errors.py,sha256=q-C3vyrPa_kk_Ao8l17mIGfJiG2IR0hCFV0GFcNLmcI,9924
|
|
5
|
-
comfy_env/install.py,sha256=nfzGifXVd87a6dnwY3GtktrXpS7fjWuWF-QV9hh2e94,15657
|
|
6
|
-
comfy_env/isolation.py,sha256=a-q6mA9tzD27kZSZCTioSKlK-3kpRFKYA23V_75OmaI,9286
|
|
7
|
-
comfy_env/nodes.py,sha256=CWUe35jU5SKk4ur-SddZePdqWgxJDlxGhpcJiu5pAK4,4354
|
|
8
|
-
comfy_env/pixi.py,sha256=DnDvX3aMtwbo8XPJUt4JYADUyWcXGJ72PqcpN7Fkg_A,27440
|
|
9
|
-
comfy_env/registry.py,sha256=w-QwvAPFlCrBYRAv4cXkp2zujQPZn8Fk5DUxKCtox8o,3430
|
|
10
|
-
comfy_env/resolver.py,sha256=WoNIo2IfTR2RlEf_HQl66eAeMa2R2pmLof_UdK-0RNE,6714
|
|
11
|
-
comfy_env/stub_imports.py,sha256=qOYxCJ8BbIfMHGBfqC5KGZSK6AK-iqmSjWi8ZCP8SAM,8425
|
|
12
|
-
comfy_env/env/__init__.py,sha256=o8-k213v2dnK1t2qsZW1z-zl5tLX65aWcEj7AFdrHwk,1126
|
|
13
|
-
comfy_env/env/config.py,sha256=-hrGRU4Q7rRV55Q73KkkfKe6dLLRLTtuOE7triAbYEk,7572
|
|
14
|
-
comfy_env/env/config_file.py,sha256=MXear-3a2wjagRVpP869XIiFHwFrM_PNIH27SRPQbbU,24103
|
|
15
|
-
comfy_env/env/cuda_gpu_detection.py,sha256=sqB3LjvGNdV4eFqiARQGfyecBM3ZiUmeh6nG0YCRYQw,9751
|
|
16
|
-
comfy_env/env/manager.py,sha256=-qdbZDsbNfs70onVbC7mhKCzNsxYx3WmG7ttlBinhGI,23659
|
|
17
|
-
comfy_env/env/security.py,sha256=dNSitAnfBNVdvxgBBntYw33AJaCs_S1MHb7KJhAVYzM,8171
|
|
18
|
-
comfy_env/env/platform/__init__.py,sha256=Nb5MPZIEeanSMEWwqU4p4bnEKTJn1tWcwobnhq9x9IY,614
|
|
19
|
-
comfy_env/env/platform/base.py,sha256=iS0ptTTVjXRwPU4qWUdvHI7jteuzxGSjWr5BUQ7hGiU,2453
|
|
20
|
-
comfy_env/env/platform/darwin.py,sha256=HK3VkLT6DfesAnIXwx2IaUFHTBclF0xTQnC7azWY6Kc,1552
|
|
21
|
-
comfy_env/env/platform/linux.py,sha256=xLp8FEbFqZLQrzIZBI9z3C4g23Ab1ASTHLsXDzsdCoA,2062
|
|
22
|
-
comfy_env/env/platform/windows.py,sha256=FCOCgpzGzorY9-HueMlJUR8DxM2eH-cj9iZk6K026Is,10891
|
|
23
|
-
comfy_env/ipc/__init__.py,sha256=pTjgJn5YJxLXmEvuKh3lkCEJQs-6W6_F01jfkFMUi0c,1375
|
|
24
|
-
comfy_env/ipc/bridge.py,sha256=zcyN3xzV4WWBrBFNwCniPBR58dLCg46-k9TtyW5U000,16437
|
|
25
|
-
comfy_env/ipc/protocol.py,sha256=gfWe5yEDUn4QWhcdWFcxn40GqxlW1Uf23j0edOzPPng,7951
|
|
26
|
-
comfy_env/ipc/tensor.py,sha256=DyU28GymKkLPVwzZyKdm2Av222hdaycMgv3KdL5mtO0,12009
|
|
27
|
-
comfy_env/ipc/torch_bridge.py,sha256=WzdwDJa3N_1fEl9OeZxikvMbwryO5P63o0WmEDpS18A,13206
|
|
28
|
-
comfy_env/ipc/transport.py,sha256=XQlRcfQsd4nd909KIYnZKvsS3ksGpGjyVucn8jvmLIU,9698
|
|
29
|
-
comfy_env/ipc/worker.py,sha256=oxTLF9xXrl8CRx_JVNBdkxZh35NuzfkdxhaUtUuXogs,6661
|
|
30
|
-
comfy_env/stubs/__init__.py,sha256=jMeWEKY30y8QqYX9AUyuZbmm607erQTc4N7YaDoAH00,38
|
|
31
|
-
comfy_env/stubs/folder_paths.py,sha256=K90J34EG6LD4eZP8YG-xMeBmqwpp_wA8E92DKMXd1GQ,2189
|
|
32
|
-
comfy_env/stubs/comfy/__init__.py,sha256=-y4L6gX21vrI2V8MvNaMeHOcAn5kUNK3jUyLvtXRmJQ,173
|
|
33
|
-
comfy_env/stubs/comfy/model_management.py,sha256=Khx8Qa3NutKPLTn9oSM3VLeATUOg1fe4QCjxdxXd6eE,1462
|
|
34
|
-
comfy_env/stubs/comfy/utils.py,sha256=s3t_KLj_-w1Uj3A3iAy69wIk4Ggklojw5hsDNb69Pcc,776
|
|
35
|
-
comfy_env/templates/comfy-env-instructions.txt,sha256=Q38Hb_YdN0a8rTxn7l5ON4JDPba7XgVftDqfEy-8I2I,3004
|
|
36
|
-
comfy_env/templates/comfy-env.toml,sha256=AcvPtlPlpqmwbz7vYy6SZCZOm3pL0HHXhsZwpAYXRAU,6466
|
|
37
|
-
comfy_env/workers/__init__.py,sha256=IKZwOvrWOGqBLDUIFAalg4CdqzJ_YnAdxo2Ha7gZTJ0,1467
|
|
38
|
-
comfy_env/workers/base.py,sha256=ZILYXlvGCWuCZXmjKqfG8VeD19ihdYaASdlbasl2BMo,2312
|
|
39
|
-
comfy_env/workers/pool.py,sha256=MtjeOWfvHSCockq8j1gfnxIl-t01GSB79T5N4YB82Lg,6956
|
|
40
|
-
comfy_env/workers/tensor_utils.py,sha256=TCuOAjJymrSbkgfyvcKtQ_KbVWTqSwP9VH_bCaFLLq8,6409
|
|
41
|
-
comfy_env/workers/torch_mp.py,sha256=TnsCoBHEJBXEoBkx7WiCd9tBAlzFtMOw1dk_7_zGJZY,22288
|
|
42
|
-
comfy_env/workers/venv.py,sha256=WdK8GZkLXyzkCI0Xdber_BJhJRP5eXMF0M2yd8GU-Zk,59809
|
|
43
|
-
comfy_env/wheel_sources.yml,sha256=uU0YJmWaiLAicQNN9VYS8PZevlP2NOH6mBUE294dvAo,8156
|
|
44
|
-
comfy_env-0.0.65.dist-info/METADATA,sha256=PGpxA6Rue44EzyH8WRMmwbpOW0OFZJVwT3cnPcDvKjc,8735
|
|
45
|
-
comfy_env-0.0.65.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
46
|
-
comfy_env-0.0.65.dist-info/entry_points.txt,sha256=J4fXeqgxU_YenuW_Zxn_pEL7J-3R0--b6MS5t0QmAr0,49
|
|
47
|
-
comfy_env-0.0.65.dist-info/licenses/LICENSE,sha256=E68QZMMpW4P2YKstTZ3QU54HRQO8ecew09XZ4_Vn870,1093
|
|
48
|
-
comfy_env-0.0.65.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|