{"record":{"id":"2fe56f05c7d59441","repo":"keras-team/keras","slug":"self-value-range-validation-error-received-valu","errorCode":null,"errorMessage":"{self._VALUE_RANGE_VALIDATION_ERROR}Received: value_range={value_range}","messagePattern":"(.+?)Received: value_range=(.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"keras/src/layers/preprocessing/image_preprocessing/auto_contrast.py","lineNumber":46,"sourceCode":"            Defaults to `(0, 255)`.\n    \"\"\"\n\n    _USE_BASE_FACTOR = False\n    _VALUE_RANGE_VALIDATION_ERROR = (\n        \"The `value_range` argument should be a list of two numbers. \"\n    )\n\n    def __init__(\n        self,\n        value_range=(0, 255),\n        **kwargs,\n    ):\n        super().__init__(**kwargs)\n        self._set_value_range(value_range)\n\n    def _set_value_range(self, value_range):\n        if not isinstance(value_range, (tuple, list)):\n            raise ValueError(\n                self._VALUE_RANGE_VALIDATION_ERROR\n                + f\"Received: value_range={value_range}\"\n            )\n        if len(value_range) != 2:\n            raise ValueError(\n                self._VALUE_RANGE_VALIDATION_ERROR\n                + f\"Received: value_range={value_range}\"\n            )\n        self.value_range = sorted(value_range)\n\n    def transform_images(self, images, transformation=None, training=True):\n        original_images = images\n        images = self._transform_value_range(\n            images,\n            original_range=self.value_range,\n            target_range=(0, 255),\n            dtype=self.compute_dtype,\n        )","sourceCodeStart":28,"sourceCodeEnd":64,"githubUrl":"https://github.com/keras-team/keras/blob/7a34a03db60bf60042242d6a556fc3be119046a5/keras/src/layers/preprocessing/image_preprocessing/auto_contrast.py#L28-L64","documentation":"AutoContrast and other image preprocessing layers sharing this helper require value_range to be a tuple or list describing the valid pixel range of the input images, e.g. (0, 255) or (0.0, 1.0). The constructor raises this ValueError when value_range is not a tuple/list at all - for example a bare int, a string, or None.","triggerScenarios":"keras.layers.AutoContrast(value_range=255), value_range=None, or value_range=\"0-255\".","commonSituations":"Assuming value_range is a single max value; forgetting the argument in code that builds layers from a config dict where the key may be absent or set to a scalar.","solutions":["Pass a two-element tuple/list matching your data, e.g. value_range=(0, 255) for uint8 images or (0.0, 1.0) for normalized floats.","Ensure the value is a literal tuple/list, not a scalar or string."],"exampleFix":"# before\nlayer = keras.layers.AutoContrast(value_range=255)\n# after\nlayer = keras.layers.AutoContrast(value_range=(0, 255))","handlingStrategy":"type-guard","validationCode":"assert isinstance(value_range, (tuple, list)), f\"value_range must be tuple/list, got {type(value_range)}\"","typeGuard":"def is_valid_value_range(v):\n    return isinstance(v, (tuple, list)) and len(v) == 2\n","tryCatchPattern":null,"preventionTips":["Standardize pipeline constants like VALUE_RANGE_255 = (0, 255) and reuse them."],"tags":["keras","image-preprocessing","auto-contrast","invalid-argument"],"backgroundTag":"invalid-argument-type","analyzedSha":"7a34a03db60bf60042242d6a556fc3be119046a5","analyzedAt":"2026-08-25T21:25:25.994Z","schemaVersion":2},"datasetVersion":"2026-08-26T02:17:13.382Z"}