typestar

Subcommands in Python

Subparsers give one program several verbs, each with its own arguments.

import argparse


def play(args):
    return f"playing {args.lang} step {args.idx}"


def stats(args):
    return f"stats for the {args.window}"


parser = argparse.ArgumentParser(prog="ts")
subs = parser.add_subparsers(dest="command", required=True)

play_parser = subs.add_parser("play", help="play a step")
play_parser.add_argument("lang")
play_parser.add_argument("idx", type=int)
play_parser.set_defaults(func=play)

stats_parser = subs.add_parser("stats")
stats_parser.add_argument("--window", default="week")
stats_parser.set_defaults(func=stats)

args = parser.parse_args(["play", "rust", "3"])
print(args.func(args))

How it works

  1. add_subparsers(dest=...) records which verb was used.
  2. set_defaults(func=...) is the usual dispatch trick.
  3. Each subparser has its own help text.

Keywords and builtins used here

The run, in numbers

Lines
25
Characters to type
617
Tokens
173
Three-star pace
105 tpm

At the three-star pace of 105 tokens a minute, this run takes about 99 seconds.

Type this snippet

Step 2 of 4 in Command line, step 23 of 41 in Domain tools.

← Previous Next →

Subcommands in other languages