Source code for dataclass_wizard.v1.enums

from enum import Enum

from ..utils.string_conv import (to_camel_case,
                                 to_lisp_case,
                                 to_pascal_case,
                                 to_snake_case)
from ..utils.wrappers import FuncWrapper


[docs] class KeyAction(Enum): """ Specifies how to handle unknown keys encountered during deserialization. Actions: - `IGNORE`: Skip unknown keys silently. - `RAISE`: Raise an exception upon encountering the first unknown key. - `WARN`: Log a warning for each unknown key. For capturing unknown keys (e.g., including them in a dataclass), use the `CatchAll` field. More details: https://dataclass-wizard.readthedocs.io/en/latest/common_use_cases/handling_unknown_json_keys.html#capturing-unknown-keys-with-catchall """ IGNORE = 0 # Silently skip unknown keys. RAISE = 1 # Raise an exception for the first unknown key. WARN = 2 # Log a warning for each unknown key.
[docs] class KeyCase(Enum): """ Defines transformations for string keys, commonly used for mapping JSON keys to dataclass fields. Key transformations: - `CAMEL`: Converts snake_case to camelCase. Example: `my_field_name` -> `myFieldName` - `PASCAL`: Converts snake_case to PascalCase (UpperCamelCase). Example: `my_field_name` -> `MyFieldName` - `KEBAB`: Converts camelCase or snake_case to kebab-case. Example: `myFieldName` -> `my-field-name` - `SNAKE`: Converts camelCase to snake_case. Example: `myFieldName` -> `my_field_name` - `AUTO`: Automatically maps JSON keys to dataclass fields by attempting all valid key casing transforms at runtime. Example: `My-Field-Name` -> `my_field_name` (cached for future lookups) By default, no transformation is applied: * Example: `MY_FIELD_NAME` -> `MY_FIELD_NAME` """ # Key casing options CAMEL = C = FuncWrapper(to_camel_case) # Convert to `camelCase` PASCAL = P = FuncWrapper(to_pascal_case) # Convert to `PascalCase` KEBAB = K = FuncWrapper(to_lisp_case) # Convert to `kebab-case` SNAKE = S = FuncWrapper(to_snake_case) # Convert to `snake_case` AUTO = A = None # Attempt all valid casing transforms at runtime. def __call__(self, *args): """Apply the key transformation.""" return self.value.f(*args)