"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import typing
import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor = ...

class HyperparameterScalingType(google.protobuf.message.Message):
    """HyperparameterScalingType defines the way to increase or decrease the value of the hyperparameter
    For details, refer to: https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-define-ranges.html
    See examples of these scaling type, refer to: https://aws.amazon.com/blogs/machine-learning/amazon-sagemaker-automatic-model-tuning-now-supports-random-search-and-hyperparameter-scaling/
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    class Value(_Value, metaclass=_ValueEnumTypeWrapper):
        pass
    class _Value:
        V = typing.NewType('V', builtins.int)
    class _ValueEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Value.V], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
        AUTO = HyperparameterScalingType.Value.V(0)
        LINEAR = HyperparameterScalingType.Value.V(1)
        LOGARITHMIC = HyperparameterScalingType.Value.V(2)
        REVERSELOGARITHMIC = HyperparameterScalingType.Value.V(3)

    AUTO = HyperparameterScalingType.Value.V(0)
    LINEAR = HyperparameterScalingType.Value.V(1)
    LOGARITHMIC = HyperparameterScalingType.Value.V(2)
    REVERSELOGARITHMIC = HyperparameterScalingType.Value.V(3)

    def __init__(self,
        ) -> None: ...
global___HyperparameterScalingType = HyperparameterScalingType

class ContinuousParameterRange(google.protobuf.message.Message):
    """ContinuousParameterRange refers to a continuous range of hyperparameter values, allowing
    users to specify the search space of a floating-point hyperparameter
    https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-define-ranges.html
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    MAX_VALUE_FIELD_NUMBER: builtins.int
    MIN_VALUE_FIELD_NUMBER: builtins.int
    SCALING_TYPE_FIELD_NUMBER: builtins.int
    max_value: builtins.float = ...
    min_value: builtins.float = ...
    scaling_type: global___HyperparameterScalingType.Value.V = ...
    def __init__(self,
        *,
        max_value : builtins.float = ...,
        min_value : builtins.float = ...,
        scaling_type : global___HyperparameterScalingType.Value.V = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"max_value",b"max_value",u"min_value",b"min_value",u"scaling_type",b"scaling_type"]) -> None: ...
global___ContinuousParameterRange = ContinuousParameterRange

class IntegerParameterRange(google.protobuf.message.Message):
    """IntegerParameterRange refers to a discrete range of hyperparameter values, allowing
    users to specify the search space of an integer hyperparameter
    https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-define-ranges.html
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    MAX_VALUE_FIELD_NUMBER: builtins.int
    MIN_VALUE_FIELD_NUMBER: builtins.int
    SCALING_TYPE_FIELD_NUMBER: builtins.int
    max_value: builtins.int = ...
    min_value: builtins.int = ...
    scaling_type: global___HyperparameterScalingType.Value.V = ...
    def __init__(self,
        *,
        max_value : builtins.int = ...,
        min_value : builtins.int = ...,
        scaling_type : global___HyperparameterScalingType.Value.V = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"max_value",b"max_value",u"min_value",b"min_value",u"scaling_type",b"scaling_type"]) -> None: ...
global___IntegerParameterRange = IntegerParameterRange

class CategoricalParameterRange(google.protobuf.message.Message):
    """ContinuousParameterRange refers to a continuous range of hyperparameter values, allowing
    users to specify the search space of a floating-point hyperparameter
    https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-define-ranges.html
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    VALUES_FIELD_NUMBER: builtins.int
    @property
    def values(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
    def __init__(self,
        *,
        values : typing.Optional[typing.Iterable[typing.Text]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"values",b"values"]) -> None: ...
global___CategoricalParameterRange = CategoricalParameterRange

class ParameterRangeOneOf(google.protobuf.message.Message):
    """ParameterRangeOneOf describes a single ParameterRange, which is a one-of structure that can be one of
    the three possible types: ContinuousParameterRange, IntegerParameterRange, and CategoricalParameterRange.
    This one-of structure in Flyte enables specifying a Parameter in a type-safe manner
    See: https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-define-ranges.html
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    CONTINUOUS_PARAMETER_RANGE_FIELD_NUMBER: builtins.int
    INTEGER_PARAMETER_RANGE_FIELD_NUMBER: builtins.int
    CATEGORICAL_PARAMETER_RANGE_FIELD_NUMBER: builtins.int
    @property
    def continuous_parameter_range(self) -> global___ContinuousParameterRange: ...
    @property
    def integer_parameter_range(self) -> global___IntegerParameterRange: ...
    @property
    def categorical_parameter_range(self) -> global___CategoricalParameterRange: ...
    def __init__(self,
        *,
        continuous_parameter_range : typing.Optional[global___ContinuousParameterRange] = ...,
        integer_parameter_range : typing.Optional[global___IntegerParameterRange] = ...,
        categorical_parameter_range : typing.Optional[global___CategoricalParameterRange] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"categorical_parameter_range",b"categorical_parameter_range",u"continuous_parameter_range",b"continuous_parameter_range",u"integer_parameter_range",b"integer_parameter_range",u"parameter_range_type",b"parameter_range_type"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"categorical_parameter_range",b"categorical_parameter_range",u"continuous_parameter_range",b"continuous_parameter_range",u"integer_parameter_range",b"integer_parameter_range",u"parameter_range_type",b"parameter_range_type"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal[u"parameter_range_type",b"parameter_range_type"]) -> typing.Optional[typing_extensions.Literal["continuous_parameter_range","integer_parameter_range","categorical_parameter_range"]]: ...
global___ParameterRangeOneOf = ParameterRangeOneOf

class ParameterRanges(google.protobuf.message.Message):
    """ParameterRanges is a map that maps hyperparameter name to the corresponding hyperparameter range
    https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-define-ranges.html
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    class ParameterRangeMapEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: typing.Text = ...
        @property
        def value(self) -> global___ParameterRangeOneOf: ...
        def __init__(self,
            *,
            key : typing.Text = ...,
            value : typing.Optional[global___ParameterRangeOneOf] = ...,
            ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal[u"value",b"value"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal[u"key",b"key",u"value",b"value"]) -> None: ...

    PARAMETER_RANGE_MAP_FIELD_NUMBER: builtins.int
    @property
    def parameter_range_map(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, global___ParameterRangeOneOf]: ...
    def __init__(self,
        *,
        parameter_range_map : typing.Optional[typing.Mapping[typing.Text, global___ParameterRangeOneOf]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"parameter_range_map",b"parameter_range_map"]) -> None: ...
global___ParameterRanges = ParameterRanges
