{"record":{"id":"3f715ce70ac74b42","repo":"plotly/plotly.js","slug":"contour-data-invalid-for-the-specified-inequality-3f715c","errorCode":null,"errorMessage":"Contour data invalid for the specified inequality range operation.","messagePattern":"Contour data invalid for the specified inequality range operation\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/traces/contour/convert_to_constraints.js","lineNumber":50,"sourceCode":"            }\n            for(i = 0; i < pi0.paths.length; i++) {\n                pi0.paths[i] = op0(pi0.paths[i]);\n            }\n            for(i = 0; i < pi0.starts.length; i++) {\n                pi0.starts[i] = op0(pi0.starts[i]);\n            }\n\n            return pathinfo;\n        case '][':\n            var tmp = op0;\n            op0 = op1;\n            op1 = tmp;\n            // It's a nice rule, except this definitely *is* what's intended here.\n            /* eslint-disable: no-fallthrough */\n        case '[]':\n            /* eslint-enable: no-fallthrough */\n            if(pathinfo.length !== 2) {\n                Lib.warn('Contour data invalid for the specified inequality range operation.');\n            }\n\n            // In this case there should be exactly two contour levels in pathinfo.\n            // - We concatenate the info into one pathinfo.\n            // - We must also flip all of the data in the `[]` case.\n            // This will draw the contours as closed.\n            pi0 = copyPathinfo(pathinfo[0]);\n            pi1 = copyPathinfo(pathinfo[1]);\n\n            for(i = 0; i < pi0.edgepaths.length; i++) {\n                pi0.edgepaths[i] = op0(pi0.edgepaths[i]);\n            }\n            for(i = 0; i < pi0.paths.length; i++) {\n                pi0.paths[i] = op0(pi0.paths[i]);\n            }\n            for(i = 0; i < pi0.starts.length; i++) {\n                pi0.starts[i] = op0(pi0.starts[i]);\n            }","sourceCodeStart":32,"sourceCodeEnd":68,"githubUrl":"https://github.com/plotly/plotly.js/blob/1d090e0b5ffb8d0fdf6e0e4ff51d3f3cf67f1314/src/traces/contour/convert_to_constraints.js#L32-L68","documentation":"Guard in convert_to_constraints for the '][' (and '[]') range inequality operations. These operations require pathinfo entries representing the two boundary contours of the range; the code manipulates/reverses the first pathinfo's paths and starts, and throws when the structure (number of pathinfo levels for the given range) is not what the range operation expects — i.e. the extracted contour data cannot express the requested inequality band.","triggerScenarios":"Thrown at src/traces/contour/convert_to_constraints.js:50 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify contours.start/end/size define a proper band for '][' or '[]' operations.","Ensure the z data actually crosses both range boundary levels so two boundary contours exist.","Adjust the operation (e.g. use '<' or '>' with a single level) if a band is not intended.","Validate the constraint trace's contours settings against the data range."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"1d090e0b5ffb8d0fdf6e0e4ff51d3f3cf67f1314","analyzedAt":"2026-09-02T22:03:39.906Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-10T02:17:09.455Z"}