{"record":{"id":"a23f844a59ce5fe6","repo":"sgl-project/sglang","slug":"minimax-h3-model-variant-must-be-a-non-empty-strin","errorCode":null,"errorMessage":"MiniMax H3 model variant must be a non-empty string","messagePattern":"MiniMax H3 model variant must be a non-empty string","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/multimodal_gen/runtime/pipelines/minimax_h3_pipeline.py","lineNumber":73,"sourceCode":"        if not current_platform.is_rocm():\n            missing_media_tools = [\n                executable\n                for executable in (\"ffmpeg\", \"ffprobe\")\n                if shutil.which(executable) is None\n            ]\n            if missing_media_tools:\n                raise RuntimeError(\n                    \"MiniMax H3 requires ffmpeg and ffprobe for media processing \"\n                    \"and validated output delivery; missing executables: \"\n                    f\"{', '.join(missing_media_tools)}. Install the ffmpeg system \"\n                    \"package before starting SGLang.\"\n                )\n        super().__init__(*args, **kwargs)\n\n    @staticmethod\n    def model_subfolder_for_variant(variant: str) -> str:\n        if not isinstance(variant, str) or not variant.strip():\n            raise ValueError(\"MiniMax H3 model variant must be a non-empty string\")\n        normalized = variant.strip().lower()\n        subfolders = {\n            \"fl2va\": \"FL2VA\",\n            \"ref2va\": \"Ref2VA\",\n        }\n        try:\n            return subfolders[normalized]\n        except KeyError as exc:\n            raise ValueError(\n                f\"unsupported MiniMax H3 model variant {variant!r}; \"\n                f\"supported: {sorted(subfolders)!r}\"\n            ) from exc\n\n    def _load_config(self):\n        model_variant = self.server_args.model_variant\n        if model_variant is not None:\n            semantic_subfolder = self.model_subfolder_for_variant(model_variant)\n            explicit_subfolder = self.server_args.model_subfolder","sourceCodeStart":55,"sourceCodeEnd":91,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/pipelines/minimax_h3_pipeline.py#L55-L91","documentation":"Raised by MiniMaxH3Pipeline.model_subfolder_for_variant when the variant argument is not a string, is empty, or is whitespace-only. The static helper maps semantic variant names (fl2va, ref2va) to checkpoint subfolders and rejects meaningless input before lookup.","triggerScenarios":"Calling model_subfolder_for_variant(''), model_subfolder_for_variant('   '), or passing None/a non-string (e.g. an argparse default of None leaking through); config files supplying an empty --model-variant string.","commonSituations":"Launch scripts that always pass --model-variant even when unset, forwarding an empty string; YAML/JSON config with variant: '' treated as a value; None defaults not filtered before the call.","solutions":["Pass a concrete variant such as 'fl2va' or 'ref2va'","Skip the call entirely when the variant is unset — the pipeline treats None model_variant as no semantic routing","Normalize config inputs: treat empty/whitespace strings as None before invoking the pipeline"],"exampleFix":"# before\nvariant = args.model_variant or ''  # '' reaches the helper\nsubfolder = MiniMaxH3Pipeline.model_subfolder_for_variant(variant)\n\n# after\nvariant = (args.model_variant or '').strip() or None\nsubfolder = MiniMaxH3Pipeline.model_subfolder_for_variant(variant) if variant else None","handlingStrategy":"validation","validationCode":"variant = (getattr(server_args, 'model_variant', None) or '').strip() or None\nif variant is not None:\n    MiniMaxH3Pipeline.model_subfolder_for_variant(variant)  # dry-run validation","typeGuard":"def normalize_variant(v: str | None) -> str | None:\n    v = (v or '').strip()\n    return v if v else None","tryCatchPattern":null,"preventionTips":["Normalize empty strings to None at the config boundary","Dry-run variant mapping at startup to surface errors early"],"tags":["minimax-h3","model-variant","input-validation","sglang"],"backgroundTag":"invalid-config-value","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}