17db96d56Sopenharmony_ci#!/usr/bin/env python3 27db96d56Sopenharmony_ci"""Miscellaneous diagnostics for the import system""" 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ciimport sys 57db96d56Sopenharmony_ciimport argparse 67db96d56Sopenharmony_cifrom pprint import pprint 77db96d56Sopenharmony_ci 87db96d56Sopenharmony_cidef _dump_state(args): 97db96d56Sopenharmony_ci print(sys.version) 107db96d56Sopenharmony_ci for name in args.attributes: 117db96d56Sopenharmony_ci print("sys.{}:".format(name)) 127db96d56Sopenharmony_ci pprint(getattr(sys, name)) 137db96d56Sopenharmony_ci 147db96d56Sopenharmony_cidef _add_dump_args(cmd): 157db96d56Sopenharmony_ci cmd.add_argument("attributes", metavar="ATTR", nargs="+", 167db96d56Sopenharmony_ci help="sys module attribute to display") 177db96d56Sopenharmony_ci 187db96d56Sopenharmony_ciCOMMANDS = ( 197db96d56Sopenharmony_ci ("dump", "Dump import state", _dump_state, _add_dump_args), 207db96d56Sopenharmony_ci) 217db96d56Sopenharmony_ci 227db96d56Sopenharmony_cidef _make_parser(): 237db96d56Sopenharmony_ci parser = argparse.ArgumentParser() 247db96d56Sopenharmony_ci sub = parser.add_subparsers(title="Commands") 257db96d56Sopenharmony_ci for name, description, implementation, add_args in COMMANDS: 267db96d56Sopenharmony_ci cmd = sub.add_parser(name, help=description) 277db96d56Sopenharmony_ci cmd.set_defaults(command=implementation) 287db96d56Sopenharmony_ci add_args(cmd) 297db96d56Sopenharmony_ci return parser 307db96d56Sopenharmony_ci 317db96d56Sopenharmony_cidef main(args): 327db96d56Sopenharmony_ci parser = _make_parser() 337db96d56Sopenharmony_ci args = parser.parse_args(args) 347db96d56Sopenharmony_ci return args.command(args) 357db96d56Sopenharmony_ci 367db96d56Sopenharmony_ciif __name__ == "__main__": 377db96d56Sopenharmony_ci sys.exit(main(sys.argv[1:])) 38