#!/usr/bin/python
#
# Copyright 2018-2023 Polyaxon, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from clipped.utils.enums import PEnum


class V1MatrixKind(str, PEnum):
    RANDOM = "random"
    GRID = "grid"
    HYPERBAND = "hyperband"
    BAYES = "bayes"
    HYPEROPT = "hyperopt"
    ITERATIVE = "iterative"
    MAPPING = "mapping"

    @classmethod
    def eager_values(cls):
        return {
            cls.RANDOM,
            cls.GRID,
            cls.MAPPING,
        }

    @classmethod
    def iteration_values(cls):
        return {
            cls.HYPERBAND,
            cls.BAYES,
            cls.HYPEROPT,
            cls.ITERATIVE,
        }


class V1HPKind(str, PEnum):
    CHOICE = "choice"
    PCHOICE = "pchoice"
    RANGE = "range"
    DATERANGE = "daterange"
    DATETIMERANGE = "datetimerange"
    LINSPACE = "linspace"
    LOGSPACE = "logspace"
    GEOMSPACE = "geomspace"
    UNIFORM = "uniform"
    QUNIFORM = "quniform"
    LOGUNIFORM = "loguniform"
    QLOGUNIFORM = "qloguniform"
    NORMAL = "normal"
    QNORMAL = "qnormal"
    LOGNORMAL = "lognormal"
    QLOGNORMAL = "qlognormal"
