INNER CODE UNIT · Python
field
allenai/dolma · python/dolma/cli/__init__.py:61
def field(default: T = MISSING, help: Optional[str] = None, **extra: Any) -> T:
metadata = {"help": help, "type": type(default), "default": default, "nargs": _field_nargs(default), **extra}
return dataclass_field(default_factory=lambda: deepcopy(default), metadata=metadata)
class DataClass(Protocol):
__dataclass_fields__: Dict[str, Field]
def make_parser(parser: A, config: Type[DataClass], prefix: Optional[str] = None) -> A:
for field_name, dt_field in config.__dataclass_fields__.items():
# get type from annotations or metadata
typ_ = config.__annotations__.get(field_name, dt_field.metadata.get("type", MISSING))
if typ_ is MISSING:
warning(f"No type annotation for field {field_name} in {config.__name__}")
continue