Skip to content

yapx.ArgumentParser

Bases: ArgumentParser

Functions

add_arguments

add_arguments(args_model: Union[Callable[..., Any], Type[Dataclass], Dict[str, Field]]) -> None

Add arguments from the given function or dataframe.

Parameters:

Name Type Description Default
args_model Union[Callable[..., Any], Type[Dataclass], Dict[str, Field]]

a function or dataclass from which to derive arguments.

required

Examples:

>>> import yapx
>>> from dataclasses import dataclass
...
>>> @dataclass
... class AddNums:
...     x: int
...     y: int
...
>>> parser = yapx.ArgumentParser()
>>> parser.add_arguments(AddNums)
>>> parsed = parser.parse_args(['-x', '1', '-y', '2'])
>>> (parsed.x, parsed.y)
(1, 2)
>>> import yapx
...
>>> def add_nums(x: int, y: int):
...     return x + y
...
>>> parser = yapx.ArgumentParser()
>>> parser.add_arguments(add_nums)
>>> parsed = parser.parse_args(['-x', '1', '-y', '2'])
>>> (parsed.x, parsed.y)
(1, 2)

add_command

add_command(args_model: Union[Callable[..., Any], Type[Dataclass]], name: Optional[str] = None, **kwargs: Any) -> ArgumentParser

Create a new subcommand and add arguments from the given function or dataframe to it.

Parameters:

Name Type Description Default
args_model Union[Callable[..., Any], Type[Dataclass]]

a function or dataclass from which to derive arguments.

required
name Optional[str]

name of the command

None
**kwargs Any

passed to subparsers.add_parser(...)

{}

Returns:

Type Description
ArgumentParser

the new subparser

Examples:

>>> import yapx
>>> from dataclasses import dataclass
...
>>> @dataclass
... class AddNums:
...     x: int
...     y: int
...
>>> parser = yapx.ArgumentParser()
>>> subparser_1 = parser.add_command(AddNums, name='add')
>>> subparser_2 = parser.add_command(AddNums, name='subtract')
...
>>> parsed = parser.parse_args(['add', '-x', '1', '-y', '2'])
>>> (parsed.x, parsed.y)
(1, 2)
>>> import yapx
...
>>> def add_nums(x: int, y: int):
...     return x + y
...
>>> def subtract_nums(x: int, y: int):
...     return x - y
...
>>> parser = yapx.ArgumentParser()
>>> subparser_1 = parser.add_command(add_nums, name='add')
>>> subparser_2 = parser.add_command(subtract_nums, name='subtract')
...
>>> parsed = parser.parse_args(['subtract', '-x', '1', '-y', '2'])
...
>>> (parsed.x, parsed.y)
(1, 2)

parse_args_to_model

parse_args_to_model(args: Optional[Sequence[str]] = None, args_model: Optional[Type[Dataclass]] = None, skip_pydantic_validation: bool = False) -> Dataclass

Use parsed args to instantiate the given data model.

Parameters:

Name Type Description Default
args Optional[Sequence[str]]

...

None
args_model Optional[Type[Dataclass]]

...

None
skip_pydantic_validation bool

...

False

Returns:

Type Description
Dataclass

...

Examples:

>>> import yapx
>>> from dataclasses import dataclass
...
>>> @dataclass
... class AddNums:
...     x: int
...     y: int
...
>>> parser = yapx.ArgumentParser()
>>> parser.add_arguments(AddNums)
>>> parsed = parser.parse_args_to_model(['-x', '1', '-y', '2'])
...
>>> (parsed.x, parsed.y)
(1, 2)

parse_known_args_to_model

parse_known_args_to_model(args: Optional[Sequence[str]] = None, args_model: Optional[Type[Dataclass]] = None, skip_pydantic_validation: bool = False) -> Tuple[Dataclass, List[str]]

Use parsed args to instantiate the given data model.

Parameters:

Name Type Description Default
args Optional[Sequence[str]]

...

None
args_model Optional[Type[Dataclass]]

...

None
skip_pydantic_validation bool

...

False

Returns:

Type Description
Tuple[Dataclass, List[str]]

...

Examples:

>>> import yapx
>>> from dataclasses import dataclass
...
>>> @dataclass
... class AddNums:
...     x: int
...     y: int
...
>>> parser = yapx.ArgumentParser()
>>> parser.add_arguments(AddNums)
>>> parsed, unknown = parser.parse_known_args_to_model(['-x', '1', '-y', '2', '-z', '3'])
...
>>> (parsed.x, parsed.y)
(1, 2)
>>> unknown
['-z', '3']

print_help

print_help(file: Optional[IO[str]] = None, include_commands: bool = False) -> None

Print CLI help.

Parameters:

Name Type Description Default
file Optional[IO[str]]

...

None
include_commands bool

if True, also print help for each command.

False

Examples:

>>> import yapx
>>> from dataclasses import dataclass
...
>>> @dataclass
... class AddNums:
...     x: int
...     y: int
...
>>> parser = yapx.ArgumentParser()
>>> parser.add_arguments(AddNums)
...
>>> parser.print_help(include_commands=True)