@@ -1775,10 +1775,15 @@ def render_doc(thing, title='Python Library Documentation: %s', forceload=0,
17751775 return title % desc + '\n \n ' + renderer .document (object , name )
17761776
17771777def doc (thing , title = 'Python Library Documentation: %s' , forceload = 0 ,
1778- output = None ):
1778+ output = None , is_cli = False ):
17791779 """Display text documentation, given an object or a path to an object."""
17801780 if output is None :
1781- pager (render_doc (thing , title , forceload ))
1781+ try :
1782+ pager (render_doc (thing , title , forceload ))
1783+ except ImportError as exc :
1784+ if is_cli :
1785+ raise
1786+ print (exc )
17821787 else :
17831788 output .write (render_doc (thing , title , forceload , plaintext ))
17841789
@@ -2039,7 +2044,7 @@ def getline(self, prompt):
20392044 self .output .flush ()
20402045 return self .input .readline ()
20412046
2042- def help (self , request ):
2047+ def help (self , request , is_cli = False ):
20432048 if isinstance (request , str ):
20442049 request = request .strip ()
20452050 if request == 'keywords' : self .listkeywords ()
@@ -2051,13 +2056,13 @@ def help(self, request):
20512056 elif request in self .symbols : self .showsymbol (request )
20522057 elif request in ['True' , 'False' , 'None' ]:
20532058 # special case these keywords since they are objects too
2054- doc (eval (request ), 'Help on %s:' )
2059+ doc (eval (request ), 'Help on %s:' , is_cli = is_cli )
20552060 elif request in self .keywords : self .showtopic (request )
20562061 elif request in self .topics : self .showtopic (request )
2057- elif request : doc (request , 'Help on %s:' , output = self ._output )
2058- else : doc (str , 'Help on %s:' , output = self ._output )
2062+ elif request : doc (request , 'Help on %s:' , output = self ._output , is_cli = is_cli )
2063+ else : doc (str , 'Help on %s:' , output = self ._output , is_cli = is_cli )
20592064 elif isinstance (request , Helper ): self ()
2060- else : doc (request , 'Help on %s:' , output = self ._output )
2065+ else : doc (request , 'Help on %s:' , output = self ._output , is_cli = is_cli )
20612066 self .output .write ('\n ' )
20622067
20632068 def intro (self ):
@@ -2795,7 +2800,7 @@ class BadUsage(Exception): pass
27952800 else :
27962801 writedoc (arg )
27972802 else :
2798- help .help (arg )
2803+ help .help (arg , is_cli = True )
27992804 except (ImportError , ErrorDuringImport ) as value :
28002805 print (value )
28012806 sys .exit (1 )
0 commit comments