build_dataclass.py 582 B

1234567891011121314151617
  1. import argparse
  2. import dataclasses
  3. from typeguard import check_type
  4. def build_dataclass(dataclass, args: argparse.Namespace):
  5. """Helper function to build dataclass from 'args'."""
  6. kwargs = {}
  7. for field in dataclasses.fields(dataclass):
  8. if not hasattr(args, field.name):
  9. raise ValueError(
  10. f"args doesn't have {field.name}. You need to set it to ArgumentsParser"
  11. )
  12. check_type(field.name, getattr(args, field.name), field.type)
  13. kwargs[field.name] = getattr(args, field.name)
  14. return dataclass(**kwargs)