{"record":{"id":"defdc8bd8f23830c","repo":"sgl-project/sglang","slug":"minimax-h3-material-localization-does-not-support","errorCode":null,"errorMessage":"MiniMax H3 material localization does not support URI scheme {scheme!r}","messagePattern":"MiniMax H3 material localization does not support URI scheme (.+?)","errorType":"validation","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/material_io.py","lineNumber":876,"sourceCode":"\n    if scheme in {\"tar+offset\", \"tar+b64header\"}:\n        output_path = _stream_tar_member_material(\n            batch,\n            uri,\n            condition_type=condition_type,\n            condition_index=condition_index,\n        )\n        try:\n            _validate_material_once(\n                batch, uri, output_path, condition_type=condition_type\n            )\n        except Exception:\n            Path(output_path).unlink(missing_ok=True)\n            raise\n        cache[uri] = output_path\n        return output_path\n\n    raise NotImplementedError(\n        f\"MiniMax H3 material localization does not support URI scheme {scheme!r}\"\n    )\n\n\ndef minimax_h3_probe_material(\n    batch: Any,\n    uri: str,\n    *,\n    condition_type: str,\n    condition_index: int,\n) -> dict[str, Any]:\n    \"\"\"Localize and return cached display-geometry facts for one condition.\"\"\"\n\n    path = minimax_h3_localize_material_uri(\n        batch,\n        uri,\n        condition_type=condition_type,\n        condition_index=condition_index,","sourceCodeStart":858,"sourceCodeEnd":894,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/material_io.py#L858-L894","documentation":"The URI scheme is not any of the supported ones (plain path, file, http/https, data, base64, tar+offset, tar+b64header, s3-refusal) — the dispatcher fell through to a blanket NotImplementedError.","triggerScenarios":"Passing e.g. 'ftp://...', 'gs://...', or 'minio://...' as a material URI; also a malformed URI whose urlsplit yields an unexpected scheme field.","commonSituations":"Cloud-storage URIs (gs://, oss://), typos like 'htt://', or relative URIs that parse oddly.","solutions":["Convert the asset to a supported form: local path, file://, or http(s)://","Fix the scheme typo","Check urllib.parse.urlsplit(uri).scheme locally to pre-validate"],"exampleFix":"# before\nuri = \"gs://bucket/img.png\"\n# after\nuri = \"https://storage.googleapis.com/bucket/img.png\"","handlingStrategy":"validation","validationCode":"from urllib.parse import urlsplit\nSPECIAL = ('data:', 'base64:', 'tar+offset:', 'tar+b64header:')\ndef has_supported_scheme(uri: str) -> bool:\n    if uri.startswith(SPECIAL): return True\n    return urlsplit(uri).scheme in {'', 'file', 'http', 'https'}\nassert has_supported_scheme(uri)","typeGuard":"def has_supported_scheme(uri: str) -> bool:\n    if uri.startswith(('data:', 'base64:', 'tar+offset:', 'tar+b64header:')): return True\n    return urlsplit(uri).scheme in {'', 'file', 'http', 'https'}","tryCatchPattern":"except NotImplementedError as e: map asset to a supported URI form","preventionTips":["Document the scheme whitelist for users","Lint URIs in request validation"],"tags":["uri-scheme","minimax-h3","material-uri"],"backgroundTag":"unsupported-uri-scheme","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}