comfy-env 0.0.25__tar.gz → 0.0.27__tar.gz

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.
Files changed (43) hide show
  1. {comfy_env-0.0.25 → comfy_env-0.0.27}/PKG-INFO +1 -1
  2. {comfy_env-0.0.25 → comfy_env-0.0.27}/pyproject.toml +1 -1
  3. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/install.py +61 -1
  4. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/wheel_sources.yml +29 -25
  5. {comfy_env-0.0.25 → comfy_env-0.0.27}/.github/workflows/publish.yml +0 -0
  6. {comfy_env-0.0.25 → comfy_env-0.0.27}/.gitignore +0 -0
  7. {comfy_env-0.0.25 → comfy_env-0.0.27}/LICENSE +0 -0
  8. {comfy_env-0.0.25 → comfy_env-0.0.27}/README.md +0 -0
  9. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/__init__.py +0 -0
  10. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/cli.py +0 -0
  11. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/decorator.py +0 -0
  12. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/env/__init__.py +0 -0
  13. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/env/config.py +0 -0
  14. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/env/config_file.py +0 -0
  15. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/env/cuda_gpu_detection.py +0 -0
  16. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/env/manager.py +0 -0
  17. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/env/platform/__init__.py +0 -0
  18. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/env/platform/base.py +0 -0
  19. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/env/platform/darwin.py +0 -0
  20. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/env/platform/linux.py +0 -0
  21. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/env/platform/windows.py +0 -0
  22. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/env/security.py +0 -0
  23. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/errors.py +0 -0
  24. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/ipc/__init__.py +0 -0
  25. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/ipc/bridge.py +0 -0
  26. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/ipc/protocol.py +0 -0
  27. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/ipc/tensor.py +0 -0
  28. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/ipc/torch_bridge.py +0 -0
  29. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/ipc/transport.py +0 -0
  30. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/ipc/worker.py +0 -0
  31. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/nodes.py +0 -0
  32. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/pixi.py +0 -0
  33. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/registry.py +0 -0
  34. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/resolver.py +0 -0
  35. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/stubs/__init__.py +0 -0
  36. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/stubs/folder_paths.py +0 -0
  37. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/workers/__init__.py +0 -0
  38. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/workers/base.py +0 -0
  39. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/workers/pool.py +0 -0
  40. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/workers/tensor_utils.py +0 -0
  41. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/workers/torch_mp.py +0 -0
  42. {comfy_env-0.0.25 → comfy_env-0.0.27}/src/comfy_env/workers/venv.py +0 -0
  43. {comfy_env-0.0.25 → comfy_env-0.0.27}/untitled.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: comfy-env
3
- Version: 0.0.25
3
+ Version: 0.0.27
4
4
  Summary: Environment management for ComfyUI custom nodes - CUDA wheel resolution and process isolation
5
5
  Project-URL: Homepage, https://github.com/PozzettiAndrea/comfy-env
6
6
  Project-URL: Repository, https://github.com/PozzettiAndrea/comfy-env
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "comfy-env"
3
- version = "0.0.25"
3
+ version = "0.0.27"
4
4
  description = "Environment management for ComfyUI custom nodes - CUDA wheel resolution and process isolation"
5
5
  readme = "README.md"
6
6
  license = {text = "MIT"}
@@ -24,7 +24,7 @@ import sys
24
24
  from pathlib import Path
25
25
  from typing import Any, Callable, Dict, List, Optional, Set, Union
26
26
 
27
- from .env.config import IsolatedEnv, NodeReq, SystemConfig
27
+ from .env.config import IsolatedEnv, LocalConfig, NodeReq, SystemConfig
28
28
  from .env.config_file import load_config, discover_config
29
29
  from .env.manager import IsolatedEnvManager
30
30
  from .errors import CUDANotFoundError, DependencyError, InstallError, WheelNotFoundError
@@ -254,6 +254,9 @@ def install(
254
254
  return _install_isolated(env_config, node_dir, log, dry_run)
255
255
  elif env_config:
256
256
  return _install_inplace(env_config, node_dir, log, dry_run, verify_wheels)
257
+ elif full_config.has_local:
258
+ # Handle [local.cuda] and [local.packages] without isolated env
259
+ return _install_local(full_config.local, node_dir, log, dry_run)
257
260
  else:
258
261
  return True
259
262
 
@@ -353,6 +356,63 @@ def _install_inplace(
353
356
  return True
354
357
 
355
358
 
359
+ def _install_local(
360
+ local_config: LocalConfig,
361
+ node_dir: Path,
362
+ log: Callable[[str], None],
363
+ dry_run: bool,
364
+ ) -> bool:
365
+ """Install local packages into current environment (no isolated venv)."""
366
+ log("Installing local packages into host environment")
367
+
368
+ # Install MSVC runtime on Windows (required for CUDA/PyTorch native extensions)
369
+ if sys.platform == "win32":
370
+ log("Installing MSVC runtime for Windows...")
371
+ if not dry_run:
372
+ _pip_install(["msvc-runtime"], no_deps=False, log=log)
373
+
374
+ # Detect runtime environment
375
+ env = RuntimeEnv.detect()
376
+ log(f"Detected environment: {env}")
377
+
378
+ # Check CUDA requirement
379
+ if not env.cuda_version and local_config.cuda_packages:
380
+ raise CUDANotFoundError(package=", ".join(local_config.cuda_packages.keys()))
381
+
382
+ # Convert cuda_packages dict to list of specs
383
+ cuda_packages = []
384
+ for pkg, ver in local_config.cuda_packages.items():
385
+ if ver:
386
+ cuda_packages.append(f"{pkg}=={ver}")
387
+ else:
388
+ cuda_packages.append(pkg)
389
+
390
+ if dry_run:
391
+ log("\nDry run - would install:")
392
+ for pkg in cuda_packages:
393
+ log(f" {pkg}")
394
+ if local_config.requirements:
395
+ log(" Regular packages:")
396
+ for pkg in local_config.requirements:
397
+ log(f" {pkg}")
398
+ return True
399
+
400
+ # Install CUDA packages
401
+ if cuda_packages:
402
+ log(f"\nInstalling {len(cuda_packages)} CUDA packages...")
403
+ for req in cuda_packages:
404
+ package, version = parse_wheel_requirement(req)
405
+ _install_cuda_package(package, version, env, [], log)
406
+
407
+ # Install regular packages
408
+ if local_config.requirements:
409
+ log(f"\nInstalling {len(local_config.requirements)} regular packages...")
410
+ _pip_install(local_config.requirements, no_deps=False, log=log)
411
+
412
+ log("\nLocal installation complete!")
413
+ return True
414
+
415
+
356
416
  def _get_install_info(
357
417
  package: str,
358
418
  version: Optional[str],
@@ -58,38 +58,48 @@ packages:
58
58
  description: PyTorch3D - 3D deep learning library
59
59
 
60
60
  # ===========================================================================
61
- # PozzettiAndrea wheel repos (GitHub Pages indexes)
61
+ # PozzettiAndrea cuda-wheels (unified PEP 503 index)
62
+ # https://pozzettiandrea.github.io/cuda-wheels
62
63
  # ===========================================================================
63
64
  nvdiffrast:
64
- method: github_index
65
- index_url: "https://pozzettiandrea.github.io/nvdiffrast-full-wheels/cu{cuda_short}-torch{torch_short}/"
65
+ method: index
66
+ index_url: "https://pozzettiandrea.github.io/cuda-wheels"
66
67
  description: NVIDIA differentiable rasterizer
67
68
 
68
69
  cumesh:
69
- method: github_index
70
- index_url: "https://pozzettiandrea.github.io/cumesh-wheels/cu{cuda_short}-torch{torch_short}/"
70
+ method: index
71
+ index_url: "https://pozzettiandrea.github.io/cuda-wheels"
71
72
  description: CUDA-accelerated mesh utilities
72
73
 
73
74
  o_voxel:
74
- method: github_index
75
- index_url: "https://pozzettiandrea.github.io/ovoxel-wheels/cu{cuda_short}-torch{torch_short}/"
75
+ method: index
76
+ index_url: "https://pozzettiandrea.github.io/cuda-wheels"
76
77
  description: O-Voxel CUDA extension for TRELLIS
77
78
 
78
79
  flex_gemm:
79
- method: github_index
80
- index_url: "https://pozzettiandrea.github.io/flexgemm-wheels/cu{cuda_short}-torch{torch_short}/"
80
+ method: index
81
+ index_url: "https://pozzettiandrea.github.io/cuda-wheels"
81
82
  description: Flexible GEMM operations
82
83
 
83
84
  nvdiffrec_render:
84
- method: github_release
85
+ method: index
86
+ index_url: "https://pozzettiandrea.github.io/cuda-wheels"
85
87
  description: NVDiffRec rendering utilities
86
- sources:
87
- - name: PozzettiAndrea
88
- url_template: "https://github.com/PozzettiAndrea/nvdiffrec_render-wheels/releases/download/cu{cuda_short}-torch{torch_short}/nvdiffrec_render-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-linux_x86_64.whl"
89
- platforms: [linux_x86_64]
90
- - name: PozzettiAndrea-windows
91
- url_template: "https://github.com/PozzettiAndrea/nvdiffrec_render-wheels/releases/download/cu{cuda_short}-torch{torch_short}/nvdiffrec_render-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-win_amd64.whl"
92
- platforms: [win_amd64]
88
+
89
+ gsplat:
90
+ method: index
91
+ index_url: "https://pozzettiandrea.github.io/cuda-wheels"
92
+ description: Gaussian splatting rasterization
93
+
94
+ cc_torch:
95
+ method: index
96
+ index_url: "https://pozzettiandrea.github.io/cuda-wheels"
97
+ description: GPU-accelerated connected components
98
+
99
+ torch_generic_nms:
100
+ method: index
101
+ index_url: "https://pozzettiandrea.github.io/cuda-wheels"
102
+ description: GPU-accelerated Non-Maximum Suppression
93
103
 
94
104
  # ===========================================================================
95
105
  # spconv - PyPI with CUDA-versioned package names
@@ -103,15 +113,9 @@ packages:
103
113
  # sageattention - Fast quantized attention
104
114
  # ===========================================================================
105
115
  sageattention:
106
- method: github_release
116
+ method: index
117
+ index_url: "https://pozzettiandrea.github.io/cuda-wheels"
107
118
  description: SageAttention - 2-5x faster than FlashAttention with quantized kernels
108
- sources:
109
- - name: kijai-hf
110
- url_template: "https://huggingface.co/Kijai/PrecompiledWheels/resolve/main/sageattention-{version}-cp312-cp312-linux_x86_64.whl"
111
- platforms: [linux_x86_64]
112
- - name: woct0rdho
113
- url_template: "https://github.com/woct0rdho/SageAttention/releases/download/v2.2.0-windows.post3/sageattention-2.2.0%2Bcu{cuda_short}torch{torch_version}.post3-cp39-abi3-win_amd64.whl"
114
- platforms: [win_amd64]
115
119
 
116
120
  # ===========================================================================
117
121
  # triton - Required for sageattention on Linux
File without changes
File without changes
File without changes
File without changes