@@ -1775,10 +1775,15 @@ def render_doc(thing, title='Python Library Documentation: %s', forceload=0,
1775
1775
return title % desc + '\n \n ' + renderer .document (object , name )
1776
1776
1777
1777
def doc (thing , title = 'Python Library Documentation: %s' , forceload = 0 ,
1778
- output = None ):
1778
+ output = None , is_cli = False ):
1779
1779
"""Display text documentation, given an object or a path to an object."""
1780
1780
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 )
1782
1787
else :
1783
1788
output .write (render_doc (thing , title , forceload , plaintext ))
1784
1789
@@ -2039,7 +2044,7 @@ def getline(self, prompt):
2039
2044
self .output .flush ()
2040
2045
return self .input .readline ()
2041
2046
2042
- def help (self , request ):
2047
+ def help (self , request , is_cli = False ):
2043
2048
if isinstance (request , str ):
2044
2049
request = request .strip ()
2045
2050
if request == 'keywords' : self .listkeywords ()
@@ -2051,13 +2056,13 @@ def help(self, request):
2051
2056
elif request in self .symbols : self .showsymbol (request )
2052
2057
elif request in ['True' , 'False' , 'None' ]:
2053
2058
# 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 )
2055
2060
elif request in self .keywords : self .showtopic (request )
2056
2061
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 )
2059
2064
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 )
2061
2066
self .output .write ('\n ' )
2062
2067
2063
2068
def intro (self ):
@@ -2795,7 +2800,7 @@ class BadUsage(Exception): pass
2795
2800
else :
2796
2801
writedoc (arg )
2797
2802
else :
2798
- help .help (arg )
2803
+ help .help (arg , is_cli = True )
2799
2804
except (ImportError , ErrorDuringImport ) as value :
2800
2805
print (value )
2801
2806
sys .exit (1 )
0 commit comments