from enum import Enum
[docs]class ExplicitEnum(str, Enum):
    """
    Enum with more explicit error message for missing values.
    """
    def __str__(self):
        return str(self.value)
    @classmethod
    def _missing_(cls, value):
        raise ValueError(
            f"{value} is not a valid {cls.__name__}, please select one of {list(cls._value2member_map_.keys())}"
        ) 
[docs]class PaddingStrategy(ExplicitEnum):
    """
    Possible values for the `padding` argument in [`EventTokenizer.__call__`]. Useful for tab-completion in an
    IDE.
    """
    LONGEST = "longest"
    MAX_LENGTH = "max_length"
    DO_NOT_PAD = "do_not_pad" 
class TensorType(ExplicitEnum):
    """
    Possible values for the `return_tensors` argument in [`EventTokenizerBase.__call__`]. Useful for
    tab-completion in an IDE.
    """
    PYTORCH = "pt"
    TENSORFLOW = "tf"
    NUMPY = "np"
[docs]class RunnerPhase(ExplicitEnum):
    """Model runner phase enum.
    """
    TRAIN = 'train'
    VALIDATE = 'validate'
    PREDICT = 'predict' 
class LossFunction(ExplicitEnum):
    """Loss function for neural TPP model.
    """
    LOGLIKE = 'loglike'
    PARTIAL_TIME_LOSS = 'rmse'
    PARTIAL_EVENT_LOSS = 'accuracy'
[docs]class LogConst:
    """Format for log handler.
    """
    DEFAULT_FORMAT = '[%(asctime)s] [%(levelname)s] %(message)s'
    DEFAULT_FORMAT_LONG = '%(asctime)s - %(filename)s[pid:%(process)d;line:%(lineno)d:%(funcName)s]' \
                          
' - %(levelname)s: %(message)s' 
class PredOutputIndex:
    """Positional index for the output tuple in ModelRunner.
    """
    TimePredIndex = 0
    TypePredIndex = 1
[docs]class DefaultRunnerConfig:
    DEFAULT_DATASET_ID = 'conttime' 
[docs]class TruncationStrategy(ExplicitEnum):
    """
    Possible values for the `truncation` argument in [`EventTokenizer.__call__`]. Useful for tab-completion in
    an IDE.
    """
    LONGEST_FIRST = "longest_first"
    DO_NOT_TRUNCATE = "do_not_truncate" 
class Backend(ExplicitEnum):
    """
    Possible values for the `truncation` argument in [`EventTokenizer.__call__`]. Useful for tab-completion in
    an IDE.
    """
    Torch = 'torch'
    TF = 'tensorflow'