{"record":{"id":"d1b4906c63e2b652","repo":"sgl-project/sglang","slug":"removed-server-argument-s-replacements","errorCode":null,"errorMessage":"Removed server argument(s): {replacements}","messagePattern":"Removed server argument\\(s\\): (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/multimodal_gen/runtime/server_args/server_args.py","lineNumber":3137,"sourceCode":"                server_args_kwargs[\"kv_cache_quant_config\"] = kv_quant_config\n            elif attr in kwargs:\n                server_args_kwargs[attr] = kwargs[attr]\n\n        return cls(**server_args_kwargs)\n\n    @staticmethod\n    def _reject_retired_args(kwargs: dict[str, Any]) -> None:\n        retired_args = {\n            \"decoder_tp\": \"decoder_sp for decoder/VAE parallel decode\",\n            \"warmup\": \"warmup_mode=request or warmup_mode=off\",\n            \"server_warmup\": \"warmup_mode=server or warmup_mode=off\",\n        }\n        removed = [name for name in retired_args if name in kwargs]\n        if removed:\n            replacements = \"; \".join(\n                f\"{name} -> {retired_args[name]}\" for name in removed\n            )\n            raise ValueError(f\"Removed server argument(s): {replacements}\")\n\n    @staticmethod\n    def load_config_file(config_file: str) -> dict[str, Any]:\n        \"\"\"Load a config file.\"\"\"\n        if config_file.endswith(\".json\"):\n            with open(config_file, \"r\") as f:\n                return json.load(f)\n        elif config_file.endswith((\".yaml\", \".yml\")):\n            try:\n                import yaml\n            except ImportError:\n                raise ImportError(\n                    \"Please install PyYAML to use YAML config files. \"\n                    \"`pip install pyyaml`\"\n                )\n            with open(config_file, \"r\") as f:\n                return yaml.safe_load(f)\n        else:","sourceCodeStart":3119,"sourceCodeEnd":3155,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/server_args/server_args.py#L3119-L3155","documentation":"ValueError raised by ServerArgs._reject_retired_args when kwargs contain one or more server arguments that were removed from the API. The message maps each retired name to its replacement (name -> replacement), so it doubles as a migration hint.","triggerScenarios":"Calling ServerArgs.from_kwargs / from_dict (or a config file) that still contains arguments listed in the retired_args table after an upgrade renamed or deleted them.","commonSituations":"Upgrading SGLang/multimodal_gen and reusing old config JSON/YAML or old launch scripts; code that programmatically builds kwargs from an outdated constants list.","solutions":["Rename each flagged argument to its replacement shown in the message (format: old -> new).","Delete the argument if no replacement is listed and the feature was removed.","Regenerate or update saved config files against the current ServerArgs fields.","Pin the previous library version only as a temporary stopgap while migrating."],"exampleFix":"# before\nServerArgs.from_kwargs(chunked_prefill_size=8192)  # retired name\n# after\nServerArgs.from_kwargs(max_prefill_tokens=8192)  # per message mapping","handlingStrategy":"validation","validationCode":"# mirror the retired check: drop/rename known-retired keys before constructing\nretired = {\"old_arg_name\": \"new_arg_name\"}  # keep in sync with release notes\nfor k in list(kwargs):\n    if k in retired:\n        kwargs[retired[k]] = kwargs.pop(k)","typeGuard":null,"tryCatchPattern":"try:\n    args = ServerArgs.from_kwargs(**kwargs)\nexcept ValueError as e:\n    if \"Removed server argument\" in str(e):\n        # parse 'old -> new' pairs from message and auto-migrate\n        raise","preventionTips":["Regenerate config files after upgrades.","Run a config lint step in CI that constructs ServerArgs.","Subscribe to release notes for renamed args."],"tags":["api-migration","configuration","breaking-change","argument-validation"],"backgroundTag":"deprecated-argument-removed","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}