Frozen Dataclasses

The @frozen_dataclass decorator creates immutable configuration classes.

Basic Usage

from vidhi import frozen_dataclass

@frozen_dataclass
class Config:
    name: str
    value: int = 10

config = Config(name="test")
config.value = 20  # Raises AttributeError

Post-Initialization

Modify attributes during __post_init__ using object.__setattr__():

@frozen_dataclass
class Config:
    value: int = 10
    doubled: int = None

    def __post_init__(self):
        object.__setattr__(self, "doubled", self.value * 2)

Field Helper

The field() function adds CLI metadata to fields:

from vidhi import frozen_dataclass, field

@frozen_dataclass
class Config:
    learning_rate: float = field(
        0.001,
        help="Learning rate for optimizer",
        name="lr"  # CLI alias: --lr instead of --learning_rate
    )

Parameters:

  • default: Default value

  • help: Help text for --help output

  • name: Custom CLI argument name