Skip to content

Commit de57bd8

Browse files
cpcloudclaude
andcommitted
fix(core.utils): unpack extra_sources tuples in cache key
extra_sources is a sequence of (name, source) tuples but the prior fix hashed each item as a flat str/bytes, never reaching the actual source content. Now unpacks both name and source from each tuple. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 331e615 commit de57bd8

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

cuda_core/cuda/core/utils/_program_cache.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -277,11 +277,20 @@ def _update(label: str, payload: bytes) -> None:
277277
extra_sources = getattr(options, "extra_sources", None)
278278
if extra_sources:
279279
_update("extra_sources_count", str(len(extra_sources)).encode("ascii"))
280-
for src in extra_sources:
281-
if isinstance(src, str):
282-
_update("extra_source", src.encode("utf-8"))
283-
elif isinstance(src, (bytes, bytearray)):
284-
_update("extra_source", bytes(src))
280+
for item in extra_sources:
281+
# extra_sources is a sequence of (name, source) tuples.
282+
if isinstance(item, (tuple, list)) and len(item) == 2:
283+
name, src = item
284+
_update("extra_source_name", str(name).encode("utf-8"))
285+
if isinstance(src, str):
286+
_update("extra_source_code", src.encode("utf-8"))
287+
elif isinstance(src, (bytes, bytearray)):
288+
_update("extra_source_code", bytes(src))
289+
else:
290+
_update("extra_source_code", str(src).encode("utf-8"))
291+
else:
292+
# Fallback for unexpected format.
293+
_update("extra_source", str(item).encode("utf-8"))
285294
use_libdevice = getattr(options, "use_libdevice", None)
286295
if use_libdevice is not None:
287296
_update("use_libdevice", str(use_libdevice).encode("ascii"))

0 commit comments

Comments
 (0)