# 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)