summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorJohannes Gijsbers <jlg@dds.nl>2004-08-17 13:21:53 (GMT)
committerJohannes Gijsbers <jlg@dds.nl>2004-08-17 13:21:53 (GMT)
commite7691d36b70968ae6fd7f7d537922a6da45fc1d1 (patch)
tree275c8da9878c107085d0292dfc560b46d7d11350 /Lib
parent30d00085771bdf2e989678b8d621402bff431583 (diff)
downloadcpython-e7691d36b70968ae6fd7f7d537922a6da45fc1d1.zip
cpython-e7691d36b70968ae6fd7f7d537922a6da45fc1d1.tar.gz
cpython-e7691d36b70968ae6fd7f7d537922a6da45fc1d1.tar.bz2
Use readline/raw_input() in pydoc.Helper.interact if available and self.input
is sys.stdin. Based on a patch (#726204) by Dmitry Vasiliev and a comment from Guido in an older patch (#549901).
Diffstat (limited to 'Lib')
-rwxr-xr-xLib/pydoc.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/Lib/pydoc.py b/Lib/pydoc.py
index c02c140..12ae277 100755
--- a/Lib/pydoc.py
+++ b/Lib/pydoc.py
@@ -1618,16 +1618,24 @@ has the same effect as typing a particular string at the help> prompt.
def interact(self):
self.output.write('\n')
while True:
- self.output.write('help> ')
- self.output.flush()
try:
- request = self.input.readline()
+ request = self.getline('help> ')
if not request: break
- except KeyboardInterrupt: break
+ except (KeyboardInterrupt, EOFError):
+ break
request = strip(replace(request, '"', '', "'", ''))
if lower(request) in ['q', 'quit']: break
self.help(request)
+ def getline(self, prompt):
+ """Read one line, using raw_input when available."""
+ if self.input is sys.stdin:
+ return raw_input(prompt)
+ else:
+ self.output.write(prompt)
+ self.output.flush()
+ return self.input.readline()
+
def help(self, request):
if type(request) is type(''):
if request == 'help': self.intro()