import argparse import dataclasses import typing from . import PKG_NAME @dataclasses.dataclass(frozen=True, slots=True) class Parameters: debug: bool = False quiet: bool = False @classmethod def from_namespace(cls, args: argparse.Namespace) -> Parameters: return Parameters(**vars(args)) def parse_parameters(args: typing.Sequence[str]) -> Parameters: default_values = Parameters() parser = argparse.ArgumentParser( PKG_NAME, suggest_on_error=True, ) parser.add_argument( "--debug", action=argparse.BooleanOptionalAction, default=default_values.debug ) parser.add_argument( "--quiet", action=argparse.BooleanOptionalAction, default=default_values.quiet ) parsed_args = parser.parse_args(args) return Parameters.from_namespace(parsed_args)