@@ -1780,10 +1780,15 @@ def render_doc(thing, title='Python Library Documentation: %s', forceload=0,
1780
1780
return title % desc + '\n \n ' + renderer .document (object , name )
1781
1781
1782
1782
def doc (thing , title = 'Python Library Documentation: %s' , forceload = 0 ,
1783
- output = None ):
1783
+ output = None , is_cli = False ):
1784
1784
"""Display text documentation, given an object or a path to an object."""
1785
1785
if output is None :
1786
- pager (render_doc (thing , title , forceload ))
1786
+ try :
1787
+ pager (render_doc (thing , title , forceload ))
1788
+ except ImportError as exc :
1789
+ if is_cli :
1790
+ raise
1791
+ print (exc )
1787
1792
else :
1788
1793
output .write (render_doc (thing , title , forceload , plaintext ))
1789
1794
@@ -2044,7 +2049,7 @@ def getline(self, prompt):
2044
2049
self .output .flush ()
2045
2050
return self .input .readline ()
2046
2051
2047
- def help (self , request ):
2052
+ def help (self , request , is_cli = False ):
2048
2053
if isinstance (request , str ):
2049
2054
request = request .strip ()
2050
2055
if request == 'keywords' : self .listkeywords ()
@@ -2056,13 +2061,13 @@ def help(self, request):
2056
2061
elif request in self .symbols : self .showsymbol (request )
2057
2062
elif request in ['True' , 'False' , 'None' ]:
2058
2063
# special case these keywords since they are objects too
2059
- doc (eval (request ), 'Help on %s:' )
2064
+ doc (eval (request ), 'Help on %s:' , is_cli = is_cli )
2060
2065
elif request in self .keywords : self .showtopic (request )
2061
2066
elif request in self .topics : self .showtopic (request )
2062
- elif request : doc (request , 'Help on %s:' , output = self ._output )
2063
- else : doc (str , 'Help on %s:' , output = self ._output )
2067
+ elif request : doc (request , 'Help on %s:' , output = self ._output , is_cli = is_cli )
2068
+ else : doc (str , 'Help on %s:' , output = self ._output , is_cli = is_cli )
2064
2069
elif isinstance (request , Helper ): self ()
2065
- else : doc (request , 'Help on %s:' , output = self ._output )
2070
+ else : doc (request , 'Help on %s:' , output = self ._output , is_cli = is_cli )
2066
2071
self .output .write ('\n ' )
2067
2072
2068
2073
def intro (self ):
@@ -2800,7 +2805,7 @@ class BadUsage(Exception): pass
2800
2805
else :
2801
2806
writedoc (arg )
2802
2807
else :
2803
- help .help (arg )
2808
+ help .help (arg , is_cli = True )
2804
2809
except (ImportError , ErrorDuringImport ) as value :
2805
2810
print (value )
2806
2811
sys .exit (1 )
0 commit comments