{"record":{"id":"2f9f2b73cf22df79","repo":"huggingface/transformers","slug":"invalid-kernel-repo-string-repo-str-r-for-layer","errorCode":null,"errorMessage":"Invalid kernel repo string {repo_str!r} for layer {layer_name!r}","messagePattern":"Invalid kernel repo string (.+?) for layer (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"src/transformers/integrations/hub_kernels.py","lineNumber":899,"sourceCode":"        # Infer metadata (revision/version/trust_remote_code)\n        if isinstance(hub_repo, tuple):\n            repo_str, metadata = hub_repo\n\n            revision = metadata.get(\"revision\", None)\n            version = metadata.get(\"version\", None)\n            trust_remote_code = metadata.get(\"trust_remote_code\", False) or ALLOW_ALL_KERNELS\n            metadata = {\"version\": version} if version is not None else {\"revision\": revision}\n            metadata |= {\"trust_remote_code\": trust_remote_code}\n\n            final_repo = (repo_str, metadata)\n        else:\n            repo_str = hub_repo\n            metadata = {\"version\": 1, \"trust_remote_code\": ALLOW_ALL_KERNELS}\n            final_repo = (repo_str, metadata)\n\n        repo_id, _, layer_name_in_repo = repo_str.partition(\":\")\n        if not repo_id or not layer_name_in_repo:\n            raise ValueError(f\"Invalid kernel repo string {repo_str!r} for layer {layer_name!r}\")\n\n        if kernel_config.use_local_kernel:\n            repo = LocalLayerRepository(\n                repo_path=Path(repo_id),\n                layer_name=layer_name_in_repo,\n            )\n        else:\n            repo = LayerRepository(\n                repo_id=repo_id,\n                layer_name=layer_name_in_repo,\n                **metadata,\n            )\n\n        kernel_cls = repo.load()\n\n        if kernel_cls is None:\n            raise ValueError(f\"Could not load kernel class from hub_repo={hub_repo!r}\")\n","sourceCodeStart":881,"sourceCodeEnd":917,"githubUrl":"https://github.com/huggingface/transformers/blob/a597f974857b3d92939971296bc0deb93d33d780/src/transformers/integrations/hub_kernels.py#L881-L917","documentation":"After normalizing a kernel_mapping entry, transformers splits the repo string on the first ':' expecting 'repo_id:layer_name_in_repo' (e.g. 'kernels-community/llama-attention:llama_attention'). If either side is empty — missing colon, leading colon, or trailing colon — this ValueError is raised before constructing LayerRepository/LocalLayerRepository.","triggerScenarios":"A kernel_mapping value like 'kernels-community/foo' (no ':layer'), ':layer' (empty repo id), or 'kernels-community/foo:' (empty layer name); when use_local_kernel is true, a local path lacking the ':layer_name' suffix also triggers it.","commonSituations":"Authoring a custom kernel repo string and forgetting the layer name segment; copying a hub repo id alone into the mapping; typos when editing local-kernel paths in the config.","solutions":["Rewrite the repo string as '<repo_id>:<layer_name>', e.g. 'kernels-community/llama-blk:llama_blk'.","For local kernels, use '<local_path>:<layer_name_in_repo>' (path, colon, exported layer name).","Confirm the layer name segment matches the name exported by the kernel repo."],"exampleFix":"// before\n\"kernels-community/foo\"\n\n// after\n\"kernels-community/foo:foo_layer\"","handlingStrategy":"validation","validationCode":"def validate_repo_string(repo_str: str) -> bool:\n    repo_id, _, layer = repo_str.partition(\":\")\n    return bool(repo_id) and bool(layer)","typeGuard":null,"tryCatchPattern":"try:\n    model = AutoModel.from_pretrained(name, kernels=kernel_config)\nexcept ValueError as e:\n    if \"Invalid kernel repo string\" in str(e):\n        log_config_error_and_abort(kernel_config)\n    else:\n        raise","preventionTips":["Always author repo strings as 'repo_id:layer_name' with exactly one colon separating two non-empty parts.","Add a lint check in CI for kernel config files validating the colon format."],"tags":["kernel-config","hub-kernels","validation"],"backgroundTag":null,"analyzedSha":"a597f974857b3d92939971296bc0deb93d33d780","analyzedAt":"2026-08-14T18:24:08.354Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}