# Source code for dataclass_wizard.enums

    """
    Re-usable Enum definitions

    """
    from enum import Enum

    from .environ import lookups
    from .utils.string_conv import *
    from .utils.wrappers import FuncWrapper

    class DateTimeTo(Enum):
        ISO_FORMAT = 0
        TIMESTAMP = 1

    class LetterCase(Enum):

        # Converts strings (generally in snake case) to camel case.
        #   ex: `my_field_name` -> `myFieldName`
        CAMEL = FuncWrapper(to_camel_case)
        # Converts strings to "upper" camel case.
        #   ex: `my_field_name` -> `MyFieldName`
        PASCAL = FuncWrapper(to_pascal_case)
        # Converts strings (generally in camel or snake case) to lisp case.
        #   ex: `myFieldName` -> `my-field-name`
        LISP = FuncWrapper(to_lisp_case)
        # Converts strings (generally in camel case) to snake case.
        #   ex: `myFieldName` -> `my_field_name`
        SNAKE = FuncWrapper(to_snake_case)
        # Performs no conversion on strings.
        #   ex: `MY_FIELD_NAME` -> `MY_FIELD_NAME`
        NONE = FuncWrapper(lambda s: s)

        def __call__(self, *args):
            return self.value.f(*args)

    class LetterCasePriority(Enum):
        """
        Helper Enum which determines which letter casing we want to
        *prioritize* when loading environment variable names.

        The default
        """
        SCREAMING_SNAKE = FuncWrapper(lookups.with_screaming_snake_case)
        SNAKE = FuncWrapper(lookups.with_snake_case)
        CAMEL = FuncWrapper(lookups.with_pascal_or_camel_case)
        PASCAL = FuncWrapper(lookups.with_pascal_or_camel_case)

        def __call__(self, *args):
            return self.value.f(*args)