import argparse | |
import dataclasses | |
from typeguard import check_type | |
def build_dataclass(dataclass, args: argparse.Namespace): | |
"""Helper function to build dataclass from 'args'.""" | |
kwargs = {} | |
for field in dataclasses.fields(dataclass): | |
if not hasattr(args, field.name): | |
raise ValueError( | |
f"args doesn't have {field.name}. You need to set it to ArgumentsParser" | |
) | |
check_type(field.name, getattr(args, field.name), field.type) | |
kwargs[field.name] = getattr(args, field.name) | |
return dataclass(**kwargs) | |