| 
									
										
										
										
											2012-04-25 22:17:54 +10:00
										 |  |  | #!/usr/bin/env python3 | 
					
						
							|  |  |  | """Miscellaneous diagnostics for the import system""" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import sys | 
					
						
							|  |  |  | import argparse | 
					
						
							|  |  |  | from pprint import pprint | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def _dump_state(args): | 
					
						
							|  |  |  |     print(sys.version) | 
					
						
							| 
									
										
										
										
											2012-04-29 17:58:24 +10:00
										 |  |  |     for name in args.attributes: | 
					
						
							|  |  |  |         print("sys.{}:".format(name)) | 
					
						
							|  |  |  |         pprint(getattr(sys, name)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def _add_dump_args(cmd): | 
					
						
							|  |  |  |     cmd.add_argument("attributes", metavar="ATTR", nargs="+", | 
					
						
							|  |  |  |                      help="sys module attribute to display") | 
					
						
							| 
									
										
										
										
											2012-04-25 22:17:54 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  | COMMANDS = ( | 
					
						
							| 
									
										
										
										
											2012-04-29 17:58:24 +10:00
										 |  |  |   ("dump", "Dump import state", _dump_state, _add_dump_args), | 
					
						
							| 
									
										
										
										
											2012-04-25 22:17:54 +10:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def _make_parser(): | 
					
						
							|  |  |  |     parser = argparse.ArgumentParser() | 
					
						
							|  |  |  |     sub = parser.add_subparsers(title="Commands") | 
					
						
							| 
									
										
										
										
											2012-04-29 17:58:24 +10:00
										 |  |  |     for name, description, implementation, add_args in COMMANDS: | 
					
						
							| 
									
										
										
										
											2012-04-25 22:17:54 +10:00
										 |  |  |         cmd = sub.add_parser(name, help=description) | 
					
						
							|  |  |  |         cmd.set_defaults(command=implementation) | 
					
						
							| 
									
										
										
										
											2012-04-29 17:58:24 +10:00
										 |  |  |         add_args(cmd) | 
					
						
							| 
									
										
										
										
											2012-04-25 22:17:54 +10:00
										 |  |  |     return parser | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def main(args): | 
					
						
							|  |  |  |     parser = _make_parser() | 
					
						
							|  |  |  |     args = parser.parse_args(args) | 
					
						
							|  |  |  |     return args.command(args) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							|  |  |  |     sys.exit(main(sys.argv[1:])) |