{"record":{"id":"2bc849a0bb07a270","repo":"sgl-project/sglang","slug":"invalid-padding-param-padding","errorCode":null,"errorMessage":"Invalid padding param: {padding}!","messagePattern":"Invalid padding param: (.+?)!","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/models/phi4mm_utils.py","lineNumber":951,"sourceCode":"        self.cache_drop_size = None\n        if padding is None:\n            self._left_padding = kernel_size - 1\n            self._right_padding = stride - 1\n        else:\n            if stride != 1 and padding != kernel_size - 1:\n                raise ValueError(\"No striding allowed for non-symmetric convolutions!\")\n            if isinstance(padding, int):\n                self._left_padding = padding\n                self._right_padding = padding\n            elif (\n                isinstance(padding, list)\n                and len(padding) == 2\n                and padding[0] + padding[1] == kernel_size - 1\n            ):\n                self._left_padding = padding[0]\n                self._right_padding = padding[1]\n            else:\n                raise ValueError(f\"Invalid padding param: {padding}!\")\n\n        self._max_cache_len = self._left_padding\n\n        super().__init__(\n            in_channels=in_channels,\n            out_channels=out_channels,\n            kernel_size=kernel_size,\n            stride=stride,\n            padding=0,\n            dilation=dilation,\n            groups=groups,\n            bias=bias,\n            padding_mode=padding_mode,\n            device=device,\n            dtype=dtype,\n        )\n\n    def update_cache(self, x, cache=None):","sourceCodeStart":933,"sourceCodeEnd":969,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/models/phi4mm_utils.py#L933-L969","documentation":"When padding is explicitly provided to CausalConv1D it must be either an int or a 2-element list whose entries sum to kernel_size - 1 (fully causal asymmetric padding). Anything else — wrong length, tuple instead of list, or sum mismatch — raises this ValueError.","triggerScenarios":"Passing padding as a tuple, a list of length != 2, or a list [p0, p1] with p0+p1 != kernel_size-1.","commonSituations":"Porting padding specs from PyTorch Conv1d (which accepts tuples); assuming 'same'-style padding; arithmetic mistakes computing asymmetric padding.","solutions":["Use padding=None for automatic causal padding","Pass an int equal to kernel_size - 1","Pass a 2-element list [left, right] with left + right == kernel_size - 1"],"exampleFix":"# before\nCausalConv1D(..., kernel_size=5, padding=(2, 2))  # tuple + sum 4 != kernel-1\n# after\nCausalConv1D(..., kernel_size=5, padding=[4, 0])","handlingStrategy":"type-guard","validationCode":"ok = padding is None or isinstance(padding, int) or (\n    isinstance(padding, list) and len(padding) == 2 and sum(padding) == kernel_size - 1\n)\nassert ok, f\"invalid padding {padding!r} for kernel_size={kernel_size}\"","typeGuard":"def is_valid_causal_padding(kernel_size: int, padding) -> bool:\n    if padding is None or isinstance(padding, int):\n        return True\n    return (\n        isinstance(padding, list)\n        and len(padding) == 2\n        and padding[0] + padding[1] == kernel_size - 1\n    )","tryCatchPattern":null,"preventionTips":["Use lists, not tuples, for asymmetric padding","Always verify left+right == kernel_size - 1"],"tags":["convolution","causal","padding","type-validation"],"backgroundTag":"invalid-convolution-padding","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}