From ce96f69d69a6020c780145c89a17a8391b63624b Mon Sep 17 00:00:00 2001 From: Neal Norwitz Date: Fri, 17 Mar 2006 06:49:51 +0000 Subject: Get rid of a bunch more raw_input references --- Demo/pdist/cmptree.py | 5 +++++ Demo/pdist/mac.py | 11 ++++++++--- Demo/pdist/rcvs.py | 7 +++---- Demo/pdist/sumtree.py | 5 ++++- Demo/scripts/unbirthday.py | 5 +++++ Demo/sockets/ftp.py | 8 +++++++- Demo/sockets/gopher.py | 26 ++++++++++++++----------- Demo/tkinter/guido/wish.py | 5 ++++- Doc/lib/libcmd.tex | 10 ---------- Doc/lib/libcode.tex | 4 ++-- Doc/lib/libcrypt.tex | 6 ++++++ Doc/lib/libexcs.tex | 7 +------ Doc/lib/libfuncs.tex | 35 ---------------------------------- Doc/lib/libsmtplib.tex | 6 ++++++ Doc/lib/libsys.tex | 7 ++----- Doc/lib/libtelnetlib.tex | 5 +++++ Doc/lib/libtermios.tex | 6 ++++++ Doc/ref/ref8.tex | 5 +---- Doc/tools/keywords.py | 6 ++++++ Doc/tut/tut.tex | 33 +++++++++++++++++++++++++++----- Lib/cmd.py | 10 ++++++---- Lib/code.py | 10 ++++++---- Lib/distutils/command/register.py | 5 +++++ Lib/getpass.py | 3 +-- Lib/idlelib/PyShell.py | 2 +- Lib/pdb.py | 5 +++++ Lib/plat-mac/aetools.py | 5 +++++ Lib/pydoc.py | 5 +++++ Lib/rlcompleter.py | 6 ------ Lib/site.py | 4 +++- Lib/test/test_exceptions.py | 4 ++-- Lib/urllib.py | 7 ++++--- Mac/Demo/resources/copyres.py | 6 ++++++ Mac/Demo/sound/morselib.py | 40 ++++++++++++++++++++++++++------------- Misc/Vim/python.vim | 10 +++++----- Misc/cheatsheet | 10 ---------- Misc/python-mode.el | 8 ++++---- Tools/compiler/regrtest.py | 5 +++++ Tools/scripts/ftpmirror.py | 5 +++++ Tools/scripts/treesync.py | 5 +++++ Tools/scripts/xxci.py | 5 +++++ Tools/webchecker/wcmac.py | 4 +++- 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 >> 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. ''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() -- cgit v0.12