Skip to content

Instantly share code, notes, and snippets.

@tejashah88
Created November 19, 2024 03:34
Show Gist options
  • Save tejashah88/3679732e5ee704f7d24fde470b7f0af7 to your computer and use it in GitHub Desktop.
Save tejashah88/3679732e5ee704f7d24fde470b7f0af7 to your computer and use it in GitHub Desktop.
A basic implementation for converting program arguments to dataclass instances.
# Adapted from source: https://stackoverflow.com/a/71035314
from dataclasses import dataclass
from argparse import ArgumentParser
@dataclass
class BaseProgramArgs:
@classmethod
def from_args(cls, argument_parser: ArgumentParser):
return cls(**vars(argument_parser.parse_args()))
'''
Example Usage:
python -m utils.cli_parser -a test -b 3
# Outputs 'ExampleProgramArgs(first_var='test', second_var=3)'
'''
if __name__ == '__main__':
@dataclass
class ExampleProgramArgs(BaseProgramArgs):
first_var: str
second_var: int
parser = ArgumentParser('This CLI program uses type hints!')
parser.add_argument('-a', '--first-var')
parser.add_argument('-b', '--another-var', type=int, dest='second_var')
args_obj = ExampleProgramArgs.from_args(parser)
print(args_obj)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment