summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeal Norwitz <nnorwitz@gmail.com>2006-03-17 06:49:51 (GMT)
committerNeal Norwitz <nnorwitz@gmail.com>2006-03-17 06:49:51 (GMT)
commitce96f69d69a6020c780145c89a17a8391b63624b (patch)
tree7325a9bfaddf191e49910532df1fa4210c335196
parent9e2b9665ae9f94a07da54156c48e2cd411a23746 (diff)
downloadcpython-ce96f69d69a6020c780145c89a17a8391b63624b.zip
cpython-ce96f69d69a6020c780145c89a17a8391b63624b.tar.gz
cpython-ce96f69d69a6020c780145c89a17a8391b63624b.tar.bz2
Get rid of a bunch more raw_input references
-rwxr-xr-xDemo/pdist/cmptree.py5
-rwxr-xr-xDemo/pdist/mac.py11
-rwxr-xr-xDemo/pdist/rcvs.py7
-rwxr-xr-xDemo/pdist/sumtree.py5
-rwxr-xr-xDemo/scripts/unbirthday.py5
-rwxr-xr-xDemo/sockets/ftp.py8
-rwxr-xr-xDemo/sockets/gopher.py26
-rwxr-xr-xDemo/tkinter/guido/wish.py5
-rw-r--r--Doc/lib/libcmd.tex10
-rw-r--r--Doc/lib/libcode.tex4
-rw-r--r--Doc/lib/libcrypt.tex6
-rw-r--r--Doc/lib/libexcs.tex7
-rw-r--r--Doc/lib/libfuncs.tex35
-rw-r--r--Doc/lib/libsmtplib.tex6
-rw-r--r--Doc/lib/libsys.tex7
-rw-r--r--Doc/lib/libtelnetlib.tex5
-rw-r--r--Doc/lib/libtermios.tex6
-rw-r--r--Doc/ref/ref8.tex5
-rw-r--r--Doc/tools/keywords.py6
-rw-r--r--Doc/tut/tut.tex33
-rw-r--r--Lib/cmd.py10
-rw-r--r--Lib/code.py10
-rw-r--r--Lib/distutils/command/register.py5
-rw-r--r--Lib/getpass.py3
-rw-r--r--Lib/idlelib/PyShell.py2
-rwxr-xr-xLib/pdb.py5
-rw-r--r--Lib/plat-mac/aetools.py5
-rwxr-xr-xLib/pydoc.py5
-rw-r--r--Lib/rlcompleter.py6
-rw-r--r--Lib/site.py4
-rw-r--r--Lib/test/test_exceptions.py4
-rw-r--r--Lib/urllib.py7
-rw-r--r--Mac/Demo/resources/copyres.py6
-rw-r--r--Mac/Demo/sound/morselib.py40
-rw-r--r--Misc/Vim/python.vim10
-rw-r--r--Misc/cheatsheet10
-rw-r--r--Misc/python-mode.el8
-rw-r--r--Tools/compiler/regrtest.py5
-rwxr-xr-xTools/scripts/ftpmirror.py5
-rwxr-xr-xTools/scripts/treesync.py5
-rwxr-xr-xTools/scripts/xxci.py5
-rw-r--r--Tools/webchecker/wcmac.py4
42 files changed, 222 insertions, 144 deletions
diff --git a/Demo/pdist/cmptree.py b/Demo/pdist/cmptree.py
index f6c611f..fa06f5f 100755
--- a/Demo/pdist/cmptree.py
+++ b/Demo/pdist/cmptree.py
@@ -6,6 +6,11 @@ import FSProxy
import time
import os
+def raw_input(prompt):
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
def main():
pwd = os.getcwd()
s = raw_input("chdir [%s] " % pwd)
diff --git a/Demo/pdist/mac.py b/Demo/pdist/mac.py
index 107113c..61cff09 100755
--- a/Demo/pdist/mac.py
+++ b/Demo/pdist/mac.py
@@ -1,14 +1,18 @@
import sys
-import string
import rcvs
+def raw_input(prompt):
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
def main():
while 1:
try:
line = raw_input('$ ')
except EOFError:
break
- words = string.split(line)
+ words = line.split()
if not words:
continue
if words[0] != 'rcvs':
@@ -16,4 +20,5 @@ def main():
sys.argv = words
rcvs.main()
-main()
+if __name__ == '__main__':
+ main()
diff --git a/Demo/pdist/rcvs.py b/Demo/pdist/rcvs.py
index 8b8bae6..ab1fd87 100755
--- a/Demo/pdist/rcvs.py
+++ b/Demo/pdist/rcvs.py
@@ -35,7 +35,6 @@
from cvslib import CVS, File
import md5
import os
-import string
import sys
from cmdfw import CommandFrameWork
@@ -269,13 +268,13 @@ class RCVS(CVS):
def mailinfo(self, files, message = ""):
towhom = "sjoerd@cwi.nl, jack@cwi.nl" # XXX
- mailtext = MAILFORM % (towhom, string.join(files),
- string.join(files), message)
+ mailtext = MAILFORM % (towhom, ' '.join(files),
+ ' '.join(files), message)
print '-'*70
print mailtext
print '-'*70
ok = raw_input("OK to mail to %s? " % towhom)
- if string.lower(string.strip(ok)) in ('y', 'ye', 'yes'):
+ if ok.lower().strip() in ('y', 'ye', 'yes'):
p = os.popen(SENDMAIL, "w")
p.write(mailtext)
sts = p.close()
diff --git a/Demo/pdist/sumtree.py b/Demo/pdist/sumtree.py
index 9291a56..68224df 100755
--- a/Demo/pdist/sumtree.py
+++ b/Demo/pdist/sumtree.py
@@ -1,4 +1,5 @@
import time
+import sys
import FSProxy
def main():
@@ -9,7 +10,9 @@ def main():
proxy._close()
t2 = time.time()
print t2-t1, "seconds"
- raw_input("[Return to exit] ")
+ sys.stdout.write("[Return to exit] ")
+ sys.stdout.flush()
+ sys.stdin.readline()
def sumtree(proxy):
print "PWD =", proxy.pwd()
diff --git a/Demo/scripts/unbirthday.py b/Demo/scripts/unbirthday.py
index 2d0b8e5..94ad448 100755
--- a/Demo/scripts/unbirthday.py
+++ b/Demo/scripts/unbirthday.py
@@ -9,6 +9,11 @@ import sys
import time
import calendar
+def raw_input(prompt):
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
def main():
# Note that the range checks below also check for bad types,
# e.g. 3.14 or (). However syntactically invalid replies
diff --git a/Demo/sockets/ftp.py b/Demo/sockets/ftp.py
index 6e9282a..eed45be 100755
--- a/Demo/sockets/ftp.py
+++ b/Demo/sockets/ftp.py
@@ -130,6 +130,11 @@ def getdata(r):
sys.stdout.write(data)
print '(end of data connection)'
+def raw_input(prompt):
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
# Get a command from the user.
#
def getcommand():
@@ -143,4 +148,5 @@ def getcommand():
# Call the main program.
#
-main()
+if __name__ == '__main__':
+ main()
diff --git a/Demo/sockets/gopher.py b/Demo/sockets/gopher.py
index 34bcdf0..2488c81 100755
--- a/Demo/sockets/gopher.py
+++ b/Demo/sockets/gopher.py
@@ -4,7 +4,6 @@
#
# Usage: gopher [ [selector] host [port] ]
-import string
import sys
import os
import socket
@@ -42,7 +41,7 @@ def open_socket(host, port):
if not port:
port = DEF_PORT
elif type(port) == type(''):
- port = string.atoi(port)
+ port = int(port)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
return s
@@ -73,7 +72,7 @@ def get_menu(selector, host, port):
print '(Empty line from server)'
continue
typechar = line[0]
- parts = string.splitfields(line[1:], TAB)
+ parts = line[1:].split(TAB)
if len(parts) < 4:
print '(Bad line from server: %r)' % (line,)
continue
@@ -160,7 +159,7 @@ def browse_menu(selector, host, port):
for i in range(len(list)):
item = list[i]
typechar, description = item[0], item[1]
- print string.rjust(repr(i+1), 3) + ':', description,
+ print repr(i+1).rjust(3) + ':', description,
if typename.has_key(typechar):
print typename[typechar]
else:
@@ -175,8 +174,8 @@ def browse_menu(selector, host, port):
if not str:
return
try:
- choice = string.atoi(str)
- except string.atoi_error:
+ choice = int(str)
+ except ValueError:
print 'Choice must be a number; try again:'
continue
if not 0 < choice <= len(list):
@@ -218,6 +217,11 @@ def browse_textfile(selector, host, port):
print 'IOError:', msg
x.close()
+def raw_input(prompt):
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
# Browse a search index
def browse_search(selector, host, port):
while 1:
@@ -230,7 +234,7 @@ def browse_search(selector, host, port):
except EOFError:
print
break
- query = string.strip(query)
+ query = query.strip()
if not query:
break
if '\t' in query:
@@ -300,11 +304,11 @@ def open_savefile():
except EOFError:
print
return None
- savefile = string.strip(savefile)
+ savefile = savefile.strip()
if not savefile:
return None
if savefile[0] == '|':
- cmd = string.strip(savefile[1:])
+ cmd = savefile[1:].strip()
try:
p = os.popen(cmd, 'w')
except IOError, msg:
@@ -331,10 +335,10 @@ def test():
browser(sys.argv[1], sys.argv[2], sys.argv[3])
elif sys.argv[2:]:
try:
- port = string.atoi(sys.argv[2])
+ port = int(sys.argv[2])
selector = ''
host = sys.argv[1]
- except string.atoi_error:
+ except ValueError:
selector = sys.argv[1]
host = sys.argv[2]
port = ''
diff --git a/Demo/tkinter/guido/wish.py b/Demo/tkinter/guido/wish.py
index 0a61ad8..35e012c 100755
--- a/Demo/tkinter/guido/wish.py
+++ b/Demo/tkinter/guido/wish.py
@@ -2,6 +2,7 @@
import _tkinter
import os
+import sys
tk = _tkinter.create(os.environ['DISPLAY'], 'wish', 'Tk', 1)
tk.call('update')
@@ -12,7 +13,9 @@ while 1:
if cmd: prompt = ''
else: prompt = '% '
try:
- line = raw_input(prompt)
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ line = sys.stdin.readline()
except EOFError:
break
cmd = cmd + (line + '\n')
diff --git a/Doc/lib/libcmd.tex b/Doc/lib/libcmd.tex
index 661eb9e..9fe8123 100644
--- a/Doc/lib/libcmd.tex
+++ b/Doc/lib/libcmd.tex
@@ -186,13 +186,3 @@ The character used to draw separator lines under the help-message
headers. If empty, no ruler line is drawn. It defaults to
\character{=}.
\end{memberdesc}
-
-\begin{memberdesc}{use_rawinput}
-A flag, defaulting to true. If true, \method{cmdloop()} uses
-\function{raw_input()} to display a prompt and read the next command;
-if false, \method{sys.stdout.write()} and
-\method{sys.stdin.readline()} are used. (This means that by
-importing \refmodule{readline}, on systems that support it, the
-interpreter will automatically support \program{Emacs}-like line editing
-and command-history keystrokes.)
-\end{memberdesc}
diff --git a/Doc/lib/libcode.tex b/Doc/lib/libcode.tex
index dc4c717..628a1eb 100644
--- a/Doc/lib/libcode.tex
+++ b/Doc/lib/libcode.tex
@@ -167,7 +167,7 @@ Remove any unhandled source text from the input buffer.
\begin{methoddesc}{raw_input}{\optional{prompt}}
Write a prompt and read a line. The returned line does not include
the trailing newline. When the user enters the \EOF{} key sequence,
-\exception{EOFError} is raised. The base implementation uses the
-built-in function \function{raw_input()}; a subclass may replace this
+\exception{EOFError} is raised. The base implementation reads from
+\code{sys.stdin}; a subclass may replace this
with a different implementation.
\end{methoddesc}
diff --git a/Doc/lib/libcrypt.tex b/Doc/lib/libcrypt.tex
index b6a1463..55e7163 100644
--- a/Doc/lib/libcrypt.tex
+++ b/Doc/lib/libcrypt.tex
@@ -41,6 +41,12 @@ A simple example illustrating typical use:
\begin{verbatim}
import crypt, getpass, pwd
+def raw_input(prompt):
+ import sys
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
def login():
username = raw_input('Python login:')
cryptedpasswd = pwd.getpwnam(username)[1]
diff --git a/Doc/lib/libexcs.tex b/Doc/lib/libexcs.tex
index f52ff0a..85058a4 100644
--- a/Doc/lib/libexcs.tex
+++ b/Doc/lib/libexcs.tex
@@ -153,9 +153,7 @@ Raised when an \keyword{assert} statement fails.
\begin{excdesc}{EOFError}
% XXXJH xrefs here
- Raised when one of the built-in functions (\function{input()} or
- \function{raw_input()}) hits an end-of-file condition (\EOF) without
- reading any data.
+ Raised when attempting to read beyond the end of a file.
% XXXJH xrefs here
(N.B.: the \method{read()} and \method{readline()} methods of file
objects return an empty string when they hit \EOF.)
@@ -213,9 +211,6 @@ Raised when an \keyword{assert} statement fails.
\kbd{Control-C} or \kbd{Delete}). During execution, a check for
interrupts is made regularly.
% XXX(hylton) xrefs here
- Interrupts typed when a built-in function \function{input()} or
- \function{raw_input()} is waiting for input also raise this
- exception.
The exception inherits from \exception{BaseException} so as to not be
accidentally caught by code that catches \exception{Exception} and thus
prevent the interpreter from exiting.
diff --git a/Doc/lib/libfuncs.tex b/Doc/lib/libfuncs.tex
index 9b6bfe9..c75c172 100644
--- a/Doc/lib/libfuncs.tex
+++ b/Doc/lib/libfuncs.tex
@@ -551,23 +551,6 @@ class C:
note: this is the address of the object.)
\end{funcdesc}
-\begin{funcdesc}{input}{\optional{prompt}}
- Equivalent to \code{eval(raw_input(\var{prompt}))}.
- \warning{This function is not safe from user errors! It
- expects a valid Python expression as input; if the input is not
- syntactically valid, a \exception{SyntaxError} will be raised.
- Other exceptions may be raised if there is an error during
- evaluation. (On the other hand, sometimes this is exactly what you
- need when writing a quick script for expert use.)}
-
- If the \refmodule{readline} module was loaded, then
- \function{input()} will use it to provide elaborate line editing and
- history features.
-
- Consider using the \function{raw_input()} function for general input
- from users.
-\end{funcdesc}
-
\begin{funcdesc}{int}{\optional{x\optional{, radix}}}
Convert a string or number to a plain integer. If the argument is a
string, it must contain a possibly signed decimal number
@@ -811,24 +794,6 @@ class C(object):
\end{verbatim}
\end{funcdesc}
-\begin{funcdesc}{raw_input}{\optional{prompt}}
- If the \var{prompt} argument is present, it is written to standard output
- without a trailing newline. The function then reads a line from input,
- converts it to a string (stripping a trailing newline), and returns that.
- When \EOF{} is read, \exception{EOFError} is raised. Example:
-
-\begin{verbatim}
->>> s = raw_input('--> ')
---> Monty Python's Flying Circus
->>> s
-"Monty Python's Flying Circus"
-\end{verbatim}
-
- If the \refmodule{readline} module was loaded, then
- \function{raw_input()} will use it to provide elaborate
- line editing and history features.
-\end{funcdesc}
-
\begin{funcdesc}{reduce}{function, sequence\optional{, initializer}}
Apply \var{function} of two arguments cumulatively to the items of
\var{sequence}, from left to right, so as to reduce the sequence to
diff --git a/Doc/lib/libsmtplib.tex b/Doc/lib/libsmtplib.tex
index 2f87bc4..ddf1764 100644
--- a/Doc/lib/libsmtplib.tex
+++ b/Doc/lib/libsmtplib.tex
@@ -267,6 +267,12 @@ processing of the \rfc{822} headers. In particular, the `To' and
\begin{verbatim}
import smtplib
+def raw_input(prompt):
+ import sys
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
def prompt(prompt):
return raw_input(prompt).strip()
diff --git a/Doc/lib/libsys.tex b/Doc/lib/libsys.tex
index ea8950a..1a57da4 100644
--- a/Doc/lib/libsys.tex
+++ b/Doc/lib/libsys.tex
@@ -511,11 +511,8 @@ else:
\dataline{stderr}
File objects corresponding to the interpreter's standard input,
output and error streams. \code{stdin} is used for all interpreter
- input except for scripts but including calls to
- \function{input()}\bifuncindex{input} and
- \function{raw_input()}\bifuncindex{raw_input}. \code{stdout} is
- used for the output of \keyword{print} and expression statements and
- for the prompts of \function{input()} and \function{raw_input()}.
+ input except for scripts. \code{stdout} is
+ used for the output of \keyword{print} and expression statements.
The interpreter's own prompts and (almost all of) its error messages
go to \code{stderr}. \code{stdout} and \code{stderr} needn't be
built-in file objects: any object is acceptable as long as it has a
diff --git a/Doc/lib/libtelnetlib.tex b/Doc/lib/libtelnetlib.tex
index c7a4226..b8dfeee 100644
--- a/Doc/lib/libtelnetlib.tex
+++ b/Doc/lib/libtelnetlib.tex
@@ -196,6 +196,11 @@ import getpass
import sys
import telnetlib
+def raw_input(prompt):
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
HOST = "localhost"
user = raw_input("Enter your remote account: ")
password = getpass.getpass()
diff --git a/Doc/lib/libtermios.tex b/Doc/lib/libtermios.tex
index ef99cf9..64f3438 100644
--- a/Doc/lib/libtermios.tex
+++ b/Doc/lib/libtermios.tex
@@ -91,6 +91,12 @@ and a \keyword{try} ... \keyword{finally} statement to ensure that the
old tty attributes are restored exactly no matter what happens:
\begin{verbatim}
+def raw_input(prompt):
+ import sys
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
def getpass(prompt = "Password: "):
import termios, sys
fd = sys.stdin.fileno()
diff --git a/Doc/ref/ref8.tex b/Doc/ref/ref8.tex
index d10c87f..801ab58 100644
--- a/Doc/ref/ref8.tex
+++ b/Doc/ref/ref8.tex
@@ -103,10 +103,7 @@ The input line read by \function{input()} must have the following form:
\end{productionlist}
Note: to read `raw' input line without interpretation, you can use the
-built-in function \function{raw_input()} or the \method{readline()} method
-of file objects.
+the \method{readline()} method of file objects, including \code{sys.stdin}.
\obindex{file}
\index{input!raw}
-\index{raw input}
-\bifuncindex{raw_input}
\withsubitem{(file method)}{\ttindex{readline()}}
diff --git a/Doc/tools/keywords.py b/Doc/tools/keywords.py
index 9f32056..3344021 100644
--- a/Doc/tools/keywords.py
+++ b/Doc/tools/keywords.py
@@ -2,6 +2,12 @@
# This Python program sorts and reformats the table of keywords in ref2.tex
+def raw_input(prompt):
+ import sys
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
l = []
try:
while 1:
diff --git a/Doc/tut/tut.tex b/Doc/tut/tut.tex
index efbc08d..054985b 100644
--- a/Doc/tut/tut.tex
+++ b/Doc/tut/tut.tex
@@ -231,7 +231,7 @@ full name on the command line.
Note that there is a difference between \samp{python file} and
\samp{python <file}. In the latter case, input requests from the
-program, such as calls to \function{input()} and \function{raw_input()}, are
+program, such as calling \code{sys.stdin.read()}, are
satisfied from \emph{file}. Since this file has already been read
until the end by the parser before the program starts executing, the
program will encounter end-of-file immediately. In the former case
@@ -1161,6 +1161,12 @@ Perhaps the most well-known statement type is the
\keyword{if} statement. For example:
\begin{verbatim}
+>>> def raw_input(prompt):
+... import sys
+... sys.stdout.write(prompt)
+... sys.stdout.flush()
+... return sys.stdin.readline()
+...
>>> x = int(raw_input("Please enter an integer: "))
>>> if x < 0:
... x = 0
@@ -1453,6 +1459,12 @@ arguments. This creates a function that can be called with fewer
arguments than it is defined to allow. For example:
\begin{verbatim}
+def raw_input(prompt):
+ import sys
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
while True:
ok = raw_input(prompt)
@@ -2711,15 +2723,15 @@ standard module \module{__builtin__}\refbimodindex{__builtin__}:
'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError',
'UserWarning', 'ValueError', 'Warning', 'WindowsError',
'ZeroDivisionError', '_', '__debug__', '__doc__', '__import__',
- '__name__', 'abs', 'apply', 'basestring', 'bool', 'buffer',
+ '__name__', 'abs', 'basestring', 'bool', 'buffer',
'callable', 'chr', 'classmethod', 'cmp', 'coerce', 'compile',
'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod',
'enumerate', 'eval', 'execfile', 'exit', 'file', 'filter', 'float',
'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex',
- 'id', 'input', 'int', 'intern', 'isinstance', 'issubclass', 'iter',
+ 'id', 'int', 'intern', 'isinstance', 'issubclass', 'iter',
'len', 'license', 'list', 'locals', 'long', 'map', 'max', 'min',
'object', 'oct', 'open', 'ord', 'pow', 'property', 'quit', 'range',
- 'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 'set',
+ 'reduce', 'reload', 'repr', 'reversed', 'round', 'set',
'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super',
'tuple', 'type', 'unichr', 'unicode', 'vars', 'xrange', 'zip']
\end{verbatim}
@@ -3412,6 +3424,12 @@ supports); note that a user-generated interruption is signalled by
raising the \exception{KeyboardInterrupt} exception.
\begin{verbatim}
+>>> def raw_input(prompt):
+... import sys
+... sys.stdout.write(prompt)
+... sys.stdout.flush()
+... return sys.stdin.readline()
+...
>>> while True:
... try:
... x = int(raw_input("Please enter a number: "))
@@ -4983,7 +5001,12 @@ renaming utility for a photo browser may elect to use percent signs for
placeholders such as the current date, image sequence number, or file format:
\begin{verbatim}
->>> import time, os.path
+>>> import time, os.path, sys
+>>> def raw_input(prompt):
+... sys.stdout.write(prompt)
+... sys.stdout.flush()
+... return sys.stdin.readline()
+...
>>> photofiles = ['img_1074.jpg', 'img_1076.jpg', 'img_1077.jpg']
>>> class BatchRename(Template):
... delimiter = '%'
diff --git a/Lib/cmd.py b/Lib/cmd.py
index 3f82b48..23dc5b2 100644
--- a/Lib/cmd.py
+++ b/Lib/cmd.py
@@ -40,18 +40,20 @@ The data members `self.doc_header', `self.misc_header', and
`self.undoc_header' set the headers used for the help function's
listings of documented functions, miscellaneous topics, and undocumented
functions respectively.
-
-These interpreters use raw_input; thus, if the readline module is loaded,
-they automatically support Emacs-like command history and editing features.
"""
-import string
+import string, sys
__all__ = ["Cmd"]
PROMPT = '(Cmd) '
IDENTCHARS = string.ascii_letters + string.digits + '_'
+def raw_input(prompt):
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
class Cmd:
"""A simple framework for writing line-oriented command interpreters.
diff --git a/Lib/code.py b/Lib/code.py
index 6bdc658..b67009b 100644
--- a/Lib/code.py
+++ b/Lib/code.py
@@ -269,12 +269,14 @@ class InteractiveConsole(InteractiveInterpreter):
The returned line does not include the trailing newline.
When the user enters the EOF key sequence, EOFError is raised.
- The base implementation uses the built-in function
- raw_input(); a subclass may replace this with a different
- implementation.
+ The base implementation uses sys.stdin.readline(); a subclass
+ may replace this with a different implementation.
"""
- return raw_input(prompt)
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
def interact(banner=None, readfunc=None, local=None):
diff --git a/Lib/distutils/command/register.py b/Lib/distutils/command/register.py
index dec9aa2..f891262 100644
--- a/Lib/distutils/command/register.py
+++ b/Lib/distutils/command/register.py
@@ -13,6 +13,11 @@ import StringIO, ConfigParser
from distutils.core import Command
from distutils.errors import *
+def raw_input(prompt):
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
class register(Command):
description = ("register the distribution with the Python package index")
diff --git a/Lib/getpass.py b/Lib/getpass.py
index e96491f..a30d3a1 100644
--- a/Lib/getpass.py
+++ b/Lib/getpass.py
@@ -69,8 +69,7 @@ def default_getpass(prompt='Password: '):
def _raw_input(prompt=""):
- # A raw_input() replacement that doesn't save the string in the
- # GNU readline history.
+ # This doesn't save the string in the GNU readline history.
prompt = str(prompt)
if prompt:
sys.stdout.write(prompt)
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py
index f81091b..b6abe40 100644
--- a/Lib/idlelib/PyShell.py
+++ b/Lib/idlelib/PyShell.py
@@ -1122,7 +1122,7 @@ class PyShell(OutputWindow):
self.text.tag_add("stdin", "iomark", "end-1c")
self.text.update_idletasks()
if self.reading:
- self.top.quit() # Break out of recursive mainloop() in raw_input()
+ self.top.quit() # Break out of recursive mainloop()
else:
self.runit()
return "break"
diff --git a/Lib/pdb.py b/Lib/pdb.py
index b00f68b..1aa2eae 100755
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -22,6 +22,11 @@ _saferepr = _repr.repr
__all__ = ["run", "pm", "Pdb", "runeval", "runctx", "runcall", "set_trace",
"post_mortem", "help"]
+def raw_input(prompt):
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
def find_function(funcname, filename):
cre = re.compile(r'def\s+%s\s*[(]' % funcname)
try:
diff --git a/Lib/plat-mac/aetools.py b/Lib/plat-mac/aetools.py
index 79f3978..861dd2f 100644
--- a/Lib/plat-mac/aetools.py
+++ b/Lib/plat-mac/aetools.py
@@ -342,6 +342,11 @@ _application_file._elemdict = {
# XXXX Should test more, really...
def test():
+ def raw_input(prompt):
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
target = AE.AECreateDesc('sign', 'quil')
ae = AE.AECreateAppleEvent('aevt', 'oapp', target, -1, 0)
print unpackevent(ae)
diff --git a/Lib/pydoc.py b/Lib/pydoc.py
index ee45643..b6afc7f 100755
--- a/Lib/pydoc.py
+++ b/Lib/pydoc.py
@@ -1505,6 +1505,11 @@ def writedocs(dir, pkgpath='', done=None):
done[modname] = 1
writedoc(modname)
+def raw_input(prompt):
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
class Helper:
keywords = {
'and': 'BOOLEAN',
diff --git a/Lib/rlcompleter.py b/Lib/rlcompleter.py
index 1d29167..6eb77f9 100644
--- a/Lib/rlcompleter.py
+++ b/Lib/rlcompleter.py
@@ -28,12 +28,6 @@ application (or the user) to enable this feature, I consider this an
acceptable risk. More complicated expressions (e.g. function calls or
indexing operations) are *not* evaluated.
-- GNU readline is also used by the built-in functions input() and
-raw_input(), and thus these also benefit/suffer from the completer
-features. Clearly an interactive application can benefit by
-specifying its own completer function and using raw_input() for all
-its input.
-
- When the original stdin is not a tty device, GNU readline is never
used, and this module (and the readline module) are silently inactive.
diff --git a/Lib/site.py b/Lib/site.py
index 6818e85..5e7ff7b 100644
--- a/Lib/site.py
+++ b/Lib/site.py
@@ -299,7 +299,9 @@ class _Printer(object):
lineno += self.MAXLINES
key = None
while key is None:
- key = raw_input(prompt)
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ key = sys.stdin.readline()
if key not in ('', 'q'):
key = None
if key == 'q':
diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py
index fdef876..65f7876 100644
--- a/Lib/test/test_exceptions.py
+++ b/Lib/test/test_exceptions.py
@@ -44,8 +44,8 @@ fp = open(TESTFN, 'r')
savestdin = sys.stdin
try:
try:
- sys.stdin = fp
- x = raw_input()
+ import marshal
+ marshal.loads('')
except EOFError:
pass
finally:
diff --git a/Lib/urllib.py b/Lib/urllib.py
index aeca3f1..136f42e 100644
--- a/Lib/urllib.py
+++ b/Lib/urllib.py
@@ -768,10 +768,11 @@ class FancyURLopener(URLopener):
def prompt_user_passwd(self, host, realm):
"""Override this in a GUI environment!"""
- import getpass
+ import getpass, sys
try:
- user = raw_input("Enter username for %s at %s: " % (realm,
- host))
+ sys.stdout.write("Enter username for %s at %s: " % (realm, host))
+ sys.stdout.flush()
+ user = sys.stdin.readline()
passwd = getpass.getpass("Enter password for %s in %s at %s: " %
(user, realm, host))
return user, passwd
diff --git a/Mac/Demo/resources/copyres.py b/Mac/Demo/resources/copyres.py
index 528ff16..cb1fa8e 100644
--- a/Mac/Demo/resources/copyres.py
+++ b/Mac/Demo/resources/copyres.py
@@ -6,6 +6,12 @@ READ = 1
WRITE = 2
smAllScripts = -3
+def raw_input(prompt):
+ import sys
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
def copyres(src, dst):
"""Copy resource from src file to dst file."""
diff --git a/Mac/Demo/sound/morselib.py b/Mac/Demo/sound/morselib.py
index 98e2590..3c7493f 100644
--- a/Mac/Demo/sound/morselib.py
+++ b/Mac/Demo/sound/morselib.py
@@ -61,11 +61,10 @@ morsetab = {
}
def morsecode(s):
- from string import lower
m = ''
for c in s:
- c = lower(c)
- if morsetab.has_key(c):
+ c = c.lower()
+ if c in morsetab:
c = morsetab[c] + ' '
else:
c = '? '
@@ -107,9 +106,12 @@ class BaseMorse:
def sendmorse(self, s):
for c in s:
- if c == '.': self.dot()
- elif c == '-': self.dah()
- else: self.pdah()
+ if c == '.':
+ self.dot()
+ elif c == '-':
+ self.dah()
+ else:
+ self.pdah()
self.pdot()
def sendascii(self, s):
@@ -122,8 +124,9 @@ class BaseMorse:
import Audio_mac
class MyAudio(Audio_mac.Play_Audio_mac):
def _callback(self, *args):
- if hasattr(self, 'usercallback'): self.usercallback()
- apply(Audio_mac.Play_Audio_mac._callback, (self,) + args)
+ if hasattr(self, 'usercallback'):
+ self.usercallback()
+ Audio_mac.Play_Audio_mac._callback(self, args)
class MacMorse(BaseMorse):
@@ -169,12 +172,21 @@ class MacMorse(BaseMorse):
def usercallback(self):
if self.morsequeue:
c, self.morsequeue = self.morsequeue[0], self.morsequeue[1:]
- if c == '.': self.dot()
- elif c == '-': self.dah()
- else: self.pdah()
+ if c == '.':
+ self.dot()
+ elif c == '-':
+ self.dah()
+ else:
+ self.pdah()
self.pdot()
+def raw_input(prompt):
+ import sys
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
def test():
m = MacMorse()
while 1:
@@ -183,6 +195,8 @@ def test():
except (EOFError, KeyboardInterrupt):
break
m.send(line)
- while m.morsequeue: pass
+ while m.morsequeue:
+ pass
-test()
+if __name__ == '__main__':
+ test()
diff --git a/Misc/Vim/python.vim b/Misc/Vim/python.vim
index 0d5e6d0..a31fa30 100644
--- a/Misc/Vim/python.vim
+++ b/Misc/Vim/python.vim
@@ -63,16 +63,16 @@ endif
if exists("python_highlight_builtins")
syn keyword pythonBuiltin unichr all set abs vars int __import__ unicode
- syn keyword pythonBuiltin enumerate reduce coerce intern exit issubclass
- syn keyword pythonBuiltin divmod file Ellipsis apply isinstance open any
+ syn keyword pythonBuiltin enumerate reduce exit issubclass
+ syn keyword pythonBuiltin divmod file Ellipsis isinstance open any
syn keyword pythonBuiltin locals help filter basestring slice copyright min
- syn keyword pythonBuiltin super sum tuple hex execfile long id xrange chr
+ syn keyword pythonBuiltin super sum tuple hex execfile long id chr
syn keyword pythonBuiltin complex bool zip pow dict True oct NotImplemented
syn keyword pythonBuiltin map None float hash getattr buffer max reversed
syn keyword pythonBuiltin object quit len repr callable credits setattr
syn keyword pythonBuiltin eval frozenset sorted ord __debug__ hasattr
- syn keyword pythonBuiltin delattr False input license classmethod type
- syn keyword pythonBuiltin raw_input list iter compile reload range globals
+ syn keyword pythonBuiltin delattr False license classmethod type
+ syn keyword pythonBuiltin list iter reload range globals
syn keyword pythonBuiltin staticmethod str property round dir cmp
endif
diff --git a/Misc/cheatsheet b/Misc/cheatsheet
index d50ed2e..b8de4281 100644
--- a/Misc/cheatsheet
+++ b/Misc/cheatsheet
@@ -925,8 +925,6 @@ __import__(name[, Imports module within the given context (see lib ref for
globals[, locals[, more details)
fromlist]]])
abs(x) Return the absolute value of number x.
-apply(f, args[, Calls func/method f with arguments args and optional
-keywords]) keywords.
bool(x) Returns True when the argument x is true and False otherwise.
buffer(obj) Creates a buffer reference to an object.
callable(x) Returns True if x callable, else False.
@@ -934,10 +932,6 @@ chr(i) Returns one-character string whose ASCII code isinteger i
classmethod(f) Converts a function f, into a method with the class as the
first argument. Useful for creating alternative constructors.
cmp(x,y) Returns negative, 0, positive if x <, ==, > to y
-coerce(x,y) Returns a tuple of the two numeric arguments converted to a
- common type.
- Compiles string into a code object.filename is used in
- error message, can be any string. It isusually the file
compile(string, from which the code was read, or eg. '<string>'if not read
filename, kind) from file.kind can be 'eval' if string is a single stmt, or
'single' which prints the output of expression statements
@@ -971,8 +965,6 @@ hash(object) Returns the hash value of the object (if it has one)
help(f) Display documentation on object f.
hex(x) Converts a number x to a hexadecimal string.
id(object) Returns a unique 'identity' integer for an object.
-input([prompt]) Prints prompt if given. Reads input and evaluates it.
- Converts a number or a string to a plain integer. Optional
int(x[, base]) base paramenter specifies base from which to convert string
values.
intern(aString) Enters aString in the table of "interned strings"
@@ -1013,8 +1005,6 @@ property() Created a property with access controlled by functions.
range(start [,end Returns list of ints from >= start and < end.With 1 arg,
[, step]]) list from 0..arg-1With 2 args, list from start..end-1With 3
args, list from start up to end by step
-raw_input([prompt]) Prints prompt if given, then reads string from stdinput (no
- trailing \n). See also input().
reduce(f, list [, Applies the binary function f to the items oflist so as to
init]) reduce the list to a single value.If init given, it is
"prepended" to list.
diff --git a/Misc/python-mode.el b/Misc/python-mode.el
index 202541c..1392c84 100644
--- a/Misc/python-mode.el
+++ b/Misc/python-mode.el
@@ -378,18 +378,18 @@ support for features needed by `python-mode'.")
"ZeroDivisionError" "__debug__"
"__import__" "__name__" "abs" "apply" "basestring"
"bool" "buffer" "callable" "chr" "classmethod"
- "cmp" "coerce" "compile" "complex" "copyright"
+ "cmp" "compile" "complex" "copyright"
"delattr" "dict" "dir" "divmod"
"enumerate" "eval" "execfile" "exit" "file"
"filter" "float" "getattr" "globals" "hasattr"
- "hash" "hex" "id" "input" "int" "intern"
+ "hash" "hex" "id" "int" "intern"
"isinstance" "issubclass" "iter" "len" "license"
"list" "locals" "long" "map" "max" "min" "object"
"oct" "open" "ord" "pow" "property" "range"
- "raw_input" "reduce" "reload" "repr" "round"
+ "reduce" "reload" "repr" "round"
"setattr" "slice" "staticmethod" "str" "sum"
"super" "tuple" "type" "unichr" "unicode" "vars"
- "xrange" "zip")
+ "zip")
"\\|"))
)
(list
diff --git a/Tools/compiler/regrtest.py b/Tools/compiler/regrtest.py
index 50d06e7..4244d62 100644
--- a/Tools/compiler/regrtest.py
+++ b/Tools/compiler/regrtest.py
@@ -67,6 +67,11 @@ def run_regrtest(lib_dir):
def cleanup(dir):
os.system("rm -rf %s" % dir)
+def raw_input(prompt):
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
def main():
lib_dir = copy_library()
compile_files(lib_dir)
diff --git a/Tools/scripts/ftpmirror.py b/Tools/scripts/ftpmirror.py
index 0f918b8..caade16 100755
--- a/Tools/scripts/ftpmirror.py
+++ b/Tools/scripts/ftpmirror.py
@@ -352,6 +352,11 @@ class LoggingFile:
def close(self):
self.outfp.write('\n')
+def raw_input(prompt):
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
# Ask permission to download a file.
def askabout(filetype, filename, pwd):
prompt = 'Retrieve %s %s from %s ? [ny] ' % (filetype, filename, pwd)
diff --git a/Tools/scripts/treesync.py b/Tools/scripts/treesync.py
index ab9324b..4fb1798 100755
--- a/Tools/scripts/treesync.py
+++ b/Tools/scripts/treesync.py
@@ -187,6 +187,11 @@ def copy(src, dst, rmode="rb", wmode="wb", answer='ask'):
f.close()
g.close()
+def raw_input(prompt):
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
def okay(prompt, answer='ask'):
answer = answer.strip().lower()
if not answer or answer[0] not in 'ny':
diff --git a/Tools/scripts/xxci.py b/Tools/scripts/xxci.py
index c6a7d08..1e77c87 100755
--- a/Tools/scripts/xxci.py
+++ b/Tools/scripts/xxci.py
@@ -105,6 +105,11 @@ def showdiffs(file):
cmd = 'rcsdiff ' + file + ' 2>&1 | ${PAGER-more}'
sts = os.system(cmd)
+def raw_input(prompt):
+ sys.stdout.write(prompt)
+ sys.stdout.flush()
+ return sys.stdin.readline()
+
def askyesno(prompt):
s = raw_input(prompt)
return s in ['y', 'yes']
diff --git a/Tools/webchecker/wcmac.py b/Tools/webchecker/wcmac.py
index 9c8a199..9edcd5d 100644
--- a/Tools/webchecker/wcmac.py
+++ b/Tools/webchecker/wcmac.py
@@ -4,4 +4,6 @@ webchecker.MAXPAGE = 50000
webchecker.verbose = 2
sys.argv.append('-x')
webchecker.main()
-raw_input("\nCR to exit: ")
+sys.stdout.write("\nCR to exit: ")
+sys.stdout.flush()
+sys.stdin.readline()