mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	
		
			
	
	
		
			79 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			79 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
								 | 
							
								#!/usr/bin/env python
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# -------------------------------------------------- command-line interface
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import sys, os, pydoc
							 | 
						||
| 
								 | 
							
								from string import lower
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if __name__ == '__main__':
							 | 
						||
| 
								 | 
							
								    import getopt
							 | 
						||
| 
								 | 
							
								    class BadUsage: pass
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    try:
							 | 
						||
| 
								 | 
							
								        opts, args = getopt.getopt(sys.argv[1:], 'k:p:w')
							 | 
						||
| 
								 | 
							
								        writing = 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        for opt, val in opts:
							 | 
						||
| 
								 | 
							
								            if opt == '-k':
							 | 
						||
| 
								 | 
							
								                pydoc.apropos(lower(val))
							 | 
						||
| 
								 | 
							
								                break
							 | 
						||
| 
								 | 
							
								            if opt == '-p':
							 | 
						||
| 
								 | 
							
								                try:
							 | 
						||
| 
								 | 
							
								                    port = int(val)
							 | 
						||
| 
								 | 
							
								                except ValueError:
							 | 
						||
| 
								 | 
							
								                    raise BadUsage
							 | 
						||
| 
								 | 
							
								                def ready(port=port):
							 | 
						||
| 
								 | 
							
								                    print 'server ready at http://127.0.0.1:%d/' % port
							 | 
						||
| 
								 | 
							
								                pydoc.serve(('127.0.0.1', port), ready)
							 | 
						||
| 
								 | 
							
								                break
							 | 
						||
| 
								 | 
							
								            if opt == '-w':
							 | 
						||
| 
								 | 
							
								                if not args: raise BadUsage
							 | 
						||
| 
								 | 
							
								                writing = 1
							 | 
						||
| 
								 | 
							
								        else:
							 | 
						||
| 
								 | 
							
								            if args:
							 | 
						||
| 
								 | 
							
								                for arg in args:
							 | 
						||
| 
								 | 
							
								                    try:
							 | 
						||
| 
								 | 
							
								                        if os.path.isfile(arg):
							 | 
						||
| 
								 | 
							
								                            arg = pydoc.importfile(arg)
							 | 
						||
| 
								 | 
							
								                        if writing:
							 | 
						||
| 
								 | 
							
								                            if os.path.isdir(arg): pydoc.writedocs(arg)
							 | 
						||
| 
								 | 
							
								                            else: pydoc.writedoc(arg)
							 | 
						||
| 
								 | 
							
								                        else: pydoc.man(arg)
							 | 
						||
| 
								 | 
							
								                    except pydoc.DocImportError, value:
							 | 
						||
| 
								 | 
							
								                        print 'problem in %s - %s' % (
							 | 
						||
| 
								 | 
							
								                            value.filename, value.args)
							 | 
						||
| 
								 | 
							
								            else:
							 | 
						||
| 
								 | 
							
								                if sys.platform in ['mac', 'win', 'win32', 'nt']:
							 | 
						||
| 
								 | 
							
								                    # GUI platforms with threading
							 | 
						||
| 
								 | 
							
								                    import threading
							 | 
						||
| 
								 | 
							
								                    ready = threading.Event()
							 | 
						||
| 
								 | 
							
								                    address = ('127.0.0.1', 12346)
							 | 
						||
| 
								 | 
							
								                    threading.Thread(
							 | 
						||
| 
								 | 
							
								                        target=pydoc.serve, args=(address, ready.set)).start()
							 | 
						||
| 
								 | 
							
								                    ready.wait()
							 | 
						||
| 
								 | 
							
								                    import webbrowser
							 | 
						||
| 
								 | 
							
								                    webbrowser.open('http://127.0.0.1:12346/')
							 | 
						||
| 
								 | 
							
								                else:
							 | 
						||
| 
								 | 
							
								                    raise BadUsage
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    except (getopt.error, BadUsage):
							 | 
						||
| 
								 | 
							
								        print """%s <name> ...
							 | 
						||
| 
								 | 
							
								    Show documentation on something.
							 | 
						||
| 
								 | 
							
								    <name> may be the name of a Python function, module, or package,
							 | 
						||
| 
								 | 
							
								    or a dotted reference to a class or function within a module or
							 | 
						||
| 
								 | 
							
								    module in a package, or the filename of a Python module to import.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%s -k <keyword>
							 | 
						||
| 
								 | 
							
								    Search for a keyword in the synopsis lines of all modules.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%s -p <port>
							 | 
						||
| 
								 | 
							
								    Start an HTTP server on the given port on the local machine.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%s -w <module> ...
							 | 
						||
| 
								 | 
							
								    Write out the HTML documentation for a module to a file.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%s -w <moduledir>
							 | 
						||
| 
								 | 
							
								    Write out the HTML documentation for all modules in the tree
							 | 
						||
| 
								 | 
							
								    under a given directory to files in the current directory.
							 | 
						||
| 
								 | 
							
								""" % ((sys.argv[0],) * 5)
							 |