{"record":{"id":"a105f0ad3b7df246","repo":"sgl-project/sglang","slug":"sana-wm-seed-list-must-not-be-empty","errorCode":null,"errorMessage":"SANA-WM seed list must not be empty.","messagePattern":"SANA-WM seed list must not be empty\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/sana_wm/base.py","lineNumber":1201,"sourceCode":"                    )\n                    for sample_generator in generator\n                ],\n                dim=0,\n            )\n        return randn_tensor(shape, generator=generator, device=device, dtype=dtype)\n\n    @staticmethod\n    def _generator_from_seed(\n        seed: int | list[int] | tuple[int, ...] | None,\n        *,\n        batch_size: int,\n        device: torch.device,\n    ) -> torch.Generator | list[torch.Generator]:\n        if seed is None:\n            seed = 0\n        if isinstance(seed, (list, tuple)):\n            if not seed:\n                raise ValueError(\"SANA-WM seed list must not be empty.\")\n            if len(seed) == 1:\n                seed = seed[0]\n            elif len(seed) == batch_size:\n                return [\n                    torch.Generator(device=device).manual_seed(int(sample_seed))\n                    for sample_seed in seed\n                ]\n            else:\n                raise ValueError(\n                    \"SANA-WM seed list length must be 1 or match latent batch \"\n                    f\"size; got {len(seed)} seeds for batch {batch_size}.\"\n                )\n        return torch.Generator(device=device).manual_seed(int(seed))\n\n    @staticmethod\n    def _canonical_condition_image_tensor(image: torch.Tensor) -> torch.Tensor:\n        \"\"\"Return image as NCHW RGB float tensor without changing its value range.\"\"\"\n        image = image.float()","sourceCodeStart":1183,"sourceCodeEnd":1219,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/sana_wm/base.py#L1183-L1219","documentation":"Raised by _generator_from_seed when the seed argument is a list/tuple of length 0 — per-sample seeds were requested but the list is empty.","triggerScenarios":"Passing seed=[] to the latent-init forward (or _generator_from_seed directly), e.g. seeds collected from an empty batch or filtered to nothing.","commonSituations":"seed list built from user requests that are all unseeded; JSON config with \"seed\": [] ; upstream default producing an empty list instead of None.","solutions":["Pass seed=None (defaults to 0) or a single int for a shared generator","Filter empty seed lists to None: seed = seed or None","Build seed lists only when you have at least one seed"],"exampleFix":"# before\nseed = [r.seed for r in requests if r.seed]  # may be []\n# after\nseed = [r.seed for r in requests if r.seed] or None","handlingStrategy":"validation","validationCode":"seed = seed if (seed is None or not isinstance(seed, (list, tuple)) or len(seed) > 0) else None","typeGuard":"def seed_ok(s) -> bool:\n    return s is None or not isinstance(s, (list, tuple)) or len(s) >= 1","tryCatchPattern":null,"preventionTips":["Coerce empty seed lists to None","Treat \"seed\": [] in config as unset"],"tags":["seed","generator","validation","sana-wm"],"backgroundTag":"empty-collection-argument","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}