{"record":{"id":"6504ca9b552d9add","repo":"Comfy-Org/ComfyUI","slug":"invalid-causality-axis-causality-axis","errorCode":null,"errorMessage":"Invalid causality_axis: {causality_axis}","messagePattern":"Invalid causality_axis: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"comfy/ldm/lightricks/vae/causal_audio_autoencoder.py","lineNumber":142,"sourceCode":"\n        # Ensure kernel_size and dilation are tuples\n        kernel_size = nn.modules.utils._pair(kernel_size)\n        dilation = nn.modules.utils._pair(dilation)\n\n        # Calculate padding dimensions\n        pad_h = (kernel_size[0] - 1) * dilation[0]\n        pad_w = (kernel_size[1] - 1) * dilation[1]\n\n        # The padding tuple for F.pad is (pad_left, pad_right, pad_top, pad_bottom)\n        match self.causality_axis:\n            case CausalityAxis.NONE:\n                self.padding = (pad_w // 2, pad_w - pad_w // 2, pad_h // 2, pad_h - pad_h // 2)\n            case CausalityAxis.WIDTH | CausalityAxis.WIDTH_COMPATIBILITY:\n                self.padding = (pad_w, 0, pad_h // 2, pad_h - pad_h // 2)\n            case CausalityAxis.HEIGHT:\n                self.padding = (pad_w // 2, pad_w - pad_w // 2, pad_h, 0)\n            case _:\n                raise ValueError(f\"Invalid causality_axis: {causality_axis}\")\n\n        # The internal convolution layer uses no padding, as we handle it manually\n        self.conv = ops.Conv2d(\n            in_channels,\n            out_channels,\n            kernel_size,\n            stride=stride,\n            padding=0,\n            dilation=dilation,\n            groups=groups,\n            bias=bias,\n        )\n\n    def forward(self, x):\n        # Apply causal padding before convolution\n        x = F.pad(x, self.padding)\n        return self.conv(x)\n","sourceCodeStart":124,"sourceCodeEnd":160,"githubUrl":"https://github.com/Comfy-Org/ComfyUI/blob/1c6d8d45b3693bfbb32385b410d813a7fd6be216/comfy/ldm/lightricks/vae/causal_audio_autoencoder.py#L124-L160","documentation":"Raised in CausalConv2d.__init__ when the causality_axis match statement falls through, i.e. the value is not one of CausalityAxis.NONE, WIDTH, WIDTH_COMPATIBILITY, or HEIGHT. Because the parameter is normally coerced to a CausalityAxis, this only fires when an invalid enum-like value bypasses validation.","triggerScenarios":"Constructing CausalConv2d (or calling make_conv2d which forwards causality_axis) with a value that is not a valid CausalityAxis member — e.g. a look-alike enum from another module or an unvalidated string that slipped through on a code path that skips coerce.","commonSituations":"Mixing enum classes between copied lightricks modules; monkey-patched or duplicated CausalityAxis definitions where equality/membership fails; passing raw strings on paths that do not run _missing_ conversion.","solutions":["Convert the value with CausalityAxis(value) (or the module's coerce) before constructing CausalConv2d","Pass an actual CausalityAxis member: CausalityAxis.WIDTH, CausalityAxis.HEIGHT, CausalityAxis.NONE, or CausalityAxis.WIDTH_COMPATIBILITY","If you copied the lightricks module, make sure only one CausalityAxis class is imported everywhere"],"exampleFix":"# before\nconv = CausalConv2d(c_in, c_out, 3, causality_axis=\"width\")\n\n# after\nconv = CausalConv2d(c_in, c_out, 3, causality_axis=CausalityAxis(\"width\"))","handlingStrategy":"validation","validationCode":"axis = causality_axis if isinstance(causality_axis, CausalityAxis) else CausalityAxis(causality_axis)\nconv = CausalConv2d(c_in, c_out, 3, causality_axis=axis)","typeGuard":"def is_causality_axis(v) -> bool:\n    return isinstance(v, CausalityAxis)","tryCatchPattern":null,"preventionTips":["Import CausalityAxis from the same module as CausalConv2d to avoid duplicate enum classes","Convert strings through the enum at the config boundary"],"tags":["enum","convolution","audio-vae","validation"],"backgroundTag":null,"analyzedSha":"1c6d8d45b3693bfbb32385b410d813a7fd6be216","analyzedAt":"2026-08-14T19:37:18.893Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}