{"record":{"id":"e4abe548579140cc","repo":"sgl-project/sglang","slug":"unknown-weight-reader-requested-r-available-a","errorCode":null,"errorMessage":"unknown weight reader {requested!r}; available: {available_reader_names()}","messagePattern":"unknown weight reader (.+?); available: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/multimodal_gen/runtime/loader/weight_readers/__init__.py","lineNumber":42,"sourceCode":"    return [b.name for b in _READERS if b.is_available()]\n\n\ndef select_weight_reader(\n    *,\n    requested: str | None = None,\n    needs_key_filter: bool = False,\n) -> WeightReader:\n    \"\"\"Pick a reader, honouring an explicit request where it can be honoured.\n\n    `requested` names a reader; None means take the environment's preference.\n    A reader that cannot skip keys is passed over when the caller needs to,\n    because reading the whole checkpoint to discard most of it is worse than\n    reading the part that was asked for more slowly.\n    \"\"\"\n    if requested is not None:\n        chosen = next((b for b in _READERS if b.name == requested), None)\n        if chosen is None:\n            raise ValueError(\n                f\"unknown weight reader {requested!r}; \"\n                f\"available: {available_reader_names()}\"\n            )\n    elif envs.SGLANG_USE_RUNAI_MODEL_STREAMER and RunaiStreamerReader.is_available():\n        chosen = RunaiStreamerReader\n    else:\n        chosen = FALLBACK_READER\n\n    if not chosen.is_available():\n        logger.info(\n            \"Weight reader %s is not installed; using %s\",\n            chosen.name,\n            FALLBACK_READER.name,\n        )\n        chosen = FALLBACK_READER\n    if needs_key_filter and not chosen.supports_key_filter:\n        logger.debug(\n            \"Weight reader %s cannot skip keys at load time; using %s\",","sourceCodeStart":24,"sourceCodeEnd":60,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/loader/weight_readers/__init__.py#L24-L60","documentation":"select_weight_reader validates its requested argument against the registry of available reader backends. A name that matches no registered reader is rejected rather than silently falling back, so the caller knows their explicit choice was not honored.","triggerScenarios":"Calling select_weight_reader(requested=\"<name>\") where <name> does not equal any registered reader's .name (e.g. \"runai\" when the Runai reader is unavailable or registered under a different name, or a typo like \"safetensor\").","commonSituations":"Typos in the reader name, version drift where a reader was renamed or removed, or requesting a reader whose optional dependencies (e.g. runai-model-streamer) are not installed.","solutions":["Read the error message: it lists valid names via available_reader_names(); use one of those exactly","Install the optional dependency for the desired reader (e.g. pip install runai-model-streamer) if it is merely unavailable","Omit the argument to let selection fall back automatically"],"exampleFix":"# before\nselect_weight_reader(requested=\"runai_streamer\")\n# after\nselect_weight_reader(requested=\"runai\")  # exact name from available_reader_names()","handlingStrategy":"type-guard","validationCode":"from sglang.multimodal_gen.runtime.loader.weight_readers import available_reader_names\n\ndef reader_name_valid(name: str) -> bool:\n    return name in available_reader_names()","typeGuard":"from sglang.multimodal_gen.runtime.loader.weight_readers import available_reader_names\n\ndef is_known_reader(name: str | None) -> bool:\n    \"\"\"Type guard: name is a registered weight reader (for typed configs).\"\"\"\n    return name is None or name in available_reader_names()","tryCatchPattern":"try:\n    select_weight_reader(requested=name)\nexcept ValueError:\n    name = None  # fall back to automatic selection\n    select_weight_reader(requested=name)","preventionTips":["Derive reader names from available_reader_names(), never hard-code them","Install the reader's optional deps (e.g. runai-model-streamer) before requesting it"],"tags":["weight-reader","registry","invalid-name","validation"],"backgroundTag":"unknown-backend-name","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}