comfy-env 0.0.41__py3-none-any.whl → 0.0.43__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/registry.py CHANGED
@@ -3,13 +3,9 @@
3
3
  This module loads package configurations from wheel_sources.yml and provides
4
4
  lookup functions for the install module.
5
5
 
6
- Install method types:
7
- - "index": Use pip --extra-index-url (PEP 503 simple repository)
8
- - "github_index": GitHub Pages index (--find-links)
9
- - "find_links": Use pip --find-links (for PyG, etc.)
10
- - "pypi_variant": Package name varies by CUDA version (e.g., spconv-cu124)
11
- - "github_release": Direct wheel URL from GitHub releases with fallback sources
12
- - "pypi": Standard PyPI install
6
+ Each package has either:
7
+ - wheel_template: Direct URL template for .whl file
8
+ - package_name: PyPI package name template (for packages like spconv-cu124)
13
9
  """
14
10
 
15
11
  from pathlib import Path
@@ -34,8 +30,6 @@ def get_cuda_short2(cuda_version: str) -> str:
34
30
  '124'
35
31
  >>> get_cuda_short2("12.8")
36
32
  '128'
37
- >>> get_cuda_short2("11.8")
38
- '118'
39
33
  """
40
34
  parts = cuda_version.split(".")
41
35
  major = parts[0]
@@ -89,3 +83,48 @@ def is_registered(package: str) -> bool:
89
83
  True if package is registered
90
84
  """
91
85
  return package.lower() in PACKAGE_REGISTRY
86
+
87
+
88
+ def get_wheel_template(package: str) -> Optional[str]:
89
+ """Get wheel_template for a package.
90
+
91
+ Args:
92
+ package: Package name (case-insensitive)
93
+
94
+ Returns:
95
+ wheel_template string or None if not found/not available
96
+ """
97
+ info = get_package_info(package)
98
+ if info:
99
+ return info.get("wheel_template")
100
+ return None
101
+
102
+
103
+ def get_package_name_template(package: str) -> Optional[str]:
104
+ """Get package_name template for PyPI variant packages (like spconv).
105
+
106
+ Args:
107
+ package: Package name (case-insensitive)
108
+
109
+ Returns:
110
+ package_name template string or None if not found/not available
111
+ """
112
+ info = get_package_info(package)
113
+ if info:
114
+ return info.get("package_name")
115
+ return None
116
+
117
+
118
+ def get_default_version(package: str) -> Optional[str]:
119
+ """Get default_version for a package.
120
+
121
+ Args:
122
+ package: Package name (case-insensitive)
123
+
124
+ Returns:
125
+ default_version string or None if not specified
126
+ """
127
+ info = get_package_info(package)
128
+ if info:
129
+ return info.get("default_version")
130
+ return None
comfy_env/resolver.py CHANGED
@@ -1,30 +1,20 @@
1
1
  """
2
- Wheel URL resolver for CUDA-compiled packages.
2
+ Runtime environment detection for wheel resolution.
3
3
 
4
- This module provides deterministic wheel URL construction based on the runtime
5
- environment (CUDA version, PyTorch version, Python version, platform).
6
-
7
- Unlike pip's constraint solver, this module constructs exact URLs from templates
8
- and validates that they exist. If a wheel doesn't exist, it fails fast with
9
- a clear error message.
4
+ This module provides RuntimeEnv for detecting the current system environment
5
+ (CUDA version, PyTorch version, Python version, platform).
10
6
 
11
7
  Example:
12
- from comfy_env.resolver import WheelResolver, RuntimeEnv
8
+ from comfy_env.resolver import RuntimeEnv
13
9
 
14
10
  env = RuntimeEnv.detect()
15
- resolver = WheelResolver()
16
-
17
- url = resolver.resolve("nvdiffrast", version="0.4.0", env=env)
18
- # Returns: https://github.com/.../nvdiffrast-0.4.0+cu128torch28-cp310-...-linux_x86_64.whl
11
+ print(f"CUDA: {env.cuda_version}, PyTorch: {env.torch_version}")
19
12
  """
20
13
 
21
14
  import platform
22
- import re
23
15
  import sys
24
- from dataclasses import dataclass, field
25
- from pathlib import Path
26
- from typing import Dict, List, Optional, Tuple
27
- from urllib.parse import urlparse
16
+ from dataclasses import dataclass
17
+ from typing import Dict, Optional, Tuple
28
18
 
29
19
  from .env.cuda_gpu_detection import detect_cuda_version, detect_gpu_info
30
20
 
@@ -106,8 +96,8 @@ class RuntimeEnv:
106
96
  try:
107
97
  gpu_info = detect_gpu_info()
108
98
  if gpu_info:
109
- gpu_name = gpu_info.get("name")
110
- gpu_compute = gpu_info.get("compute_capability")
99
+ gpu_name = gpu_info[0].get("name") if isinstance(gpu_info, list) else gpu_info.get("name")
100
+ gpu_compute = gpu_info[0].get("compute_capability") if isinstance(gpu_info, list) else gpu_info.get("compute_capability")
111
101
  except Exception:
112
102
  pass
113
103
 
@@ -127,7 +117,6 @@ class RuntimeEnv:
127
117
 
128
118
  def as_dict(self) -> Dict[str, str]:
129
119
  """Convert to dict for template substitution."""
130
- # Extract py_minor from python_version (e.g., "3.10" -> "10")
131
120
  py_minor = self.python_version.split(".")[-1] if self.python_version else ""
132
121
 
133
122
  result = {
@@ -137,20 +126,18 @@ class RuntimeEnv:
137
126
  "py_version": self.python_version,
138
127
  "py_short": self.python_short,
139
128
  "py_minor": py_minor,
140
- "py_tag": f"cp{self.python_short}", # e.g., cp310, cp311
129
+ "py_tag": f"cp{self.python_short}",
141
130
  }
142
131
 
143
132
  if self.cuda_version:
144
133
  result["cuda_version"] = self.cuda_version
145
134
  result["cuda_short"] = self.cuda_short
146
- # cuda_major: just the major version (e.g., "12" from "12.8")
147
135
  result["cuda_major"] = self.cuda_version.split(".")[0]
148
136
 
149
137
  if self.torch_version:
150
138
  result["torch_version"] = self.torch_version
151
139
  result["torch_short"] = self.torch_short
152
140
  result["torch_mm"] = self.torch_mm
153
- # torch_dotted_mm: "2.8" format (major.minor with dot) for flash-attn URLs
154
141
  parts = self.torch_version.split(".")[:2]
155
142
  result["torch_dotted_mm"] = ".".join(parts)
156
143
 
@@ -173,7 +160,6 @@ def _get_platform_tag() -> str:
173
160
  machine = platform.machine().lower()
174
161
 
175
162
  if sys.platform.startswith('linux'):
176
- # Use manylinux tag
177
163
  if machine in ('x86_64', 'amd64'):
178
164
  return 'linux_x86_64'
179
165
  elif machine == 'aarch64':
@@ -186,7 +172,6 @@ def _get_platform_tag() -> str:
186
172
  return 'win32'
187
173
 
188
174
  elif sys.platform == 'darwin':
189
- # macOS - use generic tag
190
175
  if machine == 'arm64':
191
176
  return 'macosx_11_0_arm64'
192
177
  return 'macosx_10_9_x86_64'
@@ -199,7 +184,6 @@ def _detect_torch_version() -> Optional[str]:
199
184
  try:
200
185
  import torch
201
186
  version = torch.__version__
202
- # Strip CUDA suffix (e.g., "2.8.0+cu128" -> "2.8.0")
203
187
  if '+' in version:
204
188
  version = version.split('+')[0]
205
189
  return version
@@ -207,166 +191,6 @@ def _detect_torch_version() -> Optional[str]:
207
191
  return None
208
192
 
209
193
 
210
- @dataclass
211
- class WheelSource:
212
- """Configuration for a wheel source (GitHub releases, custom index, etc.)."""
213
- name: str
214
- url_template: str
215
- packages: List[str] = field(default_factory=list) # Empty = all packages
216
-
217
- def supports(self, package: str) -> bool:
218
- """Check if this source provides the given package."""
219
- if not self.packages:
220
- return True # Empty list = supports all
221
- return package.lower() in [p.lower() for p in self.packages]
222
-
223
-
224
- class WheelResolver:
225
- """
226
- Resolves CUDA wheel URLs from package name and runtime environment.
227
-
228
- Resolution strategy:
229
- 1. Check explicit overrides in config
230
- 2. Try configured wheel sources in order
231
- 3. Fail with actionable error message
232
-
233
- This is NOT a constraint solver. It constructs deterministic URLs
234
- based on exact version matches.
235
- """
236
-
237
- def __init__(
238
- self,
239
- sources: Optional[List[WheelSource]] = None,
240
- overrides: Optional[Dict[str, str]] = None,
241
- ):
242
- """
243
- Initialize resolver.
244
-
245
- Args:
246
- sources: List of WheelSource configurations. Defaults to empty
247
- (use PACKAGE_REGISTRY in install.py for actual sources).
248
- overrides: Package-specific URL overrides (package -> template).
249
- """
250
- self.sources = sources or []
251
- self.overrides = overrides or {}
252
-
253
- def resolve(
254
- self,
255
- package: str,
256
- version: str,
257
- env: RuntimeEnv,
258
- verify: bool = False,
259
- ) -> str:
260
- """
261
- Resolve wheel URL for a package.
262
-
263
- Args:
264
- package: Package name (e.g., "nvdiffrast").
265
- version: Package version (e.g., "0.4.0").
266
- env: Runtime environment for template expansion.
267
-
268
- Returns:
269
- Fully resolved wheel URL.
270
-
271
- Raises:
272
- WheelNotFoundError: If no wheel URL could be constructed or verified.
273
- """
274
- from .errors import WheelNotFoundError
275
-
276
- # Prepare template variables
277
- variables = env.as_dict()
278
- variables["package"] = package
279
- variables["version"] = version
280
-
281
- # 1. Check explicit override
282
- if package.lower() in self.overrides:
283
- url = self._substitute(self.overrides[package.lower()], variables)
284
- if verify and not self._url_exists(url):
285
- raise WheelNotFoundError(
286
- package=package,
287
- version=version,
288
- env=env,
289
- tried_urls=[url],
290
- reason="Override URL returned 404",
291
- )
292
- return url
293
-
294
- # 2. Try wheel sources
295
- tried_urls = []
296
- for source in self.sources:
297
- if not source.supports(package):
298
- continue
299
-
300
- url = self._substitute(source.url_template, variables)
301
- tried_urls.append(url)
302
-
303
- if verify:
304
- if self._url_exists(url):
305
- return url
306
- else:
307
- return url
308
-
309
- # 3. Fail with helpful error
310
- raise WheelNotFoundError(
311
- package=package,
312
- version=version,
313
- env=env,
314
- tried_urls=tried_urls,
315
- reason="No wheel source found for package",
316
- )
317
-
318
- def resolve_all(
319
- self,
320
- packages: Dict[str, str],
321
- env: RuntimeEnv,
322
- verify: bool = False,
323
- ) -> Dict[str, str]:
324
- """
325
- Resolve URLs for multiple packages.
326
-
327
- Args:
328
- packages: Dict of package -> version.
329
- env: Runtime environment.
330
- verify: Whether to verify URLs exist.
331
-
332
- Returns:
333
- Dict of package -> resolved URL.
334
-
335
- Raises:
336
- WheelNotFoundError: If any package cannot be resolved.
337
- """
338
- results = {}
339
- for package, version in packages.items():
340
- results[package] = self.resolve(package, version, env, verify=verify)
341
- return results
342
-
343
- def _substitute(self, template: str, variables: Dict[str, str]) -> str:
344
- """
345
- Substitute variables into URL template.
346
-
347
- Handles both {var} and {var_name} style placeholders.
348
- Missing variables are left as-is (caller should validate).
349
- """
350
- result = template
351
- for key, value in variables.items():
352
- result = result.replace(f"{{{key}}}", str(value))
353
- return result
354
-
355
- def _url_exists(self, url: str, timeout: float = 10.0) -> bool:
356
- """
357
- Check if a URL exists using HTTP HEAD request.
358
-
359
- Returns True if URL returns 200 OK.
360
- """
361
- try:
362
- import urllib.request
363
- request = urllib.request.Request(url, method='HEAD')
364
- with urllib.request.urlopen(request, timeout=timeout) as response:
365
- return response.status == 200
366
- except Exception:
367
- return False
368
-
369
-
370
194
  def parse_wheel_requirement(req: str) -> Tuple[str, Optional[str]]:
371
195
  """
372
196
  Parse a wheel requirement string.
@@ -379,7 +203,6 @@ def parse_wheel_requirement(req: str) -> Tuple[str, Optional[str]]:
379
203
  Returns:
380
204
  Tuple of (package_name, version_or_None).
381
205
  """
382
- # Handle version specifiers
383
206
  for op in ['==', '>=', '<=', '~=', '!=', '>', '<']:
384
207
  if op in req:
385
208
  parts = req.split(op, 1)
@@ -1,9 +1,12 @@
1
1
  # Wheel sources registry for CUDA packages
2
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
+ #
3
6
  # Template variables:
7
+ # {version} - Package version (e.g., "0.4.0")
4
8
  # {cuda_version} - Full CUDA version (e.g., "12.8")
5
9
  # {cuda_short} - CUDA without dot (e.g., "128")
6
- # {cuda_short2} - CUDA short for spconv (e.g., "124" not "1240")
7
10
  # {cuda_major} - CUDA major version (e.g., "12")
8
11
  # {torch_version} - Full PyTorch version (e.g., "2.8.0")
9
12
  # {torch_short} - PyTorch without dots (e.g., "280")
@@ -14,173 +17,119 @@
14
17
  # {py_minor} - Python minor version only (e.g., "10")
15
18
  # {py_tag} - Python tag (e.g., "cp310")
16
19
  # {platform} - Platform tag (e.g., "linux_x86_64")
17
- #
18
- # Install methods:
19
- # index - pip --extra-index-url (PEP 503)
20
- # find_links - pip --find-links
21
- # github_index - GitHub Pages index (--find-links)
22
- # pypi_variant - Package name varies by CUDA (e.g., spconv-cu124)
23
- # github_release - Direct wheel URL from GitHub releases
24
- # pypi - Standard PyPI install
25
20
 
26
21
  packages:
27
22
  # ===========================================================================
28
- # PyTorch Geometric (PyG) - official index
23
+ # PyTorch Geometric (PyG) - official wheels
29
24
  # https://pytorch-geometric.readthedocs.io/en/latest/install/installation.html
30
25
  # ===========================================================================
31
26
  torch-scatter:
32
- method: find_links
33
- index_url: "https://data.pyg.org/whl/torch-{torch_version}+cu{cuda_short}.html"
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"
34
28
  description: Scatter operations for PyTorch
35
29
 
36
30
  torch-cluster:
37
- method: find_links
38
- index_url: "https://data.pyg.org/whl/torch-{torch_version}+cu{cuda_short}.html"
31
+ 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"
39
32
  description: Clustering algorithms for PyTorch
40
33
 
41
34
  torch-sparse:
42
- method: find_links
43
- index_url: "https://data.pyg.org/whl/torch-{torch_version}+cu{cuda_short}.html"
35
+ 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"
44
36
  description: Sparse tensor operations for PyTorch
45
37
 
46
38
  torch-spline-conv:
47
- method: find_links
48
- index_url: "https://data.pyg.org/whl/torch-{torch_version}+cu{cuda_short}.html"
39
+ 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"
49
40
  description: Spline convolutions for PyTorch
50
41
 
51
42
  # ===========================================================================
52
- # pytorch3d - PyTorch3D 3D deep learning library
53
- # https://pozzettiandrea.github.io/cuda-wheels
43
+ # PozzettiAndrea cuda-wheels (GitHub releases)
44
+ # https://github.com/PozzettiAndrea/cuda-wheels/releases
54
45
  # ===========================================================================
55
46
  pytorch3d:
56
- method: index
57
- index_url: "https://pozzettiandrea.github.io/cuda-wheels"
58
- wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/pytorch3d/pytorch3d-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
47
+ 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"
59
48
  default_version: "0.7.9"
60
49
  description: PyTorch3D - 3D deep learning library
61
50
 
62
- # ===========================================================================
63
- # PozzettiAndrea cuda-wheels (unified PEP 503 index)
64
- # https://pozzettiandrea.github.io/cuda-wheels
65
- # Wheel naming: {package}-{version}+cu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl
66
- # ===========================================================================
67
51
  nvdiffrast:
68
- method: index
69
- index_url: "https://pozzettiandrea.github.io/cuda-wheels"
70
- wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/nvdiffrast/nvdiffrast-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
52
+ 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"
53
+ default_version: "0.4.0"
71
54
  description: NVIDIA differentiable rasterizer
72
55
 
73
56
  cumesh:
74
- method: index
75
- index_url: "https://pozzettiandrea.github.io/cuda-wheels"
76
- wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/cumesh/cumesh-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
57
+ 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"
58
+ default_version: "0.0.1"
77
59
  description: CUDA-accelerated mesh utilities
78
60
 
79
61
  cubvh:
80
- method: index
81
- index_url: "https://pozzettiandrea.github.io/cuda-wheels"
62
+ 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"
63
+ default_version: "0.1.2"
82
64
  description: CUDA BVH acceleration for mesh operations and marching cubes
83
65
 
84
66
  o_voxel:
85
- method: index
86
- index_url: "https://pozzettiandrea.github.io/cuda-wheels"
87
- wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/o-voxel/o_voxel-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
67
+ 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"
68
+ default_version: "0.0.1"
88
69
  description: O-Voxel CUDA extension for TRELLIS
89
70
 
90
71
  flex_gemm:
91
- method: index
92
- index_url: "https://pozzettiandrea.github.io/cuda-wheels"
93
- wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/flex-gemm/flex_gemm-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
72
+ 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"
73
+ default_version: "1.0.0"
94
74
  description: Flexible GEMM operations
95
75
 
96
76
  nvdiffrec_render:
97
- method: index
98
- index_url: "https://pozzettiandrea.github.io/cuda-wheels"
99
- wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/nvdiffrec-render/nvdiffrec_render-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
77
+ 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"
78
+ default_version: "0.0.1"
100
79
  description: NVDiffRec rendering utilities
101
80
 
102
81
  gsplat:
103
- method: index
104
- index_url: "https://pozzettiandrea.github.io/cuda-wheels"
105
- wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/gsplat/gsplat-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
82
+ 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"
83
+ default_version: "1.5.3"
106
84
  description: Gaussian splatting rasterization
107
85
 
108
86
  cc_torch:
109
- method: index
110
- index_url: "https://pozzettiandrea.github.io/cuda-wheels"
111
- wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/cc-torch/cc_torch-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
87
+ 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"
88
+ default_version: "0.2"
112
89
  description: GPU-accelerated connected components
113
90
 
114
91
  torch_generic_nms:
115
- method: index
116
- index_url: "https://pozzettiandrea.github.io/cuda-wheels"
117
- wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/torch-generic-nms/torch_generic_nms-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
92
+ 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"
93
+ default_version: "0.1"
118
94
  description: GPU-accelerated Non-Maximum Suppression
119
95
 
120
96
  lietorch:
121
- method: index
122
- index_url: "https://pozzettiandrea.github.io/cuda-wheels"
123
- wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/lietorch/lietorch-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
97
+ 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"
98
+ default_version: "0.3"
124
99
  description: Lie group operations for PyTorch (DPVO dependency)
125
100
 
126
- dpvo-cuda:
127
- method: index
128
- index_url: "https://pozzettiandrea.github.io/cuda-wheels"
129
- wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/dpvo_cuda/dpvo_cuda-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
130
- default_version: "1.0.0"
131
- description: DPVO CUDA extensions (cuda_corr, cuda_ba, lietorch_backends)
132
-
133
- # ===========================================================================
134
- # spconv - PyPI with CUDA-versioned package names
135
- # ===========================================================================
136
- spconv:
137
- method: pypi_variant
138
- package_template: "spconv-cu{cuda_short2}"
139
- description: Sparse convolution library (use spconv-cu126 for CUDA 12.6+)
140
-
141
- # ===========================================================================
142
- # sageattention - Fast quantized attention
143
- # ===========================================================================
144
101
  sageattention:
145
- method: index
146
- index_url: "https://pozzettiandrea.github.io/cuda-wheels"
102
+ 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"
103
+ default_version: "2.2.0"
147
104
  description: SageAttention - 2-5x faster than FlashAttention with quantized kernels
148
105
 
149
- # ===========================================================================
150
- # triton - Required for sageattention on Linux
151
- # ===========================================================================
152
- triton:
153
- method: pypi
154
- description: Triton compiler for custom CUDA kernels
106
+ dpvo_cuda:
107
+ 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"
108
+ default_version: "0.0.0"
109
+ description: DPVO CUDA extensions (cuda_corr, cuda_ba, lietorch_backends) - torch 2.4 only
155
110
 
156
111
  # ===========================================================================
157
112
  # detectron2 - Facebook's detection library
158
113
  # https://github.com/facebookresearch/detectron2
159
114
  # Prebuilt wheels from miropsota's torch_packages_builder
160
- # Version format: 0.6+<commit>pt<torch_version>cu<cuda_short>
161
115
  # ===========================================================================
162
116
  detectron2:
163
- method: index
164
- index_url: "https://miropsota.github.io/torch_packages_builder"
165
- version_template: "0.6+2a420edpt{torch_version}cu{cuda_short}"
117
+ wheel_template: "https://miropsota.github.io/torch_packages_builder/detectron2/detectron2-0.6%2B2a420edpt{torch_version}cu{cuda_short}-{py_tag}-{py_tag}-{platform}.whl"
166
118
  description: Detectron2 - Facebook's detection and segmentation library
167
119
 
168
120
  # ===========================================================================
169
- # flash-attn - Multi-source prebuilt wheels
121
+ # flash-attn - Dao-AILab (Linux x86_64)
122
+ # For other platforms, users should add custom wheel_source in their config
170
123
  # ===========================================================================
171
124
  flash-attn:
172
- method: github_release
173
- description: Flash Attention for fast transformer inference
174
- sources:
175
- - name: Dao-AILab
176
- url_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"
177
- platforms: [linux_x86_64]
178
- - name: mjun0812
179
- url_template: "https://github.com/mjun0812/flash-attention-prebuild-wheels/releases/download/v0.7.7/flash_attn-{version}%2Bcu{cuda_short}torch{torch_dotted_mm}-{py_tag}-{py_tag}-linux_x86_64.whl"
180
- platforms: [linux_x86_64]
181
- - name: mjun0812-windows
182
- url_template: "https://github.com/mjun0812/flash-attention-prebuild-wheels/releases/download/v0.7.7/flash_attn-{version}%2Bcu{cuda_short}torch{torch_dotted_mm}-{py_tag}-{py_tag}-win_amd64.whl"
183
- platforms: [win_amd64]
184
- - name: bdashore3
185
- url_template: "https://github.com/bdashore3/flash-attention/releases/download/v{version}/flash_attn-{version}%2Bcu{cuda_short}torch{torch_version}cxx11abiFALSE-{py_tag}-{py_tag}-win_amd64.whl"
186
- platforms: [win_amd64]
125
+ 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"
126
+ description: Flash Attention for fast transformer inference (Linux x86_64)
127
+
128
+ # ===========================================================================
129
+ # spconv - Sparse convolution library
130
+ # PyPI with CUDA-versioned package names (spconv-cu124, spconv-cu126, etc.)
131
+ # Note: This uses a special package_name field, not wheel_template
132
+ # ===========================================================================
133
+ spconv:
134
+ package_name: "spconv-cu{cuda_short2}"
135
+ description: Sparse convolution library (installs spconv-cu124, spconv-cu126, etc.)