code: def main():
      description = """
      Run CI jobs locally via Docker. This facilitates reproducing CI failures for
      fast iteration. Note that many of the Docker images required are large (the
      CPU and GPU images are both over 25GB) and may take some time to download on first use.
      """
      parser = argparse.ArgumentParser(description=description)
      subparsers = parser.add_subparsers(dest="command")
  
      commands = {}
  
      # Add manually defined commands
      for func in [docs, serve_docs, lint]:
          add_subparser(func, subparsers)
          commands[cli_name(func.__name__)] = func
  
      # Add generated commands
      for func, options, help in generated:
          add_subparser(func, subparsers, options, help)
          commands[cli_name(func.__name__)] = func
  
      args = parser.parse_args()
  
      if args.command is None:
          # Command not found in list, error out
          parser.print_help()
          exit(1)
  
      func = commands[args.command]
  
      # Extract out the parsed args and invoke the relevant function
      kwargs = {
          k: getattr(args, k)
          for k in dir(args)
          if not k.startswith("_") and k != "command"
      }
      func(**kwargs)
  
imports: import sys
  import multiprocessing
  import os
  import getpass
  import inspect
  import argparse
  import json
  import shutil
  import grp
  import string
  import random
  import subprocess
  import platform
  import textwrap
  import typing
  from pathlib import Path
  from typing import List, Dict, Any, Optional, Tuple, Callable, Union
label_desc: Use image node_id 19 for calling a global function with example usage: main() without return types