1  #!/usr/bin/env python3
       2  """Miscellaneous diagnostics for the import system"""
       3  
       4  import sys
       5  import argparse
       6  from pprint import pprint
       7  
       8  def _dump_state(args):
       9      print(sys.version)
      10      for name in args.attributes:
      11          print("sys.{}:".format(name))
      12          pprint(getattr(sys, name))
      13  
      14  def _add_dump_args(cmd):
      15      cmd.add_argument("attributes", metavar="ATTR", nargs="+",
      16                       help="sys module attribute to display")
      17  
      18  COMMANDS = (
      19    ("dump", "Dump import state", _dump_state, _add_dump_args),
      20  )
      21  
      22  def _make_parser():
      23      parser = argparse.ArgumentParser()
      24      sub = parser.add_subparsers(title="Commands")
      25      for name, description, implementation, add_args in COMMANDS:
      26          cmd = sub.add_parser(name, help=description)
      27          cmd.set_defaults(command=implementation)
      28          add_args(cmd)
      29      return parser
      30  
      31  def main(args):
      32      parser = _make_parser()
      33      args = parser.parse_args(args)
      34      return args.command(args)
      35  
      36  if __name__ == "__main__":
      37      sys.exit(main(sys.argv[1:]))