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
add_subparsers(dest=...)records which verb was used.set_defaults(func=...)is the usual dispatch trick.- Each subparser has its own help text.
Keywords and builtins used here
defintplayprintreturnstatstype
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.
Step 2 of 4 in Command line, step 23 of 41 in Domain tools.