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 that are derived from the given function or dataclass.

PARAMETER DESCRIPTION
args_model

a function or dataclass from which to derive arguments.

TYPE: Union[Callable[..., Any], type[Dataclass], dict[str, Field]]

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"])
assert (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"])
assert (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 populate it with arguments derived from the given function or dataclass.

PARAMETER DESCRIPTION
args_model

a function or dataclass from which to derive arguments.

TYPE: Union[Callable[..., Any], type[Dataclass]]

name

name of the command

TYPE: Optional[str] DEFAULT: None

**kwargs

passed to subparsers.add_parser(...)

TYPE: Any DEFAULT: {}

RETURNS 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"])
assert (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"])
assert (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.

PARAMETER DESCRIPTION
args

...

TYPE: Optional[Sequence[str]] DEFAULT: None

args_model

...

TYPE: Optional[type[Dataclass]] DEFAULT: None

skip_pydantic_validation

...

TYPE: bool DEFAULT: False

RETURNS 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"])

assert (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.

PARAMETER DESCRIPTION
args

...

TYPE: Optional[Sequence[str]] DEFAULT: None

args_model

...

TYPE: Optional[type[Dataclass]] DEFAULT: None

skip_pydantic_validation

...

TYPE: bool DEFAULT: False

RETURNS 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",
])
assert (parsed.x, parsed.y) == (1, 2)
assert unknown == ["-z", "3"]

print_help

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

Print CLI help.

PARAMETER DESCRIPTION
file

...

TYPE: Optional[IO[str]] DEFAULT: None

include_commands

if True, also print help for each command.

TYPE: bool DEFAULT: 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)