def _hyperparameter_range_and_class()

in src/sagemaker/algorithm.py [0:0]


    def _hyperparameter_range_and_class(self, parameter_type, hyperparameter):
        """Placeholder docstring."""
        if parameter_type in self._hyperpameters_with_range:
            range_name = parameter_type + "ParameterRangeSpecification"

        parameter_class = None
        parameter_range = None

        if parameter_type in ("Integer", "Continuous"):
            # Integer and Continuous are handled the same way. We get the min and max values
            # and just create an Instance of Parameter. Note that the range is optional for all
            # the Parameter Types.
            if parameter_type == "Integer":
                parameter_class = sagemaker.parameter.IntegerParameter
            else:
                parameter_class = sagemaker.parameter.ContinuousParameter

            if "Range" in hyperparameter:
                min_value = parameter_class.cast_to_type(
                    hyperparameter["Range"][range_name]["MinValue"]
                )
                max_value = parameter_class.cast_to_type(
                    hyperparameter["Range"][range_name]["MaxValue"]
                )
                parameter_range = parameter_class(min_value, max_value)

        elif parameter_type == "Categorical":
            parameter_class = sagemaker.parameter.CategoricalParameter
            if "Range" in hyperparameter:
                values = hyperparameter["Range"][range_name]["Values"]
                parameter_range = sagemaker.parameter.CategoricalParameter(values)
        elif parameter_type == "FreeText":
            pass
        else:
            raise ValueError(
                "Invalid Hyperparameter type: %s. Valid ones are:"
                "(Integer, Continuous, Categorical, FreeText)" % parameter_type
            )

        return parameter_class, parameter_range