{"record":{"id":"0c800b6359446207","repo":"Unity-Technologies/ml-agents","slug":"the-sampling-interval-interval-must-contain-exac","errorCode":null,"errorMessage":"The sampling interval {interval} must contain exactly two values.","messagePattern":"The sampling interval (.+?) must contain exactly two values\\.","errorType":"validation","errorClass":"TrainerConfigError","httpStatus":null,"severity":"error","filePath":"ml-agents/mlagents/trainers/settings.py","lineNumber":433,"sourceCode":"@attr.s(auto_attribs=True)\nclass MultiRangeUniformSettings(ParameterRandomizationSettings):\n    intervals: List[Tuple[float, float]] = attr.ib()\n\n    def __str__(self) -> str:\n        \"\"\"\n        Helper method to output sampler stats to console.\n        \"\"\"\n        return f\"MultiRangeUniform sampler: intervals={self.intervals}\"\n\n    @intervals.default\n    def _intervals_default(self):\n        return [[0.0, 1.0]]\n\n    @intervals.validator\n    def _check_intervals(self, attribute, value):\n        for interval in self.intervals:\n            if len(interval) != 2:\n                raise TrainerConfigError(\n                    f\"The sampling interval {interval} must contain exactly two values.\"\n                )\n            min_value, max_value = interval\n            if min_value > max_value:\n                raise TrainerConfigError(\n                    f\"Minimum value is greater than maximum value in interval {interval}.\"\n                )\n\n    def apply(self, key: str, env_channel: EnvironmentParametersChannel) -> None:\n        \"\"\"\n        Helper method to send sampler settings over EnvironmentParametersChannel\n        Calls the multirangeuniform sampler type set method.\n        :param key: environment parameter to be sampled\n        :param env_channel: The EnvironmentParametersChannel to communicate sampler settings to environment\n        \"\"\"\n        env_channel.set_multirangeuniform_sampler_parameters(\n            key, self.intervals, self.seed\n        )","sourceCodeStart":415,"sourceCodeEnd":451,"githubUrl":"https://github.com/Unity-Technologies/ml-agents/blob/3ecb446f75d1e7400eb404c562dc005d3164cffc/ml-agents/mlagents/trainers/settings.py#L415-L451","documentation":"MultiRangeUniformSamplerSettings validates its `intervals` via an attrs validator requiring every interval to be exactly a two-element [min, max] pair. An interval with any other length cannot be interpreted as a range and raises this error.","triggerScenarios":"Providing intervals like [[0.0, 1.0, 2.0]] or [[1.0]] in a multirangeuniform sampler configuration.","commonSituations":"Adding a third element (e.g. a weight or step) to an interval, or a YAML list accidentally flattened/nested incorrectly.","solutions":["Ensure each interval has exactly two numbers: [min_value, max_value].","Remove extra elements or split multi-point entries into separate intervals.","Print/parse the YAML to confirm the intervals structure is a list of 2-element lists."],"exampleFix":"# before\nintervals: [[0.0, 1.0, 2.0]]\n\n# after\nintervals: [[0.0, 1.0], [1.5, 2.0]]","handlingStrategy":"validation","validationCode":"for iv in spec['sampler_parameters']['intervals']:\n    if len(iv) != 2:\n        raise ValueError(f'interval {iv} must contain exactly two values')","typeGuard":"def are_valid_intervals(intervals) -> bool:\n    return isinstance(intervals, list) and all(isinstance(i, (list, tuple)) and len(i) == 2 for i in intervals)","tryCatchPattern":"try:\n    sampler = MultiRangeUniformSamplerSettings(**sp)\nexcept TrainerConfigError as e:\n    print(f'Fix intervals: {e}')\n    raise","preventionTips":["Represent intervals strictly as [min, max] pairs","Lint YAML lists for accidental extra elements","Keep multi-range definitions in separate interval entries"],"tags":["config","validation","sampler","parameter-randomization"],"backgroundTag":"invalid-config-schema","analyzedSha":"3ecb446f75d1e7400eb404c562dc005d3164cffc","analyzedAt":"2026-09-02T16:33:12.832Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-09T21:17:11.164Z"}