Source code for megatron.energon.edataclass

# Copyright (c) 2025, NVIDIA CORPORATION.
# SPDX-License-Identifier: BSD-3-Clause

from dataclasses import dataclass

from typing_extensions import dataclass_transform


# We define an alias for `@dataclass(slots=True, kw_only=True)`,
# because we want to use this combination almost everywhere.
[docs] @dataclass_transform(kw_only_default=True, slots_default=True) def edataclass(cls): """ A dataclass transform that sets the kw_only and slots defaults to True. This is equivalent to `@dataclass(slots=True, kw_only=True)`. If you need more options, use `dataclass` directly. E.g.: `@dataclass(slots=True, kw_only=True, eq=False)`. """ return dataclass(kw_only=True, slots=True)(cls)