From fdrake@users.sourceforge.net Sat Sep 1 03:35:26 2001 From: fdrake@users.sourceforge.net (Fred L. Drake) Date: Fri, 31 Aug 2001 19:35:26 -0700 Subject: [Python-checkins] CVS: python/dist/src/Doc/lib libhttplib.tex,1.23,1.24 Message-ID: Update of /cvsroot/python/python/dist/src/Doc/lib In directory usw-pr-cvs1:/tmp/cvs-serv23905/lib Modified Files: libhttplib.tex Log Message: Added the "Host" header to the "GET" example. This closes SF bug #457100. Index: libhttplib.tex =================================================================== RCS file: /cvsroot/python/python/dist/src/Doc/lib/libhttplib.tex,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** libhttplib.tex 2001/01/22 17:42:32 1.23 --- libhttplib.tex 2001/09/01 02:35:23 1.24 *************** *** 122,125 **** --- 122,126 ---- >>> h.putheader('Accept', 'text/html') >>> h.putheader('Accept', 'text/plain') + >>> h.putheader('Host', 'www.cwi.nl') >>> h.endheaders() >>> errcode, errmsg, headers = h.getreply() From gvanrossum@users.sourceforge.net Sat Sep 1 19:29:57 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Sat, 01 Sep 2001 11:29:57 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/lib-tk Tkinter.py,1.155,1.156 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/lib-tk In directory usw-pr-cvs1:/tmp/cvs-serv31706 Modified Files: Tkinter.py Log Message: Add Listbox.itemconfig[ure] call. (A "recent" addition to Tk -- 8.0 doesn't have it.) This is from SF bug #457487 by anonymous. Index: Tkinter.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/lib-tk/Tkinter.py,v retrieving revision 1.155 retrieving revision 1.156 diff -C2 -d -r1.155 -r1.156 *** Tkinter.py 2001/08/23 13:25:59 1.155 --- Tkinter.py 2001/09/01 18:29:55 1.156 *************** *** 4,10 **** control of widgets. Toplevel widgets are Tk and Toplevel. Other widgets are Frame, Label, Entry, Text, Canvas, Button, Radiobutton, ! Checkbutton, Scale, Listbox, Scrollbar, OptionMenu. Properties of the widgets are ! specified with keyword arguments. Keyword arguments have the same ! name as the corresponding resource under Tk. Widgets are positioned with one of the geometry managers Place, Pack --- 4,10 ---- control of widgets. Toplevel widgets are Tk and Toplevel. Other widgets are Frame, Label, Entry, Text, Canvas, Button, Radiobutton, ! Checkbutton, Scale, Listbox, Scrollbar, OptionMenu. Properties of the ! widgets are specified with keyword arguments. Keyword arguments have ! the same name as the corresponding resource under Tk. Widgets are positioned with one of the geometry managers Place, Pack *************** *** 12,17 **** available in every Widget. ! Actions are bound to events by resources (e.g. keyword argument command) or ! with the method bind. Example (Hello, World): --- 12,17 ---- available in every Widget. ! Actions are bound to events by resources (e.g. keyword argument ! command) or with the method bind. Example (Hello, World): *************** *** 2364,2367 **** --- 2364,2388 ---- """Shift the y-view according to NUMBER which is measured in "units" or "pages" (WHAT).""" self.tk.call(self._w, 'yview', 'scroll', number, what) + def itemconfigure(self, index, cnf=None, **kw): + """Configure resources of an item. + + The values for resources are specified as keyword arguments. + To get an overview about the allowed keyword arguments + call the method without arguments. + Valid resource names: background, bg, foreground, fg, + selectbackground, selectforeground.""" + if cnf is None and not kw: + cnf = {} + for x in self.tk.split( + self.tk.call(self._w, 'itemconfigure', index)): + cnf[x[0][1:]] = (x[0][1:],) + x[1:] + return cnf + if type(cnf) == StringType and not kw: + x = self.tk.split(self.tk.call( + self._w, 'itemconfigure', index, '-'+cnf)) + return (x[0][1:],) + x[1:] + self.tk.call((self._w, 'itemconfigure', index) + + self._options(cnf, kw)) + itemconfig = itemconfigure class Menu(Widget): From gvanrossum@users.sourceforge.net Sat Sep 1 22:56:00 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Sat, 01 Sep 2001 14:56:00 -0700 Subject: [Python-checkins] CVS: python/dist/src/Tools/scripts fixdiv.py,NONE,1.1 Message-ID: Update of /cvsroot/python/python/dist/src/Tools/scripts In directory usw-pr-cvs1:/tmp/cvs-serv6694 Added Files: fixdiv.py Log Message: The beginnings of a script to help finding / operators that may need to be change to //. The code is pretty gross so far, and I promise I'll work on this more, but I have to go eat now! :-) --- NEW FILE: fixdiv.py --- #! /usr/bin/env python """fixdiv - tool to fix division operators. To use this tool, first run `python -Dwarn yourscript.py 2>warnings'. This runs the script `yourscript.py' while writing warning messages about all uses of the classic division operator to the file `warnings'. (The warnings are written to stderr, so you must use `2>' for the I/O redirect. I don't yet know how to do this on Windows.) Then run `python fixdiv.py warnings'. This first reads the warnings, looking for classic division warnings, and sorts them by file name and line number. Then, for each file that received at least one warning, it parses the file and tries to match the warnings up to the division operators found in the source code. If it is successful, it writes a recommendation to stdout in the form of a context diff. If it is not successful, it writes recommendations to stdout instead. """ import sys import getopt import re import tokenize from pprint import pprint def main(): try: opts, args = getopt.getopt(sys.argv[1:], "h") except getopt.error, msg: usage(2, msg) for o, a in opts: if o == "-h": help() if not args: usage(2, "at least one file argument is required") if args[1:]: sys.stderr.write("%s: extra file arguments ignored\n", sys.argv[0]) readwarnings(args[0]) def usage(exit, msg=None): if msg: sys.stderr.write("%s: %s\n" % (sys.argv[0], msg)) sys.stderr.write("Usage: %s warnings\n" % sys.argv[0]) sys.stderr.write("Try `%s -h' for more information.\n" % sys.argv[0]) sys.exit(exit) def help(): print __doc__ sys.exit(0) def readwarnings(warningsfile): pat = re.compile( "^(.+?):(\d+): DeprecationWarning: classic ([a-z]+) division$") try: f = open(warningsfile) except IOError, msg: sys.stderr.write("can't open: %s\n" % msg) return warnings = {} while 1: line = f.readline() if not line: break m = pat.match(line) if not m: if line.find("division") >= 0: sys.stderr.write("Warning: ignored input " + line) continue file, lineno, what = m.groups() list = warnings.get(file) if list is None: warnings[file] = list = [] list.append((int(lineno), intern(what))) f.close() files = warnings.keys() files.sort() for file in files: process(file, warnings[file]) def process(file, list): print "-"*70 if not list: sys.stderr.write("no division warnings for %s\n" % file) return try: fp = open(file) except IOError, msg: sys.stderr.write("can't open: %s\n" % msg) return print "Processing:", file f = FileContext(fp) list.sort() index = 0 # list[:index] has been processed, list[index:] is still to do orphans = [] # subset of list for which no / operator was found unknown = [] # lines with / operators for which no warnings were seen g = tokenize.generate_tokens(f.readline) while 1: startlineno, endlineno, slashes = lineinfo = scanline(g) if startlineno is None: break assert startlineno <= endlineno is not None while index < len(list) and list[index][0] < startlineno: orphans.append(list[index]) index += 1 warnings = [] while index < len(list) and list[index][0] <= endlineno: warnings.append(list[index]) index += 1 if not slashes and not warnings: pass elif slashes and not warnings: report(slashes, "Unexecuted code") elif warnings and not slashes: reportphantomwarnings(warnings, f) else: if len(slashes) > 1: report(slashes, "More than one / operator") else: (row, col), line = slashes[0] line = chop(line) if line[col:col+1] != "/": print "*** Can't find the / operator in line %d:" % row print "*", line continue intlong = [] floatcomplex = [] bad = [] for lineno, what in warnings: if what in ("int", "long"): intlong.append(what) elif what in ("float", "complex"): floatcomplex.append(what) else: bad.append(what) if bad: print "*** Bad warning for line %d:" % row, bad print "*", line elif intlong and not floatcomplex: print "%dc%d" % (row, row) print "<", line print "---" print ">", line[:col] + "/" + line[col:] elif floatcomplex and not intlong: print "True division / operator at line %d:" % row print "=", line fp.close() def reportphantomwarnings(warnings, f): blocks = [] lastrow = None lastblock = None for row, what in warnings: if row != lastrow: lastblock = [row] blocks.append(lastblock) lastblock.append(what) for block in blocks: row = block[0] whats = "/".join(block[1:]) print "*** Phantom %s warnings for line %d:" % (whats, row) f.report(row, mark="*") def report(slashes, message): lastrow = None for (row, col), line in slashes: if row != lastrow: print "*** %s on line %d:" % (message, row) print "*", chop(line) lastrow = row class FileContext: def __init__(self, fp, window=5, lineno=1): self.fp = fp self.window = 5 self.lineno = 1 self.eoflookahead = 0 self.lookahead = [] self.buffer = [] def fill(self): while len(self.lookahead) < self.window and not self.eoflookahead: line = self.fp.readline() if not line: self.eoflookahead = 1 break self.lookahead.append(line) def readline(self): self.fill() if not self.lookahead: return "" line = self.lookahead.pop(0) self.buffer.append(line) self.lineno += 1 return line def truncate(self): del self.buffer[-window:] def __getitem__(self, index): self.fill() bufstart = self.lineno - len(self.buffer) lookend = self.lineno + len(self.lookahead) if bufstart <= index < self.lineno: return self.buffer[index - bufstart] if self.lineno <= index < lookend: return self.lookahead[index - self.lineno] raise KeyError def report(self, first, last=None, mark="*"): if last is None: last = first for i in range(first, last+1): try: line = self[first] except KeyError: line = "" print mark, chop(line) def scanline(g): slashes = [] startlineno = None endlineno = None for type, token, start, end, line in g: endlineno = end[0] if startlineno is None: startlineno = endlineno if token in ("/", "/="): slashes.append((start, line)) ## if type in (tokenize.NEWLINE, tokenize.NL, tokenize.COMMENT): if type == tokenize.NEWLINE: break return startlineno, endlineno, slashes def chop(line): if line.endswith("\n"): return line[:-1] else: return line if __name__ == "__main__": main() From jackjansen@users.sourceforge.net Sat Sep 1 23:36:05 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 15:36:05 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/scripts EditPythonPrefs.py,1.26,1.27 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/scripts In directory usw-pr-cvs1:/tmp/cvs-serv16959/Python/Mac/scripts Modified Files: EditPythonPrefs.py Log Message: Added preferences/startup options for division warning and accepting unix-style newlines on input. Index: EditPythonPrefs.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/scripts/EditPythonPrefs.py,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** EditPythonPrefs.py 2001/08/27 21:41:23 1.26 --- EditPythonPrefs.py 2001/09/01 22:36:03 1.27 *************** *** 55,58 **** --- 55,60 ---- "noargs", "delayconsole", + "divisionwarn", + "unixnewlines", ] opt_dialog_dict = {} *************** *** 62,74 **** # 1 thru 10 are the options # The GUSI creator/type and delay-console ! OD_CREATOR_ITEM = 18 ! OD_TYPE_ITEM = 19 OD_OK_ITEM = 1 OD_CANCEL_ITEM = 2 ! OD_HELP_ITEM = 20 ! OD_KEEPALWAYS_ITEM = 14 ! OD_KEEPOUTPUT_ITEM = 15 ! OD_KEEPERROR_ITEM = 16 ! OD_KEEPNEVER_ITEM = 17 def optinteract(options): --- 64,76 ---- # 1 thru 10 are the options # The GUSI creator/type and delay-console ! OD_CREATOR_ITEM = 20 ! OD_TYPE_ITEM = 21 OD_OK_ITEM = 1 OD_CANCEL_ITEM = 2 ! OD_HELP_ITEM = 22 ! OD_KEEPALWAYS_ITEM = 16 ! OD_KEEPOUTPUT_ITEM = 17 ! OD_KEEPERROR_ITEM = 18 ! OD_KEEPNEVER_ITEM = 19 def optinteract(options): From jackjansen@users.sourceforge.net Sat Sep 1 23:36:11 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 15:36:11 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Lib pythonprefs.py,1.7,1.8 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Lib In directory usw-pr-cvs1:/tmp/cvs-serv16990/Python/Mac/Lib Modified Files: pythonprefs.py Log Message: Added preferences/startup options for division warning and accepting unix-style newlines on input. Index: pythonprefs.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Lib/pythonprefs.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** pythonprefs.py 2001/02/11 01:07:50 1.7 --- pythonprefs.py 2001/09/01 22:36:09 1.8 *************** *** 17,21 **** # version ! CUR_VERSION=7 preffilename = PstringLoader(AnyResLoader('STR ', resname=PREFNAME_NAME)).load() --- 17,21 ---- # version ! CUR_VERSION=8 preffilename = PstringLoader(AnyResLoader('STR ', resname=PREFNAME_NAME)).load() *************** *** 24,28 **** class PoptLoader(VersionLoader): def __init__(self, loader): ! VersionLoader.__init__(self, "bbbbbbbbbbbbbb", loader) def versioncheck(self, data): --- 24,28 ---- class PoptLoader(VersionLoader): def __init__(self, loader): ! VersionLoader.__init__(self, "bbbbbbbbbbbbbbbb", loader) def versioncheck(self, data): *************** *** 52,56 **** self.loader.save(newdata) ! popt_default_default = NullLoader(chr(CUR_VERSION) + 8*'\0') popt_default = AnyResLoader('Popt', POPT_ID, default=popt_default_default) popt_loader = ResLoader(pref_fss, 'Popt', POPT_ID, default=popt_default) --- 52,56 ---- self.loader.save(newdata) ! popt_default_default = NullLoader(chr(CUR_VERSION) + 14*'\0' + '\001') popt_default = AnyResLoader('Popt', POPT_ID, default=popt_default_default) popt_loader = ResLoader(pref_fss, 'Popt', POPT_ID, default=popt_default) *************** *** 86,90 **** dict['unbuffered'], dict['debugging'], dummy, dict['keep_console'], \ dict['nointopt'], dict['noargs'], dict['tabwarn'], \ ! dict['nosite'], dict['nonavservice'], dict['delayconsole'] = flags return dict --- 86,91 ---- dict['unbuffered'], dict['debugging'], dummy, dict['keep_console'], \ dict['nointopt'], dict['noargs'], dict['tabwarn'], \ ! dict['nosite'], dict['nonavservice'], dict['delayconsole'], \ ! dict['divisionwarn'], dict['unixnewlines'] = flags return dict *************** *** 97,101 **** dict['unbuffered'], dict['debugging'], 0, dict['keep_console'], \ dict['nointopt'], dict['noargs'], dict['tabwarn'], \ ! dict['nosite'], dict['nonavservice'], dict['delayconsole'] self.popt.save(flags) --- 98,103 ---- dict['unbuffered'], dict['debugging'], 0, dict['keep_console'], \ dict['nointopt'], dict['noargs'], dict['tabwarn'], \ ! dict['nosite'], dict['nonavservice'], dict['delayconsole'], \ ! dict['divisionwarn'], dict['unixnewlines'] self.popt.save(flags) From jackjansen@users.sourceforge.net Sat Sep 1 23:36:16 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 15:36:16 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Include pythonresources.h,1.26,1.27 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Include In directory usw-pr-cvs1:/tmp/cvs-serv17029/Python/Mac/Include Modified Files: pythonresources.h Log Message: Added preferences/startup options for division warning and accepting unix-style newlines on input. Index: pythonresources.h =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Include/pythonresources.h,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** pythonresources.h 2001/08/03 13:31:36 1.26 --- pythonresources.h 2001/09/01 22:36:14 1.27 *************** *** 78,81 **** --- 78,84 ---- #define OPT_HELP 15 #define OPT_NONAVSERV 16 + #define OPT_VERBOSEVERBOSE 19 + #define OPT_DIVISIONWARN 20 + #define OPT_UNIXNEWLINES 21 /* Dialog for 'No preferences directory' */ *************** *** 141,145 **** #define PYTHONOPTIONSOVERRIDE_ID 229 ! #define POPT_VERSION_CURRENT 7 /* Current version number */ #define POPT_KEEPCONSOLE_NEVER 0 #define POPT_KEEPCONSOLE_OUTPUT 1 --- 144,148 ---- #define PYTHONOPTIONSOVERRIDE_ID 229 ! #define POPT_VERSION_CURRENT 8 /* Current version number */ #define POPT_KEEPCONSOLE_NEVER 0 #define POPT_KEEPCONSOLE_OUTPUT 1 *************** *** 163,166 **** --- 166,171 ---- unsigned char nonavservice; unsigned char delayconsole; + unsigned char divisionwarn; + unsigned char unixnewlines; } PyMac_PrefRecord; #endif From jackjansen@users.sourceforge.net Sat Sep 1 23:36:22 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 15:36:22 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/scripts EditPythonPrefs.rsrc,1.13,1.14 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/scripts In directory usw-pr-cvs1:/tmp/cvs-serv17055/Python/Mac/scripts Modified Files: EditPythonPrefs.rsrc Log Message: Added preferences/startup options for division warning and accepting unix-style newlines on input. Index: EditPythonPrefs.rsrc =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/scripts/EditPythonPrefs.rsrc,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 Binary files /tmp/cvsjqSk0k and /tmp/cvsMi17Iv differ From jackjansen@users.sourceforge.net Sat Sep 1 23:36:26 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 15:36:26 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Resources pythonpath.r,1.13,1.14 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Resources In directory usw-pr-cvs1:/tmp/cvs-serv17087/Python/Mac/Resources Modified Files: pythonpath.r Log Message: Added preferences/startup options for division warning and accepting unix-style newlines on input. Index: pythonpath.r =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Resources/pythonpath.r,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** pythonpath.r 2001/08/19 22:02:56 1.13 --- pythonpath.r 2001/09/01 22:36:24 1.14 *************** *** 27,30 **** --- 27,32 ---- byte navService = 0, noNavService = 1; byte noDelayConsole = 0, delayConsole = 1; + byte noDivisionWarning = 0, divisionWarning = 1; + byte noUnixNewlines = 0, unixNewlines = 1; }; *************** *** 56,59 **** --- 58,63 ---- "No NavServices in macfs", 'DBYT', "Delay console window", 'DBYT', + "Warnings for old-style division", 'DBYT', + "Allow unix newlines on textfile input",'DBYT', } }; *************** *** 76,79 **** --- 80,85 ---- navService, noDelayConsole, + noDivisionWarning, + unixNewlines, }; From jackjansen@users.sourceforge.net Sat Sep 1 23:36:31 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 15:36:31 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Resources dialogs.rsrc,1.16,1.17 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Resources In directory usw-pr-cvs1:/tmp/cvs-serv17117/Python/Mac/Resources Modified Files: dialogs.rsrc Log Message: Added preferences/startup options for division warning and accepting unix-style newlines on input. Index: dialogs.rsrc =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Resources/dialogs.rsrc,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 Binary files /tmp/cvs7r42hp and /tmp/cvsCtLrtE differ From jackjansen@users.sourceforge.net Sat Sep 1 23:37:50 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 15:37:50 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Python macmain.c,1.66,1.67 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Python In directory usw-pr-cvs1:/tmp/cvs-serv17631/Python/Mac/Python Modified Files: macmain.c Log Message: Added preferences/startup options for division warning and accepting unix-style newlines on input. Also (finally) added a startup option to get -vv behaviour. Moved __convert_to_newlines to main.c because that's easier with the newline option. Index: macmain.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Python/macmain.c,v retrieving revision 1.66 retrieving revision 1.67 diff -C2 -d -r1.66 -r1.67 *** macmain.c 2001/08/03 13:31:36 1.66 --- macmain.c 2001/09/01 22:37:48 1.67 *************** *** 63,69 **** "Type \"copyright\", \"credits\" or \"license\" for more information." - - extern int Py_DebugFlag; /* For parser.c, declared in pythonrun.c */ - extern int Py_VerboseFlag; /* For import.c, declared in pythonrun.c */ short PyMac_AppRefNum; /* RefNum of application resource fork */ --- 63,66 ---- *************** *** 160,163 **** --- 157,161 ---- SET_OPT_ITEM(OPT_INSPECT, inspect); SET_OPT_ITEM(OPT_VERBOSE, verbose); + /* OPT_VERBOSEVERBOSE is default off */ SET_OPT_ITEM(OPT_OPTIMIZE, optimize); SET_OPT_ITEM(OPT_UNBUFFERED, unbuffered); *************** *** 174,178 **** SET_OPT_ITEM(OPT_TABWARN, tabwarn); SET_OPT_ITEM(OPT_NOSITE, nosite); ! SET_OPT_ITEM(OPT_NONAVSERV, nonavservice); /* The rest are not settable interactively */ --- 172,177 ---- SET_OPT_ITEM(OPT_TABWARN, tabwarn); SET_OPT_ITEM(OPT_NOSITE, nosite); ! SET_OPT_ITEM(OPT_DIVISIONWARN, divisionwarn); ! SET_OPT_ITEM(OPT_UNIXNEWLINES, unixnewlines); /* The rest are not settable interactively */ *************** *** 220,223 **** --- 219,232 ---- OPT_ITEM(OPT_INSPECT, inspect); OPT_ITEM(OPT_VERBOSE, verbose); + if ( item == OPT_VERBOSEVERBOSE ) { + if ( p->verbose == 2 ) + p->verbose = 1; + else + p->verbose = 2; + GetDialogItem(dialog, OPT_VERBOSE, &type, (Handle *)&handle, &rect); + SetControlValue(handle, 1); + } + GetDialogItem(dialog, OPT_VERBOSEVERBOSE, &type, (Handle *)&handle, &rect); + SetControlValue(handle, p->verbose == 2); OPT_ITEM(OPT_OPTIMIZE, optimize); OPT_ITEM(OPT_UNBUFFERED, unbuffered); *************** *** 237,241 **** OPT_ITEM(OPT_TABWARN, tabwarn); OPT_ITEM(OPT_NOSITE, nosite); ! OPT_ITEM(OPT_NONAVSERV, nonavservice); #undef OPT_ITEM --- 246,251 ---- OPT_ITEM(OPT_TABWARN, tabwarn); OPT_ITEM(OPT_NOSITE, nosite); ! OPT_ITEM(OPT_DIVISIONWARN, divisionwarn); ! OPT_ITEM(OPT_UNIXNEWLINES, unixnewlines); #undef OPT_ITEM *************** *** 316,319 **** --- 326,330 ---- Py_NoSiteFlag = PyMac_options.nosite; Py_TabcheckFlag = PyMac_options.tabwarn; + Py_DivisionWarningFlag = PyMac_options.divisionwarn; if ( PyMac_options.noargs ) { /* don't process events at all without the scripts permission */ *************** *** 675,677 **** { return (int)PyMac_options.delayconsole; ! } \ No newline at end of file --- 686,708 ---- { return (int)PyMac_options.delayconsole; ! } ! ! #ifndef WITHOUT_UNIX_NEWLINES ! /* ! ** Experimental feature (for 2.2a2): optionally allow unix newlines ! ** as well as Mac newlines on input. We replace a lowlevel ! ** MSL routine to accomplish this. ! */ ! void ! __convert_to_newlines(unsigned char * buf, size_t * n_ptr) ! { ! unsigned char *p; ! size_t n = *n_ptr; ! ! for(p=buf; n > 0; p++, n--) ! if ( *p == '\r' ) *p = '\n'; ! else if ( *p == '\n' && !PyMac_options.unixnewlines ) ! *p = '\r'; ! } ! #endif /* WITHOUT_UNIX_NEWLINES */ ! From jackjansen@users.sourceforge.net Sat Sep 1 23:37:56 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 15:37:56 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Python macglue.c,1.103,1.104 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Python In directory usw-pr-cvs1:/tmp/cvs-serv17679/Python/Mac/Python Modified Files: macglue.c Log Message: Added preferences/startup options for division warning and accepting unix-style newlines on input. Also (finally) added a startup option to get -vv behaviour. Moved __convert_to_newlines to main.c because that's easier with the newline option. Index: macglue.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Python/macglue.c,v retrieving revision 1.103 retrieving revision 1.104 diff -C2 -d -r1.103 -r1.104 *** macglue.c 2001/08/27 23:16:34 1.103 --- macglue.c 2001/09/01 22:37:54 1.104 *************** *** 180,200 **** int PyMac_AppearanceCompliant; - #ifndef WITHOUT_UNIX_NEWLINES - /* - ** Experimental feature (for 2.2a2): allow unix newlines - ** as well as Mac newlines on input. We replace a lowlevel - ** MSL routine to accomplish this - */ - void - __convert_to_newlines(unsigned char * buf, size_t * n_ptr) - { - unsigned char *p; - size_t n = *n_ptr; - - for(p=buf; n > 0; p++, n--) - if ( *p == '\r' ) *p = '\n'; - } - #endif /* WITHOUT_UNIX_NEWLINES */ - /* Given an FSSpec, return the FSSpec of the parent folder */ --- 180,183 ---- From jackjansen@users.sourceforge.net Sun Sep 2 00:37:03 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 16:37:03 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Tools/CGI PythonCGISlave.rsrc,1.4,1.5 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Tools/CGI In directory usw-pr-cvs1:/tmp/cvs-serv2305/Python/Mac/Tools/CGI Modified Files: PythonCGISlave.rsrc Log Message: Updated the Popt resources for the applets to the newest version. Index: PythonCGISlave.rsrc =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Tools/CGI/PythonCGISlave.rsrc,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 Binary files /tmp/cvsdiAeYz and /tmp/cvsKvp8KZ differ From jackjansen@users.sourceforge.net Sun Sep 2 00:37:07 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 16:37:07 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Tools/CGI BuildCGIApplet.rsrc,1.4,1.5 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Tools/CGI In directory usw-pr-cvs1:/tmp/cvs-serv2351/Python/Mac/Tools/CGI Modified Files: BuildCGIApplet.rsrc Log Message: Updated the Popt resources for the applets to the newest version. Index: BuildCGIApplet.rsrc =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Tools/CGI/BuildCGIApplet.rsrc,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 Binary files /tmp/cvsFsInGC and /tmp/cvsEk9hb5 differ From jackjansen@users.sourceforge.net Sun Sep 2 00:37:12 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 16:37:12 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Tools/IDE PythonIDE.rsrc,1.7,1.8 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Tools/IDE In directory usw-pr-cvs1:/tmp/cvs-serv2381/Python/Mac/Tools/IDE Modified Files: PythonIDE.rsrc Log Message: Updated the Popt resources for the applets to the newest version. Index: PythonIDE.rsrc =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Tools/IDE/PythonIDE.rsrc,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 Binary files /tmp/cvs3e69Nz and /tmp/cvsqXK8mZ differ From jackjansen@users.sourceforge.net Sun Sep 2 00:37:16 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 16:37:16 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/scripts EditPythonPrefs.rsrc,1.14,1.15 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/scripts In directory usw-pr-cvs1:/tmp/cvs-serv2404/Python/Mac/scripts Modified Files: EditPythonPrefs.rsrc Log Message: Updated the Popt resources for the applets to the newest version. Index: EditPythonPrefs.rsrc =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/scripts/EditPythonPrefs.rsrc,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 Binary files /tmp/cvsdixSt2 and /tmp/cvsoCePAU differ From jackjansen@users.sourceforge.net Sun Sep 2 00:37:21 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 16:37:21 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/scripts ConfigurePython.rsrc,1.13,1.14 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/scripts In directory usw-pr-cvs1:/tmp/cvs-serv2444/Python/Mac/scripts Modified Files: ConfigurePython.rsrc Log Message: Updated the Popt resources for the applets to the newest version. Index: ConfigurePython.rsrc =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/scripts/ConfigurePython.rsrc,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 Binary files /tmp/cvsOUwSUu and /tmp/cvsK0r1rP differ From jackjansen@users.sourceforge.net Sun Sep 2 00:37:25 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 16:37:25 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/scripts BuildApplication.rsrc,1.5,1.6 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/scripts In directory usw-pr-cvs1:/tmp/cvs-serv2462/Python/Mac/scripts Modified Files: BuildApplication.rsrc Log Message: Updated the Popt resources for the applets to the newest version. Index: BuildApplication.rsrc =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/scripts/BuildApplication.rsrc,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 Binary files /tmp/cvsdhGT73 and /tmp/cvswoOm2X differ From jackjansen@users.sourceforge.net Sun Sep 2 00:37:30 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 16:37:30 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/scripts BuildApplet.rsrc,1.5,1.6 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/scripts In directory usw-pr-cvs1:/tmp/cvs-serv2482/Python/Mac/scripts Modified Files: BuildApplet.rsrc Log Message: Updated the Popt resources for the applets to the newest version. Index: BuildApplet.rsrc =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/scripts/BuildApplet.rsrc,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 Binary files /tmp/cvs1dSvVt and /tmp/cvsqpr9EN differ From jackjansen@users.sourceforge.net Sun Sep 2 00:38:10 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 16:38:10 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/mlte _Mltemodule.c,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/mlte In directory usw-pr-cvs1:/tmp/cvs-serv2654/Python/Mac/Modules/mlte Modified Files: _Mltemodule.c Log Message: Include Carbon/Carbon.h if we're on OSX. Index: _Mltemodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/mlte/_Mltemodule.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _Mltemodule.c 2001/08/23 14:00:18 1.1 --- _Mltemodule.c 2001/09/01 23:38:08 1.2 *************** *** 20,24 **** #include #else ! #include #endif --- 20,24 ---- #include #else ! #include #endif From jackjansen@users.sourceforge.net Sun Sep 2 00:38:15 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 16:38:15 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/mlte mltesupport.py,1.5,1.6 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/mlte In directory usw-pr-cvs1:/tmp/cvs-serv2690/Python/Mac/Modules/mlte Modified Files: mltesupport.py Log Message: Include Carbon/Carbon.h if we're on OSX. Index: mltesupport.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/mlte/mltesupport.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** mltesupport.py 2001/08/23 13:50:07 1.5 --- mltesupport.py 2001/09/01 23:38:13 1.6 *************** *** 24,28 **** #include #else ! #include #endif --- 24,28 ---- #include #else ! #include #endif From jackjansen@users.sourceforge.net Sun Sep 2 00:38:47 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 16:38:47 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/ae _AEmodule.c,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/ae In directory usw-pr-cvs1:/tmp/cvs-serv2787/Python/Mac/Modules/ae Modified Files: _AEmodule.c Log Message: Don't call PyMac_HandleEvent if we're in unix-Python. Index: _AEmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/ae/_AEmodule.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _AEmodule.c 2001/08/23 14:02:03 1.1 --- _AEmodule.c 2001/09/01 23:38:45 1.2 *************** *** 40,47 **** --- 40,49 ---- if ( PyOS_InterruptOccurred() ) return 1; + #if !TARGET_API_MAC_OSX if ( PyMac_HandleEvent(theEvent) < 0 ) { PySys_WriteStderr("Exception in user event handler during AE processing\n"); PyErr_Clear(); } + #endif return 0; } From jackjansen@users.sourceforge.net Sun Sep 2 00:38:52 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 16:38:52 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/ae aesupport.py,1.23,1.24 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/ae In directory usw-pr-cvs1:/tmp/cvs-serv2828/Python/Mac/Modules/ae Modified Files: aesupport.py Log Message: Don't call PyMac_HandleEvent if we're in unix-Python. Index: aesupport.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/ae/aesupport.py,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** aesupport.py 2001/08/23 13:47:45 1.23 --- aesupport.py 2001/09/01 23:38:50 1.24 *************** *** 106,113 **** --- 106,115 ---- if ( PyOS_InterruptOccurred() ) return 1; + #if !TARGET_API_MAC_OSX if ( PyMac_HandleEvent(theEvent) < 0 ) { PySys_WriteStderr("Exception in user event handler during AE processing\\n"); PyErr_Clear(); } + #endif return 0; } From jackjansen@users.sourceforge.net Sun Sep 2 00:39:45 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 16:39:45 -0700 Subject: [Python-checkins] CVS: python/dist/src/Python mactoolboxglue.c,1.4,1.5 Message-ID: Update of /cvsroot/python/python/dist/src/Python In directory usw-pr-cvs1:/tmp/cvs-serv3096/Python/Python Modified Files: mactoolboxglue.c Log Message: Added glue routine for PyMac_BuildFSSpec, PyMac_GetFSRef and PyMac_BuildFSRef. Moved the declarations to pymactoolbox.h. Index: mactoolboxglue.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Python/mactoolboxglue.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** mactoolboxglue.c 2001/08/27 14:01:05 1.4 --- mactoolboxglue.c 2001/09/01 23:39:43 1.5 *************** *** 347,351 **** --- 347,355 ---- return (*PyMacGluePtr_##routinename)(pyobj, cobj); \ } + + GLUE_NEW(FSSpec *, PyMac_BuildFSSpec, "macfs") GLUE_CONVERT(FSSpec, PyMac_GetFSSpec, "macfs") + GLUE_NEW(FSRef *, PyMac_BuildFSRef, "macfs") + GLUE_CONVERT(FSRef, PyMac_GetFSRef, "macfs") GLUE_NEW(AppleEvent *, AEDesc_New, "Carbon.AE") /* XXXX Why by address? */ From jackjansen@users.sourceforge.net Sun Sep 2 00:39:50 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 16:39:50 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules macfsmodule.c,1.42,1.43 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules In directory usw-pr-cvs1:/tmp/cvs-serv3122/Python/Mac/Modules Modified Files: macfsmodule.c Log Message: Added glue routine for PyMac_BuildFSSpec, PyMac_GetFSRef and PyMac_BuildFSRef. Moved the declarations to pymactoolbox.h. Index: macfsmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/macfsmodule.c,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** macfsmodule.c 2001/08/08 13:46:49 1.42 --- macfsmodule.c 2001/09/01 23:39:48 1.43 *************** *** 42,46 **** --- 42,52 ---- #ifdef USE_TOOLBOX_OBJECT_GLUE extern int _PyMac_GetFSSpec(PyObject *, FSSpec *); + extern PyObject *_PyMac_BuildFSRef(FSRef *); + extern int _PyMac_GetFSSpec(PyObject *, FSSpec *); + extern PyObject *_PyMac_BuildFSRef(FSRef *); #define PyMac_GetFSSpec _PyMac_GetFSSpec + #define PyMac_BuildFSSpec _PyMac_BuildFSSpec + #define PyMac_GetFSRef _PyMac_GetFSRef + #define PyMac_BuildFSRef _PyMac_BuildFSRef #endif static PyObject *ErrorObject; *************** *** 1208,1211 **** --- 1214,1220 ---- PyMac_INIT_TOOLBOX_OBJECT_CONVERT(FSSpec, PyMac_GetFSSpec); + PyMac_INIT_TOOLBOX_OBJECT_CONVERT(FSRef, PyMac_GetFSRef); + PyMac_INIT_TOOLBOX_OBJECT_NEW(FSSpec *, PyMac_BuildFSSpec); + PyMac_INIT_TOOLBOX_OBJECT_NEW(FSRef *, PyMac_BuildFSRef); /* Create the module and add the functions */ From jackjansen@users.sourceforge.net Sun Sep 2 00:39:55 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 16:39:55 -0700 Subject: [Python-checkins] CVS: python/dist/src/Include pymactoolbox.h,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Include In directory usw-pr-cvs1:/tmp/cvs-serv3158/Python/Include Modified Files: pymactoolbox.h Log Message: Added glue routine for PyMac_BuildFSSpec, PyMac_GetFSRef and PyMac_BuildFSRef. Moved the declarations to pymactoolbox.h. Index: pymactoolbox.h =================================================================== RCS file: /cvsroot/python/python/dist/src/Include/pymactoolbox.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** pymactoolbox.h 2001/08/08 13:17:31 1.1 --- pymactoolbox.h 2001/09/01 23:39:53 1.2 *************** *** 89,93 **** /* macfs exports */ ! extern int PyMac_GetFSSpec(PyObject *, FSSpec *); /* AE exports */ --- 89,97 ---- /* macfs exports */ ! int PyMac_GetFSSpec(PyObject *, FSSpec *); /* argument parser for FSSpec */ ! PyObject *PyMac_BuildFSSpec(FSSpec *); /* Convert FSSpec to PyObject */ ! ! int PyMac_GetFSRef(PyObject *, FSRef *); /* argument parser for FSRef */ ! PyObject *PyMac_BuildFSRef(FSRef *); /* Convert FSRef to PyObject */ /* AE exports */ From jackjansen@users.sourceforge.net Sun Sep 2 00:40:21 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 16:40:21 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Distributions dev.include,1.18,1.19 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Distributions In directory usw-pr-cvs1:/tmp/cvs-serv3369/Python/Mac/Distributions Modified Files: dev.include Log Message: xx.prj has been replaced by xx.mcp. Index: dev.include =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Distributions/dev.include,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** dev.include 2001/08/03 13:31:35 1.18 --- dev.include 2001/09/01 23:40:19 1.19 *************** *** 20,23 **** --- 20,26 ---- (':Extensions:README', None) (':Extensions:README.TOO', None) + (':Extensions:example', None) + (':Extensions:example2', None) + (':Extensions:example3', None) (':Extensions:img', None) (':Extensions:midi', None) *************** *** 31,45 **** (':Lib', None) (':Mac:Build:App.carbon.mcp', None) ! (':Mac:Build:App.carbon.mcp.exp', None) ! (':Mac:Build:App.carbon.mcp.xml', None) ! (':Mac:Build:App.mcp', None) ! (':Mac:Build:App.mcp.exp', None) ! (':Mac:Build:App.mcp.xml', None) ! (':Mac:Build:Cm.carbon.mcp', None) ! (':Mac:Build:Cm.carbon.mcp.exp', None) ! (':Mac:Build:Cm.carbon.mcp.xml', None) ! (':Mac:Build:Cm.mcp', None) ! (':Mac:Build:Cm.mcp.exp', None) ! (':Mac:Build:Cm.mcp.xml', None) (':Mac:Build:ColorPicker.carbon.mcp', None) (':Mac:Build:ColorPicker.carbon.mcp.exp', None) --- 34,39 ---- (':Lib', None) (':Mac:Build:App.carbon.mcp', None) ! (':Mac:Build:CF.carbon.mcp.exp', None) ! (':Mac:Build:CF.carbon.mcp.xml', None) (':Mac:Build:ColorPicker.carbon.mcp', None) (':Mac:Build:ColorPicker.carbon.mcp.exp', None) *************** *** 48,74 **** (':Mac:Build:ColorPicker.mcp.exp', None) (':Mac:Build:ColorPicker.mcp.xml', None) ! (':Mac:Build:Fm.carbon.mcp', None) ! (':Mac:Build:Fm.carbon.mcp.exp', None) ! (':Mac:Build:Fm.carbon.mcp.xml', None) ! (':Mac:Build:Fm.mcp', None) ! (':Mac:Build:Fm.mcp.exp', None) ! (':Mac:Build:Fm.mcp.xml', None) ! (':Mac:Build:Help.mcp', None) (':Mac:Build:Help.mcp.exp', None) (':Mac:Build:Help.mcp.xml', None) (':Mac:Build:HtmlRender.prj', None) - (':Mac:Build:HtmlRender.prj.exp', None) - (':Mac:Build:Icn.carbon.mcp', None) (':Mac:Build:Icn.carbon.mcp.exp', None) (':Mac:Build:Icn.carbon.mcp.xml', None) ! (':Mac:Build:Icn.mcp', None) ! (':Mac:Build:Icn.mcp.exp', None) ! (':Mac:Build:Icn.mcp.xml', None) ! (':Mac:Build:List.carbon.mcp', None) ! (':Mac:Build:List.carbon.mcp.exp', None) ! (':Mac:Build:List.carbon.mcp.xml', None) ! (':Mac:Build:List.mcp', None) ! (':Mac:Build:List.mcp.exp', None) ! (':Mac:Build:List.mcp.xml', None) (':Mac:Build:Printing.mcp', None) (':Mac:Build:Printing.mcp.exp', None) --- 42,64 ---- (':Mac:Build:ColorPicker.mcp.exp', None) (':Mac:Build:ColorPicker.mcp.xml', None) ! (':Mac:Build:Dlg.mcp.exp', None) ! (':Mac:Build:Dlg.mcp.xml', None) ! (':Mac:Build:Drag.carbon.mcp.exp', None) ! (':Mac:Build:Drag.carbon.mcp.xml', None) ! (':Mac:Build:Drag.mcp.exp', None) ! (':Mac:Build:Drag.mcp.xml', None) (':Mac:Build:Help.mcp.exp', None) (':Mac:Build:Help.mcp.xml', None) (':Mac:Build:HtmlRender.prj', None) (':Mac:Build:Icn.carbon.mcp.exp', None) (':Mac:Build:Icn.carbon.mcp.xml', None) ! (':Mac:Build:Menu.carbon.mcp.exp', None) ! (':Mac:Build:Menu.carbon.mcp.xml', None) ! (':Mac:Build:Menu.mcp.exp', None) ! (':Mac:Build:Menu.mcp.xml', None) ! (':Mac:Build:Mlte.carbon.mcp.exp', None) ! (':Mac:Build:Mlte.carbon.mcp.xml', None) ! (':Mac:Build:Mlte.mcp.exp', None) ! (':Mac:Build:Mlte.mcp.xml', None) (':Mac:Build:Printing.mcp', None) (':Mac:Build:Printing.mcp.exp', None) *************** *** 79,123 **** (':Mac:Build:PythonInterpreter.mcp', None) (':Mac:Build:PythonStandSmall.mcp', None) (':Mac:Build:PythonStandalone.mcp', None) ! (':Mac:Build:Qdoffs.carbon.mcp', None) ! (':Mac:Build:Qdoffs.carbon.mcp.exp', None) ! (':Mac:Build:Qdoffs.carbon.mcp.xml', None) ! (':Mac:Build:Qdoffs.mcp', None) ! (':Mac:Build:Qdoffs.mcp.exp', None) ! (':Mac:Build:Qdoffs.mcp.xml', None) ! (':Mac:Build:Qt.carbon.mcp', None) (':Mac:Build:Qt.carbon.mcp.exp', None) ! (':Mac:Build:Qt.carbon.mcp.xml', None) ! (':Mac:Build:Qt.mcp', None) (':Mac:Build:Qt.mcp.exp', None) ! (':Mac:Build:Qt.mcp.xml', None) ! (':Mac:Build:Scrap.carbon.mcp', None) ! (':Mac:Build:Scrap.carbon.mcp.exp', None) ! (':Mac:Build:Scrap.carbon.mcp.xml', None) ! (':Mac:Build:Scrap.mcp', None) ! (':Mac:Build:Scrap.mcp.exp', None) ! (':Mac:Build:Scrap.mcp.xml', None) ! (':Mac:Build:Snd.carbon.mcp', None) (':Mac:Build:Snd.carbon.mcp.exp', None) (':Mac:Build:Snd.carbon.mcp.xml', None) - (':Mac:Build:Snd.mcp', None) (':Mac:Build:Snd.mcp.exp', None) (':Mac:Build:Snd.mcp.xml', None) - (':Mac:Build:Sndihooks.carbon.mcp', None) - (':Mac:Build:Sndihooks.carbon.mcp.exp', None) - (':Mac:Build:Sndihooks.carbon.mcp.xml', None) - (':Mac:Build:Sndihooks.mcp', None) - (':Mac:Build:Sndihooks.mcp.exp', None) - (':Mac:Build:Sndihooks.mcp.xml', None) - (':Mac:Build:TE.carbon.mcp', None) (':Mac:Build:TE.carbon.mcp.exp', None) (':Mac:Build:TE.carbon.mcp.xml', None) - (':Mac:Build:TE.mcp', None) (':Mac:Build:TE.mcp.exp', None) (':Mac:Build:TE.mcp.xml', None) ! (':Mac:Build:TE.mcp.xml.out', None) (':Mac:Build:_dummy_tkinter.mcp', None) (':Mac:Build:_dummy_tkinter.mcp.exp', None) - (':Mac:Build:_dummy_tkinter.old.mcp', None) (':Mac:Build:_symtable.carbon.mcp', None) (':Mac:Build:_symtable.carbon.mcp.exp', None) --- 69,227 ---- (':Mac:Build:PythonInterpreter.mcp', None) (':Mac:Build:PythonStandSmall.mcp', None) + (':Mac:Build:PythonStandSmall.mcp~0', None) + (':Mac:Build:PythonStandSmall.mcp~1', None) (':Mac:Build:PythonStandalone.mcp', None) ! (':Mac:Build:PythonStandalone.mcp~0', None) ! (':Mac:Build:PythonStandalone.mcp~1', None) (':Mac:Build:Qt.carbon.mcp.exp', None) ! (':Mac:Build:Qt.carbon.mcp.xml~0', None) (':Mac:Build:Qt.mcp.exp', None) ! (':Mac:Build:Qt.mcp.xml~0', None) (':Mac:Build:Snd.carbon.mcp.exp', None) (':Mac:Build:Snd.carbon.mcp.xml', None) (':Mac:Build:Snd.mcp.exp', None) (':Mac:Build:Snd.mcp.xml', None) (':Mac:Build:TE.carbon.mcp.exp', None) (':Mac:Build:TE.carbon.mcp.xml', None) (':Mac:Build:TE.mcp.exp', None) (':Mac:Build:TE.mcp.xml', None) ! (':Mac:Build:Win.carbon.mcp.exp', None) ! (':Mac:Build:Win.carbon.mcp.xml', None) ! (':Mac:Build:Win.mcp.exp', None) ! (':Mac:Build:Win.mcp.xml', None) ! (':Mac:Build:_AE.carbon.mcp', None) ! (':Mac:Build:_AE.carbon.mcp.exp', None) ! (':Mac:Build:_AE.carbon.mcp.xml', None) ! (':Mac:Build:_AE.mcp', None) ! (':Mac:Build:_AE.mcp.exp', None) ! (':Mac:Build:_AE.mcp.xml', None) ! (':Mac:Build:_App.carbon.mcp', None) ! (':Mac:Build:_App.carbon.mcp.exp', None) ! (':Mac:Build:_App.carbon.mcp.xml', None) ! (':Mac:Build:_App.mcp', None) ! (':Mac:Build:_App.mcp.exp', None) ! (':Mac:Build:_App.mcp.xml', None) ! (':Mac:Build:_CF.carbon.mcp', None) ! (':Mac:Build:_CF.carbon.mcp.exp', None) ! (':Mac:Build:_CF.carbon.mcp.xml', None) ! (':Mac:Build:_Cm.carbon.mcp', None) ! (':Mac:Build:_Cm.carbon.mcp.exp', None) ! (':Mac:Build:_Cm.carbon.mcp.xml', None) ! (':Mac:Build:_Cm.mcp', None) ! (':Mac:Build:_Cm.mcp.exp', None) ! (':Mac:Build:_Cm.mcp.xml', None) ! (':Mac:Build:_Ctl.carbon.mcp', None) ! (':Mac:Build:_Ctl.carbon.mcp.exp', None) ! (':Mac:Build:_Ctl.carbon.mcp.xml', None) ! (':Mac:Build:_Ctl.mcp', None) ! (':Mac:Build:_Ctl.mcp.exp', None) ! (':Mac:Build:_Ctl.mcp.xml', None) ! (':Mac:Build:_Dlg.carbon.mcp', None) ! (':Mac:Build:_Dlg.carbon.mcp.exp', None) ! (':Mac:Build:_Dlg.carbon.mcp.xml', None) ! (':Mac:Build:_Dlg.mcp', None) ! (':Mac:Build:_Dlg.mcp.exp', None) ! (':Mac:Build:_Dlg.mcp.xml', None) ! (':Mac:Build:_Drag.carbon.mcp', None) ! (':Mac:Build:_Drag.carbon.mcp.exp', None) ! (':Mac:Build:_Drag.carbon.mcp.xml', None) ! (':Mac:Build:_Drag.mcp', None) ! (':Mac:Build:_Drag.mcp.exp', None) ! (':Mac:Build:_Drag.mcp.xml', None) ! (':Mac:Build:_Evt.carbon.mcp', None) ! (':Mac:Build:_Evt.carbon.mcp.exp', None) ! (':Mac:Build:_Evt.carbon.mcp.xml', None) ! (':Mac:Build:_Evt.mcp', None) ! (':Mac:Build:_Evt.mcp.exp', None) ! (':Mac:Build:_Evt.mcp.xml', None) ! (':Mac:Build:_Fm.carbon.mcp', None) ! (':Mac:Build:_Fm.carbon.mcp.exp', None) ! (':Mac:Build:_Fm.carbon.mcp.xml', None) ! (':Mac:Build:_Fm.mcp', None) ! (':Mac:Build:_Fm.mcp.exp', None) ! (':Mac:Build:_Fm.mcp.xml', None) ! (':Mac:Build:_Help.mcp', None) ! (':Mac:Build:_Help.mcp.exp', None) ! (':Mac:Build:_Help.mcp.xml', None) ! (':Mac:Build:_Icn.carbon.mcp', None) ! (':Mac:Build:_Icn.carbon.mcp.exp', None) ! (':Mac:Build:_Icn.carbon.mcp.xml', None) ! (':Mac:Build:_Icn.mcp', None) ! (':Mac:Build:_Icn.mcp.exp', None) ! (':Mac:Build:_Icn.mcp.xml', None) ! (':Mac:Build:_List.carbon.mcp', None) ! (':Mac:Build:_List.carbon.mcp.exp', None) ! (':Mac:Build:_List.carbon.mcp.xml', None) ! (':Mac:Build:_List.mcp', None) ! (':Mac:Build:_List.mcp.exp', None) ! (':Mac:Build:_List.mcp.xml', None) ! (':Mac:Build:_Menu.carbon.mcp', None) ! (':Mac:Build:_Menu.carbon.mcp.exp', None) ! (':Mac:Build:_Menu.carbon.mcp.xml', None) ! (':Mac:Build:_Menu.mcp', None) ! (':Mac:Build:_Menu.mcp.exp', None) ! (':Mac:Build:_Menu.mcp.xml', None) ! (':Mac:Build:_Mlte.carbon.mcp', None) ! (':Mac:Build:_Mlte.carbon.mcp.exp', None) ! (':Mac:Build:_Mlte.carbon.mcp.xml', None) ! (':Mac:Build:_Mlte.mcp', None) ! (':Mac:Build:_Mlte.mcp.exp', None) ! (':Mac:Build:_Mlte.mcp.xml', None) ! (':Mac:Build:_Qd.carbon.mcp', None) ! (':Mac:Build:_Qd.carbon.mcp.exp', None) ! (':Mac:Build:_Qd.carbon.mcp.xml', None) ! (':Mac:Build:_Qd.mcp', None) ! (':Mac:Build:_Qd.mcp.exp', None) ! (':Mac:Build:_Qd.mcp.xml', None) ! (':Mac:Build:_Qdoffs.carbon.mcp', None) ! (':Mac:Build:_Qdoffs.carbon.mcp.exp', None) ! (':Mac:Build:_Qdoffs.carbon.mcp.xml', None) ! (':Mac:Build:_Qdoffs.mcp', None) ! (':Mac:Build:_Qdoffs.mcp.exp', None) ! (':Mac:Build:_Qdoffs.mcp.xml', None) ! (':Mac:Build:_Qt.carbon.mcp', None) ! (':Mac:Build:_Qt.carbon.mcp.exp', None) ! (':Mac:Build:_Qt.carbon.mcp.xml', None) ! (':Mac:Build:_Qt.mcp', None) ! (':Mac:Build:_Qt.mcp.exp', None) ! (':Mac:Build:_Qt.mcp.xml', None) ! (':Mac:Build:_Res.carbon.mcp', None) ! (':Mac:Build:_Res.carbon.mcp.exp', None) ! (':Mac:Build:_Res.carbon.mcp.xml', None) ! (':Mac:Build:_Res.mcp', None) ! (':Mac:Build:_Res.mcp.exp', None) ! (':Mac:Build:_Res.mcp.xml', None) ! (':Mac:Build:_Scrap.carbon.mcp', None) ! (':Mac:Build:_Scrap.carbon.mcp.exp', None) ! (':Mac:Build:_Scrap.carbon.mcp.xml', None) ! (':Mac:Build:_Scrap.mcp', None) ! (':Mac:Build:_Scrap.mcp.exp', None) ! (':Mac:Build:_Scrap.mcp.xml', None) ! (':Mac:Build:_Snd.carbon.mcp', None) ! (':Mac:Build:_Snd.carbon.mcp.exp', None) ! (':Mac:Build:_Snd.carbon.mcp.xml', None) ! (':Mac:Build:_Snd.mcp', None) ! (':Mac:Build:_Snd.mcp.exp', None) ! (':Mac:Build:_Snd.mcp.xml', None) ! (':Mac:Build:_Sndihooks.carbon.mcp', None) ! (':Mac:Build:_Sndihooks.carbon.mcp.exp', None) ! (':Mac:Build:_Sndihooks.carbon.mcp.xml', None) ! (':Mac:Build:_Sndihooks.mcp', None) ! (':Mac:Build:_Sndihooks.mcp.exp', None) ! (':Mac:Build:_Sndihooks.mcp.xml', None) ! (':Mac:Build:_TE.carbon.mcp', None) ! (':Mac:Build:_TE.carbon.mcp.exp', None) ! (':Mac:Build:_TE.carbon.mcp.xml', None) ! (':Mac:Build:_TE.mcp', None) ! (':Mac:Build:_TE.mcp.exp', None) ! (':Mac:Build:_TE.mcp.xml', None) ! (':Mac:Build:_Win.carbon.mcp', None) ! (':Mac:Build:_Win.carbon.mcp.exp', None) ! (':Mac:Build:_Win.carbon.mcp.xml', None) ! (':Mac:Build:_Win.mcp', None) ! (':Mac:Build:_Win.mcp.exp', None) ! (':Mac:Build:_Win.mcp.xml', None) (':Mac:Build:_dummy_tkinter.mcp', None) (':Mac:Build:_dummy_tkinter.mcp.exp', None) (':Mac:Build:_symtable.carbon.mcp', None) (':Mac:Build:_symtable.carbon.mcp.exp', None) *************** *** 175,180 **** (':Mac:Build:waste.mcp.exp', None) (':Mac:Build:waste.mcp.xml', None) ! (':Mac:Build:xx.prj', '') ! (':Mac:Build:xx.prj.exp', '') (':Mac:Build:zlib.carbon.mcp', None) (':Mac:Build:zlib.carbon.mcp.exp', None) --- 279,291 ---- (':Mac:Build:waste.mcp.exp', None) (':Mac:Build:waste.mcp.xml', None) ! (':Mac:Build:xx.carbon.mcp', '') ! (':Mac:Build:xx.carbon.mcp.exp', '') ! (':Mac:Build:xx.carbon.mcp.xml', '') ! (':Mac:Build:xxsubtype.carbon.mcp', None) ! (':Mac:Build:xxsubtype.carbon.mcp.exp', None) ! (':Mac:Build:xxsubtype.carbon.mcp.xml', None) ! (':Mac:Build:xxsubtype.mcp', None) ! (':Mac:Build:xxsubtype.mcp.exp', None) ! (':Mac:Build:xxsubtype.mcp.xml', None) (':Mac:Build:zlib.carbon.mcp', None) (':Mac:Build:zlib.carbon.mcp.exp', None) *************** *** 215,218 **** --- 326,330 ---- (':Mac:Demo:interslip', ':Mac:Demo:interslip') (':Mac:Demo:mainloops.txt', None) + (':Mac:Demo:mlte:mlted.py', None) (':Mac:Demo:mpwextensions.html', None) (':Mac:Demo:plugins.html', None) *************** *** 240,243 **** --- 352,357 ---- (':Mac:Modules', None) (':Mac:OSX:README.macosx.txt', None) + (':Mac:OSXResources', None) + (':Mac:OSXResources:', None) (':Mac:PlugIns:readme.txt', None) (':Mac:Python', None) *************** *** 266,273 **** (':Mac:mwerks:macuseshlstart.c', None) (':Mac:mwerks:malloc', None) - (':Mac:mwerks:mwerks_applet_config.h', ':Mac:mwerks:mwerks_applet_config.h') (':Mac:mwerks:mwerks_carbonNOGUSI_config.h', None) (':Mac:mwerks:mwerks_carbon_config.h', '') - (':Mac:mwerks:mwerks_carbongusi_config.h', '') (':Mac:mwerks:mwerks_carbonplugin_config.h', '') (':Mac:mwerks:mwerks_nonshared_config.h', ':Mac:mwerks:') --- 380,385 ---- *************** *** 304,307 **** --- 416,420 ---- (':Modules:_tkinter.c', None) (':Modules:_weakref.c', None) + (':Modules:addrinfo.h', None) (':Modules:almodule.c', None) (':Modules:ar_beos', None) *************** *** 333,337 **** --- 446,452 ---- (':Modules:gcmodule.c', None) (':Modules:gdbmmodule.c', None) + (':Modules:getaddrinfo.c', None) (':Modules:getbuildinfo.c', None) + (':Modules:getnameinfo.c', None) (':Modules:getpath.c', None) (':Modules:glmodule.c', None) *************** *** 388,391 **** --- 503,507 ---- (':Modules:tclNotify.c', None) (':Modules:termios.c', None) + (':Modules:testcapi_long.h', None) (':Modules:threadmodule.c', None) (':Modules:timemodule.c', None) *************** *** 401,404 **** --- 517,521 ---- (':Modules:xreadlinesmodule.c', None) (':Modules:xxmodule.c', '') + (':Modules:xxsubtype.c', None) (':Modules:yuv.h', None) (':Modules:yuvconvert.c', None) *************** *** 408,411 **** --- 525,529 ---- (':PC', None) (':PCbuild', None) + (':PLAN.txt', None) (':Parser', None) (':PlugIns', None) *************** *** 452,470 **** (':loop.py', None) (':mac2unix.shar', None) (':pystone.py', None) (':readmefiles', None) (':setup.py', None) (':site-packages', None) ! (':Extensions:example', None) ! (':Extensions:example2', None) ! (':Extensions:example3', None) ! (':Mac:Demo:mlte:mlted.py', None) ! (':Mac:Build:Mlte.mcp.xml', None) ! (':Mac:Build:Mlte.mcp.exp', None) ! (':Mac:Build:Mlte.mcp', None) ! (':Mac:Build:Mlte.carbon.mcp.xml', None) ! (':Mac:Build:Mlte.carbon.mcp.exp', None) ! (':Mac:Build:Mlte.carbon.mcp', None) ! (':Mac:Build:CF.carbon.mcp.xml', None) ! (':Mac:Build:CF.carbon.mcp.exp', None) ! (':Mac:Build:CF.carbon.mcp', None) --- 570,579 ---- (':loop.py', None) (':mac2unix.shar', None) + (':pyconfig.h.in', None) (':pystone.py', None) (':readmefiles', None) (':setup.py', None) (':site-packages', None) ! (':Mac:Build:xx.mcp', '') ! (':Mac:Build:xx.mcp.exp', '') ! (':Mac:Build:xx.mcp.xml', None) From jackjansen@users.sourceforge.net Sun Sep 2 00:40:00 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 16:40:00 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Include macglue.h,1.56,1.57 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Include In directory usw-pr-cvs1:/tmp/cvs-serv3183/Python/Mac/Include Modified Files: macglue.h Log Message: Added glue routine for PyMac_BuildFSSpec, PyMac_GetFSRef and PyMac_BuildFSRef. Moved the declarations to pymactoolbox.h. Index: macglue.h =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Include/macglue.h,v retrieving revision 1.56 retrieving revision 1.57 diff -C2 -d -r1.56 -r1.57 *** macglue.h 2001/08/08 13:17:31 1.56 --- macglue.h 2001/09/01 23:39:58 1.57 *************** *** 103,113 **** #endif - /* from macfsmodule.c: */ - int PyMac_GetFSSpec(PyObject *, FSSpec *); /* argument parser for FSSpec */ - PyObject *PyMac_BuildFSSpec(FSSpec *); /* Convert FSSpec to PyObject */ - - int PyMac_GetFSRef(PyObject *, FSRef *); /* argument parser for FSRef */ - PyObject *PyMac_BuildFSRef(FSRef *); /* Convert FSRef to PyObject */ - /* From macfiletype.c: */ --- 103,106 ---- From jackjansen@users.sourceforge.net Sun Sep 2 00:41:47 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 16:41:47 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Build PythonCoreCarbon.exp,1.13,1.14 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Build In directory usw-pr-cvs1:/tmp/cvs-serv3833/Python/Mac/Build Modified Files: PythonCoreCarbon.exp Log Message: Regenerated, mainly for new GC routines. Index: PythonCoreCarbon.exp =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Build/PythonCoreCarbon.exp,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** PythonCoreCarbon.exp 2001/08/10 12:17:04 1.13 --- PythonCoreCarbon.exp 2001/09/01 23:41:44 1.14 *************** *** 349,352 **** --- 349,353 ---- PyDict_Size PyDict_Copy + PyDict_Merge PyDict_Update PyDict_Next *************** *** 433,436 **** --- 434,438 ---- Py_FindMethod Py_FindMethodInChain + PyCFunction_Call PyCFunction_GetFlags PyCFunction_GetSelf *************** *** 461,464 **** --- 463,467 ---- PyMem_Realloc PyMem_Malloc + _Py_ReadyTypes PyCallable_Check PyNumber_Coerce *************** *** 484,488 **** PyObject_Str PyObject_Repr - _PyGC_Dump _PyObject_Dump PyObject_Print --- 487,490 ---- *************** *** 519,522 **** --- 521,526 ---- PyString_AsDecodedObject PyString_Decode + PyString_FromFormat + PyString_FromFormatV PyString_FromString PyString_FromStringAndSize *************** *** 532,537 **** --- 536,543 ---- PyType_Type PyBaseObject_Type + PySuper_Type PyType_Ready _PyType_Lookup + call_method PyType_IsSubtype PyType_GenericNew *************** *** 643,646 **** --- 649,653 ---- SpinCursor PyMac_GetFullPath + __convert_to_newlines PyMac_AppRefNum PyMac_options *************** *** 841,844 **** --- 848,852 ---- PyExc_DeprecationWarning PyExc_SyntaxWarning + PyExc_OverflowWarning PyExc_RuntimeWarning _PyExc_Fini *************** *** 864,867 **** --- 872,876 ---- proxytype wrappertype + PyGetSet_Type PyWrapper_New PyDictProxy_New *************** *** 872,878 **** PyDescr_NewMember PyDescr_NewMethod initgc - _PyGC_Remove - _PyGC_Insert PyMac_OSErrException PyMacGluePtr_PyMac_GetFSSpec --- 881,894 ---- PyDescr_NewMember PyDescr_NewMethod + _PyGC_generation0 + _PyObject_GC_Del + _PyObject_GC_Resize + _PyObject_GC_NewVar + _PyObject_GC_New + _PyObject_GC_Malloc + _PyObject_GC_UnTrack + _PyObject_GC_Track + _PyGC_Dump initgc PyMac_OSErrException PyMacGluePtr_PyMac_GetFSSpec *************** *** 1953,1957 **** __load_buffer __prep_buffer - __convert_to_newlines __convert_from_newlines ccommand --- 1969,1972 ---- From jackjansen@users.sourceforge.net Sun Sep 2 00:42:14 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 16:42:14 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Build PythonCore.exp,1.13,1.14 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Build In directory usw-pr-cvs1:/tmp/cvs-serv4059/Python/Mac/Build Modified Files: PythonCore.exp Log Message: Regenerated, mainly for new GC routines. Index: PythonCore.exp =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Build/PythonCore.exp,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** PythonCore.exp 2001/08/10 12:16:55 1.13 --- PythonCore.exp 2001/09/01 23:42:11 1.14 *************** *** 349,352 **** --- 349,353 ---- PyDict_Size PyDict_Copy + PyDict_Merge PyDict_Update PyDict_Next *************** *** 433,436 **** --- 434,438 ---- Py_FindMethod Py_FindMethodInChain + PyCFunction_Call PyCFunction_GetFlags PyCFunction_GetSelf *************** *** 461,464 **** --- 463,467 ---- PyMem_Realloc PyMem_Malloc + _Py_ReadyTypes PyCallable_Check PyNumber_Coerce *************** *** 484,488 **** PyObject_Str PyObject_Repr - _PyGC_Dump _PyObject_Dump PyObject_Print --- 487,490 ---- *************** *** 519,522 **** --- 521,526 ---- PyString_AsDecodedObject PyString_Decode + PyString_FromFormat + PyString_FromFormatV PyString_FromString PyString_FromStringAndSize *************** *** 532,537 **** --- 536,543 ---- PyType_Type PyBaseObject_Type + PySuper_Type PyType_Ready _PyType_Lookup + call_method PyType_IsSubtype PyType_GenericNew *************** *** 649,652 **** --- 655,659 ---- SpinCursor PyMac_GetFullPath + __convert_to_newlines PyMac_AppRefNum PyMac_options *************** *** 847,850 **** --- 854,858 ---- PyExc_DeprecationWarning PyExc_SyntaxWarning + PyExc_OverflowWarning PyExc_RuntimeWarning _PyExc_Fini *************** *** 870,873 **** --- 878,882 ---- proxytype wrappertype + PyGetSet_Type PyWrapper_New PyDictProxy_New *************** *** 878,884 **** PyDescr_NewMember PyDescr_NewMethod initgc - _PyGC_Remove - _PyGC_Insert PyMac_OSErrException PyMacGluePtr_PyMac_GetFSSpec --- 887,900 ---- PyDescr_NewMember PyDescr_NewMethod + _PyGC_generation0 + _PyObject_GC_Del + _PyObject_GC_Resize + _PyObject_GC_NewVar + _PyObject_GC_New + _PyObject_GC_Malloc + _PyObject_GC_UnTrack + _PyObject_GC_Track + _PyGC_Dump initgc PyMac_OSErrException PyMacGluePtr_PyMac_GetFSSpec *************** *** 2075,2079 **** __load_buffer __prep_buffer - __convert_to_newlines __convert_from_newlines ccommand --- 2091,2094 ---- From jackjansen@users.sourceforge.net Sun Sep 2 01:08:18 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 17:08:18 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules Nav.c,1.13,1.14 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules In directory usw-pr-cvs1:/tmp/cvs-serv8279 Modified Files: Nav.c Log Message: Don't call PyMac_HandleEvent in unix-Python Index: Nav.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/Nav.c,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** Nav.c 2001/05/22 21:48:40 1.13 --- Nav.c 2001/09/02 00:08:16 1.14 *************** *** 61,64 **** --- 61,65 ---- } if ( pyfunc == Py_None ) { + #if !TARGET_API_MAC_OSX /* Special case: give update events to the Python event handling code */ if ( callBackSelector == kNavCBEvent && *************** *** 66,69 **** --- 67,71 ---- PyMac_HandleEvent(callBackParms->eventData.eventDataParms.event); /* Ignore others */ + #endif return; } From jackjansen@users.sourceforge.net Sun Sep 2 01:09:37 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sat, 01 Sep 2001 17:09:37 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules macfsmodule.c,1.43,1.44 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules In directory usw-pr-cvs1:/tmp/cvs-serv8498 Modified Files: macfsmodule.c Log Message: Silly typos. Index: macfsmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/macfsmodule.c,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -d -r1.43 -r1.44 *** macfsmodule.c 2001/09/01 23:39:48 1.43 --- macfsmodule.c 2001/09/02 00:09:35 1.44 *************** *** 42,47 **** #ifdef USE_TOOLBOX_OBJECT_GLUE extern int _PyMac_GetFSSpec(PyObject *, FSSpec *); ! extern PyObject *_PyMac_BuildFSRef(FSRef *); ! extern int _PyMac_GetFSSpec(PyObject *, FSSpec *); extern PyObject *_PyMac_BuildFSRef(FSRef *); #define PyMac_GetFSSpec _PyMac_GetFSSpec --- 42,47 ---- #ifdef USE_TOOLBOX_OBJECT_GLUE extern int _PyMac_GetFSSpec(PyObject *, FSSpec *); ! extern PyObject *_PyMac_BuildFSSpec(FSSpec *); ! extern int _PyMac_GetFSRef(PyObject *, FSRef *); extern PyObject *_PyMac_BuildFSRef(FSRef *); #define PyMac_GetFSSpec _PyMac_GetFSSpec From tim_one@users.sourceforge.net Sun Sep 2 04:41:01 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Sat, 01 Sep 2001 20:41:01 -0700 Subject: [Python-checkins] CVS: python/dist/src/Misc NEWS,1.220,1.221 Message-ID: Update of /cvsroot/python/python/dist/src/Misc In directory usw-pr-cvs1:/tmp/cvs-serv11094/python/Misc Modified Files: NEWS Log Message: Start items w/ "-" instead of "+" (consistency w/ earlier versions). Stephen Hansen reported via email that he didn't finish the port to Borland C, so remove the old item saying it worked and add a new item saying what I know; I've asked Stephen for more details. Index: NEWS =================================================================== RCS file: /cvsroot/python/python/dist/src/Misc/NEWS,v retrieving revision 1.220 retrieving revision 1.221 diff -C2 -d -r1.220 -r1.221 *** NEWS 2001/08/31 18:31:35 1.220 --- NEWS 2001/09/02 03:40:59 1.221 *************** *** 4,8 **** Core ! + Overflowing operations on plain ints now return a long int rather than raising OverflowError. This is a partial implementation of PEP 237. You can use -Wdefault::OverflowWarning to enable a warning for --- 4,8 ---- Core ! - Overflowing operations on plain ints now return a long int rather than raising OverflowError. This is a partial implementation of PEP 237. You can use -Wdefault::OverflowWarning to enable a warning for *************** *** 10,14 **** OverflowError exception. ! + A new command line option, -D, is added to control run-time warnings for the use of classic division. (See PEP 238.) Possible values are -Dold, -Dwarn, and -Dnew. The default is -Dold, meaning --- 10,14 ---- OverflowError exception. ! - A new command line option, -D, is added to control run-time warnings for the use of classic division. (See PEP 238.) Possible values are -Dold, -Dwarn, and -Dnew. The default is -Dold, meaning *************** *** 21,25 **** division everywhere else. ! + Many built-in types can now be subclassed. This applies to int, long, float, str, unicode, and tuple. (The types complex, list and dictionary can also be subclassed; this was introduced earlier.) --- 21,25 ---- division everywhere else. ! - Many built-in types can now be subclassed. This applies to int, long, float, str, unicode, and tuple. (The types complex, list and dictionary can also be subclassed; this was introduced earlier.) *************** *** 31,39 **** once it is created. ! + A new built-in type, super, has been added. This facilitates making "cooperative super calls" in a multiple inheritance setting. For an explanation, see http://www.python.org/2.2/descrintro.html#cooperation ! + A new built-in type, getset, has been added. This enables the creation of "computed attributes". Such attributes are implemented by getter and setter functions (or only one of these for read-only --- 31,39 ---- once it is created. ! - A new built-in type, super, has been added. This facilitates making "cooperative super calls" in a multiple inheritance setting. For an explanation, see http://www.python.org/2.2/descrintro.html#cooperation ! - A new built-in type, getset, has been added. This enables the creation of "computed attributes". Such attributes are implemented by getter and setter functions (or only one of these for read-only *************** *** 41,45 **** __getattr__. See http://www.python.org/2.2/descrintro.html#getset ! + The syntax of floating-point and imaginary literals has been liberalized, to allow leading zeroes. Examples of literals now legal that were SyntaxErrors before: --- 41,45 ---- __getattr__. See http://www.python.org/2.2/descrintro.html#getset ! - The syntax of floating-point and imaginary literals has been liberalized, to allow leading zeroes. Examples of literals now legal that were SyntaxErrors before: *************** *** 47,64 **** 00.0 0e3 0100j 07.5 00000000000000000008. ! + An old tokenizer bug allowed floating point literals with an incomplete exponent, such as 1e and 3.1e-. Such literals now raise SyntaxError. Library ! + A new function, imp.lock_held(), returns 1 when the import lock is currently held. See the docs for the imp module. ! + pickle, cPickle and marshal on 32-bit platforms can now correctly read dumps containing ints written on platforms where Python ints are 8 bytes. When read on a box where Python ints are 4 bytes, such values are converted to Python longs. ! + In restricted execution mode (using the rexec module), unmarshalling code objects is no longer allowed. This plugs a security hole. --- 47,64 ---- 00.0 0e3 0100j 07.5 00000000000000000008. ! - An old tokenizer bug allowed floating point literals with an incomplete exponent, such as 1e and 3.1e-. Such literals now raise SyntaxError. Library ! - A new function, imp.lock_held(), returns 1 when the import lock is currently held. See the docs for the imp module. ! - pickle, cPickle and marshal on 32-bit platforms can now correctly read dumps containing ints written on platforms where Python ints are 8 bytes. When read on a box where Python ints are 4 bytes, such values are converted to Python longs. ! - In restricted execution mode (using the rexec module), unmarshalling code objects is no longer allowed. This plugs a security hole. *************** *** 69,73 **** API ! + The GC API has been changed. Extensions that use the old API will still compile but will not participate in GC. To upgrade an extension module: --- 69,73 ---- API ! - The GC API has been changed. Extensions that use the old API will still compile but will not participate in GC. To upgrade an extension module: *************** *** 85,89 **** - remove calls to PyObject_AS_GC and PyObject_FROM_GC ! + Two new functions: PyString_FromFormat() and PyString_FromFormatV(). These can be used safely to construct string objects from a sprintf-style format string (similar to the format string supported --- 85,89 ---- - remove calls to PyObject_AS_GC and PyObject_FROM_GC ! - Two new functions: PyString_FromFormat() and PyString_FromFormatV(). These can be used safely to construct string objects from a sprintf-style format string (similar to the format string supported *************** *** 92,100 **** New platforms Tests Windows ! + The w9xpopen hack is now used on Windows NT and 2000 too when COMPSPEC points to command.com (patch from Brian Quinlan). --- 92,104 ---- New platforms + - Patches from Stephen Hansen for the Borland C compiler (under Windows) + are reported to yield a clean compile, but a Python that doesn't yet + run correctly. Volunteers? + Tests Windows ! - The w9xpopen hack is now used on Windows NT and 2000 too when COMPSPEC points to command.com (patch from Brian Quinlan). *************** *** 436,444 **** pprint.isreadable() return sensible results. Also verifies that simple cases produce correct output. - - New platforms - - - Python should compile and run out of the box using the Borland C - compiler (under Windows), thanks to Stephen Hansen. C API --- 440,443 ---- From gvanrossum@users.sourceforge.net Sun Sep 2 04:58:43 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Sat, 01 Sep 2001 20:58:43 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/test regrtest.py,1.44,1.45 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/test In directory usw-pr-cvs1:/tmp/cvs-serv13534 Modified Files: regrtest.py Log Message: Whitespace normalization (tabs -> 4 spaces) in the Mac expectations. Index: regrtest.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/regrtest.py,v retrieving revision 1.44 retrieving revision 1.45 diff -C2 -d -r1.44 -r1.45 *** regrtest.py 2001/08/28 14:49:00 1.44 --- regrtest.py 2001/09/02 03:58:41 1.45 *************** *** 514,552 **** """, 'mac': ! """ ! test_al ! test_bsddb ! test_cd ! test_cl ! test_commands ! test_crypt ! test_dbm ! test_dl ! test_fcntl ! test_fork1 ! test_gl ! test_grp ! test_imgfile ! test_largefile ! test_linuxaudiodev ! test_locale ! test_mmap ! test_nis ! test_ntpath ! test_openpty ! test_poll ! test_popen2 ! test_pty ! test_pwd ! test_signal ! test_socket_ssl ! test_socketserver ! test_sunaudiodev ! test_sundry ! test_timing ! test_unicode_file ! test_winreg ! test_winsound ! """, } --- 514,552 ---- """, 'mac': ! """ ! test_al ! test_bsddb ! test_cd ! test_cl ! test_commands ! test_crypt ! test_dbm ! test_dl ! test_fcntl ! test_fork1 ! test_gl ! test_grp ! test_imgfile ! test_largefile ! test_linuxaudiodev ! test_locale ! test_mmap ! test_nis ! test_ntpath ! test_openpty ! test_poll ! test_popen2 ! test_pty ! test_pwd ! test_signal ! test_socket_ssl ! test_socketserver ! test_sunaudiodev ! test_sundry ! test_timing ! test_unicode_file ! test_winreg ! test_winsound ! """, } From gvanrossum@users.sourceforge.net Sun Sep 2 05:43:32 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Sat, 01 Sep 2001 21:43:32 -0700 Subject: [Python-checkins] CVS: python/dist/src/Tools/scripts finddiv.py,NONE,1.1 Message-ID: Update of /cvsroot/python/python/dist/src/Tools/scripts In directory usw-pr-cvs1:/tmp/cvs-serv18329 Added Files: finddiv.py Log Message: A grep-like tool that looks for division operators. --- NEW FILE: finddiv.py --- #! /usr/bin/env python """finddiv - a grep-like tool that looks for division operators. Usage: finddiv [-l] file_or_directory ... For directory arguments, all files in the directory whose name ends in .py are processed, and subdirectories are processed recursively. This actually tokenizes the files to avoid false hits in comments or strings literals. By default, this prints all lines containing a / or /= operator, in grep -n style. With the -l option specified, it prints the filename of files that contain at least one / or /= operator. """ import os import sys import getopt import tokenize def main(): try: opts, args = getopt.getopt(sys.argv[1:], "lh") except getopt.error, msg: usage(msg) return 2 if not args: usage("at least one file argument is required") return 2 listnames = 0 for o, a in opts: if o == "-h": print __doc__ return if o == "-l": listnames = 1 exit = None for file in args: x = process(file, listnames) exit = exit or x return exit def usage(msg): sys.stderr.write("%s: %s\n" % (sys.argv[0], msg)) sys.stderr.write("Usage: %s [-l] file ...\n" % sys.argv[0]) sys.stderr.write("Try `%s -h' for more information.\n" % sys.argv[0]) def process(file, listnames): if os.path.isdir(file): return processdir(file, listnames) try: fp = open(file) except IOError, msg: sys.stderr.write("Can't open: %s\n" % msg) return 1 g = tokenize.generate_tokens(fp.readline) lastrow = None for type, token, (row, col), end, line in g: if token in ("/", "/="): if listnames: print file break if row != lastrow: lastrow = row print "%s:%d:%s" % (file, row, line), fp.close() def processdir(dir, listnames): try: names = os.listdir(dir) except os.error, msg: sys.stderr.write("Can't list directory: %s\n" % dir) return 1 files = [] for name in names: fn = os.path.join(dir, name) if os.path.normcase(fn).endswith(".py") or os.path.isdir(fn): files.append(fn) files.sort(lambda a, b: cmp(os.path.normcase(a), os.path.normcase(b))) exit = None for fn in files: x = process(fn, listnames) exit = exit or x return exit if __name__ == "__main__": sys.exit(main()) From gvanrossum@users.sourceforge.net Sun Sep 2 05:49:38 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Sat, 01 Sep 2001 21:49:38 -0700 Subject: [Python-checkins] CVS: python/dist/src/Tools/scripts fixdiv.py,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Tools/scripts In directory usw-pr-cvs1:/tmp/cvs-serv19145 Modified Files: fixdiv.py Log Message: Added more text to the docstring, updated the way the exit status is percolated out, and some general cleanup. The output is still the same, except it now prints "Index: " instead of "Processing: ", so that the output can be used as input for patch (but only the diff-style parts of it). Index: fixdiv.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Tools/scripts/fixdiv.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** fixdiv.py 2001/09/01 21:55:58 1.1 --- fixdiv.py 2001/09/02 04:49:36 1.2 *************** *** 6,12 **** This runs the script `yourscript.py' while writing warning messages about all uses of the classic division operator to the file ! `warnings'. (The warnings are written to stderr, so you must use `2>' ! for the I/O redirect. I don't yet know how to do this on Windows.) Then run `python fixdiv.py warnings'. This first reads the warnings, looking for classic division warnings, and sorts them by file name and --- 6,23 ---- This runs the script `yourscript.py' while writing warning messages about all uses of the classic division operator to the file ! `warnings'. The warnings look like this: ! ! :: DeprecationWarning: classic division ! ! The warnings are written to stderr, so you must use `2>' for the I/O ! redirect. I know of no way to redirect stderr on Windows in a DOS ! box, so you will have to modify the script to set sys.stderr to some ! kind of log file if you want to do this on Windows. + The warnings are not limited to the script; modules imported by the + script may also trigger warnings. In fact a useful technique is to + write a test script specifically intended to exercise all code in a + particular module or set of modules. + Then run `python fixdiv.py warnings'. This first reads the warnings, looking for classic division warnings, and sorts them by file name and *************** *** 15,19 **** operators found in the source code. If it is successful, it writes a recommendation to stdout in the form of a context diff. If it is not ! successful, it writes recommendations to stdout instead. """ --- 26,95 ---- operators found in the source code. If it is successful, it writes a recommendation to stdout in the form of a context diff. If it is not ! successful, it writes observations to stdout instead. ! ! There are several possible recommendations and observations: ! ! - A / operator was found that can remain unchanged. This is the ! recommendation when only float and/or complex arguments were seen. ! ! - A / operator was found that should be changed to //. This is the ! recommendation when only int and/or long arguments were seen. ! ! - A / operator was found for which int or long as well as float or ! complex arguments were seen. This is highly unlikely; if it occurs, ! you may have to restructure the code to keep the classic semantics, ! or maybe you don't care about the classic semantics. ! ! - A / operator was found for which no warnings were seen. This could ! be code that was never executed, or code that was only executed with ! with user-defined objects as arguments. You will have to ! investigate further. Note that // can be overloaded separately from ! /, using __floordiv__. True division can also be separately ! overloaded, using __truediv__. Classic division should be the same ! as either of those. (XXX should I add a warning for division on ! user-defined objects, to disambiguate this case from code that was ! never executed?) ! ! - A warning was seen for a line not containing a / operator. This is ! an anomaly that shouldn't happen; the most likely cause is a change ! to the file between the time the test script was run to collect ! warnings and the time fixdiv was run. ! ! - More than one / operator was found on one line, or in a statement ! split across multiple lines. Because the warnings framework doesn't ! (and can't) show the offset within the line, and the code generator ! doesn't always give the correct line number for operations in a ! multi-line statement, it's not clear whether both were executed. In ! practice, they usually are, so the default action is make the same ! recommendation for all / operators, based on the above criteria. ! ! Notes: ! ! - The augmented assignment operator /= is handled the same way as the ! / operator. ! ! - This tool never looks at the // operator; no warnings are ever ! generated for use of this operator. ! ! - This tool never looks at the / operator when a future division ! statement is in effect; no warnings are generated in this case, and ! because the tool only looks at files for which at least one classic ! division warning was seen, it will never look at files containing a ! future division statement. ! ! - Warnings may be issued for code not read from a file, but executed ! using an exec statement or the eval() function. These will have ! in the filename position. The fixdiv script will attempt ! and fail to open a file named "", and issue a warning about ! this failure. You're on your own to deal with this. You could make ! all recommended changes and add a future division statement to all ! affected files, and then re-run the test script; it should not issue ! any warnings. If there are any, and you have a hard time tracking ! down where they are generated, you can use the -Werror option to ! force an error instead of a first warning, generating a traceback. ! ! - The tool should be run from the same directory as that from which ! the original script was run, otherwise it won't be able to open ! files given by relative pathnames. """ *************** *** 28,55 **** opts, args = getopt.getopt(sys.argv[1:], "h") except getopt.error, msg: ! usage(2, msg) for o, a in opts: if o == "-h": ! help() if not args: ! usage(2, "at least one file argument is required") if args[1:]: sys.stderr.write("%s: extra file arguments ignored\n", sys.argv[0]) ! readwarnings(args[0]) ! def usage(exit, msg=None): ! if msg: ! sys.stderr.write("%s: %s\n" % (sys.argv[0], msg)) sys.stderr.write("Usage: %s warnings\n" % sys.argv[0]) sys.stderr.write("Try `%s -h' for more information.\n" % sys.argv[0]) - sys.exit(exit) ! def help(): ! print __doc__ ! sys.exit(0) def readwarnings(warningsfile): ! pat = re.compile( ! "^(.+?):(\d+): DeprecationWarning: classic ([a-z]+) division$") try: f = open(warningsfile) --- 104,142 ---- opts, args = getopt.getopt(sys.argv[1:], "h") except getopt.error, msg: ! usage(msg) ! return 2 for o, a in opts: if o == "-h": ! print __doc__ ! return if not args: ! usage("at least one file argument is required") ! return 2 if args[1:]: sys.stderr.write("%s: extra file arguments ignored\n", sys.argv[0]) ! warnings = readwarnings(args[0]) ! if warnings is None: ! return 1 ! files = warnings.keys() ! if not files: ! print "No classic division warnings read from", args[0] ! return ! files.sort() ! exit = None ! for file in files: ! x = process(file, warnings[file]) ! exit = exit or x ! return exit ! def usage(msg): ! sys.stderr.write("%s: %s\n" % (sys.argv[0], msg)) sys.stderr.write("Usage: %s warnings\n" % sys.argv[0]) sys.stderr.write("Try `%s -h' for more information.\n" % sys.argv[0]) ! PATTERN = ("^(.+?):(\d+): DeprecationWarning: " ! "classic (int|long|float|complex) division$") def readwarnings(warningsfile): ! prog = re.compile(PATTERN) try: f = open(warningsfile) *************** *** 62,66 **** if not line: break ! m = pat.match(line) if not m: if line.find("division") >= 0: --- 149,153 ---- if not line: break ! m = prog.match(line) if not m: if line.find("division") >= 0: *************** *** 73,97 **** list.append((int(lineno), intern(what))) f.close() ! files = warnings.keys() ! files.sort() ! for file in files: ! process(file, warnings[file]) def process(file, list): print "-"*70 ! if not list: ! sys.stderr.write("no division warnings for %s\n" % file) ! return try: fp = open(file) except IOError, msg: sys.stderr.write("can't open: %s\n" % msg) ! return ! print "Processing:", file f = FileContext(fp) list.sort() index = 0 # list[:index] has been processed, list[index:] is still to do - orphans = [] # subset of list for which no / operator was found - unknown = [] # lines with / operators for which no warnings were seen g = tokenize.generate_tokens(f.readline) while 1: --- 160,177 ---- list.append((int(lineno), intern(what))) f.close() ! return warnings def process(file, list): print "-"*70 ! assert list # if this fails, readwarnings() is broken try: fp = open(file) except IOError, msg: sys.stderr.write("can't open: %s\n" % msg) ! return 1 ! print "Index:", file f = FileContext(fp) list.sort() index = 0 # list[:index] has been processed, list[index:] is still to do g = tokenize.generate_tokens(f.readline) while 1: *************** *** 100,106 **** --- 180,189 ---- break assert startlineno <= endlineno is not None + orphans = [] while index < len(list) and list[index][0] < startlineno: orphans.append(list[index]) index += 1 + if orphans: + reportphantomwarnings(orphans, f) warnings = [] while index < len(list) and list[index][0] <= endlineno: *************** *** 110,114 **** pass elif slashes and not warnings: ! report(slashes, "Unexecuted code") elif warnings and not slashes: reportphantomwarnings(warnings, f) --- 193,197 ---- pass elif slashes and not warnings: ! report(slashes, "No conclusive evidence") elif warnings and not slashes: reportphantomwarnings(warnings, f) *************** *** 223,227 **** if token in ("/", "/="): slashes.append((start, line)) - ## if type in (tokenize.NEWLINE, tokenize.NL, tokenize.COMMENT): if type == tokenize.NEWLINE: break --- 306,309 ---- *************** *** 235,237 **** if __name__ == "__main__": ! main() --- 317,319 ---- if __name__ == "__main__": ! sys.exit(main()) From gvanrossum@users.sourceforge.net Sun Sep 2 06:07:19 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Sat, 01 Sep 2001 22:07:19 -0700 Subject: [Python-checkins] CVS: python/dist/src/Misc ACKS,1.108,1.109 Message-ID: Update of /cvsroot/python/python/dist/src/Misc In directory usw-pr-cvs1:/tmp/cvs-serv21195 Modified Files: ACKS Log Message: An anonymous contributor reveals his name... Index: ACKS =================================================================== RCS file: /cvsroot/python/python/dist/src/Misc/ACKS,v retrieving revision 1.108 retrieving revision 1.109 diff -C2 -d -r1.108 -r1.109 *** ACKS 2001/08/27 06:37:48 1.108 --- ACKS 2001/09/02 05:07:17 1.109 *************** *** 447,450 **** --- 447,451 ---- Moshe Zadka Milan Zamazal + Mike Zarnstorff Siebren van der Zee Uwe Zessin From fdrake@users.sourceforge.net Sun Sep 2 07:07:38 2001 From: fdrake@users.sourceforge.net (Fred L. Drake) Date: Sat, 01 Sep 2001 23:07:38 -0700 Subject: [Python-checkins] CVS: python/dist/src/Doc/lib minidom-example.py,NONE,1.1 xmldomminidom.tex,1.3,1.4 Message-ID: Update of /cvsroot/python/python/dist/src/Doc/lib In directory usw-pr-cvs1:/tmp/cvs-serv29330 Modified Files: xmldomminidom.tex Added Files: minidom-example.py Log Message: Move the long minidom example to a separate file; \verbatiminput does the right thing with page breaks in long examples, while the verbatim environment does not. This causes the example to wrap to the next page instead of overwriting the page footer and bottom margin. --- NEW FILE: minidom-example.py --- import xml.dom.minidom document = """\ Demo slideshow Slide title This is a demo Of a program for processing slides Another demo slide It is important To have more than one slide """ dom = xml.dom.minidom.parseString(document) space = " " def getText(nodelist): rc = "" for node in nodelist: if node.nodeType == node.TEXT_NODE: rc = rc + node.data return rc def handleSlideshow(slideshow): print "" handleSlideshowTitle(slideshow.getElementsByTagName("title")[0]) slides = slideshow.getElementsByTagName("slide") handleToc(slides) handleSlides(slides) print "" def handleSlides(slides): for slide in slides: handleSlide(slide) def handleSlide(slide): handleSlideTitle(slide.getElementsByTagName("title")[0]) handlePoints(slide.getElementsByTagName("point")) def handleSlideshowTitle(title): print "%s" % getText(title.childNodes) def handleSlideTitle(title): print "

%s

" % getText(title.childNodes) def handlePoints(points): print "
    " for point in points: handlePoint(point) print "
" def handlePoint(point): print "
  • %s
  • " % getText(point.childNodes) def handleToc(slides): for slide in slides: title = slide.getElementsByTagName("title")[0] print "

    %s

    " % getText(title.childNodes) handleSlideshow(dom) Index: xmldomminidom.tex =================================================================== RCS file: /cvsroot/python/python/dist/src/Doc/lib/xmldomminidom.tex,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** xmldomminidom.tex 2001/01/22 19:06:20 1.3 --- xmldomminidom.tex 2001/09/02 06:07:36 1.4 *************** *** 144,214 **** of the flexibility of the DOM. ! \begin{verbatim} ! import xml.dom.minidom ! ! document = """\ ! ! Demo slideshow ! Slide title ! This is a demo ! Of a program for processing slides ! ! ! Another demo slide ! It is important ! To have more than ! one slide ! ! ! """ ! ! dom = xml.dom.minidom.parseString(document) ! ! space = " " ! def getText(nodelist): ! rc = "" ! for node in nodelist: ! if node.nodeType == node.TEXT_NODE: ! rc = rc + node.data ! return rc ! ! def handleSlideshow(slideshow): ! print "" ! handleSlideshowTitle(slideshow.getElementsByTagName("title")[0]) ! slides = slideshow.getElementsByTagName("slide") ! handleToc(slides) ! handleSlides(slides) ! print "" ! ! def handleSlides(slides): ! for slide in slides: ! handleSlide(slide) ! ! def handleSlide(slide): ! handleSlideTitle(slide.getElementsByTagName("title")[0]) ! handlePoints(slide.getElementsByTagName("point")) ! ! def handleSlideshowTitle(title): ! print "%s" % getText(title.childNodes) ! ! def handleSlideTitle(title): ! print "

    %s

    " % getText(title.childNodes) ! ! def handlePoints(points): ! print "
      " ! for point in points: ! handlePoint(point) ! print "
    " ! ! def handlePoint(point): ! print "
  • %s
  • " % getText(point.childNodes) ! ! def handleToc(slides): ! for slide in slides: ! title = slide.getElementsByTagName("title")[0] ! print "

    %s

    " % getText(title.childNodes) ! ! handleSlideshow(dom) ! \end{verbatim} --- 144,148 ---- of the flexibility of the DOM. ! \verbatiminput{minidom-example.py} From tim_one@users.sourceforge.net Sun Sep 2 07:29:50 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Sat, 01 Sep 2001 23:29:50 -0700 Subject: [Python-checkins] CVS: python/dist/src/Objects tupleobject.c,2.57,2.58 Message-ID: Update of /cvsroot/python/python/dist/src/Objects In directory usw-pr-cvs1:/tmp/cvs-serv31921/python/dist/src/Objects Modified Files: tupleobject.c Log Message: Repair apparent cut'n'pasteo in tuple() docstring. Index: tupleobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/tupleobject.c,v retrieving revision 2.57 retrieving revision 2.58 diff -C2 -d -r2.57 -r2.58 *** tupleobject.c 2001/08/30 18:31:30 2.57 --- tupleobject.c 2001/09/02 06:29:48 2.58 *************** *** 523,527 **** static char tuple_doc[] = ! "tuple(sequence) -> list\n\ \n\ Return a tuple whose items are the same as those of the argument sequence.\n\ --- 523,527 ---- static char tuple_doc[] = ! "tuple(sequence) -> tuple\n\ \n\ Return a tuple whose items are the same as those of the argument sequence.\n\ From tim_one@users.sourceforge.net Sun Sep 2 07:42:28 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Sat, 01 Sep 2001 23:42:28 -0700 Subject: [Python-checkins] CVS: python/dist/src/Objects tupleobject.c,2.58,2.59 Message-ID: Update of /cvsroot/python/python/dist/src/Objects In directory usw-pr-cvs1:/tmp/cvs-serv693/python/dist/src/Objects Modified Files: tupleobject.c Log Message: Rewrite the tuple() docstring to parallel the list() docstring. Index: tupleobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/tupleobject.c,v retrieving revision 2.58 retrieving revision 2.59 diff -C2 -d -r2.58 -r2.59 *** tupleobject.c 2001/09/02 06:29:48 2.58 --- tupleobject.c 2001/09/02 06:42:25 2.59 *************** *** 523,530 **** static char tuple_doc[] = ! "tuple(sequence) -> tuple\n\ ! \n\ ! Return a tuple whose items are the same as those of the argument sequence.\n\ ! If the argument is a tuple, the return value is the same object."; static PySequenceMethods tuple_as_sequence = { --- 523,530 ---- static char tuple_doc[] = ! "tuple() -> an empty tuple\n" ! "tuple(sequence) -> tuple initialized from sequence's items\n" ! "\n" ! "If the argument is a tuple, the return value is the same object."; static PySequenceMethods tuple_as_sequence = { From tim_one@users.sourceforge.net Sun Sep 2 09:22:50 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Sun, 02 Sep 2001 01:22:50 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/test test_descr.py,1.28,1.29 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/test In directory usw-pr-cvs1:/tmp/cvs-serv12216/python/dist/src/Lib/test Modified Files: test_descr.py Log Message: Make dictionary() a real constructor. Accepts at most one argument, "a mapping object", in the same sense dict.update(x) requires of x (that x has a keys() method and a getitem). Questionable: The other type constructors accept a keyword argument, so I did that here too (e.g., dictionary(mapping={1:2}) works). But type_call doesn't pass the keyword args to the tp_new slot (it passes NULL), it only passes them to the tp_init slot, so getting at them required adding a tp_init slot to dicts. Looks like that makes the normal case (i.e., no args at all) a little slower (the time it takes to call dict.tp_init and have it figure out there's nothing to do). Index: test_descr.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_descr.py,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** test_descr.py 2001/08/31 04:35:14 1.28 --- test_descr.py 2001/09/02 08:22:48 1.29 *************** *** 1,5 **** # Test descriptor-related enhancements ! from test_support import verify, verbose from copy import deepcopy --- 1,5 ---- # Test descriptor-related enhancements ! from test_support import verify, verbose, TestFailed from copy import deepcopy *************** *** 124,127 **** --- 124,176 ---- testset2op({1:2,3:4}, 2, 3, {1:2,2:3,3:4}, "a[b]=c", "__setitem__") + def dict_constructor(): + if verbose: + print "Testing dictionary constructor ..." + d = dictionary() + verify(d == {}) + d = dictionary({}) + verify(d == {}) + d = dictionary(mapping={}) + verify(d == {}) + d = dictionary({1: 2, 'a': 'b'}) + verify(d == {1: 2, 'a': 'b'}) + for badarg in 0, 0L, 0j, "0", [0], (0,): + try: + dictionary(badarg) + except TypeError: + pass + else: + raise TestFailed("no TypeError from dictionary(%r)" % badarg) + try: + dictionary(senseless={}) + except TypeError: + pass + else: + raise TestFailed("no TypeError from dictionary(senseless={}") + + try: + dictionary({}, {}) + except TypeError: + pass + else: + raise TestFailed("no TypeError from dictionary({}, {})") + + class Mapping: + dict = {1:2, 3:4, 'a':1j} + + def __getitem__(self, i): + return self.dict[i] + + try: + dictionary(Mapping()) + except TypeError: + pass + else: + raise TestFailed("no TypeError from dictionary(incomplete mapping)") + + Mapping.keys = lambda self: self.dict.keys() + d = dictionary(mapping=Mapping()) + verify(d == Mapping.dict) + binops = { 'add': '+', *************** *** 1300,1303 **** --- 1349,1353 ---- lists() dicts() + dict_constructor() ints() longs() From tim_one@users.sourceforge.net Sun Sep 2 09:22:50 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Sun, 02 Sep 2001 01:22:50 -0700 Subject: [Python-checkins] CVS: python/dist/src/Objects dictobject.c,2.110,2.111 Message-ID: Update of /cvsroot/python/python/dist/src/Objects In directory usw-pr-cvs1:/tmp/cvs-serv12216/python/dist/src/Objects Modified Files: dictobject.c Log Message: Make dictionary() a real constructor. Accepts at most one argument, "a mapping object", in the same sense dict.update(x) requires of x (that x has a keys() method and a getitem). Questionable: The other type constructors accept a keyword argument, so I did that here too (e.g., dictionary(mapping={1:2}) works). But type_call doesn't pass the keyword args to the tp_new slot (it passes NULL), it only passes them to the tp_init slot, so getting at them required adding a tp_init slot to dicts. Looks like that makes the normal case (i.e., no args at all) a little slower (the time it takes to call dict.tp_init and have it figure out there's nothing to do). Index: dictobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/dictobject.c,v retrieving revision 2.110 retrieving revision 2.111 diff -C2 -d -r2.110 -r2.111 *** dictobject.c 2001/08/29 23:51:52 2.110 --- dictobject.c 2001/09/02 08:22:48 2.111 *************** *** 1693,1696 **** --- 1693,1719 ---- } + static int + dict_init(PyObject *self, PyObject *args, PyObject *kwds) + { + PyObject *arg = NULL; + static char *kwlist[] = {"mapping", 0}; + + if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O:dictionary", + kwlist, &arg)) + return -1; + if (arg != NULL) { + if (PyDict_Merge(self, arg, 1) < 0) { + /* An error like "AttibuteError: keys" is too + cryptic in this context. */ + if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_SetString(PyExc_TypeError, + "argument must be of a mapping type"); + } + return -1; + } + } + return 0; + } + static PyObject * dict_iter(dictobject *dict) *************** *** 1699,1702 **** --- 1722,1729 ---- } + static char dictionary_doc[] = + "dictionary() -> new empty dictionary\n" + "dictionary(mapping) -> new dict initialized from mapping's key+value pairs"; + PyTypeObject PyDict_Type = { PyObject_HEAD_INIT(&PyType_Type) *************** *** 1722,1726 **** Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, /* tp_flags */ ! "dictionary type", /* tp_doc */ (traverseproc)dict_traverse, /* tp_traverse */ (inquiry)dict_tp_clear, /* tp_clear */ --- 1749,1753 ---- Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, /* tp_flags */ ! dictionary_doc, /* tp_doc */ (traverseproc)dict_traverse, /* tp_traverse */ (inquiry)dict_tp_clear, /* tp_clear */ *************** *** 1737,1741 **** 0, /* tp_descr_set */ 0, /* tp_dictoffset */ ! 0, /* tp_init */ PyType_GenericAlloc, /* tp_alloc */ dict_new, /* tp_new */ --- 1764,1768 ---- 0, /* tp_descr_set */ 0, /* tp_dictoffset */ ! (initproc)dict_init, /* tp_init */ PyType_GenericAlloc, /* tp_alloc */ dict_new, /* tp_new */ From gvanrossum@users.sourceforge.net Sun Sep 2 14:44:37 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Sun, 02 Sep 2001 06:44:37 -0700 Subject: [Python-checkins] CVS: python/dist/src/Misc NEWS,1.221,1.222 Message-ID: Update of /cvsroot/python/python/dist/src/Misc In directory usw-pr-cvs1:/tmp/cvs-serv8316 Modified Files: NEWS Log Message: Add news about dictionary() constructor. Index: NEWS =================================================================== RCS file: /cvsroot/python/python/dist/src/Misc/NEWS,v retrieving revision 1.221 retrieving revision 1.222 diff -C2 -d -r1.221 -r1.222 *** NEWS 2001/09/02 03:40:59 1.221 --- NEWS 2001/09/02 13:44:35 1.222 *************** *** 31,34 **** --- 31,38 ---- once it is created. + - The dictionary constructor now takes an optional argument, a + mapping-like object, and initializes the dictionary from its + (key, value) pairs. + - A new built-in type, super, has been added. This facilitates making "cooperative super calls" in a multiple inheritance setting. For an From gvanrossum@users.sourceforge.net Sun Sep 2 15:11:32 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Sun, 02 Sep 2001 07:11:32 -0700 Subject: [Python-checkins] CVS: python/dist/src/Tools/scripts fixdiv.py,1.2,1.3 Message-ID: Update of /cvsroot/python/python/dist/src/Tools/scripts In directory usw-pr-cvs1:/tmp/cvs-serv16766 Modified Files: fixdiv.py Log Message: Implement what the docstring said: multiple slashes per line are treated the same as single ones by default. Added -m option to issue a warning for this case instead. Index: fixdiv.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Tools/scripts/fixdiv.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** fixdiv.py 2001/09/02 04:49:36 1.2 --- fixdiv.py 2001/09/02 14:11:30 1.3 *************** *** 63,66 **** --- 63,67 ---- practice, they usually are, so the default action is make the same recommendation for all / operators, based on the above criteria. + The -m option issues warnings for these cases instead. Notes: *************** *** 100,106 **** from pprint import pprint def main(): try: ! opts, args = getopt.getopt(sys.argv[1:], "h") except getopt.error, msg: usage(msg) --- 101,109 ---- from pprint import pprint + multi_ok = 1 + def main(): try: ! opts, args = getopt.getopt(sys.argv[1:], "hm") except getopt.error, msg: usage(msg) *************** *** 110,113 **** --- 113,119 ---- print __doc__ return + if o == "-m": + global multi_ok + multi_ok = 0 if not args: usage("at least one file argument is required") *************** *** 131,135 **** def usage(msg): sys.stderr.write("%s: %s\n" % (sys.argv[0], msg)) ! sys.stderr.write("Usage: %s warnings\n" % sys.argv[0]) sys.stderr.write("Try `%s -h' for more information.\n" % sys.argv[0]) --- 137,141 ---- def usage(msg): sys.stderr.write("%s: %s\n" % (sys.argv[0], msg)) ! sys.stderr.write("Usage: %s [-m] warnings\n" % sys.argv[0]) sys.stderr.write("Try `%s -h' for more information.\n" % sys.argv[0]) *************** *** 198,204 **** else: if len(slashes) > 1: ! report(slashes, "More than one / operator") ! else: ! (row, col), line = slashes[0] line = chop(line) if line[col:col+1] != "/": --- 204,225 ---- else: if len(slashes) > 1: ! if not multi_ok: ! report(slashes, "More than one / operator per statement") ! continue ! intlong = [] ! floatcomplex = [] ! bad = [] ! for lineno, what in warnings: ! if what in ("int", "long"): ! intlong.append(what) ! elif what in ("float", "complex"): ! floatcomplex.append(what) ! else: ! bad.append(what) ! lastrow = None ! for (row, col), line in slashes: ! if row == lastrow: ! continue ! lastrow = row line = chop(line) if line[col:col+1] != "/": *************** *** 206,219 **** print "*", line continue - intlong = [] - floatcomplex = [] - bad = [] - for lineno, what in warnings: - if what in ("int", "long"): - intlong.append(what) - elif what in ("float", "complex"): - floatcomplex.append(what) - else: - bad.append(what) if bad: print "*** Bad warning for line %d:" % row, bad --- 227,230 ---- From jackjansen@users.sourceforge.net Sun Sep 2 15:48:35 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Sun, 02 Sep 2001 07:48:35 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Distributions/(vise) Python 2.2.vct,1.2,1.3 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Distributions/(vise) In directory usw-pr-cvs1:/tmp/cvs-serv23571/Python/Mac/Distributions/(vise) Modified Files: Python 2.2.vct Log Message: Added the last few missing files, and put everything in the right packages. Tested, too:-) Index: Python 2.2.vct =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Distributions/(vise)/Python 2.2.vct,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 Binary files /tmp/cvsz9C4Ci and /tmp/cvsGxTtBx differ From tim_one@users.sourceforge.net Sun Sep 2 19:35:56 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Sun, 02 Sep 2001 11:35:56 -0700 Subject: [Python-checkins] CVS: python/dist/src/Objects dictobject.c,2.111,2.112 Message-ID: Update of /cvsroot/python/python/dist/src/Objects In directory usw-pr-cvs1:/tmp/cvs-serv6503 Modified Files: dictobject.c Log Message: Repair typo in comment. Index: dictobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/dictobject.c,v retrieving revision 2.111 retrieving revision 2.112 diff -C2 -d -r2.111 -r2.112 *** dictobject.c 2001/09/02 08:22:48 2.111 --- dictobject.c 2001/09/02 18:35:54 2.112 *************** *** 1704,1708 **** if (arg != NULL) { if (PyDict_Merge(self, arg, 1) < 0) { ! /* An error like "AttibuteError: keys" is too cryptic in this context. */ if (PyErr_ExceptionMatches(PyExc_AttributeError)) { --- 1704,1708 ---- if (arg != NULL) { if (PyDict_Merge(self, arg, 1) < 0) { ! /* An error like "AttributeError: keys" is too cryptic in this context. */ if (PyErr_ExceptionMatches(PyExc_AttributeError)) { From tim_one@users.sourceforge.net Mon Sep 3 00:01:45 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Sun, 02 Sep 2001 16:01:45 -0700 Subject: [Python-checkins] CVS: python/dist/src/Misc NEWS,1.222,1.223 Message-ID: Update of /cvsroot/python/python/dist/src/Misc In directory usw-pr-cvs1:/tmp/cvs-serv28456/python/Misc Modified Files: NEWS Log Message: Clarify the Borland situation, based on email from Stephen. Index: NEWS =================================================================== RCS file: /cvsroot/python/python/dist/src/Misc/NEWS,v retrieving revision 1.222 retrieving revision 1.223 diff -C2 -d -r1.222 -r1.223 *** NEWS 2001/09/02 13:44:35 1.222 --- NEWS 2001/09/02 23:01:43 1.223 *************** *** 96,102 **** New platforms ! - Patches from Stephen Hansen for the Borland C compiler (under Windows) ! are reported to yield a clean compile, but a Python that doesn't yet ! run correctly. Volunteers? Tests --- 96,104 ---- New platforms ! - Stephen Hansen contributed patches sufficient to get a clean compile ! under Borland C (Windows), but he reports problems running it and ran ! out of time to complete the port. Volunteers? Expect a MemoryError ! when importing the types module; this is probably shallow, and ! causing later failures too. Tests From tim_one@users.sourceforge.net Mon Sep 3 02:24:32 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Sun, 02 Sep 2001 18:24:32 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/test test_descrtut.py,NONE,1.1 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/test In directory usw-pr-cvs1:/tmp/cvs-serv2174/python/Lib/test Added Files: test_descrtut.py Log Message: Made a doctest out of the examples in Guido's type/class tutorial. --- NEW FILE: test_descrtut.py --- # This contains most of the executable examples from Guido's descr # tutorial, once at # # http://www.python.org/2.2/descrintro.html # # A few examples left implicit in the writeup were fleshed out, a few were # skipped due to lack of interest (e.g., faking super() by hand isn't # of much interest anymore), and a few were fiddled to make the output # deterministic. from test_support import sortdict import pprint class defaultdict(dictionary): def __init__(self, default=None): dictionary.__init__(self) self.default = default def __getitem__(self, key): try: return dictionary.__getitem__(self, key) except KeyError: return self.default def get(self, key, *args): if not args: args = (self.default,) return dictionary.get(self, key, *args) def merge(self, other): for key in other: if key not in self: self[key] = other[key] test_1 = """ Here's the new type at work: >>> print defaultdict # show our type >>> print type(defaultdict) # its metatype >>> a = defaultdict(default=0.0) # create an instance >>> print a # show the instance {} >>> print type(a) # show its type >>> print a.__class__ # show its class >>> print type(a) is a.__class__ # its type is its class 1 >>> a[1] = 3.25 # modify the instance >>> print a # show the new value {1: 3.25} >>> print a[1] # show the new item 3.25 >>> print a[0] # a non-existant item 0.0 >>> a.merge({1:100, 2:200}) # use a dictionary method >>> print sortdict(a) # show the result {1: 3.25, 2: 200} >>> We can also use the new type in contexts where classic only allows "real" dictionaries, such as the locals/globals dictionaries for the exec statement or the built-in function eval(): >>> def sorted(seq): ... seq.sort() ... return seq >>> print sorted(a.keys()) [1, 2] >>> exec "x = 3; print x" in a 3 >>> print sorted(a.keys()) [1, 2, '__builtins__', 'x'] >>> print a['x'] 3 >>> However, our __getitem__() method is not used for variable access by the interpreter: >>> exec "print foo" in a Traceback (most recent call last): File "", line 1, in ? File "", line 1, in ? NameError: name 'foo' is not defined >>> Now I'll show that defaultdict instances have dynamic instance variables, just like classic classes: >>> a.default = -1 >>> print a["noway"] -1 >>> a.default = -1000 >>> print a["noway"] -1000 >>> print dir(a) ['default'] >>> a.x1 = 100 >>> a.x2 = 200 >>> print a.x1 100 >>> print dir(a) ['default', 'x1', 'x2'] >>> print a.__dict__ {'default': -1000, 'x2': 200, 'x1': 100} >>> """ class defaultdict2(dictionary): __slots__ = ['default'] def __init__(self, default=None): dictionary.__init__(self) self.default = default def __getitem__(self, key): try: return dictionary.__getitem__(self, key) except KeyError: return self.default def get(self, key, *args): if not args: args = (self.default,) return dictionary.get(self, key, *args) def merge(self, other): for key in other: if key not in self: self[key] = other[key] test_2 = """ The __slots__ declaration takes a list of instance variables, and reserves space for exactly these in the instance. When __slots__ is used, other instance variables cannot be assigned to: >>> a = defaultdict2(default=0.0) >>> a[1] 0.0 >>> a.default = -1 >>> a[1] -1 >>> a.x1 = 1 Traceback (most recent call last): File "", line 1, in ? AttributeError: 'defaultdict2' object has no attribute 'x1' >>> """ test_3 = """ Introspecting instances of built-in types For instance of built-in types, x.__class__ is now the same as type(x): >>> type([]) >>> [].__class__ >>> list >>> isinstance([], list) 1 >>> isinstance([], dictionary) 0 >>> isinstance([], object) 1 >>> Under the new proposal, the __methods__ attribute no longer exists: >>> [].__methods__ Traceback (most recent call last): File "", line 1, in ? AttributeError: 'list' object has no attribute '__methods__' >>> Instead, you can get the same information from the list type: >>> pprint.pprint(dir(list)) # like list.__dict__.keys(), but sorted ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__eq__', '__ge__', '__getattr__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__repr__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__str__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] The new introspection API gives more information than the old one: in addition to the regular methods, it also shows the methods that are normally invoked through special notations, e.g. __iadd__ (+=), __len__ (len), __ne__ (!=). You can invoke any method from this list directly: >>> a = ['tic', 'tac'] >>> list.__len__(a) # same as len(a) 2 >>> a.__len__() # ditto 2 >>> list.append(a, 'toe') # same as a.append('toe') >>> a ['tic', 'tac', 'toe'] >>> This is just like it is for user-defined classes. """ test_4 = """ Static methods and class methods The new introspection API makes it possible to add static methods and class methods. Static methods are easy to describe: they behave pretty much like static methods in C++ or Java. Here's an example: >>> class C: ... ... def foo(x, y): ... print "staticmethod", x, y ... foo = staticmethod(foo) >>> C.foo(1, 2) staticmethod 1 2 >>> c = C() >>> c.foo(1, 2) staticmethod 1 2 Class methods use a similar pattern to declare methods that receive an implicit first argument that is the *class* for which they are invoked. >>> class C: ... def foo(cls, y): ... print "classmethod", cls, y ... foo = classmethod(foo) >>> C.foo(1) classmethod test_descrtut.C 1 >>> c = C() >>> c.foo(1) classmethod test_descrtut.C 1 >>> class D(C): ... pass >>> D.foo(1) classmethod test_descrtut.D 1 >>> d = D() >>> d.foo(1) classmethod test_descrtut.D 1 This prints "classmethod __main__.D 1" both times; in other words, the class passed as the first argument of foo() is the class involved in the call, not the class involved in the definition of foo(). But notice this: >>> class E(C): ... def foo(cls, y): # override C.foo ... print "E.foo() called" ... C.foo(y) ... foo = classmethod(foo) >>> E.foo(1) E.foo() called classmethod test_descrtut.C 1 >>> e = E() >>> e.foo(1) E.foo() called classmethod test_descrtut.C 1 In this example, the call to C.foo() from E.foo() will see class C as its first argument, not class E. This is to be expected, since the call specifies the class C. But it stresses the difference between these class methods and methods defined in metaclasses (where an upcall to a metamethod would pass the target class as an explicit first argument). """ test_5 = """ Attributes defined by get/set methods >>> class getset(object): ... ... def __init__(self, get, set=None): ... self.__get = get ... self.__set = set ... ... def __get__(self, inst, type=None): ... return self.__get(inst) ... ... def __set__(self, inst, value): ... if self.__set is None: ... raise AttributeError, "this attribute is read-only" ... return self.__set(inst, value) Now let's define a class with an attribute x defined by a pair of methods, getx() and and setx(): >>> class C(object): ... ... def __init__(self): ... self.__x = 0 ... ... def getx(self): ... return self.__x ... ... def setx(self, x): ... if x < 0: x = 0 ... self.__x = x ... ... x = getset(getx, setx) Here's a small demonstration: >>> a = C() >>> a.x = 10 >>> print a.x 10 >>> a.x = -10 >>> print a.x 0 >>> Hmm -- getset is builtin now, so let's try it that way too. >>> del getset # unmask the builtin >>> getset >>> class C(object): ... def __init__(self): ... self.__x = 0 ... def getx(self): ... return self.__x ... def setx(self, x): ... if x < 0: x = 0 ... self.__x = x ... x = getset(getx, setx) >>> a = C() >>> a.x = 10 >>> print a.x 10 >>> a.x = -10 >>> print a.x 0 >>> """ test_6 = """ Method resolution order This example is implicit in the writeup. >>> class A: # classic class ... def save(self): ... print "called A.save()" >>> class B(A): ... pass >>> class C(A): ... def save(self): ... print "called C.save()" >>> class D(B, C): ... pass >>> D().save() called A.save() >>> class A(object): # new class ... def save(self): ... print "called A.save()" >>> class B(A): ... pass >>> class C(A): ... def save(self): ... print "called C.save()" >>> class D(B, C): ... pass >>> D().save() called C.save() """ class A(object): def m(self): return "A" class B(A): def m(self): return "B" + super(B, self).m() class C(A): def m(self): return "C" + super(C, self).m() class D(C, B): def m(self): return "D" + super(D, self).m() test_7 = """ Cooperative methods and "super" >>> print D().m() # "DCBA" DCBA """ test_8 = """ Backwards incompatibilities >>> class A: ... def foo(self): ... print "called A.foo()" >>> class B(A): ... pass >>> class C(A): ... def foo(self): ... B.foo(self) >>> C().foo() Traceback (most recent call last): ... TypeError: unbound method foo() must be called with B instance as first argument (got C instance instead) >>> class C(A): ... def foo(self): ... A.foo(self) >>> C().foo() called A.foo() """ __test__ = {"tut1": test_1, "tut2": test_2, "tut3": test_3, "tut4": test_4, "tut5": test_5, "tut6": test_6, "tut7": test_7, "tut8": test_8} # Magic test name that regrtest.py invokes *after* importing this module. # This worms around a bootstrap problem. # Note that doctest and regrtest both look in sys.argv for a "-v" argument, # so this works as expected in both ways of running regrtest. def test_main(): import doctest, test_descrtut if 0: # change to 1 to run forever (to check for leaks) while 1: doctest.master = None doctest.testmod(test_descrtut) print ".", else: doctest.testmod(test_descrtut) # This part isn't needed for regrtest, but for running the test directly. if __name__ == "__main__": test_main() From tim_one@users.sourceforge.net Mon Sep 3 06:47:40 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Sun, 02 Sep 2001 22:47:40 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/test test_descr.py,1.29,1.30 test_descrtut.py,1.1,1.2 test_generators.py,1.27,1.28 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/test In directory usw-pr-cvs1:/tmp/cvs-serv12547/python/Lib/test Modified Files: test_descr.py test_descrtut.py test_generators.py Log Message: Make dir() wordier (see the new docstring). The new behavior is a mixed bag. It's clearly wrong for classic classes, at heart because a classic class doesn't have a __class__ attribute, and I'm unclear on whether that's feature or bug. I'll repair this once I find out (in the meantime, dir() applied to classic classes won't find the base classes, while dir() applied to a classic-class instance *will* find the base classes but not *their* base classes). Please give the new dir() a try and see whether you love it or hate it. The new dir([]) behavior is something I could come to love. Here's something to hate: >>> class C: ... pass ... >>> c = C() >>> dir(c) ['__doc__', '__module__'] >>> The idea that an instance has a __doc__ attribute is jarring (of course it's really c.__class__.__doc__ == C.__doc__; likewise for __module__). OTOH, the code already has too many special cases, and dir(x) doesn't have a compelling or clear purpose when x isn't a module. Index: test_descr.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_descr.py,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** test_descr.py 2001/09/02 08:22:48 1.29 --- test_descr.py 2001/09/03 05:47:38 1.30 *************** *** 173,176 **** --- 173,224 ---- verify(d == Mapping.dict) + def test_dir(): + if verbose: + print "Testing dir() ..." + junk = 12 + verify(dir() == ['junk']) + del junk + + # Just make sure these don't blow up! + for arg in 2, 2L, 2j, 2e0, [2], "2", u"2", (2,), {2:2}, type, test_dir: + dir(arg) + + # Check some details here because classic classes aren't working + # reasonably, and I want this to fail (eventually). + class C: + Cdata = 1 + def Cmethod(self): pass + + cstuff = ['Cdata', 'Cmethod', '__doc__', '__module__'] + verify(dir(C) == cstuff) + + c = C() # c.__doc__ is an odd thing to see here; ditto c.__module__. + verify(dir(c) == cstuff) + + c.cdata = 2 + c.cmethod = lambda self: 0 + verify(dir(c) == cstuff + ['cdata', 'cmethod']) + + class A(C): + Adata = 1 + def Amethod(self): pass + astuff = ['Adata', 'Amethod', '__doc__', '__module__'] + # This isn't finding C's stuff at all. + verify(dir(A) == astuff) + # But this is! It's because a.__class__ exists but A.__class__ doesn't. + a = A() + verify(dir(a) == astuff[:2] + cstuff) + + # The story for new-style classes is quite different. + class C(object): + Cdata = 1 + def Cmethod(self): pass + class A(C): + Adata = 1 + def Amethod(self): pass + d = dir(A) + for expected in 'Cdata', 'Cmethod', 'Adata', 'Amethod': + verify(expected in d) + binops = { 'add': '+', *************** *** 1350,1353 **** --- 1398,1402 ---- dicts() dict_constructor() + test_dir() ints() longs() Index: test_descrtut.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_descrtut.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** test_descrtut.py 2001/09/03 01:24:30 1.1 --- test_descrtut.py 2001/09/03 05:47:38 1.2 *************** *** 98,109 **** >>> print a["noway"] -1000 ! >>> print dir(a) ! ['default'] >>> a.x1 = 100 >>> a.x2 = 200 >>> print a.x1 100 ! >>> print dir(a) ! ['default', 'x1', 'x2'] >>> print a.__dict__ {'default': -1000, 'x2': 200, 'x1': 100} --- 98,110 ---- >>> print a["noway"] -1000 ! >>> 'default' in dir(a) ! 1 >>> a.x1 = 100 >>> a.x2 = 200 >>> print a.x1 100 ! >>> d = dir(a) ! >>> 'default' in d and 'x1' in d and 'x2' in d ! 1 >>> print a.__dict__ {'default': -1000, 'x2': 200, 'x1': 100} Index: test_generators.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_generators.py,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** test_generators.py 2001/08/16 08:30:10 1.27 --- test_generators.py 2001/09/03 05:47:38 1.28 *************** *** 384,395 **** >>> type(i) ! ! XXX dir(object) *generally* doesn't return useful stuff in descr-branch. ! >>> dir(i) ! [] ! ! Was hoping to see this instead: ['gi_frame', 'gi_running', 'next'] - >>> print i.next.__doc__ x.next() -> the next value, or raise StopIteration --- 384,389 ---- >>> type(i) ! >>> [s for s in dir(i) if not s.startswith('_')] ['gi_frame', 'gi_running', 'next'] >>> print i.next.__doc__ x.next() -> the next value, or raise StopIteration From tim_one@users.sourceforge.net Mon Sep 3 06:47:40 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Sun, 02 Sep 2001 22:47:40 -0700 Subject: [Python-checkins] CVS: python/dist/src/Misc NEWS,1.223,1.224 Message-ID: Update of /cvsroot/python/python/dist/src/Misc In directory usw-pr-cvs1:/tmp/cvs-serv12547/python/Misc Modified Files: NEWS Log Message: Make dir() wordier (see the new docstring). The new behavior is a mixed bag. It's clearly wrong for classic classes, at heart because a classic class doesn't have a __class__ attribute, and I'm unclear on whether that's feature or bug. I'll repair this once I find out (in the meantime, dir() applied to classic classes won't find the base classes, while dir() applied to a classic-class instance *will* find the base classes but not *their* base classes). Please give the new dir() a try and see whether you love it or hate it. The new dir([]) behavior is something I could come to love. Here's something to hate: >>> class C: ... pass ... >>> c = C() >>> dir(c) ['__doc__', '__module__'] >>> The idea that an instance has a __doc__ attribute is jarring (of course it's really c.__class__.__doc__ == C.__doc__; likewise for __module__). OTOH, the code already has too many special cases, and dir(x) doesn't have a compelling or clear purpose when x isn't a module. Index: NEWS =================================================================== RCS file: /cvsroot/python/python/dist/src/Misc/NEWS,v retrieving revision 1.223 retrieving revision 1.224 diff -C2 -d -r1.223 -r1.224 *** NEWS 2001/09/02 23:01:43 1.223 --- NEWS 2001/09/03 05:47:38 1.224 *************** *** 4,7 **** --- 4,24 ---- Core + - The builtin dir() now returns more information, and sometimes much + more, generally naming all attributes of an object, and all attributes + reachable from the object via its class, and from its class's base + classes, and so on from them too. Example: in 2.2a2, dir([]) returned + an empty list. In 2.2a3, + + >>> dir([]) + ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', + '__eq__', '__ge__', '__getattr__', '__getitem__', '__getslice__', + '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__le__', + '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__repr__', + '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__str__', + 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', + 'reverse', 'sort'] + + dir(module) continues to return only the module's attributes, though. + - Overflowing operations on plain ints now return a long int rather than raising OverflowError. This is a partial implementation of PEP From tim_one@users.sourceforge.net Mon Sep 3 06:47:41 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Sun, 02 Sep 2001 22:47:41 -0700 Subject: [Python-checkins] CVS: python/dist/src/Python bltinmodule.c,2.231,2.232 Message-ID: Update of /cvsroot/python/python/dist/src/Python In directory usw-pr-cvs1:/tmp/cvs-serv12547/python/Python Modified Files: bltinmodule.c Log Message: Make dir() wordier (see the new docstring). The new behavior is a mixed bag. It's clearly wrong for classic classes, at heart because a classic class doesn't have a __class__ attribute, and I'm unclear on whether that's feature or bug. I'll repair this once I find out (in the meantime, dir() applied to classic classes won't find the base classes, while dir() applied to a classic-class instance *will* find the base classes but not *their* base classes). Please give the new dir() a try and see whether you love it or hate it. The new dir([]) behavior is something I could come to love. Here's something to hate: >>> class C: ... pass ... >>> c = C() >>> dir(c) ['__doc__', '__module__'] >>> The idea that an instance has a __doc__ attribute is jarring (of course it's really c.__class__.__doc__ == C.__doc__; likewise for __module__). OTOH, the code already has too many special cases, and dir(x) doesn't have a compelling or clear purpose when x isn't a module. Index: bltinmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Python/bltinmodule.c,v retrieving revision 2.231 retrieving revision 2.232 diff -C2 -d -r2.231 -r2.232 *** bltinmodule.c 2001/08/24 16:52:18 2.231 --- bltinmodule.c 2001/09/03 05:47:38 2.232 *************** *** 427,504 **** in addition to any features explicitly specified."; static PyObject * builtin_dir(PyObject *self, PyObject *args) { ! static char *attrlist[] = {"__members__", "__methods__", NULL}; ! PyObject *v = NULL, *l = NULL, *m = NULL; ! PyObject *d, *x; ! int i; ! char **s; ! if (!PyArg_ParseTuple(args, "|O:dir", &v)) return NULL; ! if (v == NULL) { ! x = PyEval_GetLocals(); ! if (x == NULL) goto error; ! l = PyMapping_Keys(x); ! if (l == NULL) goto error; } else { ! d = PyObject_GetAttrString(v, "__dict__"); ! if (d == NULL) PyErr_Clear(); ! else { ! l = PyMapping_Keys(d); ! if (l == NULL) ! PyErr_Clear(); ! Py_DECREF(d); } ! if (l == NULL) { ! l = PyList_New(0); ! if (l == NULL) goto error; } ! for (s = attrlist; *s != NULL; s++) { ! m = PyObject_GetAttrString(v, *s); ! if (m == NULL) { ! PyErr_Clear(); ! continue; ! } ! for (i = 0; ; i++) { ! x = PySequence_GetItem(m, i); ! if (x == NULL) { ! PyErr_Clear(); ! break; ! } ! if (PyList_Append(l, x) != 0) { ! Py_DECREF(x); ! Py_DECREF(m); ! goto error; ! } ! Py_DECREF(x); ! } ! Py_DECREF(m); } } ! if (PyList_Sort(l) != 0) goto error; ! return l; error: ! Py_XDECREF(l); ! return NULL; } static char dir_doc[] = ! "dir([object]) -> list of strings\n\ ! \n\ ! Return an alphabetized list of names comprising (some of) the attributes\n\ ! of the given object. Without an argument, the names in the current scope\n\ ! are listed. With an instance argument, only the instance attributes are\n\ ! returned. With a class argument, attributes of the base class are not\n\ ! returned. For other types or arguments, this may list members or methods."; ! static PyObject * --- 427,585 ---- in addition to any features explicitly specified."; + /* Merge the __dict__ of aclass into dict, and recursively also all + the __dict__s of aclass's base classes. The order of merging isn't + defined, as it's expected that only the final set of dict keys is + interesting. + Return 0 on success, -1 on error. + */ + + static int + merge_class_dict(PyObject* dict, PyObject* aclass) + { + PyObject *classdict; + PyObject *bases; + + assert(PyDict_Check(dict)); + /* XXX Class objects fail the PyType_Check check. Don't + XXX know of others. */ + /* assert(PyType_Check(aclass)); */ + assert(aclass); + + /* Merge in the type's dict (if any). */ + classdict = PyObject_GetAttrString(aclass, "__dict__"); + if (classdict == NULL) + PyErr_Clear(); + else { + int status = PyDict_Update(dict, classdict); + Py_DECREF(classdict); + if (status < 0) + return -1; + } + + /* Recursively merge in the base types' (if any) dicts. */ + bases = PyObject_GetAttrString(aclass, "__bases__"); + if (bases != NULL) { + int i, n; + assert(PyTuple_Check(bases)); + n = PyTuple_GET_SIZE(bases); + for (i = 0; i < n; i++) { + PyObject *base = PyTuple_GET_ITEM(bases, i); + if (merge_class_dict(dict, base) < 0) { + Py_DECREF(bases); + return -1; + } + } + Py_DECREF(bases); + } + return 0; + } static PyObject * builtin_dir(PyObject *self, PyObject *args) { ! PyObject *arg = NULL; ! /* Set exactly one of these non-NULL before the end. */ ! PyObject *result = NULL; /* result list */ ! PyObject *masterdict = NULL; /* result is masterdict.keys() */ ! if (!PyArg_ParseTuple(args, "|O:dir", &arg)) return NULL; ! ! /* If no arg, return the locals. */ ! if (arg == NULL) { ! PyObject *locals = PyEval_GetLocals(); ! if (locals == NULL) goto error; ! result = PyMapping_Keys(locals); ! if (result == NULL) goto error; } + + /* Elif this is some form of module, we only want its dict. */ + else if (PyObject_TypeCheck(arg, &PyModule_Type)) { + masterdict = PyObject_GetAttrString(arg, "__dict__"); + if (masterdict == NULL) + goto error; + } + + /* Elif some form of type, recurse. */ + else if (PyType_Check(arg)) { + masterdict = PyDict_New(); + if (masterdict == NULL) + goto error; + if (merge_class_dict(masterdict, arg) < 0) + goto error; + } + + /* Else look at its dict, and the attrs reachable from its class. */ else { ! PyObject *itsclass; ! /* Create a dict to start with. */ ! masterdict = PyObject_GetAttrString(arg, "__dict__"); ! if (masterdict == NULL) { PyErr_Clear(); ! masterdict = PyDict_New(); ! if (masterdict == NULL) ! goto error; } ! else { ! /* The object may have returned a reference to its ! dict, so copy it to avoid mutating it. */ ! PyObject *temp = PyDict_Copy(masterdict); ! if (temp == NULL) goto error; + Py_DECREF(masterdict); + masterdict = temp; } ! /* Merge in attrs reachable from its class. */ ! itsclass = PyObject_GetAttrString(arg, "__class__"); ! /* XXX Sometimes this is null! Like after "class C: pass", ! C.__class__ raises AttributeError. Don't know of other ! cases. */ ! if (itsclass == NULL) ! PyErr_Clear(); ! else { ! int status = merge_class_dict(masterdict, itsclass); ! Py_DECREF(itsclass); ! if (status < 0) ! goto error; } } ! ! assert((result == NULL) ^ (masterdict == NULL)); ! if (masterdict != NULL) { ! /* The result comes from its keys. */ ! assert(result == NULL); ! result = PyMapping_Keys(masterdict); ! if (result == NULL) ! goto error; ! } ! ! assert(result); ! if (PyList_Sort(result) != 0) goto error; ! else ! goto normal_return; ! error: ! Py_XDECREF(result); ! result = NULL; ! /* fall through */ ! normal_return: ! Py_XDECREF(masterdict); ! return result; } static char dir_doc[] = ! "dir([object]) -> list of strings\n" ! "\n" ! "Return an alphabetized list of names comprising (some of) the attributes\n" ! "of the given object, and of attributes reachable from it:\n" ! "\n" ! "No argument: the names in the current scope.\n" ! "Module object: the module attributes.\n" ! "Type object: its attributes, and recursively the attributes of its bases.\n" ! "Otherwise: its attributes, its class's attributes, and recursively the\n" ! " attributes of its class's base classes."; static PyObject * From tim_one@users.sourceforge.net Mon Sep 3 09:35:42 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Mon, 03 Sep 2001 01:35:42 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/test/output test_pow,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/test/output In directory usw-pr-cvs1:/tmp/cvs-serv12739/python/Lib/test/output Modified Files: test_pow Log Message: New restriction on pow(x, y, z): If z is not None, x and y must be of integer types, and y must be >= 0. See discussion at http://sf.net/tracker/index.php?func=detail&aid=457066&group_id=5470&atid=105470 Index: test_pow =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/output/test_pow,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** test_pow 1996/12/20 03:14:42 1.1 --- test_pow 2001/09/03 08:35:40 1.2 *************** *** 23,29 **** -7L -7L - 3.0 3.0 - -5.0 -5.0 - -1.0 -1.0 - -7.0 -7.0 --- 23,25 ---- From tim_one@users.sourceforge.net Mon Sep 3 09:35:43 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Mon, 03 Sep 2001 01:35:43 -0700 Subject: [Python-checkins] CVS: python/dist/src/Misc NEWS,1.224,1.225 Message-ID: Update of /cvsroot/python/python/dist/src/Misc In directory usw-pr-cvs1:/tmp/cvs-serv12739/python/Misc Modified Files: NEWS Log Message: New restriction on pow(x, y, z): If z is not None, x and y must be of integer types, and y must be >= 0. See discussion at http://sf.net/tracker/index.php?func=detail&aid=457066&group_id=5470&atid=105470 Index: NEWS =================================================================== RCS file: /cvsroot/python/python/dist/src/Misc/NEWS,v retrieving revision 1.224 retrieving revision 1.225 diff -C2 -d -r1.224 -r1.225 *** NEWS 2001/09/03 05:47:38 1.224 --- NEWS 2001/09/03 08:35:40 1.225 *************** *** 4,7 **** --- 4,13 ---- Core + - The 3-argument builtin pow() no longer allows a third non-None argument + if either of the first two arguments is a float, or if both are of + integer types and the second argument is negative (in which latter case + the arguments are converted to float, so this is really the same + restriction). + - The builtin dir() now returns more information, and sometimes much more, generally naming all attributes of an object, and all attributes From tim_one@users.sourceforge.net Mon Sep 3 09:35:42 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Mon, 03 Sep 2001 01:35:42 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/test test_b2.py,1.27,1.28 test_long.py,1.9,1.10 test_pow.py,1.10,1.11 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/test In directory usw-pr-cvs1:/tmp/cvs-serv12739/python/Lib/test Modified Files: test_b2.py test_long.py test_pow.py Log Message: New restriction on pow(x, y, z): If z is not None, x and y must be of integer types, and y must be >= 0. See discussion at http://sf.net/tracker/index.php?func=detail&aid=457066&group_id=5470&atid=105470 Index: test_b2.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_b2.py,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** test_b2.py 2001/07/30 22:49:11 1.27 --- test_b2.py 2001/09/03 08:35:40 1.28 *************** *** 83,97 **** if fcmp(pow(2.,30), 1024.*1024.*1024.): raise TestFailed, 'pow(2.,30)' # ! # XXX These don't work -- negative float to the float power... ! #if fcmp(pow(-2.,0), 1.): raise TestFailed, 'pow(-2.,0)' ! #if fcmp(pow(-2.,1), -2.): raise TestFailed, 'pow(-2.,1)' ! #if fcmp(pow(-2.,2), 4.): raise TestFailed, 'pow(-2.,2)' ! #if fcmp(pow(-2.,3), -8.): raise TestFailed, 'pow(-2.,3)' ! # for x in 2, 2L, 2.0: for y in 10, 10L, 10.0: for z in 1000, 1000L, 1000.0: ! if fcmp(pow(x, y, z), 24.0): ! raise TestFailed, 'pow(%s, %s, %s)' % (x, y, z) print 'range' --- 83,108 ---- if fcmp(pow(2.,30), 1024.*1024.*1024.): raise TestFailed, 'pow(2.,30)' # ! if fcmp(pow(-2.,0), 1.): raise TestFailed, 'pow(-2.,0)' ! if fcmp(pow(-2.,1), -2.): raise TestFailed, 'pow(-2.,1)' ! if fcmp(pow(-2.,2), 4.): raise TestFailed, 'pow(-2.,2)' ! if fcmp(pow(-2.,3), -8.): raise TestFailed, 'pow(-2.,3)' ! ! from types import FloatType for x in 2, 2L, 2.0: for y in 10, 10L, 10.0: for z in 1000, 1000L, 1000.0: ! if isinstance(x, FloatType) or \ ! isinstance(y, FloatType) or \ ! isinstance(z, FloatType): ! try: ! pow(x, y, z) ! except TypeError: ! pass ! else: ! raise TestFailed("3-arg float pow() should have " ! "raised TypeError %r" % (x, y, z)) ! else: ! if fcmp(pow(x, y, z), 24.0): ! raise TestFailed, 'pow(%s, %s, %s)' % (x, y, z) print 'range' Index: test_long.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_long.py,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** test_long.py 2001/08/23 23:02:57 1.9 --- test_long.py 2001/09/03 08:35:40 1.10 *************** *** 315,322 **** for z in special: ! if z != 0: ! expected = pow(longx, longy, long(z)) ! got = pow(x, y, z) ! checkit('pow', x, y, '%', z) # ---------------------------------------------------------------- do it --- 315,331 ---- for z in special: ! if z != 0 : ! if y >= 0: ! expected = pow(longx, longy, long(z)) ! got = pow(x, y, z) ! checkit('pow', x, y, '%', z) ! else: ! try: ! pow(longx, longy, long(z)) ! except TypeError: ! pass ! else: ! raise TestFailed("pow%r should have raised " ! "TypeError" % ((longx, longy, long(z)))) # ---------------------------------------------------------------- do it Index: test_pow.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_pow.py,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** test_pow.py 2001/08/30 19:15:20 1.10 --- test_pow.py 2001/09/03 08:35:40 1.11 *************** *** 65,68 **** --- 65,77 ---- for k in range(kl, kh+1): if k != 0: + if type == float or j < 0: + try: + pow(type(i),j,k) + except TypeError: + pass + else: + raise TestFailed("expected TypeError from " + "pow%r" % ((type(i), j, k))) + continue if compare(pow(type(i),j,k), pow(type(i),j)% type(k)): raise ValueError, "pow(" +str(i)+ "," +str(j)+ \ *************** *** 97,104 **** print - print pow(3.0,3.0) % 8, pow(3.0,3.0,8) - print pow(3.0,3.0) % -8, pow(3.0,3.0,-8) - print pow(3.0,2) % -2, pow(3.0,2,-2) - print pow(5.0,2) % -8, pow(5.0,2,-8) print --- 106,109 ---- *************** *** 113,119 **** o = pow(long(i),j) % k n = pow(long(i),j,k) - if o != n: print 'Long mismatch:', i,j,k - if i >= 0 and k != 0: - o = pow(float(i),j) % k - n = pow(float(i),j,k) - if o != n: print 'Float mismatch:', i,j,k --- 118,119 ---- From tim_one@users.sourceforge.net Mon Sep 3 09:35:42 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Mon, 03 Sep 2001 01:35:42 -0700 Subject: [Python-checkins] CVS: python/dist/src/Doc/lib libfuncs.tex,1.82,1.83 Message-ID: Update of /cvsroot/python/python/dist/src/Doc/lib In directory usw-pr-cvs1:/tmp/cvs-serv12739/python/Doc/lib Modified Files: libfuncs.tex Log Message: New restriction on pow(x, y, z): If z is not None, x and y must be of integer types, and y must be >= 0. See discussion at http://sf.net/tracker/index.php?func=detail&aid=457066&group_id=5470&atid=105470 Index: libfuncs.tex =================================================================== RCS file: /cvsroot/python/python/dist/src/Doc/lib/libfuncs.tex,v retrieving revision 1.82 retrieving revision 1.83 diff -C2 -d -r1.82 -r1.83 *** libfuncs.tex 2001/08/27 20:02:16 1.82 --- libfuncs.tex 2001/09/03 08:35:40 1.83 *************** *** 119,123 **** \end{funcdesc} ! \begin{funcdesc}{compile}{string, filename, kind\optional{, flags\optional{, dont_inherit}}} Compile the \var{string} into a code object. Code objects can be --- 119,123 ---- \end{funcdesc} ! \begin{funcdesc}{compile}{string, filename, kind\optional{, flags\optional{, dont_inherit}}} Compile the \var{string} into a code object. Code objects can be *************** *** 409,413 **** Return a dictionary representing the current local symbol table. \strong{Warning:} The contents of this dictionary should not be ! modified; changes may not affect the values of local variables used by the interpreter. \end{funcdesc} --- 409,413 ---- Return a dictionary representing the current local symbol table. \strong{Warning:} The contents of this dictionary should not be ! modified; changes may not affect the values of local variables used by the interpreter. \end{funcdesc} *************** *** 479,483 **** raised. ! If \var{mode} is omitted, it defaults to \code{'r'}. When opening a binary file, you should append \code{'b'} to the \var{mode} value for improved portability. (It's useful even on systems which don't --- 479,483 ---- raised. ! If \var{mode} is omitted, it defaults to \code{'r'}. When opening a binary file, you should append \code{'b'} to the \var{mode} value for improved portability. (It's useful even on systems which don't *************** *** 520,525 **** delivered. For example, \code{10**2} returns \code{100}, but \code{10**-2} returns \code{0.01}. (This last feature was added in ! Python 2.2. In Python 2.1 and before, a negative second argument ! would raise an exception.) \end{funcdesc} --- 520,531 ---- delivered. For example, \code{10**2} returns \code{100}, but \code{10**-2} returns \code{0.01}. (This last feature was added in ! Python 2.2. In Python 2.1 and before, if both arguments were of integer ! types and the second argument was negative, an exception was raised.) ! If the second argument is negative, the third argument must be omitted. ! If \var{z} is present, \var{x} and \var{y} must be of integer types, ! and \var{y} must be non-negative. (This restriction was added in ! Python 2.2. In Python 2.1 and before, floating 3-argument \code{pow()} ! returned platform-dependent results depending on floating-point ! rounding accidents.) \end{funcdesc} *************** *** 732,736 **** corresponding symbol table are undefined.\footnote{ In the current implementation, local variable bindings cannot ! normally be affected this way, but variables retrieved from other scopes (such as modules) can be. This may change.} \end{funcdesc} --- 738,742 ---- corresponding symbol table are undefined.\footnote{ In the current implementation, local variable bindings cannot ! normally be affected this way, but variables retrieved from other scopes (such as modules) can be. This may change.} \end{funcdesc} From tim_one@users.sourceforge.net Mon Sep 3 09:35:43 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Mon, 03 Sep 2001 01:35:43 -0700 Subject: [Python-checkins] CVS: python/dist/src/Objects floatobject.c,2.90,2.91 intobject.c,2.68,2.69 longobject.c,1.95,1.96 Message-ID: Update of /cvsroot/python/python/dist/src/Objects In directory usw-pr-cvs1:/tmp/cvs-serv12739/python/Objects Modified Files: floatobject.c intobject.c longobject.c Log Message: New restriction on pow(x, y, z): If z is not None, x and y must be of integer types, and y must be >= 0. See discussion at http://sf.net/tracker/index.php?func=detail&aid=457066&group_id=5470&atid=105470 Index: floatobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/floatobject.c,v retrieving revision 2.90 retrieving revision 2.91 diff -C2 -d -r2.90 -r2.91 *** floatobject.c 2001/08/31 17:40:15 2.90 --- floatobject.c 2001/09/03 08:35:41 2.91 *************** *** 493,501 **** { double iv, iw, ix; ! /* XXX Doesn't handle overflows if z!=None yet; it may never do so :( ! * The z parameter is really only going to be useful for integers and ! * long integers. Maybe something clever with logarithms could be done. ! * [AMK] ! */ CONVERT_TO_DOUBLE(v, iv); CONVERT_TO_DOUBLE(w, iw); --- 493,503 ---- { double iv, iw, ix; ! ! if ((PyObject *)z != Py_None) { ! PyErr_SetString(PyExc_TypeError, ! "3rd argument to floating pow() must be None"); ! return NULL; ! } ! CONVERT_TO_DOUBLE(v, iv); CONVERT_TO_DOUBLE(w, iw); *************** *** 538,551 **** PyErr_SetFromErrno(PyExc_OverflowError); return NULL; - } - if ((PyObject *)z != Py_None) { - double iz; - CONVERT_TO_DOUBLE(z, iz); - PyFPE_START_PROTECT("pow", return 0) - ix = fmod(ix, iz); /* XXX To Be Rewritten */ - if (ix != 0 && ((iv < 0 && iz > 0) || (iv > 0 && iz < 0) )) { - ix += iz; - } - PyFPE_END_PROTECT(ix) } return PyFloat_FromDouble(ix); --- 540,543 ---- Index: intobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/intobject.c,v retrieving revision 2.68 retrieving revision 2.69 diff -C2 -d -r2.68 -r2.69 *** intobject.c 2001/08/31 17:40:15 2.68 --- intobject.c 2001/09/03 08:35:41 2.69 *************** *** 576,579 **** --- 576,584 ---- CONVERT_TO_LONG(w, iw); if (iw < 0) { + if ((PyObject *)z != Py_None) { + PyErr_SetString(PyExc_TypeError, "integer pow() arg " + "3 must not be specified when arg 2 is < 0"); + return NULL; + } /* Return a float. This works because we know that this calls float_pow() which converts its Index: longobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/longobject.c,v retrieving revision 1.95 retrieving revision 1.96 diff -C2 -d -r1.95 -r1.96 *** longobject.c 2001/08/31 17:40:15 1.95 --- longobject.c 2001/09/03 08:35:41 1.96 *************** *** 1599,1608 **** size_b = b->ob_size; if (size_b < 0) { - /* Return a float. This works because we know that - this calls float_pow() which converts its - arguments to double. */ Py_DECREF(a); Py_DECREF(b); Py_DECREF(c); return PyFloat_Type.tp_as_number->nb_power(v, w, x); } --- 1599,1613 ---- size_b = b->ob_size; if (size_b < 0) { Py_DECREF(a); Py_DECREF(b); Py_DECREF(c); + if (x != Py_None) { + PyErr_SetString(PyExc_TypeError, "integer pow() arg " + "3 must not be specified when arg 2 is < 0"); + return NULL; + } + /* Return a float. This works because we know that + this calls float_pow() which converts its + arguments to double. */ return PyFloat_Type.tp_as_number->nb_power(v, w, x); } From tim_one@users.sourceforge.net Mon Sep 3 09:44:04 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Mon, 03 Sep 2001 01:44:04 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/test test_pow.py,1.11,1.12 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/test In directory usw-pr-cvs1:/tmp/cvs-serv15483/python/Lib/test Modified Files: test_pow.py Log Message: Restore a line deleted by mistake. Index: test_pow.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_pow.py,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** test_pow.py 2001/09/03 08:35:40 1.11 --- test_pow.py 2001/09/03 08:44:02 1.12 *************** *** 118,119 **** --- 118,121 ---- o = pow(long(i),j) % k n = pow(long(i),j,k) + if o != n: print 'Integer mismatch:', i,j,k + From nascheme@users.sourceforge.net Mon Sep 3 16:44:50 2001 From: nascheme@users.sourceforge.net (Neil Schemenauer) Date: Mon, 03 Sep 2001 08:44:50 -0700 Subject: [Python-checkins] CVS: python/dist/src/Include objimpl.h,2.37,2.38 Message-ID: Update of /cvsroot/python/python/dist/src/Include In directory usw-pr-cvs1:/tmp/cvs-serv2183/Include Modified Files: objimpl.h Log Message: Fix the names of _PyObject_GC_TRACK and _PyObject_GC_UNTRACK when the GC is disabled. Obviously everyone enables the GC. :-) Index: objimpl.h =================================================================== RCS file: /cvsroot/python/python/dist/src/Include/objimpl.h,v retrieving revision 2.37 retrieving revision 2.38 diff -C2 -d -r2.37 -r2.38 *** objimpl.h 2001/08/29 23:49:28 2.37 --- objimpl.h 2001/09/03 15:44:48 2.38 *************** *** 284,289 **** #define PyObject_GC_NewVar PyObject_NewVar #define PyObject_GC_Del PyObject_Del ! #define PyObject_GC_TRACK(op) ! #define PyObject_GC_UNTRACK(op) #define PyObject_GC_Track(op) #define PyObject_GC_UnTrack(op) --- 284,289 ---- #define PyObject_GC_NewVar PyObject_NewVar #define PyObject_GC_Del PyObject_Del ! #define _PyObject_GC_TRACK(op) ! #define _PyObject_GC_UNTRACK(op) #define PyObject_GC_Track(op) #define PyObject_GC_UnTrack(op) From nascheme@users.sourceforge.net Mon Sep 3 16:47:24 2001 From: nascheme@users.sourceforge.net (Neil Schemenauer) Date: Mon, 03 Sep 2001 08:47:24 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/distutils dist.py,1.49,1.50 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/distutils In directory usw-pr-cvs1:/tmp/cvs-serv2758/Lib/distutils Modified Files: dist.py Log Message: Don't use dir() to find instance attribute names. Index: dist.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/distutils/dist.py,v retrieving revision 1.49 retrieving revision 1.50 diff -C2 -d -r1.49 -r1.50 *** dist.py 2001/08/10 18:59:30 1.49 --- dist.py 2001/09/03 15:47:21 1.50 *************** *** 123,129 **** # object in a sneaky and underhanded (but efficient!) way. self.metadata = DistributionMetadata() ! method_basenames = dir(self.metadata) + \ ! ['fullname', 'contact', 'contact_email'] ! for basename in method_basenames: method_name = "get_" + basename setattr(self, method_name, getattr(self.metadata, method_name)) --- 123,127 ---- # object in a sneaky and underhanded (but efficient!) way. self.metadata = DistributionMetadata() ! for basename in self.metadata._METHOD_BASENAMES: method_name = "get_" + basename setattr(self, method_name, getattr(self.metadata, method_name)) *************** *** 962,965 **** --- 960,969 ---- author, and so forth. """ + + _METHOD_BASENAMES = ("name", "version", "author", "author_email", + "maintainer", "maintainer_email", "url", + "license", "description", "long_description", + "keywords", "platforms", "fullname", "contact", + "contact_email", "licence") def __init__ (self): From tim_one@users.sourceforge.net Tue Sep 4 02:20:06 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Mon, 03 Sep 2001 18:20:06 -0700 Subject: [Python-checkins] CVS: python/dist/src/Python bltinmodule.c,2.232,2.233 Message-ID: Update of /cvsroot/python/python/dist/src/Python In directory usw-pr-cvs1:/tmp/cvs-serv11642/python/Python Modified Files: bltinmodule.c Log Message: builtin_dir(): Treat classic classes like types. Use PyDict_Keys instead of PyMapping_Keys because we know we have a real dict. Tolerate that objects may have an attr named "__dict__" that's not a dict (Py_None popped up during testing). test_descr.py, test_dir(): Test the new classic-class behavior; beef up the new-style class test similarly. test_pyclbr.py, checkModule(): dir(C) is no longer a synonym for C.__dict__.keys() when C is a classic class (looks like the same thing that burned distutils! -- should it be *made* a synoym again? Then it would be inconsistent with new-style class behavior.). Index: bltinmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Python/bltinmodule.c,v retrieving revision 2.232 retrieving revision 2.233 diff -C2 -d -r2.232 -r2.233 *** bltinmodule.c 2001/09/03 05:47:38 2.232 --- bltinmodule.c 2001/09/04 01:20:04 2.233 *************** *** 441,447 **** assert(PyDict_Check(dict)); - /* XXX Class objects fail the PyType_Check check. Don't - XXX know of others. */ - /* assert(PyType_Check(aclass)); */ assert(aclass); --- 441,444 ---- *************** *** 491,495 **** if (locals == NULL) goto error; ! result = PyMapping_Keys(locals); if (result == NULL) goto error; --- 488,492 ---- if (locals == NULL) goto error; ! result = PyDict_Keys(locals); if (result == NULL) goto error; *************** *** 501,508 **** if (masterdict == NULL) goto error; } ! /* Elif some form of type, recurse. */ ! else if (PyType_Check(arg)) { masterdict = PyDict_New(); if (masterdict == NULL) --- 498,508 ---- if (masterdict == NULL) goto error; + assert(PyDict_Check(masterdict)); } ! /* Elif some form of type or class, grab its dict and its bases. ! We deliberately don't suck up its __class__, as methods belonging ! to the metaclass would probably be more confusing than helpful. */ ! else if (PyType_Check(arg) || PyClass_Check(arg)) { masterdict = PyDict_New(); if (masterdict == NULL) *************** *** 515,540 **** else { PyObject *itsclass; ! /* Create a dict to start with. */ masterdict = PyObject_GetAttrString(arg, "__dict__"); if (masterdict == NULL) { PyErr_Clear(); masterdict = PyDict_New(); - if (masterdict == NULL) - goto error; } else { /* The object may have returned a reference to its dict, so copy it to avoid mutating it. */ PyObject *temp = PyDict_Copy(masterdict); - if (temp == NULL) - goto error; Py_DECREF(masterdict); masterdict = temp; } ! /* Merge in attrs reachable from its class. */ itsclass = PyObject_GetAttrString(arg, "__class__"); - /* XXX Sometimes this is null! Like after "class C: pass", - C.__class__ raises AttributeError. Don't know of other - cases. */ if (itsclass == NULL) PyErr_Clear(); --- 515,542 ---- else { PyObject *itsclass; ! /* Create a dict to start with. CAUTION: Not everything ! responding to __dict__ returns a dict! */ masterdict = PyObject_GetAttrString(arg, "__dict__"); if (masterdict == NULL) { PyErr_Clear(); masterdict = PyDict_New(); } + else if (!PyDict_Check(masterdict)) { + Py_DECREF(masterdict); + masterdict = PyDict_New(); + } else { /* The object may have returned a reference to its dict, so copy it to avoid mutating it. */ PyObject *temp = PyDict_Copy(masterdict); Py_DECREF(masterdict); masterdict = temp; } ! if (masterdict == NULL) ! goto error; ! ! /* Merge in attrs reachable from its class. ! CAUTION: Not all objects have a __class__ attr. */ itsclass = PyObject_GetAttrString(arg, "__class__"); if (itsclass == NULL) PyErr_Clear(); *************** *** 551,555 **** /* The result comes from its keys. */ assert(result == NULL); ! result = PyMapping_Keys(masterdict); if (result == NULL) goto error; --- 553,557 ---- /* The result comes from its keys. */ assert(result == NULL); ! result = PyDict_Keys(masterdict); if (result == NULL) goto error; *************** *** 579,583 **** "No argument: the names in the current scope.\n" "Module object: the module attributes.\n" ! "Type object: its attributes, and recursively the attributes of its bases.\n" "Otherwise: its attributes, its class's attributes, and recursively the\n" " attributes of its class's base classes."; --- 581,586 ---- "No argument: the names in the current scope.\n" "Module object: the module attributes.\n" ! "Type or class object: its attributes, and recursively the attributes of\n" ! " its bases.\n" "Otherwise: its attributes, its class's attributes, and recursively the\n" " attributes of its class's base classes."; From tim_one@users.sourceforge.net Tue Sep 4 02:20:06 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Mon, 03 Sep 2001 18:20:06 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/test test_descr.py,1.30,1.31 test_pyclbr.py,1.2,1.3 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/test In directory usw-pr-cvs1:/tmp/cvs-serv11642/python/Lib/test Modified Files: test_descr.py test_pyclbr.py Log Message: builtin_dir(): Treat classic classes like types. Use PyDict_Keys instead of PyMapping_Keys because we know we have a real dict. Tolerate that objects may have an attr named "__dict__" that's not a dict (Py_None popped up during testing). test_descr.py, test_dir(): Test the new classic-class behavior; beef up the new-style class test similarly. test_pyclbr.py, checkModule(): dir(C) is no longer a synonym for C.__dict__.keys() when C is a classic class (looks like the same thing that burned distutils! -- should it be *made* a synoym again? Then it would be inconsistent with new-style class behavior.). Index: test_descr.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_descr.py,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** test_descr.py 2001/09/03 05:47:38 1.30 --- test_descr.py 2001/09/04 01:20:04 1.31 *************** *** 184,189 **** dir(arg) ! # Check some details here because classic classes aren't working ! # reasonably, and I want this to fail (eventually). class C: Cdata = 1 --- 184,188 ---- dir(arg) ! # Try classic classes. class C: Cdata = 1 *************** *** 203,223 **** Adata = 1 def Amethod(self): pass ! astuff = ['Adata', 'Amethod', '__doc__', '__module__'] ! # This isn't finding C's stuff at all. verify(dir(A) == astuff) - # But this is! It's because a.__class__ exists but A.__class__ doesn't. a = A() ! verify(dir(a) == astuff[:2] + cstuff) ! # The story for new-style classes is quite different. class C(object): Cdata = 1 def Cmethod(self): pass class A(C): Adata = 1 def Amethod(self): pass ! d = dir(A) ! for expected in 'Cdata', 'Cmethod', 'Adata', 'Amethod': ! verify(expected in d) binops = { --- 202,244 ---- Adata = 1 def Amethod(self): pass ! ! astuff = ['Adata', 'Amethod'] + cstuff verify(dir(A) == astuff) a = A() ! verify(dir(a) == astuff) ! a.adata = 42 ! a.amethod = lambda self: 3 ! verify(dir(a) == astuff + ['adata', 'amethod']) ! # The same, but with new-style classes. Since these have object as a ! # base class, a lot more gets sucked in. ! def interesting(strings): ! return [s for s in strings if not s.startswith('_')] ! class C(object): Cdata = 1 def Cmethod(self): pass + + cstuff = ['Cdata', 'Cmethod'] + verify(interesting(dir(C)) == cstuff) + + c = C() + verify(interesting(dir(c)) == cstuff) + + c.cdata = 2 + c.cmethod = lambda self: 0 + verify(interesting(dir(c)) == cstuff + ['cdata', 'cmethod']) + class A(C): Adata = 1 def Amethod(self): pass ! ! astuff = ['Adata', 'Amethod'] + cstuff ! verify(interesting(dir(A)) == astuff) ! a = A() ! verify(interesting(dir(a)) == astuff) ! a.adata = 42 ! a.amethod = lambda self: 3 ! verify(interesting(dir(a)) == astuff + ['adata', 'amethod']) binops = { Index: test_pyclbr.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_pyclbr.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** test_pyclbr.py 2001/08/13 22:25:24 1.2 --- test_pyclbr.py 2001/09/04 01:20:04 1.3 *************** *** 77,81 **** actualMethods = [] ! for m in dir(py_item): if type(getattr(py_item, m)) == MethodType: actualMethods.append(m) --- 77,81 ---- actualMethods = [] ! for m in py_item.__dict__.keys(): if type(getattr(py_item, m)) == MethodType: actualMethods.append(m) From tim_one@users.sourceforge.net Tue Sep 4 03:50:51 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Mon, 03 Sep 2001 19:50:51 -0700 Subject: [Python-checkins] CVS: python/dist/src/Include longobject.h,2.22,2.23 Message-ID: Update of /cvsroot/python/python/dist/src/Include In directory usw-pr-cvs1:/tmp/cvs-serv29765/python/Include Modified Files: longobject.h Log Message: Introduce new private API function _PyLong_AsScaledDouble. Not used yet, but will be the foundation for Good Things: + Speed PyLong_AsDouble. + Give PyLong_AsDouble the ability to detect overflow. + Make true division of long/long nearly as accurate as possible (no spurious infinities or NaNs). + Return non-insane results from math.log and math.log10 when passing a long that can't be approximated by a double better than HUGE_VAL. Index: longobject.h =================================================================== RCS file: /cvsroot/python/python/dist/src/Include/longobject.h,v retrieving revision 2.22 retrieving revision 2.23 diff -C2 -d -r2.22 -r2.23 *** longobject.h 2001/08/29 15:45:32 2.22 --- longobject.h 2001/09/04 02:50:49 2.23 *************** *** 19,22 **** --- 19,31 ---- extern DL_IMPORT(long) PyLong_AsLong(PyObject *); extern DL_IMPORT(unsigned long) PyLong_AsUnsignedLong(PyObject *); + + /* _PyLong_AsScaledDouble returns a double x and an exponent e such that + the true value is approximately equal to x * 2**(SHIFT*e). e is >= 0. + x is 0.0 if and only if the input is 0 (in which case, e and x are both + zeroes). Overflow is impossible. Note that the exponent returned must + be multiplied by SHIFT! There may not be enough room in an int to store + e*SHIFT directly. */ + extern DL_IMPORT(double) _PyLong_AsScaledDouble(PyObject *vv, int *e); + extern DL_IMPORT(double) PyLong_AsDouble(PyObject *); extern DL_IMPORT(PyObject *) PyLong_FromVoidPtr(void *); From tim_one@users.sourceforge.net Tue Sep 4 03:50:51 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Mon, 03 Sep 2001 19:50:51 -0700 Subject: [Python-checkins] CVS: python/dist/src/Objects longobject.c,1.96,1.97 Message-ID: Update of /cvsroot/python/python/dist/src/Objects In directory usw-pr-cvs1:/tmp/cvs-serv29765/python/Objects Modified Files: longobject.c Log Message: Introduce new private API function _PyLong_AsScaledDouble. Not used yet, but will be the foundation for Good Things: + Speed PyLong_AsDouble. + Give PyLong_AsDouble the ability to detect overflow. + Make true division of long/long nearly as accurate as possible (no spurious infinities or NaNs). + Return non-insane results from math.log and math.log10 when passing a long that can't be approximated by a double better than HUGE_VAL. Index: longobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/longobject.c,v retrieving revision 1.96 retrieving revision 1.97 diff -C2 -d -r1.96 -r1.97 *** longobject.c 2001/09/03 08:35:41 1.96 --- longobject.c 2001/09/04 02:50:49 1.97 *************** *** 475,478 **** --- 475,530 ---- } + double + _PyLong_AsScaledDouble(PyObject *vv, int *exponent) + { + /* NBITS_WANTED should be > the number of bits in a double's precision, + but small enough so that 2**NBITS_WANTED is within the normal double + range. nbitsneeded is set to 1 less than that because the most-significant + Python digit contains at least 1 significant bit, but we don't want to + bother counting them (catering to the worst case cheaply). + + 57 is one more than VAX-D double precision; I (Tim) don't know of a double + format with more precision than that; it's 1 larger so that we add in at + least one round bit to stand in for the ignored least-significant bits. + */ + #define NBITS_WANTED 57 + PyLongObject *v; + double x; + const double multiplier = (double)(1L << SHIFT); + int i, sign; + int nbitsneeded; + + if (vv == NULL || !PyLong_Check(vv)) { + PyErr_BadInternalCall(); + return -1; + } + v = (PyLongObject *)vv; + i = v->ob_size; + sign = 1; + if (i < 0) { + sign = -1; + i = -(i); + } + else if (i == 0) { + *exponent = 0; + return 0.0; + } + --i; + x = (double)v->ob_digit[i]; + nbitsneeded = NBITS_WANTED - 1; + /* Invariant: i Python digits remain unaccounted for. */ + while (i > 0 && nbitsneeded > 0) { + --i; + x = x * multiplier + (double)v->ob_digit[i]; + nbitsneeded -= SHIFT; + } + /* There are i digits we didn't shift in. Pretending they're all + zeroes, the true value is x * 2**(i*SHIFT). */ + *exponent = i; + assert(x > 0.0); + return x * sign; + #undef NBITS_WANTED + } + /* Get a C double from a long int object. */ From gvanrossum@users.sourceforge.net Tue Sep 4 04:25:02 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Mon, 03 Sep 2001 20:25:02 -0700 Subject: [Python-checkins] CVS: python/dist/src/Modules main.c,1.58,1.59 Message-ID: Update of /cvsroot/python/python/dist/src/Modules In directory usw-pr-cvs1:/tmp/cvs-serv3994 Modified Files: main.c Log Message: Rename the -D option to -Q, to avoid a Jython option name conflict. Index: main.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Modules/main.c,v retrieving revision 1.58 retrieving revision 1.59 diff -C2 -d -r1.58 -r1.59 *** main.c 2001/08/31 18:17:13 1.58 --- main.c 2001/09/04 03:25:00 1.59 *************** *** 30,34 **** /* command line options */ ! #define BASE_OPTS "c:dD:EhiOStuUvVW:xX" #ifndef RISCOS --- 30,34 ---- /* command line options */ ! #define BASE_OPTS "c:dEhiOQ:StuUvVW:xX" #ifndef RISCOS *************** *** 51,63 **** -c cmd : program passed in as string (terminates option list)\n\ -d : debug output from parser (also PYTHONDEBUG=x)\n\ - -D arg : division options: -Dold (default), -Dwarn, -Dnew\n\ -E : ignore environment variables (such as PYTHONPATH)\n\ -h : print this help message and exit\n\ - "; - static char *usage_2 = "\ -i : inspect interactively after running script, (also PYTHONINSPECT=x)\n\ and force prompts, even if stdin does not appear to be a terminal\n\ -O : optimize generated bytecode (a tad; also PYTHONOPTIMIZE=x)\n\ -OO : remove doc-strings in addition to the -O optimizations\n\ -S : don't imply 'import site' on initialization\n\ -t : issue warnings about inconsistent tab usage (-tt: issue errors)\n\ --- 51,63 ---- -c cmd : program passed in as string (terminates option list)\n\ -d : debug output from parser (also PYTHONDEBUG=x)\n\ -E : ignore environment variables (such as PYTHONPATH)\n\ -h : print this help message and exit\n\ -i : inspect interactively after running script, (also PYTHONINSPECT=x)\n\ and force prompts, even if stdin does not appear to be a terminal\n\ + "; + static char *usage_2 = "\ -O : optimize generated bytecode (a tad; also PYTHONOPTIMIZE=x)\n\ -OO : remove doc-strings in addition to the -O optimizations\n\ + -Q arg : division options: -Qold (default), -Qwarn, -Qnew\n\ -S : don't imply 'import site' on initialization\n\ -t : issue warnings about inconsistent tab usage (-tt: issue errors)\n\ *************** *** 156,160 **** break; ! case 'D': if (strcmp(_PyOS_optarg, "old") == 0) { Py_DivisionWarningFlag = 0; --- 156,160 ---- break; ! case 'Q': if (strcmp(_PyOS_optarg, "old") == 0) { Py_DivisionWarningFlag = 0; *************** *** 171,176 **** } fprintf(stderr, ! "-D option should be " ! "`-Dold', `-Dwarn' or `-Dnew' only\n"); usage(2, argv[0]); /* NOTREACHED */ --- 171,176 ---- } fprintf(stderr, ! "-Q option should be " ! "`-Qold', `-Qwarn' or `-Qnew' only\n"); usage(2, argv[0]); /* NOTREACHED */ From gvanrossum@users.sourceforge.net Tue Sep 4 04:25:47 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Mon, 03 Sep 2001 20:25:47 -0700 Subject: [Python-checkins] CVS: python/dist/src/Misc NEWS,1.225,1.226 Message-ID: Update of /cvsroot/python/python/dist/src/Misc In directory usw-pr-cvs1:/tmp/cvs-serv4094 Modified Files: NEWS Log Message: Rename the -D option to -Q, to avoid a Jython option name conflict. Index: NEWS =================================================================== RCS file: /cvsroot/python/python/dist/src/Misc/NEWS,v retrieving revision 1.225 retrieving revision 1.226 diff -C2 -d -r1.225 -r1.226 *** NEWS 2001/09/03 08:35:40 1.225 --- NEWS 2001/09/04 03:25:44 1.226 *************** *** 33,44 **** OverflowError exception. ! - A new command line option, -D, is added to control run-time warnings for the use of classic division. (See PEP 238.) Possible ! values are -Dold, -Dwarn, and -Dnew. The default is -Dold, meaning the / operator has its classic meaning and no warnings are issued. ! Using -Dwarn issues a run-time warning about all uses of classic ! division for int, long, float and complex arguments. Using -Dnew is questionable; it turns on new division by default, but only in the ! __main__ module. You can usefully combine -Dwarn and -Dnew: this gives the __main__ module new division, and warns about classic division everywhere else. --- 33,44 ---- OverflowError exception. ! - A new command line option, -Q, is added to control run-time warnings for the use of classic division. (See PEP 238.) Possible ! values are -Qold, -Qwarn, and -Qnew. The default is -Qold, meaning the / operator has its classic meaning and no warnings are issued. ! Using -Qwarn issues a run-time warning about all uses of classic ! division for int, long, float and complex arguments. Using -Qnew is questionable; it turns on new division by default, but only in the ! __main__ module. You can usefully combine -Qwarn and -Qnew: this gives the __main__ module new division, and warns about classic division everywhere else. From gvanrossum@users.sourceforge.net Tue Sep 4 04:26:17 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Mon, 03 Sep 2001 20:26:17 -0700 Subject: [Python-checkins] CVS: python/dist/src/Tools/scripts fixdiv.py,1.3,1.4 Message-ID: Update of /cvsroot/python/python/dist/src/Tools/scripts In directory usw-pr-cvs1:/tmp/cvs-serv4207 Modified Files: fixdiv.py Log Message: Rename the -D option to -Q, to avoid a Jython option name conflict. Index: fixdiv.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Tools/scripts/fixdiv.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** fixdiv.py 2001/09/02 14:11:30 1.3 --- fixdiv.py 2001/09/04 03:26:15 1.4 *************** *** 3,7 **** """fixdiv - tool to fix division operators. ! To use this tool, first run `python -Dwarn yourscript.py 2>warnings'. This runs the script `yourscript.py' while writing warning messages about all uses of the classic division operator to the file --- 3,7 ---- """fixdiv - tool to fix division operators. ! To use this tool, first run `python -Qwarn yourscript.py 2>warnings'. This runs the script `yourscript.py' while writing warning messages about all uses of the classic division operator to the file From gvanrossum@users.sourceforge.net Tue Sep 4 04:48:50 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Mon, 03 Sep 2001 20:48:50 -0700 Subject: [Python-checkins] CVS: python/nondist/peps pep-0238.txt,1.16,1.17 Message-ID: Update of /cvsroot/python/python/nondist/peps In directory usw-pr-cvs1:/tmp/cvs-serv8197 Modified Files: pep-0238.txt Log Message: Rename the -D option to -Q, to avoid a Jython option name conflict. Document the 4th value of this option (warnall). Also update some other items that are now resolved or close to being resolved. Index: pep-0238.txt =================================================================== RCS file: /cvsroot/python/python/nondist/peps/pep-0238.txt,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** pep-0238.txt 2001/08/07 15:30:11 1.16 --- pep-0238.txt 2001/09/04 03:48:48 1.17 *************** *** 252,276 **** Command Line Option ! The -D command line option takes a string argument that can take ! three values: "old", "warn", or "new". The default is "old" in ! Python 2.2 but will change to "warn" in later 2.x versions. The ! "old" value means the classic division operator acts as described. ! The "warn" value means the classic division operator issues a ! warning (a DeprecationWarning using the standard warning ! framework) when applied to ints or longs. The "new" value changes ! the default globally so that the / operator is always interpreted ! as true division. The "new" option is only intended for use in ! certain educational environments, where true division is required, ! but asking the students to include the future division statement ! in all their code would be a problem. This option will not be supported in Python 3.0; Python 3.0 will always interpret / as true division. ! (Other names have been proposed, like -Dclassic, -Dclassic-warn, ! -Dtrue, or -Dold_division etc.; these seem more verbose to me ! without much advantage. After all the term classic division is ! not used in the language at all (only in the PEP), and the term ! true division is rarely used in the language -- only in __truediv__.) --- 252,281 ---- Command Line Option ! The -Q command line option takes a string argument that can take ! four values: "old", "warn", "warnall", or "new". The default is ! "old" in Python 2.2 but will change to "warn" in later 2.x ! versions. The "old" value means the classic division operator ! acts as described. The "warn" value means the classic division ! operator issues a warning (a DeprecationWarning using the standard ! warning framework) when applied to ints or longs. The "warnall" ! value also issues warnings for classic division when applied to ! floats or complex; this is for use by the fixdiv.py conversion ! script mentioned below. The "new" value changes the default ! globally so that the / operator is always interpreted as true ! division. The "new" option is only intended for use in certain ! educational environments, where true division is required, but ! asking the students to include the future division statement in ! all their code would be a problem. This option will not be supported in Python 3.0; Python 3.0 will always interpret / as true division. ! (This option was originally proposed as -D, but that turned out to ! be an existing option for Jython, hence the Q -- mnemonic for ! Quotient. Other names have been proposed, like -Qclassic, ! -Qclassic-warn, -Qtrue, or -Qold_division etc.; these seem more ! verbose to me without much advantage. After all the term classic ! division is not used in the language at all (only in the PEP), and ! the term true division is rarely used in the language -- only in __truediv__.) *************** *** 329,333 **** If "from __future__ import division" is present in a module, or if ! -Dnew is used, the / and /= operators are translated to true division opcodes; otherwise they are translated to classic division (until Python 3.0 comes along, where they are always --- 334,338 ---- If "from __future__ import division" is present in a module, or if ! -Qnew is used, the / and /= operators are translated to true division opcodes; otherwise they are translated to classic division (until Python 3.0 comes along, where they are always *************** *** 360,365 **** default is evil. It can certainly be dangerous in the wrong hands: for example, it would be impossible to combine a 3rd ! party library package that requires -Dnew with another one that ! requires -Dold. But I believe that the VPython folks need a way to enable true division by default, and other educators might need the same. These usually have enough control over the --- 365,370 ---- default is evil. It can certainly be dangerous in the wrong hands: for example, it would be impossible to combine a 3rd ! party library package that requires -Qnew with another one that ! requires -Qold. But I believe that the VPython folks need a way to enable true division by default, and other educators might need the same. These usually have enough control over the *************** *** 371,375 **** will disappear if and when rational numbers are supported. In the interim, maybe the long-to-float conversion could be made to ! raise OverflowError if the long is out of range. - For classes to have to support all three of __div__(), --- 376,382 ---- will disappear if and when rational numbers are supported. In the interim, maybe the long-to-float conversion could be made to ! raise OverflowError if the long is out of range. Tim Peters ! will make sure that whenever an in-range float is returned, ! decent precision is guaranteed. - For classes to have to support all three of __div__(), *************** *** 427,444 **** A. They inherit the choice from the invoking module. PEP 236[4] ! lists this as a partially resolved problem. Q. What about code compiled by the codeop module? ! A. Alas, this will always use the default semantics (set by the -D ! command line option). This is a general problem with the ! future statement; PEP 236[4] lists it as an unresolved ! problem. You could have your own clone of codeop.py that ! includes a future division statement, but that's not a general ! solution. Q. Will there be conversion tools or aids? ! A. Certainly, but these are outside the scope of the PEP. Q. Why is my question not answered here? --- 434,450 ---- A. They inherit the choice from the invoking module. PEP 236[4] ! now lists this as a resolved problem, referring to PEP 264[5]. Q. What about code compiled by the codeop module? ! A. This is dealt with properly; see PEP 264[5]. Q. Will there be conversion tools or aids? ! A. Certainly. While these are outside the scope of the PEP, I ! should point out two simple tools that will be released with ! Python 2.2a3: Tools/scripts/finddiv.py finds division operators ! (slightly smarter than "grep /") and Tools/scripts/fixdiv.py ! can produce patches based on run-time analysis. Q. Why is my question not answered here? *************** *** 453,459 **** Implementation ! A very early implementation (not yet following the above spec, but ! supporting // and the future division statement) is available from ! the SourceForge patch manager[5]. --- 459,465 ---- Implementation ! Essentially everything mentioned here is implemented in CVS and ! will be released with Python 2.2a3; most of it was already ! released with Python 2.2a2. *************** *** 475,480 **** http://www.python.org/peps/pep-0236.html ! [5] Patch 443474, from __future__ import division ! http://sourceforge.net/tracker/index.php?func=detail&aid=443474&group_id=5470&atid=305470 --- 481,486 ---- http://www.python.org/peps/pep-0236.html ! [5] PEP 264, Future statements in simulated shells ! http://www.python.org/peps/pep-0236.html From gvanrossum@users.sourceforge.net Tue Sep 4 04:50:06 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Mon, 03 Sep 2001 20:50:06 -0700 Subject: [Python-checkins] CVS: python/dist/src/Modules main.c,1.59,1.60 Message-ID: Update of /cvsroot/python/python/dist/src/Modules In directory usw-pr-cvs1:/tmp/cvs-serv8395 Modified Files: main.c Log Message: PEP 238 documented -Qwarn as warning only for classic int or long division, and this makes sense. Add -Qwarnall to warn for all classic divisions, as required by the fixdiv.py tool. Index: main.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Modules/main.c,v retrieving revision 1.59 retrieving revision 1.60 diff -C2 -d -r1.59 -r1.60 *** main.c 2001/09/04 03:25:00 1.59 --- main.c 2001/09/04 03:50:04 1.60 *************** *** 59,63 **** -O : optimize generated bytecode (a tad; also PYTHONOPTIMIZE=x)\n\ -OO : remove doc-strings in addition to the -O optimizations\n\ ! -Q arg : division options: -Qold (default), -Qwarn, -Qnew\n\ -S : don't imply 'import site' on initialization\n\ -t : issue warnings about inconsistent tab usage (-tt: issue errors)\n\ --- 59,63 ---- -O : optimize generated bytecode (a tad; also PYTHONOPTIMIZE=x)\n\ -OO : remove doc-strings in addition to the -O optimizations\n\ ! -Q arg : division options: -Qold (default), -Qwarn, -Qwarnall, -Qnew\n\ -S : don't imply 'import site' on initialization\n\ -t : issue warnings about inconsistent tab usage (-tt: issue errors)\n\ *************** *** 162,166 **** } if (strcmp(_PyOS_optarg, "warn") == 0) { ! Py_DivisionWarningFlag++; break; } --- 162,170 ---- } if (strcmp(_PyOS_optarg, "warn") == 0) { ! Py_DivisionWarningFlag = 1; ! break; ! } ! if (strcmp(_PyOS_optarg, "warnall") == 0) { ! Py_DivisionWarningFlag = 2; break; } *************** *** 171,176 **** } fprintf(stderr, ! "-Q option should be " ! "`-Qold', `-Qwarn' or `-Qnew' only\n"); usage(2, argv[0]); /* NOTREACHED */ --- 175,180 ---- } fprintf(stderr, ! "-Q option should be `-Qold', " ! "`-Qwarn', `-Qwarnall', or `-Qnew' only\n"); usage(2, argv[0]); /* NOTREACHED */ From gvanrossum@users.sourceforge.net Tue Sep 4 04:50:27 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Mon, 03 Sep 2001 20:50:27 -0700 Subject: [Python-checkins] CVS: python/dist/src/Objects floatobject.c,2.91,2.92 Message-ID: Update of /cvsroot/python/python/dist/src/Objects In directory usw-pr-cvs1:/tmp/cvs-serv8440 Modified Files: floatobject.c Log Message: PEP 238 documented -Qwarn as warning only for classic int or long division, and this makes sense. Add -Qwarnall to warn for all classic divisions, as required by the fixdiv.py tool. Index: floatobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/floatobject.c,v retrieving revision 2.91 retrieving revision 2.92 diff -C2 -d -r2.91 -r2.92 *** floatobject.c 2001/09/03 08:35:41 2.91 --- floatobject.c 2001/09/04 03:50:25 2.92 *************** *** 420,424 **** CONVERT_TO_DOUBLE(v, a); CONVERT_TO_DOUBLE(w, b); ! if (Py_DivisionWarningFlag && PyErr_Warn(PyExc_DeprecationWarning, "classic float division") < 0) return NULL; --- 420,424 ---- CONVERT_TO_DOUBLE(v, a); CONVERT_TO_DOUBLE(w, b); ! if (Py_DivisionWarningFlag >= 2 && PyErr_Warn(PyExc_DeprecationWarning, "classic float division") < 0) return NULL; From gvanrossum@users.sourceforge.net Tue Sep 4 04:50:49 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Mon, 03 Sep 2001 20:50:49 -0700 Subject: [Python-checkins] CVS: python/dist/src/Objects complexobject.c,2.40,2.41 Message-ID: Update of /cvsroot/python/python/dist/src/Objects In directory usw-pr-cvs1:/tmp/cvs-serv8490 Modified Files: complexobject.c Log Message: PEP 238 documented -Qwarn as warning only for classic int or long division, and this makes sense. Add -Qwarnall to warn for all classic divisions, as required by the fixdiv.py tool. Index: complexobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/complexobject.c,v retrieving revision 2.40 retrieving revision 2.41 diff -C2 -d -r2.40 -r2.41 *** complexobject.c 2001/08/31 17:40:15 2.40 --- complexobject.c 2001/09/04 03:50:47 2.41 *************** *** 378,382 **** Py_complex quot; ! if (Py_DivisionWarningFlag && PyErr_Warn(PyExc_DeprecationWarning, "classic complex division") < 0) --- 378,382 ---- Py_complex quot; ! if (Py_DivisionWarningFlag >= 2 && PyErr_Warn(PyExc_DeprecationWarning, "classic complex division") < 0) From gvanrossum@users.sourceforge.net Tue Sep 4 04:51:11 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Mon, 03 Sep 2001 20:51:11 -0700 Subject: [Python-checkins] CVS: python/dist/src/Tools/scripts fixdiv.py,1.4,1.5 Message-ID: Update of /cvsroot/python/python/dist/src/Tools/scripts In directory usw-pr-cvs1:/tmp/cvs-serv8557 Modified Files: fixdiv.py Log Message: PEP 238 documented -Qwarn as warning only for classic int or long division, and this makes sense. Add -Qwarnall to warn for all classic divisions, as required by the fixdiv.py tool. Index: fixdiv.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Tools/scripts/fixdiv.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** fixdiv.py 2001/09/04 03:26:15 1.4 --- fixdiv.py 2001/09/04 03:51:09 1.5 *************** *** 3,7 **** """fixdiv - tool to fix division operators. ! To use this tool, first run `python -Qwarn yourscript.py 2>warnings'. This runs the script `yourscript.py' while writing warning messages about all uses of the classic division operator to the file --- 3,7 ---- """fixdiv - tool to fix division operators. ! To use this tool, first run `python -Qwarnall yourscript.py 2>warnings'. This runs the script `yourscript.py' while writing warning messages about all uses of the classic division operator to the file From tim_one@users.sourceforge.net Tue Sep 4 06:14:21 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Mon, 03 Sep 2001 22:14:21 -0700 Subject: [Python-checkins] CVS: python/dist/src/Misc NEWS,1.226,1.227 Message-ID: Update of /cvsroot/python/python/dist/src/Misc In directory usw-pr-cvs1:/tmp/cvs-serv28101/python/Misc Modified Files: NEWS Log Message: Raise OverflowError when appropriate on long->float conversion. Most of the fiddling is simply due to that no caller of PyLong_AsDouble ever checked for failure (so that's fixing old bugs). PyLong_AsDouble is much faster for big inputs now too, but that's more of a happy consequence than a design goal. Index: NEWS =================================================================== RCS file: /cvsroot/python/python/dist/src/Misc/NEWS,v retrieving revision 1.226 retrieving revision 1.227 diff -C2 -d -r1.226 -r1.227 *** NEWS 2001/09/04 03:25:44 1.226 --- NEWS 2001/09/04 05:14:19 1.227 *************** *** 4,7 **** --- 4,10 ---- Core + - Conversion of long to float now raises OverflowError if the long is too + big to represent as a C double. + - The 3-argument builtin pow() no longer allows a third non-None argument if either of the first two arguments is a float, or if both are of *************** *** 95,98 **** --- 98,110 ---- API + + - Note that PyLong_AsDouble can fail! This has always been true, but no + callers checked for it. It's more likely to fail now, because overflow + errors are properly detected now. The proper way to check: + + double x = PyLong_AsDouble(some_long_object); + if (x == -1.0 && PyErr_Occurred()) { + /* The conversion failed. */ + } - The GC API has been changed. Extensions that use the old API will still From tim_one@users.sourceforge.net Tue Sep 4 06:14:21 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Mon, 03 Sep 2001 22:14:21 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/test test_long.py,1.10,1.11 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/test In directory usw-pr-cvs1:/tmp/cvs-serv28101/python/Lib/test Modified Files: test_long.py Log Message: Raise OverflowError when appropriate on long->float conversion. Most of the fiddling is simply due to that no caller of PyLong_AsDouble ever checked for failure (so that's fixing old bugs). PyLong_AsDouble is much faster for big inputs now too, but that's more of a happy consequence than a design goal. Index: test_long.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_long.py,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** test_long.py 2001/09/03 08:35:40 1.10 --- test_long.py 2001/09/04 05:14:18 1.11 *************** *** 329,332 **** --- 329,368 ---- "TypeError" % ((longx, longy, long(z)))) + # ---------------------------------------- tests of long->float overflow + + def test_float_overflow(): + import math + + if verbose: + print "long->float overflow" + + for x in -2.0, -1.0, 0.0, 1.0, 2.0: + verify(float(long(x)) == x) + + huge = 1L << 30000 + mhuge = -huge + namespace = {'huge': huge, 'mhuge': mhuge, 'math': math} + for test in ["float(huge)", "float(mhuge)", + "complex(huge)", "complex(mhuge)", + "complex(huge, 1)", "complex(mhuge, 1)", + "complex(1, huge)", "complex(1, mhuge)", + "1. + huge", "huge + 1.", "1. + mhuge", "mhuge + 1.", + "1. - huge", "huge - 1.", "1. - mhuge", "mhuge - 1.", + "1. * huge", "huge * 1.", "1. * mhuge", "mhuge * 1.", + "1. // huge", "huge // 1.", "1. // mhuge", "mhuge // 1.", + "1. / huge", "huge / 1.", "1. / mhuge", "mhuge / 1.", + "1. ** huge", "huge ** 1.", "1. ** mhuge", "mhuge ** 1.", + "math.sin(huge)", "math.sin(mhuge)", + "math.log(huge)", "math.log(mhuge)", # should do better + "math.sqrt(huge)", "math.sqrt(mhuge)", # should do better + "math.log10(huge)", "math.log10(mhuge)", # should do better + "math.floor(huge)", "math.floor(mhuge)"]: + + try: + eval(test, namespace) + except OverflowError: + pass + else: + raise TestFailed("expected OverflowError from %s" % test) # ---------------------------------------------------------------- do it *************** *** 336,337 **** --- 372,374 ---- test_misc() test_auto_overflow() + test_float_overflow() From tim_one@users.sourceforge.net Tue Sep 4 06:14:22 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Mon, 03 Sep 2001 22:14:22 -0700 Subject: [Python-checkins] CVS: python/dist/src/Objects complexobject.c,2.41,2.42 floatobject.c,2.92,2.93 longobject.c,1.97,1.98 Message-ID: Update of /cvsroot/python/python/dist/src/Objects In directory usw-pr-cvs1:/tmp/cvs-serv28101/python/Objects Modified Files: complexobject.c floatobject.c longobject.c Log Message: Raise OverflowError when appropriate on long->float conversion. Most of the fiddling is simply due to that no caller of PyLong_AsDouble ever checked for failure (so that's fixing old bugs). PyLong_AsDouble is much faster for big inputs now too, but that's more of a happy consequence than a design goal. Index: complexobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/complexobject.c,v retrieving revision 2.41 retrieving revision 2.42 diff -C2 -d -r2.41 -r2.42 *** complexobject.c 2001/09/04 03:50:47 2.41 --- complexobject.c 2001/09/04 05:14:19 2.42 *************** *** 523,526 **** --- 523,528 ---- else if (PyLong_Check(*pw)) { cval.real = PyLong_AsDouble(*pw); + if (cval.real == -1.0 && PyErr_Occurred()) + return -1; *pw = PyComplex_FromCComplex(cval); Py_INCREF(*pv); Index: floatobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/floatobject.c,v retrieving revision 2.92 retrieving revision 2.93 diff -C2 -d -r2.92 -r2.93 *** floatobject.c 2001/09/04 03:50:25 2.92 --- floatobject.c 2001/09/04 05:14:19 2.93 *************** *** 272,287 **** static int ! convert_to_double(PyObject **v, ! double *dbl) { register PyObject *obj = *v; ! if (PyInt_Check(obj)) { *dbl = (double)PyInt_AS_LONG(obj); } else if (PyLong_Check(obj)) { - PyFPE_START_PROTECT("convert_to_double", {*v=NULL;return -1;}) *dbl = PyLong_AsDouble(obj); ! PyFPE_END_PROTECT(*dbl) } else { --- 272,288 ---- static int ! convert_to_double(PyObject **v, double *dbl) { register PyObject *obj = *v; ! if (PyInt_Check(obj)) { *dbl = (double)PyInt_AS_LONG(obj); } else if (PyLong_Check(obj)) { *dbl = PyLong_AsDouble(obj); ! if (*dbl == -1.0 && PyErr_Occurred()) { ! *v = NULL; ! return -1; ! } } else { Index: longobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/longobject.c,v retrieving revision 1.97 retrieving revision 1.98 diff -C2 -d -r1.97 -r1.98 *** longobject.c 2001/09/04 02:50:49 1.97 --- longobject.c 2001/09/04 05:14:19 1.98 *************** *** 532,556 **** PyLong_AsDouble(PyObject *vv) { ! register PyLongObject *v; double x; ! double multiplier = (double) (1L << SHIFT); ! int i, sign; ! if (vv == NULL || !PyLong_Check(vv)) { PyErr_BadInternalCall(); return -1; } ! v = (PyLongObject *)vv; ! i = v->ob_size; ! sign = 1; ! x = 0.0; ! if (i < 0) { ! sign = -1; ! i = -(i); ! } ! while (--i >= 0) { ! x = x*multiplier + (double)v->ob_digit[i]; ! } ! return x * sign; } --- 532,557 ---- PyLong_AsDouble(PyObject *vv) { ! int e; double x; ! if (vv == NULL || !PyLong_Check(vv)) { PyErr_BadInternalCall(); return -1; } ! x = _PyLong_AsScaledDouble(vv, &e); ! if (x == -1.0 && PyErr_Occurred()) ! return -1.0; ! if (e > INT_MAX / SHIFT) ! goto overflow; ! errno = 0; ! x = ldexp(x, e * SHIFT); ! if (errno == ERANGE) ! goto overflow; ! return x; ! ! overflow: ! PyErr_SetString(PyExc_OverflowError, ! "long int too large to convert to float"); ! return -1.0; } *************** *** 2099,2105 **** { double result; - PyFPE_START_PROTECT("long_float", return 0) result = PyLong_AsDouble(v); ! PyFPE_END_PROTECT(result) return PyFloat_FromDouble(result); } --- 2100,2106 ---- { double result; result = PyLong_AsDouble(v); ! if (result == -1.0 && PyErr_Occurred()) ! return NULL; return PyFloat_FromDouble(result); } From tim_one@users.sourceforge.net Tue Sep 4 06:31:49 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Mon, 03 Sep 2001 22:31:49 -0700 Subject: [Python-checkins] CVS: python/dist/src/Objects longobject.c,1.98,1.99 Message-ID: Update of /cvsroot/python/python/dist/src/Objects In directory usw-pr-cvs1:/tmp/cvs-serv2419/python/Objects Modified Files: longobject.c Log Message: Move long_true_divide next to the other division routines (for clarity!). Index: longobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/longobject.c,v retrieving revision 1.98 retrieving revision 1.99 diff -C2 -d -r1.98 -r1.99 *** longobject.c 2001/09/04 05:14:19 1.98 --- longobject.c 2001/09/04 05:31:47 1.99 *************** *** 1583,1586 **** --- 1583,1592 ---- static PyObject * + long_true_divide(PyObject *v, PyObject *w) + { + return PyFloat_Type.tp_as_number->nb_divide(v, w); + } + + static PyObject * long_mod(PyObject *v, PyObject *w) { *************** *** 2060,2069 **** Py_DECREF(b); return c; - } - - static PyObject * - long_true_divide(PyObject *v, PyObject *w) - { - return PyFloat_Type.tp_as_number->nb_divide(v, w); } --- 2066,2069 ---- From tim_one@users.sourceforge.net Tue Sep 4 06:52:49 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Mon, 03 Sep 2001 22:52:49 -0700 Subject: [Python-checkins] CVS: python/dist/src/Objects intobject.c,2.69,2.70 Message-ID: Update of /cvsroot/python/python/dist/src/Objects In directory usw-pr-cvs1:/tmp/cvs-serv12934 Modified Files: intobject.c Log Message: Move int_true_divide next to the other division routines. Index: intobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/intobject.c,v retrieving revision 2.69 retrieving revision 2.70 diff -C2 -d -r2.69 -r2.70 *** intobject.c 2001/09/03 08:35:41 2.69 --- intobject.c 2001/09/04 05:52:47 2.70 *************** *** 534,537 **** --- 534,543 ---- static PyObject * + int_true_divide(PyObject *v, PyObject *w) + { + return PyFloat_Type.tp_as_number->nb_true_divide(v, w); + } + + static PyObject * int_mod(PyIntObject *x, PyIntObject *y) { *************** *** 766,775 **** CONVERT_TO_LONG(w, b); return PyInt_FromLong(a | b); - } - - static PyObject * - int_true_divide(PyObject *v, PyObject *w) - { - return PyFloat_Type.tp_as_number->nb_true_divide(v, w); } --- 772,775 ---- From tim_one@users.sourceforge.net Tue Sep 4 07:17:38 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Mon, 03 Sep 2001 23:17:38 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/test test_long_future.py,NONE,1.1 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/test In directory usw-pr-cvs1:/tmp/cvs-serv19121/python/Lib/test Added Files: test_long_future.py Log Message: Change long/long true division to return as many good bits as it can; e.g., (1L << 40000)/(1L << 40001) returns 0.5, not Inf or NaN or whatever. --- NEW FILE: test_long_future.py --- from __future__ import division # When true division is the default, get rid of this and add it to # test_long.py instead. In the meantime, it's too obscure to try to # trick just part of test_long into using future division. from test_support import TestFailed, verify, verbose def test_true_division(): if verbose: print "long true division" huge = 1L << 40000 mhuge = -huge verify(huge / huge == 1.0) verify(mhuge / mhuge == 1.0) verify(huge / mhuge == -1.0) verify(mhuge / huge == -1.0) verify(1 / huge == 0.0) verify(1L / huge == 0.0) verify(1 / mhuge == 0.0) verify(1L / mhuge ==- 0.0) verify((666 * huge + (huge >> 1)) / huge == 666.5) verify((666 * mhuge + (mhuge >> 1)) / mhuge == 666.5) verify((666 * huge + (huge >> 1)) / mhuge == -666.5) verify((666 * mhuge + (mhuge >> 1)) / huge == -666.5) verify(huge / (huge << 1) == 0.5) namespace = {'huge': huge, 'mhuge': mhuge} for overflow in ["float(huge)", "float(mhuge)", "huge / 1", "huge / 2L", "huge / -1", "huge / -2L", "mhuge / 100", "mhuge / 100L"]: try: eval(overflow, namespace) except OverflowError: pass else: raise TestFailed("expected OverflowError from %r" % overflow) test_true_division() From tim_one@users.sourceforge.net Tue Sep 4 07:17:38 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Mon, 03 Sep 2001 23:17:38 -0700 Subject: [Python-checkins] CVS: python/dist/src/Objects intobject.c,2.70,2.71 longobject.c,1.99,1.100 Message-ID: Update of /cvsroot/python/python/dist/src/Objects In directory usw-pr-cvs1:/tmp/cvs-serv19121/python/Objects Modified Files: intobject.c longobject.c Log Message: Change long/long true division to return as many good bits as it can; e.g., (1L << 40000)/(1L << 40001) returns 0.5, not Inf or NaN or whatever. Index: intobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/intobject.c,v retrieving revision 2.70 retrieving revision 2.71 diff -C2 -d -r2.70 -r2.71 *** intobject.c 2001/09/04 05:52:47 2.70 --- intobject.c 2001/09/04 06:17:36 2.71 *************** *** 536,540 **** int_true_divide(PyObject *v, PyObject *w) { ! return PyFloat_Type.tp_as_number->nb_true_divide(v, w); } --- 536,547 ---- int_true_divide(PyObject *v, PyObject *w) { ! /* If they aren't both ints, give someone else a chance. In ! particular, this lets int/long get handled by longs, which ! underflows to 0 gracefully if the long is too big to convert ! to float. */ ! if (PyInt_Check(v) && PyInt_Check(w)) ! return PyFloat_Type.tp_as_number->nb_true_divide(v, w); ! Py_INCREF(Py_NotImplemented); ! return Py_NotImplemented; } Index: longobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/longobject.c,v retrieving revision 1.99 retrieving revision 1.100 diff -C2 -d -r1.99 -r1.100 *** longobject.c 2001/09/04 05:31:47 1.99 --- longobject.c 2001/09/04 06:17:36 1.100 *************** *** 1585,1589 **** long_true_divide(PyObject *v, PyObject *w) { ! return PyFloat_Type.tp_as_number->nb_divide(v, w); } --- 1585,1620 ---- long_true_divide(PyObject *v, PyObject *w) { ! PyLongObject *a, *b; ! double ad, bd; ! int aexp, bexp; ! ! CONVERT_BINOP(v, w, &a, &b); ! ad = _PyLong_AsScaledDouble((PyObject *)a, &aexp); ! bd = _PyLong_AsScaledDouble((PyObject *)b, &bexp); ! if ((ad == -1.0 || bd == -1.0) && PyErr_Occurred()) ! return NULL; ! ! if (bd == 0.0) { ! PyErr_SetString(PyExc_ZeroDivisionError, ! "long division or modulo by zero"); ! return NULL; ! } ! ! /* True value is very close to ad/bd * 2**(SHIFT*(aexp-bexp)) */ ! ad /= bd; /* overflow/underflow impossible here */ ! aexp -= bexp; ! if (aexp > INT_MAX / SHIFT) ! goto overflow; ! errno = 0; ! ad = ldexp(ad, aexp * SHIFT); ! if (ad != 0 && errno == ERANGE) /* ignore underflow to 0.0 */ ! goto overflow; ! return PyFloat_FromDouble(ad); ! ! overflow: ! PyErr_SetString(PyExc_OverflowError, ! "long/long too large for a float"); ! return NULL; ! } From tim_one@users.sourceforge.net Tue Sep 4 07:33:02 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Mon, 03 Sep 2001 23:33:02 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/test test_long_future.py,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/test In directory usw-pr-cvs1:/tmp/cvs-serv23539/python/Lib/test Modified Files: test_long_future.py Log Message: Fixed a typo and added more tests. Index: test_long_future.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_long_future.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** test_long_future.py 2001/09/04 06:17:36 1.1 --- test_long_future.py 2001/09/04 06:33:00 1.2 *************** *** 18,22 **** verify(1L / huge == 0.0) verify(1 / mhuge == 0.0) ! verify(1L / mhuge ==- 0.0) verify((666 * huge + (huge >> 1)) / huge == 666.5) verify((666 * mhuge + (mhuge >> 1)) / mhuge == 666.5) --- 18,22 ---- verify(1L / huge == 0.0) verify(1 / mhuge == 0.0) ! verify(1L / mhuge == 0.0) verify((666 * huge + (huge >> 1)) / huge == 666.5) verify((666 * mhuge + (mhuge >> 1)) / mhuge == 666.5) *************** *** 24,29 **** --- 24,31 ---- verify((666 * mhuge + (mhuge >> 1)) / huge == -666.5) verify(huge / (huge << 1) == 0.5) + verify((1000000 * huge) / huge == 1000000) namespace = {'huge': huge, 'mhuge': mhuge} + for overflow in ["float(huge)", "float(mhuge)", "huge / 1", "huge / 2L", "huge / -1", "huge / -2L", *************** *** 35,38 **** --- 37,49 ---- else: raise TestFailed("expected OverflowError from %r" % overflow) + + for zero in ["huge / 0", "huge / 0L", + "mhuge / 0", "mhuge / 0L"]: + try: + eval(zero, namespace) + except ZeroDivisionError: + pass + else: + raise TestFailed("expected ZeroDivisionError from %r" % zero) test_true_division() From tim_one@users.sourceforge.net Tue Sep 4 07:37:30 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Mon, 03 Sep 2001 23:37:30 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib rfc822.py,1.61,1.62 Message-ID: Update of /cvsroot/python/python/dist/src/Lib In directory usw-pr-cvs1:/tmp/cvs-serv24638/python/Lib Modified Files: rfc822.py Log Message: Whitespace normalization. Index: rfc822.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/rfc822.py,v retrieving revision 1.61 retrieving revision 1.62 diff -C2 -d -r1.61 -r1.62 *** rfc822.py 2001/08/27 20:16:53 1.61 --- rfc822.py 2001/09/04 06:37:28 1.62 *************** *** 968,972 **** ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][timeval[1]-1], ! timeval[0], timeval[3], timeval[4], timeval[5]) --- 968,972 ---- ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][timeval[1]-1], ! timeval[0], timeval[3], timeval[4], timeval[5]) From tim_one@users.sourceforge.net Tue Sep 4 07:37:30 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Mon, 03 Sep 2001 23:37:30 -0700 Subject: [Python-checkins] CVS: python/dist/src/Tools/scripts fixdiv.py,1.5,1.6 Message-ID: Update of /cvsroot/python/python/dist/src/Tools/scripts In directory usw-pr-cvs1:/tmp/cvs-serv24638/python/Tools/scripts Modified Files: fixdiv.py Log Message: Whitespace normalization. Index: fixdiv.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Tools/scripts/fixdiv.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** fixdiv.py 2001/09/04 03:51:09 1.5 --- fixdiv.py 2001/09/04 06:37:28 1.6 *************** *** 231,238 **** print "*", line elif intlong and not floatcomplex: ! print "%dc%d" % (row, row) ! print "<", line ! print "---" ! print ">", line[:col] + "/" + line[col:] elif floatcomplex and not intlong: print "True division / operator at line %d:" % row --- 231,238 ---- print "*", line elif intlong and not floatcomplex: ! print "%dc%d" % (row, row) ! print "<", line ! print "---" ! print ">", line[:col] + "/" + line[col:] elif floatcomplex and not intlong: print "True division / operator at line %d:" % row From tim_one@users.sourceforge.net Tue Sep 4 07:37:30 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Mon, 03 Sep 2001 23:37:30 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/test test_long.py,1.11,1.12 test_pow.py,1.12,1.13 test_urllib2.py,1.4,1.5 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/test In directory usw-pr-cvs1:/tmp/cvs-serv24638/python/Lib/test Modified Files: test_long.py test_pow.py test_urllib2.py Log Message: Whitespace normalization. Index: test_long.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_long.py,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** test_long.py 2001/09/04 05:14:18 1.11 --- test_long.py 2001/09/04 06:37:28 1.12 *************** *** 358,362 **** "math.log10(huge)", "math.log10(mhuge)", # should do better "math.floor(huge)", "math.floor(mhuge)"]: ! try: eval(test, namespace) --- 358,362 ---- "math.log10(huge)", "math.log10(mhuge)", # should do better "math.floor(huge)", "math.floor(mhuge)"]: ! try: eval(test, namespace) Index: test_pow.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_pow.py,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** test_pow.py 2001/09/03 08:44:02 1.12 --- test_pow.py 2001/09/04 06:37:28 1.13 *************** *** 119,121 **** n = pow(long(i),j,k) if o != n: print 'Integer mismatch:', i,j,k - --- 119,120 ---- Index: test_urllib2.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_urllib2.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** test_urllib2.py 2001/08/27 22:31:58 1.4 --- test_urllib2.py 2001/09/04 06:37:28 1.5 *************** *** 19,23 **** # urllib.pathname2url works, unfortunately... if os.name == 'mac': ! fname = '/' + fname.replace(':', '/') file_url = "file://%s" % fname f = urllib2.urlopen(file_url) --- 19,23 ---- # urllib.pathname2url works, unfortunately... if os.name == 'mac': ! fname = '/' + fname.replace(':', '/') file_url = "file://%s" % fname f = urllib2.urlopen(file_url) From jackjansen@users.sourceforge.net Tue Sep 4 10:05:14 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 02:05:14 -0700 Subject: [Python-checkins] CVS: python/dist/src setup.py,1.52,1.53 Message-ID: Update of /cvsroot/python/python/dist/src In directory usw-pr-cvs1:/tmp/cvs-serv28489 Modified Files: setup.py Log Message: Disabled _curses modules on MacOSX. The curses version is a 1994 BSD curses, far too old for _cursesmodule.c. Index: setup.py =================================================================== RCS file: /cvsroot/python/python/dist/src/setup.py,v retrieving revision 1.52 retrieving revision 1.53 diff -C2 -d -r1.52 -r1.53 *** setup.py 2001/08/22 19:24:42 1.52 --- setup.py 2001/09/04 09:05:11 1.53 *************** *** 452,456 **** exts.append( Extension('_curses', ['_cursesmodule.c'], libraries = curses_libs) ) ! elif (self.compiler.find_library_file(lib_dirs, 'curses')): if (self.compiler.find_library_file(lib_dirs, 'terminfo')): curses_libs = ['curses', 'terminfo'] --- 452,457 ---- exts.append( Extension('_curses', ['_cursesmodule.c'], libraries = curses_libs) ) ! elif (self.compiler.find_library_file(lib_dirs, 'curses')) and platform != 'darwin1': ! # OSX has an old Berkeley curses, not good enough for the _curses module. if (self.compiler.find_library_file(lib_dirs, 'terminfo')): curses_libs = ['curses', 'terminfo'] From jackjansen@users.sourceforge.net Tue Sep 4 13:01:51 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 05:01:51 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/distutils sysconfig.py,1.41,1.42 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/distutils In directory usw-pr-cvs1:/tmp/cvs-serv1543 Modified Files: sysconfig.py Log Message: On the mac some library paths returned were outdated, some were outright funny. Fixed. Index: sysconfig.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/distutils/sysconfig.py,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -d -r1.41 -r1.42 *** sysconfig.py 2001/08/23 20:53:27 1.41 --- sysconfig.py 2001/09/04 12:01:49 1.42 *************** *** 103,116 **** if plat_specific: if standard_lib: ! return os.path.join(prefix, "Mac", "Plugins") else: ! raise DistutilsPlatformError( ! "OK, where DO site-specific extensions go on the Mac?") else: if standard_lib: return os.path.join(prefix, "Lib") else: ! raise DistutilsPlatformError( ! "OK, where DO site-specific modules go on the Mac?") else: raise DistutilsPlatformError( --- 103,114 ---- if plat_specific: if standard_lib: ! return os.path.join(prefix, "Lib", "lib-dynload") else: ! return os.path.join(prefix, "Lib", "site-packages") else: if standard_lib: return os.path.join(prefix, "Lib") else: ! return os.path.join(prefix, "Lib", "site-packages") else: raise DistutilsPlatformError( From fdrake@users.sourceforge.net Tue Sep 4 16:10:18 2001 From: fdrake@users.sourceforge.net (Fred L. Drake) Date: Tue, 04 Sep 2001 08:10:18 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib HTMLParser.py,1.5,1.6 Message-ID: Update of /cvsroot/python/python/dist/src/Lib In directory usw-pr-cvs1:/tmp/cvs-serv25450 Modified Files: HTMLParser.py Log Message: Added reasonable parsing of the DOCTYPE declaration, fixed edge cases regarding bare ampersands in content. Index: HTMLParser.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/HTMLParser.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** HTMLParser.py 2001/08/20 21:24:19 1.5 --- HTMLParser.py 2001/09/04 15:10:16 1.6 *************** *** 16,21 **** interesting_normal = re.compile('[&<]') interesting_cdata = re.compile(r'<(/|\Z)') ! incomplete = re.compile('&([a-zA-Z][-.a-zA-Z0-9]*' ! '|#([0-9]*|[xX][0-9a-fA-F]*))?') entityref = re.compile('&([a-zA-Z][-.a-zA-Z0-9]*)[^a-zA-Z0-9]') --- 16,20 ---- interesting_normal = re.compile('[&<]') interesting_cdata = re.compile(r'<(/|\Z)') ! incomplete = re.compile('&[a-zA-Z#]') entityref = re.compile('&([a-zA-Z][-.a-zA-Z0-9]*)[^a-zA-Z0-9]') *************** *** 186,192 **** elif declopen.match(rawdata, i): # ' n = len(rawdata) while j < n: c = rawdata[j] if c == ">": # end of declaration syntax ! self.handle_decl(rawdata[i+2:j]) return j + 1 if c in "\"'": --- 270,284 ---- # in practice, this should look like: ((name|stringlit) S*)+ '>' n = len(rawdata) + decltype = None + extrachars = "" while j < n: c = rawdata[j] if c == ">": # end of declaration syntax ! data = rawdata[i+2:j] ! if decltype == "doctype": ! self.handle_decl(data) ! else: ! self.unknown_decl(data) return j + 1 if c in "\"'": *************** *** 274,282 **** --- 292,530 ---- return -1 # incomplete j = m.end() + if decltype is None: + decltype = m.group(0).rstrip().lower() + if decltype != "doctype": + extrachars = "=" + elif c == "[" and decltype == "doctype": + j = self.parse_doctype_subset(j + 1, i) + if j < 0: + return j + elif c in extrachars: + j = j + 1 + while j < n and rawdata[j] in string.whitespace: + j = j + 1 + if j == n: + # end of buffer while in declaration + return -1 else: raise HTMLParseError( "unexpected char in declaration: %s" % `rawdata[j]`, self.getpos()) + decltype = decltype or '' return -1 # incomplete + + # Internal -- scan past the internal subset in a n: + # end of buffer; incomplete + return -1 + if rawdata[j:j+4] == " ]""" --- 140,150 ---- ! ! ! ! ! %paramEntity; ]""" *************** *** 200,203 **** --- 201,212 ---- self._run_check("""""", [ ("starttag", "a", [("a.b", "v"), ("c:d", "v"), ("e-f", "v")]), + ]) + + def test_illegal_declarations(self): + s = 'abcdef' + self._run_check(s, [ + ("data", "abc"), + ("unknown decl", 'spacer type="block" height="25"'), + ("data", "def"), ]) From gvanrossum@users.sourceforge.net Tue Sep 4 16:18:56 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Tue, 04 Sep 2001 08:18:56 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib reconvert.py,1.5,1.6 Message-ID: Update of /cvsroot/python/python/dist/src/Lib In directory usw-pr-cvs1:/tmp/cvs-serv27855 Modified Files: reconvert.py Log Message: Suppress the warning about regex here. Index: reconvert.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/reconvert.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** reconvert.py 2001/02/15 22:15:13 1.5 --- reconvert.py 2001/09/04 15:18:54 1.6 *************** *** 61,64 **** --- 61,68 ---- + import warnings + warnings.filterwarnings("ignore", ".* regex .*", DeprecationWarning, __name__, + append=1) + import regex from regex_syntax import * # RE_* From gvanrossum@users.sourceforge.net Tue Sep 4 16:22:04 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Tue, 04 Sep 2001 08:22:04 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/test test___all__.py,1.19,1.20 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/test In directory usw-pr-cvs1:/tmp/cvs-serv28838 Modified Files: test___all__.py Log Message: Suppressing all DeprecationWarning messages was a bit of a problem for the -Qwarnall option, so I've changed this to only filter out the one warning that's a problem in practice. Index: test___all__.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test___all__.py,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** test___all__.py 2001/08/09 21:40:30 1.19 --- test___all__.py 2001/09/04 15:22:02 1.20 *************** *** 3,9 **** def check_all(modname): - import warnings - warnings.filterwarnings("ignore", "", DeprecationWarning, modname) - names = {} try: --- 3,6 ---- *************** *** 123,126 **** --- 120,126 ---- check_all("re") check_all("reconvert") + import warnings + warnings.filterwarnings("ignore", ".* regsub .*", DeprecationWarning, "regsub", + append=1) check_all("regsub") check_all("repr") From gvanrossum@users.sourceforge.net Tue Sep 4 17:22:04 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Tue, 04 Sep 2001 09:22:04 -0700 Subject: [Python-checkins] CVS: python/dist/src/Tools/scripts fixdiv.py,1.6,1.7 Message-ID: Update of /cvsroot/python/python/dist/src/Tools/scripts In directory usw-pr-cvs1:/tmp/cvs-serv15846 Modified Files: fixdiv.py Log Message: - Reverse the meaning of the -m option: warnings about multiple / operators per line or statement are now on by default, and -m turns these warnings off. - Change the way multiple / operators are reported; a regular recommendation is always emitted after the warning. - Report ambiguous warnings (both int|long and float|complex used for the same operator). - Update the doc string again to clarify all this and describe the possible messages more precisely. Index: fixdiv.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Tools/scripts/fixdiv.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** fixdiv.py 2001/09/04 06:37:28 1.6 --- fixdiv.py 2001/09/04 16:22:01 1.7 *************** *** 24,45 **** line number. Then, for each file that received at least one warning, it parses the file and tries to match the warnings up to the division ! operators found in the source code. If it is successful, it writes a ! recommendation to stdout in the form of a context diff. If it is not ! successful, it writes observations to stdout instead. ! There are several possible recommendations and observations: ! - A / operator was found that can remain unchanged. This is the ! recommendation when only float and/or complex arguments were seen. ! - A / operator was found that should be changed to //. This is the recommendation when only int and/or long arguments were seen. ! - A / operator was found for which int or long as well as float or complex arguments were seen. This is highly unlikely; if it occurs, you may have to restructure the code to keep the classic semantics, or maybe you don't care about the classic semantics. ! - A / operator was found for which no warnings were seen. This could be code that was never executed, or code that was only executed with with user-defined objects as arguments. You will have to --- 24,60 ---- line number. Then, for each file that received at least one warning, it parses the file and tries to match the warnings up to the division ! operators found in the source code. If it is successful, it writes ! its findings to stdout, preceded by a line of dashes and a line of the ! form: ! Index: ! If the only findings found are suggestions to change a / operator into ! a // operator, the output is acceptable input for the Unix 'patch' ! program. ! Here are the possible messages on stdout (N stands for a line number): ! ! - A plain-diff-style change ('NcN', a line marked by '<', a line ! containing '---', and a line marked by '>'): ! ! A / operator was found that should be changed to //. This is the recommendation when only int and/or long arguments were seen. ! - 'True division / operator at line N' and a line marked by '=': ! ! A / operator was found that can remain unchanged. This is the ! recommendation when only float and/or complex arguments were seen. ! ! - 'Ambiguous / operator (..., ...) at line N', line marked by '?': ! ! A / operator was found for which int or long as well as float or complex arguments were seen. This is highly unlikely; if it occurs, you may have to restructure the code to keep the classic semantics, or maybe you don't care about the classic semantics. ! - 'No conclusive evidence on line N', line marked by '*': ! ! A / operator was found for which no warnings were seen. This could be code that was never executed, or code that was only executed with with user-defined objects as arguments. You will have to *************** *** 51,67 **** never executed?) ! - A warning was seen for a line not containing a / operator. This is ! an anomaly that shouldn't happen; the most likely cause is a change ! to the file between the time the test script was run to collect ! warnings and the time fixdiv was run. ! - More than one / operator was found on one line, or in a statement ! split across multiple lines. Because the warnings framework doesn't ! (and can't) show the offset within the line, and the code generator ! doesn't always give the correct line number for operations in a ! multi-line statement, it's not clear whether both were executed. In ! practice, they usually are, so the default action is make the same ! recommendation for all / operators, based on the above criteria. ! The -m option issues warnings for these cases instead. Notes: --- 66,101 ---- never executed?) ! - 'Phantom ... warnings for line N', line marked by '*': ! A warning was seen for a line not containing a / operator. The most ! likely cause is a warning about code executed by 'exec' or eval() ! (see note below), or an indirect invocation of the / operator, for ! example via the div() function in the operator module. It could ! also be caused by a change to the file between the time the test ! script was run to collect warnings and the time fixdiv was run. ! ! - 'More than one / operator in line N'; or ! 'More than one / operator per statement in lines N-N': ! ! The scanner found more than one / operator on a single line, or in a ! statement split across multiple lines. Because the warnings ! framework doesn't (and can't) show the offset within the line, and ! the code generator doesn't always give the correct line number for ! operations in a multi-line statement, we can't be sure whether all ! operators in the statement were executed. To be on the safe side, ! by default a warning is issued about this case. In practice, these ! cases are usually safe, and the -m option suppresses these warning. ! ! - 'Can't find the / operator in line N', line marked by '*': ! ! This really shouldn't happen. It means that the tokenize module ! reported a '/' operator but the line it returns didn't contain a '/' ! character at the indicated position. ! ! - 'Bad warning for line N: XYZ', line marked by '*': ! ! This really shouldn't happen. It means that a 'classic XYZ ! division' warning was read with XYZ being something other than ! 'int', 'long', 'float', or 'complex'. Notes: *************** *** 80,92 **** - Warnings may be issued for code not read from a file, but executed ! using an exec statement or the eval() function. These will have ! in the filename position. The fixdiv script will attempt ! and fail to open a file named "", and issue a warning about ! this failure. You're on your own to deal with this. You could make ! all recommended changes and add a future division statement to all ! affected files, and then re-run the test script; it should not issue ! any warnings. If there are any, and you have a hard time tracking ! down where they are generated, you can use the -Werror option to ! force an error instead of a first warning, generating a traceback. - The tool should be run from the same directory as that from which --- 114,128 ---- - Warnings may be issued for code not read from a file, but executed ! using an exec statement or the eval() function. These may have ! in the filename position, in which case the fixdiv script ! will attempt and fail to open a file named '' and issue a ! warning about this failure; or these may be reported as 'Phantom' ! warnings (see above). You're on your own to deal with these. You ! could make all recommended changes and add a future division ! statement to all affected files, and then re-run the test script; it ! should not issue any warnings. If there are any, and you have a ! hard time tracking down where they are generated, you can use the ! -Werror option to force an error instead of a first warning, ! generating a traceback. - The tool should be run from the same directory as that from which *************** *** 99,105 **** import re import tokenize - from pprint import pprint ! multi_ok = 1 def main(): --- 135,140 ---- import re import tokenize ! multi_ok = 0 def main(): *************** *** 115,119 **** if o == "-m": global multi_ok ! multi_ok = 0 if not args: usage("at least one file argument is required") --- 150,154 ---- if o == "-m": global multi_ok ! multi_ok = 1 if not args: usage("at least one file argument is required") *************** *** 205,210 **** if len(slashes) > 1: if not multi_ok: ! report(slashes, "More than one / operator per statement") ! continue intlong = [] floatcomplex = [] --- 240,256 ---- if len(slashes) > 1: if not multi_ok: ! rows = [] ! lastrow = None ! for (row, col), line in slashes: ! if row == lastrow: ! continue ! rows.append(row) ! lastrow = row ! assert rows ! if len(rows) == 1: ! print "*** More than one / operator in line", rows[0] ! else: ! print "*** More than one / operator per statement", ! print "in lines %d-%d" % (rows[0], rows[-1]) intlong = [] floatcomplex = [] *************** *** 238,241 **** --- 284,291 ---- print "True division / operator at line %d:" % row print "=", line + elif intlong and floatcomplex: + print "*** Ambiguous / operator (%s, %s) at line %d:" % ( + "|".join(intlong), "|".join(floatcomplex), row) + print "?", line fp.close() From fdrake@users.sourceforge.net Tue Sep 4 17:26:05 2001 From: fdrake@users.sourceforge.net (Fred L. Drake) Date: Tue, 04 Sep 2001 09:26:05 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/test test_htmlparser.py,1.5,1.6 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/test In directory usw-pr-cvs1:/tmp/cvs-serv17166/test Modified Files: test_htmlparser.py Log Message: HTMLParser is allowed to be more strict than sgmllib, so let's not change their basic behavior: When parsing something that cannot possibly be valid in either HTML or XHTML, raise an exception. Index: test_htmlparser.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_htmlparser.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** test_htmlparser.py 2001/09/04 15:13:04 1.5 --- test_htmlparser.py 2001/09/04 16:26:03 1.6 *************** *** 204,213 **** def test_illegal_declarations(self): ! s = 'abcdef' ! self._run_check(s, [ ! ("data", "abc"), ! ("unknown decl", 'spacer type="block" height="25"'), ! ("data", "def"), ! ]) def test_starttag_end_boundary(self): --- 204,208 ---- def test_illegal_declarations(self): ! self._parse_error('') def test_starttag_end_boundary(self): From fdrake@users.sourceforge.net Tue Sep 4 17:26:05 2001 From: fdrake@users.sourceforge.net (Fred L. Drake) Date: Tue, 04 Sep 2001 09:26:05 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib HTMLParser.py,1.6,1.7 Message-ID: Update of /cvsroot/python/python/dist/src/Lib In directory usw-pr-cvs1:/tmp/cvs-serv17166 Modified Files: HTMLParser.py Log Message: HTMLParser is allowed to be more strict than sgmllib, so let's not change their basic behavior: When parsing something that cannot possibly be valid in either HTML or XHTML, raise an exception. Index: HTMLParser.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/HTMLParser.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** HTMLParser.py 2001/09/04 15:10:16 1.6 --- HTMLParser.py 2001/09/04 16:26:03 1.7 *************** *** 270,275 **** # in practice, this should look like: ((name|stringlit) S*)+ '>' n = len(rawdata) ! decltype = None ! extrachars = "" while j < n: c = rawdata[j] --- 270,279 ---- # in practice, this should look like: ((name|stringlit) S*)+ '>' n = len(rawdata) ! decltype, j = self.scan_name(j, i) ! if j < 0: ! return j ! if decltype.lower() != "doctype": ! raise HTMLParseError("unknown declaration: '%s'" % decltype, ! self.getpos()) while j < n: c = rawdata[j] *************** *** 277,284 **** # end of declaration syntax data = rawdata[i+2:j] ! if decltype == "doctype": ! self.handle_decl(data) ! else: ! self.unknown_decl(data) return j + 1 if c in "\"'": --- 281,285 ---- # end of declaration syntax data = rawdata[i+2:j] ! self.handle_decl(data) return j + 1 if c in "\"'": *************** *** 288,315 **** j = m.end() elif c in "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ": ! m = declname.match(rawdata, j) ! if not m: ! return -1 # incomplete ! j = m.end() ! if decltype is None: ! decltype = m.group(0).rstrip().lower() ! if decltype != "doctype": ! extrachars = "=" elif c == "[" and decltype == "doctype": j = self.parse_doctype_subset(j + 1, i) - if j < 0: - return j - elif c in extrachars: - j = j + 1 - while j < n and rawdata[j] in string.whitespace: - j = j + 1 - if j == n: - # end of buffer while in declaration - return -1 else: raise HTMLParseError( "unexpected char in declaration: %s" % `rawdata[j]`, self.getpos()) ! decltype = decltype or '' return -1 # incomplete --- 289,301 ---- j = m.end() elif c in "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ": ! name, j = self.scan_name(j, i) elif c == "[" and decltype == "doctype": j = self.parse_doctype_subset(j + 1, i) else: raise HTMLParseError( "unexpected char in declaration: %s" % `rawdata[j]`, self.getpos()) ! if j < 0: ! return j return -1 # incomplete *************** *** 360,368 **** # end of buffer; incomplete return -1 ! m = declname.match(rawdata, j + 1) ! s = m.group() ! if s == rawdata[j+1:]: ! return -1 ! j = j + 1 + len(s.rstrip()) if rawdata[j] == ";": j = j + 1 --- 346,352 ---- # end of buffer; incomplete return -1 ! s, j = self.scan_name(j + 1, declstartpos) ! if j < 0: ! return j if rawdata[j] == ";": j = j + 1 *************** *** 384,389 **** else: self.updatepos(declstartpos, j) ! raise HTMLParseError("unexpected char in internal subset", ! self.getpos()) # end of buffer reached return -1 --- 368,374 ---- else: self.updatepos(declstartpos, j) ! raise HTMLParseError( ! "unexpected char %s in internal subset" % `c`, ! self.getpos()) # end of buffer reached return -1 From fdrake@users.sourceforge.net Tue Sep 4 19:18:38 2001 From: fdrake@users.sourceforge.net (Fred L. Drake) Date: Tue, 04 Sep 2001 11:18:38 -0700 Subject: [Python-checkins] CVS: python/dist/src/Doc/lib libsys.tex,1.51,1.52 Message-ID: Update of /cvsroot/python/python/dist/src/Doc/lib In directory usw-pr-cvs1:/tmp/cvs-serv16527/lib Modified Files: libsys.tex Log Message: Added documentation for sys.maxunicode and sys.warnoptions. Fixed a markup error which caused an em dash to be presented as a minus sign. This closes SF bug #458350. Index: libsys.tex =================================================================== RCS file: /cvsroot/python/python/dist/src/Doc/lib/libsys.tex,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -d -r1.51 -r1.52 *** libsys.tex 2001/07/26 13:41:05 1.51 --- libsys.tex 2001/09/04 18:18:36 1.52 *************** *** 257,264 **** The largest positive integer supported by Python's regular integer type. This is at least 2**31-1. The largest negative integer is ! \code{-maxint-1} -- the asymmetry results from the use of 2's complement binary arithmetic. \end{datadesc} \begin{datadesc}{modules} This is a dictionary that maps module names to modules which have --- 257,271 ---- The largest positive integer supported by Python's regular integer type. This is at least 2**31-1. The largest negative integer is ! \code{-maxint-1} --- the asymmetry results from the use of 2's complement binary arithmetic. \end{datadesc} + \begin{datadesc}{maxunicode} + An integer giving the largest supported code point for a Unicode + character. The value of this depends on the configuration option + that specifies whether Unicode characters are stored as UCS-2 or + UCS-4. + \end{datadesc} + \begin{datadesc}{modules} This is a dictionary that maps module names to modules which have *************** *** 449,452 **** --- 456,465 ---- 'final', 0)}. \versionadded{2.0} + \end{datadesc} + + \begin{datadesc}{warnoptions} + This is an implementation detail of the warnings framework; do not + modify this value. Refer to the \refmodule{warnings} module for + more information on the warnings framework. \end{datadesc} From fdrake@users.sourceforge.net Tue Sep 4 19:26:29 2001 From: fdrake@users.sourceforge.net (Fred L. Drake) Date: Tue, 04 Sep 2001 11:26:29 -0700 Subject: [Python-checkins] CVS: python/dist/src/Doc/lib libshutil.tex,1.7,1.8 Message-ID: Update of /cvsroot/python/python/dist/src/Doc/lib In directory usw-pr-cvs1:/tmp/cvs-serv18232/lib Modified Files: libshutil.tex Log Message: Add more detail to the descriptions of the shutil functions. This closes SF bug #458223. Index: libshutil.tex =================================================================== RCS file: /cvsroot/python/python/dist/src/Doc/lib/libshutil.tex,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** libshutil.tex 2001/03/02 16:46:42 1.7 --- libshutil.tex 2001/09/04 18:26:27 1.8 *************** *** 22,26 **** Copy the contents of the file named \var{src} to a file named \var{dst}. If \var{dst} exists, it will be replaced, otherwise it ! will be created. \end{funcdesc} --- 22,28 ---- Copy the contents of the file named \var{src} to a file named \var{dst}. If \var{dst} exists, it will be replaced, otherwise it ! will be created. Special files such as character or block devices ! and pipes cannot not be copied with this function. \var{src} and ! \var{dst} are path names given as strings. \end{funcdesc} *************** *** 36,40 **** \begin{funcdesc}{copymode}{src, dst} Copy the permission bits from \var{src} to \var{dst}. The file ! contents, owner, and group are unaffected. \end{funcdesc} --- 38,43 ---- \begin{funcdesc}{copymode}{src, dst} Copy the permission bits from \var{src} to \var{dst}. The file ! contents, owner, and group are unaffected. \var{src} and \var{dst} ! are path names given as strings. \end{funcdesc} *************** *** 42,46 **** Copy the permission bits, last access time, and last modification time from \var{src} to \var{dst}. The file contents, owner, and ! group are unaffected. \end{funcdesc} --- 45,50 ---- Copy the permission bits, last access time, and last modification time from \var{src} to \var{dst}. The file contents, owner, and ! group are unaffected. \var{src} and \var{dst} are path names given ! as strings. \end{funcdesc} *************** *** 49,53 **** \var{dst} is a directory, a file with the same basename as \var{src} is created (or overwritten) in the directory specified. Permission ! bits are copied. \end{funcdesc} --- 53,58 ---- \var{dst} is a directory, a file with the same basename as \var{src} is created (or overwritten) in the directory specified. Permission ! bits are copied. \var{src} and \var{dst} are path names given as ! strings. \end{funcdesc} From fdrake@users.sourceforge.net Tue Sep 4 19:39:47 2001 From: fdrake@users.sourceforge.net (Fred L. Drake) Date: Tue, 04 Sep 2001 11:39:47 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib imputil.py,1.21,1.22 Message-ID: Update of /cvsroot/python/python/dist/src/Lib In directory usw-pr-cvs1:/tmp/cvs-serv21330 Modified Files: imputil.py Log Message: Added docstring by Neal Norwitz. This closes SF bug #450979. Index: imputil.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/imputil.py,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** imputil.py 2001/07/28 20:33:41 1.21 --- imputil.py 2001/09/04 18:39:45 1.22 *************** *** 1,7 **** ! # ! # imputil.py: import utilities ! # ! ### docco needed here and in Docs/ ... # note: avoid importing non-builtin modules --- 1,13 ---- ! """ ! Import utilities ! Exported classes: ! ImportManager Manage the import process ! ! Importer Base class for replacing standard import functions ! BuiltinImporter Emulate the import mechanism for builtin and frozen modules ! ! DynLoadSuffixImporter ! """ # note: avoid importing non-builtin modules From fdrake@users.sourceforge.net Tue Sep 4 19:55:05 2001 From: fdrake@users.sourceforge.net (Fred L. Drake) Date: Tue, 04 Sep 2001 11:55:05 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib xmlrpclib.py,1.4,1.5 Message-ID: Update of /cvsroot/python/python/dist/src/Lib In directory usw-pr-cvs1:/tmp/cvs-serv25002 Modified Files: xmlrpclib.py Log Message: Added docstring by Neal Norwitz. This closes SF bug #450981. Index: xmlrpclib.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/xmlrpclib.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** xmlrpclib.py 2001/08/23 20:13:08 1.4 --- xmlrpclib.py 2001/09/04 18:55:03 1.5 *************** *** 3,17 **** # $Id$ # - # an XML-RPC client interface for Python. - # - # the marshalling and response parser code can also be used to - # implement XML-RPC servers. - # - # Notes: - # this version is designed to work with Python 1.5.2 or newer. - # unicode encoding support requires at least Python 1.6. - # experimental HTTPS requires Python 2.0 built with SSL sockets. - # expat parser support requires Python 2.0 with pyexpat support. - # # History: # 1999-01-14 fl Created --- 3,6 ---- *************** *** 88,91 **** --- 77,135 ---- # TODO: memo problem (see HP's mail) + """ + An XML-RPC client interface for Python. + + The marshalling and response parser code can also be used to + implement XML-RPC servers. + + Notes: + This version is designed to work with Python 1.5.2 or newer. + Unicode encoding support requires at least Python 1.6. + Experimental HTTPS requires Python 2.0 built with SSL sockets. + Expat parser support requires Python 2.0 with pyexpat support. + + Exported exceptions: + + Error Base class for client errors + ProtocolError Indicates an HTTP protocol error + ResponseError Indicates a broken response package + Fault Indicates a XML-RPC fault package + + Exported classes: + + Boolean boolean wrapper to generate a "boolean" XML-RPC value + DateTime dateTime wrapper for an ISO 8601 string or time tuple or + localtime integer value to generate a "dateTime.iso8601" + XML-RPC value + Binary binary data wrapper + + SlowParser Slow but safe standard parser + Marshaller Generate an XML-RPC params chunk from a Python data structure + Unmarshaller Unmarshal an XML-RPC response from incoming XML event message + + Transport Handles an HTTP transaction to an XML-RPC server + SafeTransport Handles an HTTPS transaction to an XML-RPC server + ServerProxy Connect to a server through a proxy + Server Same as ServerProxy + + Exported constants: + + True + False + + Exported functions: + + boolean Convert any Python value to an XML-RPC boolean + datetime Convert value to an XML-RPC datetime + binary Convert value to an XML-RPC binary value + getparser Create instance of the fastest available parser & attach + to an unmarshalling object + dumps Convert an argument tuple or a Fault instance to an XML-RPC + request (or response, if the methodresponse option is used). + loads Convert an XML-RPC packet to unmarshalled data plus a method + name (None if not present). + + """ + import re, string, time, operator import urllib, xmllib *************** *** 121,129 **** class Error(Exception): ! # base class for client errors pass class ProtocolError(Error): ! # indicates an HTTP protocol error def __init__(self, url, errcode, errmsg, headers): self.url = url --- 165,173 ---- class Error(Exception): ! """Base class for client errors.""" pass class ProtocolError(Error): ! """Indicates an HTTP protocol error.""" def __init__(self, url, errcode, errmsg, headers): self.url = url *************** *** 138,146 **** class ResponseError(Error): ! # indicates a broken response package pass class Fault(Error): ! # indicates a XML-RPC fault package def __init__(self, faultCode, faultString, **extra): self.faultCode = faultCode --- 182,190 ---- class ResponseError(Error): ! """Indicates a broken response package""" pass class Fault(Error): ! """indicates a XML-RPC fault package""" def __init__(self, faultCode, faultString, **extra): self.faultCode = faultCode *************** *** 155,162 **** # Special values - # boolean wrapper - # use True or False to generate a "boolean" XML-RPC value class Boolean: def __init__(self, value = 0): --- 199,208 ---- # Special values class Boolean: + """Boolean-value wrapper. + + Use True or False to generate a "boolean" XML-RPC value. + """ def __init__(self, value = 0): *************** *** 186,190 **** def boolean(value, truefalse=(False, True)): ! # convert any Python value to XML-RPC boolean return truefalse[operator.truth(value)] --- 232,236 ---- def boolean(value, truefalse=(False, True)): ! """Convert any Python value to XML-RPC boolean.""" return truefalse[operator.truth(value)] *************** *** 195,198 **** --- 241,247 ---- class DateTime: + """DataTime wrapper for an ISO 8601 string or time tuple or + localtime integer value to generate a 'dateTime.iso8601' XML-RPC + value.""" def __init__(self, value=0): *************** *** 226,233 **** return value - # - # binary data wrapper class Binary: def __init__(self, data=None): --- 275,281 ---- return value class Binary: + """Wrapper for binary data.""" def __init__(self, data=None): *************** *** 345,351 **** class SlowParser(xmllib.XMLParser): ! # slow but safe standard parser, based on the XML parser in ! # Python's standard library. this is about 10 times slower ! # than sgmlop, on roundtrip testing. def __init__(self, target): self.handle_xml = target.xml --- 393,401 ---- class SlowParser(xmllib.XMLParser): ! """XML parser using xmllib.XMLParser. ! ! This is about 10 times slower than sgmlop on roundtrip testing. ! """ ! def __init__(self, target): self.handle_xml = target.xml *************** *** 360,370 **** class Marshaller: ! """Generate an XML-RPC params chunk from a Python data structure""" ! # USAGE: create a marshaller instance for each set of parameters, ! # and use "dumps" to convert your data (represented as a tuple) to ! # a XML-RPC params chunk. to write a fault response, pass a Fault ! # instance instead. you may prefer to use the "dumps" convenience ! # function for this purpose (see below). # by the way, if you don't understand what's going on in here, --- 410,421 ---- class Marshaller: ! """Generate an XML-RPC params chunk from a Python data structure. ! Create a marshaller instance for each set of parameters, and use ! "dumps" method to convert your data (represented as a tuple) to a ! XML-RPC params chunk. to write a fault response, pass a Fault ! instance instead. You may prefer to use the "dumps" convenience ! function for this purpose (see below). ! """ # by the way, if you don't understand what's going on in here, *************** *** 470,480 **** class Unmarshaller: ! ! # unmarshal an XML-RPC response, based on incoming XML event ! # messages (start, data, end). call close to get the resulting ! # data structure ! # note that this reader is fairly tolerant, and gladly accepts ! # bogus XML-RPC data without complaining (but not bogus XML). # and again, if you don't understand what's going on in here, --- 521,531 ---- class Unmarshaller: ! """Unmarshal an XML-RPC response, based on incoming XML event ! messages (start, data, end). Call close() to get the resulting ! data structure. ! Note that this reader is fairly tolerant, and gladly accepts ! bogus XML-RPC data without complaining (but not bogus XML). ! """ # and again, if you don't understand what's going on in here, From nascheme@users.sourceforge.net Tue Sep 4 20:03:38 2001 From: nascheme@users.sourceforge.net (Neil Schemenauer) Date: Tue, 04 Sep 2001 12:03:38 -0700 Subject: [Python-checkins] CVS: python/dist/src/Python ceval.c,2.272,2.273 Message-ID: Update of /cvsroot/python/python/dist/src/Python In directory usw-pr-cvs1:/tmp/cvs-serv27436/Python Modified Files: ceval.c Log Message: Move call_trace(..., PyTrace_CALL, ...) call to top of eval_frame. That way it's called each time a generator is resumed. The tracing of normal functions should be unaffected by this change. Index: ceval.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Python/ceval.c,v retrieving revision 2.272 retrieving revision 2.273 diff -C2 -d -r2.272 -r2.273 *** ceval.c 2001/08/30 16:06:23 2.272 --- ceval.c 2001/09/04 19:03:35 2.273 *************** *** 589,592 **** --- 589,627 ---- f->f_stacktop = NULL; + if (tstate->use_tracing) { + if (tstate->c_tracefunc != NULL) { + /* tstate->c_tracefunc, if defined, is a + function that will be called on *every* entry + to a code block. Its return value, if not + None, is a function that will be called at + the start of each executed line of code. + (Actually, the function must return itself + in order to continue tracing.) The trace + functions are called with three arguments: + a pointer to the current frame, a string + indicating why the function is called, and + an argument which depends on the situation. + The global trace function is also called + whenever an exception is detected. */ + if (call_trace(tstate->c_tracefunc, tstate->c_traceobj, + f, PyTrace_CALL, Py_None)) { + /* XXX Need way to compute arguments?? */ + /* Trace function raised an error */ + return NULL; + } + } + if (tstate->c_profilefunc != NULL) { + /* Similar for c_profilefunc, except it needn't + return itself and isn't called for "line" events */ + if (call_trace(tstate->c_profilefunc, + tstate->c_profileobj, + f, PyTrace_CALL, Py_None)) { + /* XXX Need way to compute arguments?? */ + /* Profile function raised an error */ + return NULL; + } + } + } + #ifdef LLTRACE lltrace = PyDict_GetItemString(f->f_globals,"__lltrace__") != NULL; *************** *** 2494,2532 **** Py_INCREF(o); freevars[f->f_ncells + i] = o; - } - } - - if (tstate->use_tracing) { - if (tstate->c_tracefunc != NULL) { - /* tstate->c_tracefunc, if defined, is a - function that will be called on *every* entry - to a code block. Its return value, if not - None, is a function that will be called at - the start of each executed line of code. - (Actually, the function must return itself - in order to continue tracing.) The trace - functions are called with three arguments: - a pointer to the current frame, a string - indicating why the function is called, and - an argument which depends on the situation. - The global trace function is also called - whenever an exception is detected. */ - if (call_trace(tstate->c_tracefunc, tstate->c_traceobj, - f, PyTrace_CALL, Py_None)) { - /* XXX Need way to compute arguments?? */ - /* Trace function raised an error */ - goto fail; - } - } - if (tstate->c_profilefunc != NULL) { - /* Similar for c_profilefunc, except it needn't - return itself and isn't called for "line" events */ - if (call_trace(tstate->c_profilefunc, - tstate->c_profileobj, - f, PyTrace_CALL, Py_None)) { - /* XXX Need way to compute arguments?? */ - /* Profile function raised an error */ - goto fail; - } } } --- 2529,2532 ---- From fdrake@users.sourceforge.net Tue Sep 4 20:10:22 2001 From: fdrake@users.sourceforge.net (Fred L. Drake) Date: Tue, 04 Sep 2001 12:10:22 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib re.py,1.40,1.41 sre.py,1.34,1.35 sre_compile.py,1.40,1.41 sre_constants.py,1.29,1.30 sre_parse.py,1.46,1.47 Message-ID: Update of /cvsroot/python/python/dist/src/Lib In directory usw-pr-cvs1:/tmp/cvs-serv29424 Modified Files: re.py sre.py sre_compile.py sre_constants.py sre_parse.py Log Message: Added docstrings by Neal Norwitz. This closes SF bug #450980. Index: re.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/re.py,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -d -r1.40 -r1.41 *** re.py 2001/02/15 22:15:13 1.40 --- re.py 2001/09/04 19:10:20 1.41 *************** *** 1,5 **** ! # ! # Minimal "re" compatibility wrapper ! # # If your regexps don't work well under 2.0b1, you can switch # to the old engine ("pre") down below. --- 1,4 ---- ! """Minimal "re" compatibility wrapper""" ! # If your regexps don't work well under 2.0b1, you can switch # to the old engine ("pre") down below. Index: sre.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/sre.py,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** sre.py 2001/08/10 14:56:54 1.34 --- sre.py 2001/09/04 19:10:20 1.35 *************** *** 15,18 **** --- 15,99 ---- # + """Support for regular expressions (RE). + + This module provides regular expression matching operations similar to + those found in Perl. It's 8-bit clean: the strings being processed may + contain both null bytes and characters whose high bit is set. Regular + expression pattern strings may not contain null bytes, but can specify + the null byte using the \\number notation. Characters with the high + bit set may be included. + + Regular expressions can contain both special and ordinary + characters. Most ordinary characters, like "A", "a", or "0", are the + simplest regular expressions; they simply match themselves. You can + concatenate ordinary characters, so last matches the string 'last'. + + The special characters are: + "." Matches any character except a newline. + "^" Matches the start of the string. + "$" Matches the end of the string. + "*" Matches 0 or more (greedy) repetitions of the preceding RE. + Greedy means that it will match as many repetitions as possible. + "+" Matches 1 or more (greedy) repetitions of the preceding RE. + "?" Matches 0 or 1 (greedy) of the preceding RE. + *?,+?,?? Non-greedy versions of the previous three special characters. + {m,n} Matches from m to n repetitions of the preceding RE. + {m,n}? Non-greedy version of the above. + "\\" Either escapes special characters or signals a special sequence. + [] Indicates a set of characters. + A "^" as the first character indicates a complementing set. + "|" A|B, creates an RE that will match either A or B. + (...) Matches the RE inside the parentheses. + The contents can be retrieved or matched later in the string. + (?iLmsx) Set the I, L, M, S, or X flag for the RE. + (?:...) Non-grouping version of regular parentheses. + (?P...) The substring matched by the group is accessible by name. + (?P=name) Matches the text matched earlier by the group named name. + (?#...) A comment; ignored. + (?=...) Matches if ... matches next, but doesn't consume the string. + (?!...) Matches if ... doesn't match next. + + The special sequences consist of "\\" and a character from the list + below. If the ordinary character is not on the list, then the + resulting RE will match the second character. + \\number Matches the contents of the group of the same number. + \\A Matches only at the start of the string. + \\Z Matches only at the end of the string. + \\b Matches the empty string, but only at the start or end of a word. + \\B Matches the empty string, but not at the start or end of a word. + \\d Matches any decimal digit; equivalent to the set [0-9]. + \\D Matches any non-digit character; equivalent to the set [^0-9]. + \\s Matches any whitespace character; equivalent to [ \\t\\n\\r\\f\\v]. + \\S Matches any non-whitespace character; equiv. to [^ \\t\\n\\r\\f\\v]. + \\w Matches any alphanumeric character; equivalent to [a-zA-Z0-9_]. + With LOCALE, it will match the set [0-9_] plus characters defined + as letters for the current locale. + \\W Matches the complement of \\w. + \\\\ Matches a literal backslash. + + This module exports the following functions: + match Match a regular expression pattern to the beginning of a string. + search Search a string for the presence of a pattern. + sub Substitute occurrences of a pattern found in a string. + subn Same as sub, but also return the number of substitutions made. + split Split a string by the occurrences of a pattern. + findall Find all occurrences of a pattern in a string. + compile Compile a pattern into a RegexObject. + purge Clear the regular expression cache. + template Compile a template pattern, returning a pattern object. + escape Backslash all non-alphanumerics in a string. + + Some of the functions in this module takes flags as optional parameters: + I IGNORECASE Perform case-insensitive matching. + L LOCALE Make \w, \W, \b, \B, dependent on the current locale. + M MULTILINE "^" matches the beginning of lines as well as the string. + "$" matches the end of lines as well as the string. + S DOTALL "." matches any character at all, including the newline. + X VERBOSE Ignore whitespace and comments for nicer looking RE's. + U UNICODE Use unicode locale. + + This module also defines an exception 'error'. + + """ import sre_compile import sre_parse Index: sre_compile.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/sre_compile.py,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -d -r1.40 -r1.41 *** sre_compile.py 2001/07/21 01:41:30 1.40 --- sre_compile.py 2001/09/04 19:10:20 1.41 *************** *** 9,12 **** --- 9,14 ---- # + """Internal support module for sre""" + import _sre,sys Index: sre_constants.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/sre_constants.py,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** sre_constants.py 2001/07/02 16:58:38 1.29 --- sre_constants.py 2001/09/04 19:10:20 1.30 *************** *** 10,13 **** --- 10,15 ---- # + """Internal support module for sre""" + # update when constants are added or removed Index: sre_parse.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/sre_parse.py,v retrieving revision 1.46 retrieving revision 1.47 diff -C2 -d -r1.46 -r1.47 *** sre_parse.py 2001/03/22 15:50:10 1.46 --- sre_parse.py 2001/09/04 19:10:20 1.47 *************** *** 9,12 **** --- 9,14 ---- # + """Internal support module for sre""" + # XXX: show string offset and offending character for all errors From gvanrossum@users.sourceforge.net Tue Sep 4 20:14:16 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Tue, 04 Sep 2001 12:14:16 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib base64.py,1.12,1.13 binhex.py,1.21,1.22 bisect.py,1.7,1.8 dumbdbm.py,1.12,1.13 inspect.py,1.19,1.20 quopri.py,1.14,1.15 repr.py,1.11,1.12 rfc822.py,1.62,1.63 wave.py,1.15,1.16 Message-ID: Update of /cvsroot/python/python/dist/src/Lib In directory usw-pr-cvs1:/tmp/cvs-serv30102 Modified Files: base64.py binhex.py bisect.py dumbdbm.py inspect.py quopri.py repr.py rfc822.py wave.py Log Message: The first batch of changes recommended by the fixdiv tool. These are mostly changes of / operators into //. Once or twice I did more or less than recommended. Index: base64.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/base64.py,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** base64.py 2001/06/07 18:56:13 1.12 --- base64.py 2001/09/04 19:14:13 1.13 *************** *** 10,14 **** MAXLINESIZE = 76 # Excluding the CRLF ! MAXBINSIZE = (MAXLINESIZE/4)*3 def encode(input, output): --- 10,14 ---- MAXLINESIZE = 76 # Excluding the CRLF ! MAXBINSIZE = (MAXLINESIZE//4)*3 def encode(input, output): Index: binhex.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/binhex.py,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** binhex.py 2001/08/01 18:17:23 1.21 --- binhex.py 2001/09/04 19:14:13 1.22 *************** *** 129,133 **** self.data = self.data + data datalen = len(self.data) ! todo = (datalen/3)*3 data = self.data[:todo] self.data = self.data[todo:] --- 129,133 ---- self.data = self.data + data datalen = len(self.data) ! todo = (datalen//3)*3 data = self.data[:todo] self.data = self.data[todo:] *************** *** 293,297 **** while wtd > 0: if self.eof: return decdata ! wtd = ((wtd+2)/3)*4 data = self.ifp.read(wtd) # --- 293,297 ---- while wtd > 0: if self.eof: return decdata ! wtd = ((wtd+2)//3)*4 data = self.ifp.read(wtd) # Index: bisect.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/bisect.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** bisect.py 2001/02/18 03:30:53 1.7 --- bisect.py 2001/09/04 19:14:13 1.8 *************** *** 13,17 **** hi = len(a) while lo < hi: ! mid = (lo+hi)/2 if x < a[mid]: hi = mid else: lo = mid+1 --- 13,17 ---- hi = len(a) while lo < hi: ! mid = (lo+hi)//2 if x < a[mid]: hi = mid else: lo = mid+1 *************** *** 34,38 **** hi = len(a) while lo < hi: ! mid = (lo+hi)/2 if x < a[mid]: hi = mid else: lo = mid+1 --- 34,38 ---- hi = len(a) while lo < hi: ! mid = (lo+hi)//2 if x < a[mid]: hi = mid else: lo = mid+1 *************** *** 53,57 **** hi = len(a) while lo < hi: ! mid = (lo+hi)/2 if a[mid] < x: lo = mid+1 else: hi = mid --- 53,57 ---- hi = len(a) while lo < hi: ! mid = (lo+hi)//2 if a[mid] < x: lo = mid+1 else: hi = mid *************** *** 73,77 **** hi = len(a) while lo < hi: ! mid = (lo+hi)/2 if a[mid] < x: lo = mid+1 else: hi = mid --- 73,77 ---- hi = len(a) while lo < hi: ! mid = (lo+hi)//2 if a[mid] < x: lo = mid+1 else: hi = mid Index: dumbdbm.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/dumbdbm.py,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** dumbdbm.py 2001/07/19 10:06:39 1.12 --- dumbdbm.py 2001/09/04 19:14:13 1.13 *************** *** 88,92 **** ## pos = ((pos + _BLOCKSIZE - 1) / _BLOCKSIZE) * _BLOCKSIZE ## f.seek(pos) ! npos = ((pos + _BLOCKSIZE - 1) / _BLOCKSIZE) * _BLOCKSIZE f.write('\0'*(npos-pos)) pos = npos --- 88,92 ---- ## pos = ((pos + _BLOCKSIZE - 1) / _BLOCKSIZE) * _BLOCKSIZE ## f.seek(pos) ! npos = ((pos + _BLOCKSIZE - 1) // _BLOCKSIZE) * _BLOCKSIZE f.write('\0'*(npos-pos)) pos = npos Index: inspect.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/inspect.py,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** inspect.py 2001/07/15 21:08:29 1.19 --- inspect.py 2001/09/04 19:14:13 1.20 *************** *** 591,595 **** lineno = getlineno(frame) if context > 0: ! start = lineno - 1 - context/2 try: lines, lnum = findsource(frame) --- 591,595 ---- lineno = getlineno(frame) if context > 0: ! start = lineno - 1 - context//2 try: lines, lnum = findsource(frame) Index: quopri.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/quopri.py,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** quopri.py 2001/07/02 04:57:30 1.14 --- quopri.py 2001/09/04 19:14:14 1.15 *************** *** 28,32 **** """Quote a single character.""" i = ord(c) ! return ESCAPE + HEX[i/16] + HEX[i%16] --- 28,32 ---- """Quote a single character.""" i = ord(c) ! return ESCAPE + HEX[i//16] + HEX[i%16] Index: repr.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/repr.py,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** repr.py 2001/08/09 18:56:27 1.11 --- repr.py 2001/09/04 19:14:14 1.12 *************** *** 66,70 **** s = `x[:self.maxstring]` if len(s) > self.maxstring: ! i = max(0, (self.maxstring-3)/2) j = max(0, self.maxstring-3-i) s = `x[:i] + x[len(x)-j:]` --- 66,70 ---- s = `x[:self.maxstring]` if len(s) > self.maxstring: ! i = max(0, (self.maxstring-3)//2) j = max(0, self.maxstring-3-i) s = `x[:i] + x[len(x)-j:]` *************** *** 74,78 **** s = `x` # XXX Hope this isn't too slow... if len(s) > self.maxlong: ! i = max(0, (self.maxlong-3)/2) j = max(0, self.maxlong-3-i) s = s[:i] + '...' + s[len(s)-j:] --- 74,78 ---- s = `x` # XXX Hope this isn't too slow... if len(s) > self.maxlong: ! i = max(0, (self.maxlong-3)//2) j = max(0, self.maxlong-3-i) s = s[:i] + '...' + s[len(s)-j:] *************** *** 87,91 **** hex(id(x))[2:] + '>' if len(s) > self.maxstring: ! i = max(0, (self.maxstring-3)/2) j = max(0, self.maxstring-3-i) s = s[:i] + '...' + s[len(s)-j:] --- 87,91 ---- hex(id(x))[2:] + '>' if len(s) > self.maxstring: ! i = max(0, (self.maxstring-3)//2) j = max(0, self.maxstring-3-i) s = s[:i] + '...' + s[len(s)-j:] Index: rfc822.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/rfc822.py,v retrieving revision 1.62 retrieving revision 1.63 diff -C2 -d -r1.62 -r1.63 *** rfc822.py 2001/09/04 06:37:28 1.62 --- rfc822.py 2001/09/04 19:14:14 1.63 *************** *** 928,932 **** else: tzsign = 1 ! tzoffset = tzsign * ( (tzoffset/100)*3600 + (tzoffset % 100)*60) tuple = (yy, mm, dd, thh, tmm, tss, 0, 0, 0, tzoffset) return tuple --- 928,932 ---- else: tzsign = 1 ! tzoffset = tzsign * ( (tzoffset//100)*3600 + (tzoffset % 100)*60) tuple = (yy, mm, dd, thh, tmm, tss, 0, 0, 0, tzoffset) return tuple Index: wave.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/wave.py,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** wave.py 2001/03/01 04:27:19 1.15 --- wave.py 2001/09/04 19:14:14 1.16 *************** *** 147,151 **** raise Error, 'data chunk before fmt chunk' self._data_chunk = chunk ! self._nframes = chunk.chunksize / self._framesize self._data_seek_needed = 0 break --- 147,151 ---- raise Error, 'data chunk before fmt chunk' self._data_chunk = chunk ! self._nframes = chunk.chunksize // self._framesize self._data_seek_needed = 0 break *************** *** 249,253 **** if self._convert and data: data = self._convert(data) ! self._soundpos = self._soundpos + len(data) / (self._nchannels * self._sampwidth) return data --- 249,253 ---- if self._convert and data: data = self._convert(data) ! self._soundpos = self._soundpos + len(data) // (self._nchannels * self._sampwidth) return data *************** *** 260,264 **** if wFormatTag == WAVE_FORMAT_PCM: sampwidth = struct.unpack(' Update of /cvsroot/python/python/dist/src/Lib/test In directory usw-pr-cvs1:/tmp/cvs-serv30102/test Modified Files: test_audioop.py test_augassign.py test_b1.py test_binascii.py test_binop.py test_compare.py test_long.py test_operator.py test_pty.py test_strftime.py Log Message: The first batch of changes recommended by the fixdiv tool. These are mostly changes of / operators into //. Once or twice I did more or less than recommended. Index: test_audioop.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_audioop.py,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** test_audioop.py 2001/01/17 21:51:35 1.9 --- test_audioop.py 2001/09/04 19:14:14 1.10 *************** *** 117,122 **** for d1 in data: for d2 in data: ! got = len(d1)/3 ! wtd = len(d2)/3 if len(audioop.lin2lin(d1, got, wtd)) != len(d2): return 0 --- 117,122 ---- for d1 in data: for d2 in data: ! got = len(d1)//3 ! wtd = len(d2)//3 if len(audioop.lin2lin(d1, got, wtd)) != len(d2): return 0 Index: test_augassign.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_augassign.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** test_augassign.py 2001/08/29 17:50:22 1.3 --- test_augassign.py 2001/09/04 19:14:14 1.4 *************** *** 6,10 **** x **= 2 x -= 8 ! x /= 2 x //= 1 x %= 12 --- 6,10 ---- x **= 2 x -= 8 ! x //= 2 x //= 1 x %= 12 *************** *** 20,25 **** x[0] **= 2 x[0] -= 8 - x[0] /= 2 x[0] //= 2 x[0] %= 12 x[0] &= 2 --- 20,25 ---- x[0] **= 2 x[0] -= 8 x[0] //= 2 + x[0] //= 2 x[0] %= 12 x[0] &= 2 *************** *** 34,38 **** x[0] **= 2 x[0] -= 8 ! x[0] /= 2 x[0] //= 1 x[0] %= 12 --- 34,38 ---- x[0] **= 2 x[0] -= 8 ! x[0] //= 2 x[0] //= 1 x[0] %= 12 Index: test_b1.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_b1.py,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** test_b1.py 2001/08/17 22:08:34 1.39 --- test_b1.py 2001/09/04 19:14:14 1.40 *************** *** 414,418 **** # Failed in all Linux builds. x = -1-sys.maxint ! if x >> 1 != x/2: raise TestFailed("x >> 1 != x/2 when x == -1-sys.maxint") --- 414,418 ---- # Failed in all Linux builds. x = -1-sys.maxint ! if x >> 1 != x//2: raise TestFailed("x >> 1 != x/2 when x == -1-sys.maxint") Index: test_binascii.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_binascii.py,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** test_binascii.py 2001/01/17 19:11:13 1.8 --- test_binascii.py 2001/09/04 19:14:14 1.9 *************** *** 55,62 **** def addnoise(line): noise = fillers ! ratio = len(line) / len(noise) res = "" while line and noise: ! if len(line) / len(noise) > ratio: c, line = line[0], line[1:] else: --- 55,62 ---- def addnoise(line): noise = fillers ! ratio = len(line) // len(noise) res = "" while line and noise: ! if len(line) // len(noise) > ratio: c, line = line[0], line[1:] else: Index: test_binop.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_binop.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** test_binop.py 2001/08/24 18:52:50 1.3 --- test_binop.py 2001/09/04 19:14:14 1.4 *************** *** 43,48 **** raise ZeroDivisionError, "zero denominator" g = gcd(den, num) ! self.__num = long(num/g) ! self.__den = long(den/g) def _get_num(self): --- 43,48 ---- raise ZeroDivisionError, "zero denominator" g = gcd(den, num) ! self.__num = long(num//g) ! self.__den = long(den//g) def _get_num(self): Index: test_compare.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_compare.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** test_compare.py 2001/08/16 16:56:16 1.5 --- test_compare.py 2001/09/04 19:14:14 1.6 *************** *** 48,52 **** L = [] for i in range(10): ! L.insert(len(L)/2, Empty()) for a in L: for b in L: --- 48,52 ---- L = [] for i in range(10): ! L.insert(len(L)//2, Empty()) for a in L: for b in L: Index: test_long.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_long.py,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** test_long.py 2001/09/04 06:37:28 1.12 --- test_long.py 2001/09/04 19:14:14 1.13 *************** *** 77,81 **** def test_division_2(x, y): q, r = divmod(x, y) ! q2, r2 = x/y, x%y pab, pba = x*y, y*x check(pab == pba, "multiplication does not commute for", x, y) --- 77,81 ---- def test_division_2(x, y): q, r = divmod(x, y) ! q2, r2 = x//y, x%y pab, pba = x*y, y*x check(pab == pba, "multiplication does not commute for", x, y) *************** *** 118,122 **** p2 = 2L ** n check(x << n >> n == x, "x << n >> n != x for", x, n) ! check(x / p2 == x >> n, "x / p2 != x >> n for x n p2", x, n, p2) check(x * p2 == x << n, "x * p2 != x << n for x n p2", x, n, p2) check(x & -p2 == x >> n << n == x & ~(p2 - 1), --- 118,122 ---- p2 = 2L ** n check(x << n >> n == x, "x << n >> n != x for", x, n) ! check(x // p2 == x >> n, "x // p2 != x >> n for x n p2", x, n, p2) check(x * p2 == x << n, "x * p2 != x << n for x n p2", x, n, p2) check(x & -p2 == x >> n << n == x & ~(p2 - 1), *************** *** 162,166 **** y = getran(leny) test_bitop_identities_2(x, y) ! test_bitop_identities_3(x, y, getran((lenx + leny)/2)) # ------------------------------------------------- hex oct repr str atol --- 162,166 ---- y = getran(leny) test_bitop_identities_2(x, y) ! test_bitop_identities_3(x, y, getran((lenx + leny)//2)) # ------------------------------------------------- hex oct repr str atol *************** *** 297,302 **** if y: ! expected = longx / longy ! got = x / y checkit(x, '/', y) --- 297,302 ---- if y: ! expected = longx // longy ! got = x // y checkit(x, '/', y) Index: test_operator.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_operator.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** test_operator.py 2001/08/11 03:21:35 1.6 --- test_operator.py 2001/09/04 19:14:14 1.7 *************** *** 83,87 **** def test_div(self): ! self.failUnless(operator.div(5, 2) == 2) def test_floordiv(self): --- 83,87 ---- def test_div(self): ! self.failUnless(operator.floordiv(5, 2) == 2) def test_floordiv(self): Index: test_pty.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_pty.py,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** test_pty.py 2001/03/29 04:36:09 1.12 --- test_pty.py 2001/09/04 19:14:14 1.13 *************** *** 87,91 **** debug("Waiting for child (%d) to finish."%pid) (pid, status) = os.waitpid(pid, 0) ! res = status / 256 debug("Child (%d) exited with status %d (%d)."%(pid, res, status)) if res == 1: --- 87,91 ---- debug("Waiting for child (%d) to finish."%pid) (pid, status) = os.waitpid(pid, 0) ! res = status >> 8 debug("Child (%d) exited with status %d (%d)."%(pid, res, status)) if res == 1: Index: test_strftime.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_strftime.py,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** test_strftime.py 2001/03/23 20:24:07 1.25 --- test_strftime.py 2001/09/04 19:14:14 1.26 *************** *** 65,72 **** ('%p', ampm, 'AM or PM as appropriate'), ('%S', '%02d' % now[5], 'seconds of current time (00-60)'), ! ('%U', '%02d' % ((now[7] + jan1[6])/7), 'week number of the year (Sun 1st)'), ('%w', '0?%d' % ((1+now[6]) % 7), 'weekday as a number (Sun 1st)'), ! ('%W', '%02d' % ((now[7] + (jan1[6] - 1)%7)/7), 'week number of the year (Mon 1st)'), # %x see below --- 65,72 ---- ('%p', ampm, 'AM or PM as appropriate'), ('%S', '%02d' % now[5], 'seconds of current time (00-60)'), ! ('%U', '%02d' % ((now[7] + jan1[6])//7), 'week number of the year (Sun 1st)'), ('%w', '0?%d' % ((1+now[6]) % 7), 'weekday as a number (Sun 1st)'), ! ('%W', '%02d' % ((now[7] + (jan1[6] - 1)%7)//7), 'week number of the year (Mon 1st)'), # %x see below From fdrake@users.sourceforge.net Tue Sep 4 20:20:08 2001 From: fdrake@users.sourceforge.net (Fred L. Drake) Date: Tue, 04 Sep 2001 12:20:08 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib sre.py,1.35,1.36 Message-ID: Update of /cvsroot/python/python/dist/src/Lib In directory usw-pr-cvs1:/tmp/cvs-serv32197 Modified Files: sre.py Log Message: Convert docstring to "raw" string. Index: sre.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/sre.py,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** sre.py 2001/09/04 19:10:20 1.35 --- sre.py 2001/09/04 19:20:06 1.36 *************** *** 15,19 **** # ! """Support for regular expressions (RE). This module provides regular expression matching operations similar to --- 15,19 ---- # ! r"""Support for regular expressions (RE). This module provides regular expression matching operations similar to *************** *** 57,74 **** below. If the ordinary character is not on the list, then the resulting RE will match the second character. ! \\number Matches the contents of the group of the same number. ! \\A Matches only at the start of the string. ! \\Z Matches only at the end of the string. ! \\b Matches the empty string, but only at the start or end of a word. ! \\B Matches the empty string, but not at the start or end of a word. ! \\d Matches any decimal digit; equivalent to the set [0-9]. ! \\D Matches any non-digit character; equivalent to the set [^0-9]. ! \\s Matches any whitespace character; equivalent to [ \\t\\n\\r\\f\\v]. ! \\S Matches any non-whitespace character; equiv. to [^ \\t\\n\\r\\f\\v]. ! \\w Matches any alphanumeric character; equivalent to [a-zA-Z0-9_]. With LOCALE, it will match the set [0-9_] plus characters defined as letters for the current locale. ! \\W Matches the complement of \\w. ! \\\\ Matches a literal backslash. This module exports the following functions: --- 57,74 ---- below. If the ordinary character is not on the list, then the resulting RE will match the second character. ! \number Matches the contents of the group of the same number. ! \A Matches only at the start of the string. ! \Z Matches only at the end of the string. ! \b Matches the empty string, but only at the start or end of a word. ! \B Matches the empty string, but not at the start or end of a word. ! \d Matches any decimal digit; equivalent to the set [0-9]. ! \D Matches any non-digit character; equivalent to the set [^0-9]. ! \s Matches any whitespace character; equivalent to [ \t\n\r\f\v]. ! \S Matches any non-whitespace character; equiv. to [^ \t\n\r\f\v]. ! \w Matches any alphanumeric character; equivalent to [a-zA-Z0-9_]. With LOCALE, it will match the set [0-9_] plus characters defined as letters for the current locale. ! \W Matches the complement of \w. ! \\ Matches a literal backslash. This module exports the following functions: From akuchling@users.sourceforge.net Tue Sep 4 20:34:39 2001 From: akuchling@users.sourceforge.net (A.M. Kuchling) Date: Tue, 04 Sep 2001 12:34:39 -0700 Subject: [Python-checkins] CVS: python/dist/src/Modules _cursesmodule.c,2.54,2.55 Message-ID: Update of /cvsroot/python/python/dist/src/Modules In directory usw-pr-cvs1:/tmp/cvs-serv3995 Modified Files: _cursesmodule.c Log Message: [Bug #457654] bkgd() used a hard-coded A_NORMAL attribute, when it should have used the attribute argument provided as a parameter Index: _cursesmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Modules/_cursesmodule.c,v retrieving revision 2.54 retrieving revision 2.55 diff -C2 -d -r2.54 -r2.55 *** _cursesmodule.c 2001/07/19 20:48:32 2.54 --- _cursesmodule.c 2001/09/04 19:34:32 2.55 *************** *** 525,529 **** } ! return PyCursesCheckERR(wbkgd(self->win, bkgd | A_NORMAL), "bkgd"); } --- 525,529 ---- } ! return PyCursesCheckERR(wbkgd(self->win, bkgd | attr), "bkgd"); } From fdrake@users.sourceforge.net Tue Sep 4 20:43:28 2001 From: fdrake@users.sourceforge.net (Fred L. Drake) Date: Tue, 04 Sep 2001 12:43:28 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib pprint.py,1.14,1.15 Message-ID: Update of /cvsroot/python/python/dist/src/Lib In directory usw-pr-cvs1:/tmp/cvs-serv6780 Modified Files: pprint.py Log Message: Make pprint more locale-friendly; patch contributed by Denis S. Otkidach. This closes SF patch #451538. Index: pprint.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/pprint.py,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** pprint.py 2001/05/14 18:39:41 1.14 --- pprint.py 2001/09/04 19:43:26 1.15 *************** *** 35,39 **** """ ! from types import DictType, ListType, TupleType try: --- 35,40 ---- """ ! from types import DictType, ListType, TupleType, StringType ! import sys try: *************** *** 96,100 **** self.__stream = stream else: - import sys self.__stream = sys.stdout --- 97,100 ---- *************** *** 188,197 **** # Return triple (repr_string, isreadable, isrecursive). def _safe_repr(object, context, maxlevels=None, level=0): level += 1 typ = type(object) ! if not (typ in (DictType, ListType, TupleType) and object): rep = `object` return rep, (rep and (rep[0] != '<')), 0 if context.has_key(id(object)): --- 188,215 ---- # Return triple (repr_string, isreadable, isrecursive). + _have_module = sys.modules.has_key + def _safe_repr(object, context, maxlevels=None, level=0): level += 1 typ = type(object) ! if not (typ in (DictType, ListType, TupleType, StringType) and object): rep = `object` return rep, (rep and (rep[0] != '<')), 0 + elif typ is StringType: + if not _have_module('locale'): + return `object`, 1, 0 + if "'" in object and '"' not in object: + closure = '"' + quotes = {'"': '\\"'} + else: + closure = "'" + quotes = {"'": "\\'"} + sio = StringIO() + for char in object: + if char.isalpha(): + sio.write(char) + else: + sio.write(quotes.get(char, `char`[1:-1])) + return closure + sio.getvalue() + closure, 1, 0 if context.has_key(id(object)): From tim_one@users.sourceforge.net Tue Sep 4 20:48:03 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Tue, 04 Sep 2001 12:48:03 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/test test_long.py,1.13,1.14 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/test In directory usw-pr-cvs1:/tmp/cvs-serv7479/python/Lib/test Modified Files: test_long.py Log Message: Revert one of the "division fixes" in test_long. It intends to try both "/" and "//", and doesn't really care what they *mean*, just that both are tried (and that, whatever they mean, they act similarly for int and long arguments). Index: test_long.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_long.py,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** test_long.py 2001/09/04 19:14:14 1.13 --- test_long.py 2001/09/04 19:48:01 1.14 *************** *** 297,302 **** if y: ! expected = longx // longy ! got = x // y checkit(x, '/', y) --- 297,302 ---- if y: ! expected = longx / longy ! got = x / y checkit(x, '/', y) From akuchling@users.sourceforge.net Tue Sep 4 21:06:45 2001 From: akuchling@users.sourceforge.net (A.M. Kuchling) Date: Tue, 04 Sep 2001 13:06:45 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/distutils/command install.py,1.58,1.59 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/distutils/command In directory usw-pr-cvs1:/tmp/cvs-serv13203 Modified Files: install.py Log Message: [Bug #436732] install.py does not record a created *.pth file in the INSTALLED_FILES output. Modified version of a patch from Jon Nelson (jnelson) Index: install.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/distutils/command/install.py,v retrieving revision 1.58 retrieving revision 1.59 diff -C2 -d -r1.58 -r1.59 *** install.py 2001/08/23 20:53:27 1.58 --- install.py 2001/09/04 20:06:43 1.59 *************** *** 538,543 **** def get_outputs (self): ! # This command doesn't have any outputs of its own, so just ! # get the outputs of all its sub-commands. outputs = [] for cmd_name in self.get_sub_commands(): --- 538,542 ---- def get_outputs (self): ! # Assemble the outputs of all the sub-commands. outputs = [] for cmd_name in self.get_sub_commands(): *************** *** 549,552 **** --- 548,555 ---- outputs.append(filename) + if self.path_file and self.install_path_file: + outputs.append(os.path.join(self.install_libbase, + self.path_file + ".pth")) + return outputs From akuchling@users.sourceforge.net Tue Sep 4 21:42:10 2001 From: akuchling@users.sourceforge.net (A.M. Kuchling) Date: Tue, 04 Sep 2001 13:42:10 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/distutils/command install_data.py,1.18,1.19 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/distutils/command In directory usw-pr-cvs1:/tmp/cvs-serv22233 Modified Files: install_data.py Log Message: [Bug #444589] Record empty directories in the install_data command Slightly modified version of patch from Jon Nelson (jnelson). Index: install_data.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/distutils/command/install_data.py,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** install_data.py 2001/02/05 17:43:11 1.18 --- install_data.py 2001/09/04 20:42:08 1.19 *************** *** 64,71 **** dir = change_root(self.root, dir) self.mkpath(dir) ! for data in f[1]: ! data = convert_path(data) ! (out, _) = self.copy_file(data, dir) ! self.outfiles.append(out) def get_inputs (self): --- 64,79 ---- dir = change_root(self.root, dir) self.mkpath(dir) ! ! if f[1] == []: ! # If there are no files listed, the user must be ! # trying to create an empty directory, so add the ! # directory to the list of output files. ! self.outfiles.append(dir) ! else: ! # Copy files, adding them to the list of output files. ! for data in f[1]: ! data = convert_path(data) ! (out, _) = self.copy_file(data, dir) ! self.outfiles.append(out) def get_inputs (self): From jackjansen@users.sourceforge.net Tue Sep 4 22:24:01 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 14:24:01 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/OSXResources/iconsrc - New directory Message-ID: Update of /cvsroot/python/python/dist/src/Mac/OSXResources/iconsrc In directory usw-pr-cvs1:/tmp/cvs-serv1135/iconsrc Log Message: Directory /cvsroot/python/python/dist/src/Mac/OSXResources/iconsrc added to the repository From jackjansen@users.sourceforge.net Tue Sep 4 22:25:38 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 14:25:38 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/OSXResources/iconsrc PythonCompiled.psd,NONE,1.1 PythonIcon.psd,NONE,1.1 PythonSource.psd,NONE,1.1 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/OSXResources/iconsrc In directory usw-pr-cvs1:/tmp/cvs-serv1252 Added Files: PythonCompiled.psd PythonIcon.psd PythonSource.psd Log Message: Photoshop sources for icon files. Not pretty, but hey! I'm not an artist (and a certain artist didn't jump in, yet). --- NEW FILE: PythonCompiled.psd --- 8BPS         ÿÀ   ßúùÚî­¶VíÌw%3I$’R’I$”ÿ uqø&R¯é|“”‰$’JÿÕõTÉÒILô‡Àÿ –gRm 'UbòàÍ3Ö›d†4””Õê_Zìa-d¬ƒõ¯/tÉUò:?Q±ÄúeöPÿ Blank page Ù üþþýüþüþÿÿþèÿþÿþÿþ×ÿ ÊÈÆÁ¿¾¹¶±¥rÝÿÿàáþà ÿæäååææääãâþà ÌÉĽ´©‘—óýþÿúôíåÝÓʹóÿýæèèçæäâãäãâáààßÞÞÝÝüÜûÚüÙÿØÿ×ÿÖÿÕÔÓÒÑÐÏüÎ ÍÌÉŽ´ªž”òþýÿúôíåÝÓʹôÿþèçéèæäãääãâáààßÞÞÝÝÜÜþÛûÚüÙþØÿ×ÿÖÕÔÔÓÒÑÐþÏþÎ ÌÊžµ« š¤ìþüÿúôíåÝÓʹõÿÿççþèäãþäãâáàßÞÞÝÝþÜþÛûÚüÙÿØÿ×ÿÖÿÕÔÓÒÑÐÐýÏ ÎÍÊÆ¿¶¬¡«äúþþýÿúôíåÝÓʹöÿýéþèçæþåãâáàßßÞþÝþÜýÛúÚþÙþØÿ×ÿÖÕÔÔÓÒÑÐÐþÏÎÍÊÆ¿¶­£ ©ÊàçîòùûþþúôíåÝÓʹ÷ÿÿéýè çææåäâááàßÞÞÝÝýÜýÛúÚþÙþØÿ×'ÖÕÕÔÓÒÑÑÐÐÏÏÎÌÊÅ¿·®¤ž¢ž”ŠŒ‡ƒ‚Š¢¯¿ÑãÝÓʺøÿÿêèþéÿè æåäãâáàßßÞÞÝÝýÜýÛúÚþÙÿØÿ×ÿÖ&ÕÔÔÓÒÑÑÐÏÎÍËÈþ·¯¦•…{tlifeehimpt’¬Éʺùÿÿëèþéÿè æåäãâáààßÞÞþÝýÜüÛûÚþÙÿØÿ×ÿÖ&ÕÔÓÒÑÑÐÏÍËÉÆÂ½¸°¨Ÿ–‚zvpmkjklnqsvzƒŸ¾µúÿÿìýé èçæåäããâáàßßÞÞþÝýÜüÛûÚþÙÿØÿ×ÖÕÕÔÓÒÑÐÎÌÊÈÅÁ½¸²ª¢™ˆ€{wussþt vy|~„‰¤­ûÿþêéêêéèæåääããâáààßßÞÞþÝýÜüÛûÚþÙÿØÿ×ÖÕÔÓÒÑÐÎÌÊÈž¹´®¦Ÿ—‰„ý}ÿ €‚„‡‰Œ‘«üÿ ÿêéêêéèæååããþâáààßþÞþÝýÜüÛûÚþÙÿØ×ÖÖÕÔÓÒÑÏÍËÉÇÄÀ¼¸³¬¥ž˜“ދЉˆü‰ ŠŒŽ‘”——¢ ýÿÿìêëëéçýåÿäãâááàßßþÞþÝüÜúÛþÚþÙÿØ×ÖÖÕÔÓÒÐÏÎÌÊÇÄÁ½¹³¬¦¡œ˜–ý•ÿ–þ•–˜——››­ýÿÿîêëëéæäýåäãââáààßßþÞýÝùÜþÛýÚÿÙÿØ×ÖÕÕÔÓÒÒÑÏÍËÈžº´¯ª§£¢ý¡þ¢ÿ¡ÿ ¡  ¡¡¢£þÿþìêëëéäãåþæ åäãâááààßßþÞýÝùÜýÛþÚÿÙÿØ×ÖÕÕþÔ!ÓÑÐÎÌÉÇÄÀ¼¸´±¯®­­®¯®®¯¬¬«ª¨©§§¨¦¦´þÿþíëìëéåäåççæåäããâááààþßþÞýÝÿÜÿÝýÜýÛÿÚþÙØ×ÖÖþÕ$ÔÓÒÐÏÍËÉÆÃÀ½»º¹¸¸¹¹ºº¹¸¶µ³²°¯®¬¬«®WÿÿÿíëëìéçåæèçææåäããâááààþßýÞýÝ ïîíììëêêéèèþçÿæþåûäíãúâãåæýçÿæÿå äããââáàßßÞÞÝÜÛþÚþÿÿòòúñ ïîîíììëêêééèèþçþæüåïä÷ãäæçýèÿçÿæåääããâáààßßÞÝÜÛÛÜþÿ ñðïïîîíììëëþêþéýèûçèæçéýêþéÿèÿçÿæÿå äããâááàßÞÝÞÿÿ ëêèæåéìîðÿÿÿöøýùþøÿ÷þöþõþôüóúòùñûðüïýîûíðìþí ìéèéìíîïÿÿÿõüùþøÿ÷þöþõþôüóøòøñûðüïüîûí÷ìýíþîíìîïïîðÿÿÿõüùþøÿ÷þöþõýôûóöòùñûðüïûîóíþîÿïðïþðÿïýÿÿôüùþøÿ÷þöþõýôúóóòúñûðûïðîþïÿðþñðïðýÿÿóüùþøÿ÷þöþõüôõóõòúñûðùïùîüïÿðñòòññðïýÿÿòüùÿøþ÷þöþõüôíóùòúñùðõïýð ÿñùúúùùøø÷÷þöþõðôôõõôõóûòüóûôÿóÿÿÿñùúúùùøþ÷ÿöýõóôìõóôóóþôõôõþôóÿÿ ÿñøúúùøø÷÷þöþõóôøõüöòõóôþóûôýõýôÿÿ ÿñûúúù÷õö÷ööýõôôúõõöðõòôþõ æåäãâáààßààüßýàþßÞÝÜÛýÚÙØØ××ÖÖÕÔÔÓÑÏÏËÈÿº³®§¢¬ÈŸæÿÿääååþæåãâààßþÞüÝÞßýà%ßÞÞÝÜÜÛÚÛÚÚÙÙØ××ÖÕÕÔÓÒÑÐÎÊÇĽ¸±ª¢œ™ÃÊžçÿÿåäþå æääãâáààßÞÞüÝÿÞüßþÞ"ÝÜÜÛÛÚÚÙÙØØ××ÖÕÔÔÓÒÑÏÌÉÅÁº²¬¤›•ªÓÊžèÿÿæäåææþäÿâÿáàßßÞßýÞ ÌËÈü³¨›‘–ûþÿúôíåÝÓÊòÿ çåäãâáààßÞÞþÝýÜýÛúÚþÙÿØÿ×ÿÖ&ÕÔÓÒÑÐÏÎÍËÉÆÂ½·°¨Ÿ–Œ„ztomjjklnqsvzƒŸ¾µúÿÿêüé èæåäããâáàßßÞÞþÝýÜüÛûÚþÙÿØÿ×ÖÕÕÔÓÒÑÏÎÌÊÇÄÀ¼·²ª¢š‘ˆ{wtþsÿt vy|~„‰¤­ûÿþëéêêéèçåäããââáààßßÞÞþÝýÜüÛÿÚ éèææåääãââáþàþßýÞÿÝ ëêçæåèìîñÿÿÿöøýùÿøþ÷þöþõþôüóúòùñûðüïýîüíøìÿëúìþí ìêçèëîîðÿÿÿõüùÿøþ÷þöþõþôüóøòøñüðüïüîúí÷ìýíþîíìîïðîïÿÿÿõüùÿøþ÷þöþõþôûóöòøñüðüïûîòíþîþï æåäãâáààßßàþßûàþßÞÝÜÛýÚÙØØ××ÖÖÕÔÔÓÑÏÏËÈÿº³®§¢¬ÈŸæÿÿääþåæåääâáàßýÞÿÝÿÞþßþà%ßÞÞÝÜÜÛÚÛÚÚÙÙØ××ÖÕÕÔÓÒÑÐÎÊÇĽ¸±ª¢œ™ÃÊžçÿÿääåææååäãâáàßßþÞþÝþÞüßþÞ"ÝÜÜÛÛÚÚÙÙØØ××ÖÕÔÔÓÒÑÏÌÉÅÁº²¬¤›•ªÓÊžèÿÿæäåææåãäãâááàßàþßúÞÿß'ÞßÞÞÝÝÜÜÛÛÚÚÙÙØ××ÖÕÔÔÓÒÑÐÍËÇþ¶¬¤”“ÝÓÊžéÿÿæäåæåääþãâáàáààþßüÞÿÝüÞ æåäãâáàßßÞÞþÝþÜ ÍËÅ¿·¬ ˜¥ìýüÿúôíåÝÓʹõÿþéçèèçäãþäãâáàßÞÞÝÝþÜþÛûÚÿÙÚÙÙØØ××ÖÖÕÕÔÓÒÑÐüÏ ÎÍÊÆ¿¸­¡œªàùûÿúôíåÝÓʹöÿ ÿêéêééèçæåäþâáàßßÞÞþÝýÜüÛûÚþÙÿØÿ×ÖÕÕÔÓÒÑÏÎÌÊÇÄÁ¼·±ª¢™‘‡‚{xuþsÿt vy|~„‰¤­ûÿÿìéêêéèæåäããââáààßßÞÞþÝýÜüÛûÚþÙÿØÿ×ÖÕÔÓÒÑÐÎÌÉÇÄÁ½¹´®§Ÿ—މ…~|þ}ÿ €‚„‡‰Œ‘«üÿýééþêçæåäþãÿâáàßßþÞþÝýÜûÛÚÛþÚþÙÿØ×ÖÖÕÔÓÒÑÏÍËÉÆÃÀ¼¸³­¦Ÿ˜’ŒŠ‰ˆü‰ ŠŒŽ‘”——¢ ýÿÿëêëëéçýåÿäãâáààßßþÞþÝüÜúÛþÚþÙÿØ×ÖÕÔÔÓÒÐÏÍËÉÇÄÁ½¹´­§¡œ˜–þ•þ–þ•–˜——››­ýÿüìêëëéæüåäãââáààßßþÞýÝùÜþÛþÚþÙØ××ÖÕÔÔÓÒÑÐÏÍËÈÆÃ¿ºµ°«§¤¢þ¡ý¢ÿ¡ÿ ¡  ¡¡¢£þÿüíþëéäãåþæ åäãâááààßßþÞüÝúÜýÛþÚÿÙÿØ(×ÖÕÕÔÔÓÒÑÐÎÌÊÇÄÁ½¸´±°®­­®¯®¯¯¬¬«ª¨©§§¨¦¦´þÿþìëìëéæãåççæåäããâááààßßýÞüÝÜÝÝýÜþÛþÚþÙ+Ø××ÖÕÕÔÓÒÑÐÏÍËÉÇÄÀ½»º¹¸¸¹¹ºº¹¸¶µ³²°¯®¬¬«®WÿÿÿììëìêçåæççææåäãââááààþßýÞýÝ ïîíììëêêéèèþçÿæþåûäîãùâãåæýçÿæÿåäããââáààßÞÞÝÜÛÚÙÚýÿÿòòúñ ïîîíììëêêééèèþçþæüåñäõãäæçýèÿçÿæåääããâááàßßÞÝÜÛÛÜýÿ óòòñððïïîííüìúëõê÷éüèÿé ëêçäåêìîòÿÿÿöøýùþøÿ÷þöþõþôýóúòøñûðüïýîüíùìüëüìþí ìêçéìíîðÿÿÿõüùþøÿ÷þöþõþôüóùò÷ñüðüïüîúíöìþíþîþíþîñÿÿÿõüùþøÿ÷þöþõýôüóöòøñüðüïûîñíÿîþïýðïðýÿÿôüùþøÿ÷þöþõýôúóóòúñüðûïøîüíüîÿïÿðþñðïïýÿÿóüùÿøþ÷þöþõüôöóôòûñûðùï÷îýïÿðÿñòññðïþÿÿòüùÿøþ÷þöþõüôîóøòûñùðóïþðÿñþòÿñòýÿÿòúýùÿøþ÷ÿöýõúôëóùòúñïðþñüòÿñÿÿÿòþúÿùÿøÿ÷þöýõùôüóøôõóúòöñúðýñÿòþóþòñÿÿ ÿñùúúùùøø÷÷þöýõäô÷óøòôñþòÿóÿôÿóÿòÿÿÿñþúÿùÿøÿ÷þöýõßôöóïòÿóýôÿóòÿÿþñþúÿùÿøÿ÷ÿöýõñôôõõôõóùòýóûôÿóÿÿÿñùúúùøøþ÷ÿöýõóôíõóôòóþôõôõþôóÿÿþñþúùøþ÷þöþõóô÷õþöóõóôûóüôýõýôÿÿþñþúùöõö÷ööýõôôúõööðõñôúõþôÿÿ ÿòûûúùöôö÷ööþõóôûõñöîõùôüõöõöþõôÿÿþðþúùöôýöÿõòôûõëöèõÿöõöýõÿÿÿðùúúù÷ôþöþõýôüóûôûõåöðõúöþõÿÿ ÿðûúúùù÷÷ööõõþô÷óýôüõáööõüö 0 0 0 0 0 0 0 Ô6 ÞN ìo máìÿ ü±.mͪ™ê 8íçÿ¡ !)28>CFFEA<5/& å ì í ñ ò ž ž ž ž ž ÷ÿ™çÿÑÿ›ÿÿ•—þÿžœ”ýÿ 2,)ÿÿ˜š˜š™™êÿýÿÿ 23,ÿÿ™™›ž—šêÿþÿþ 210ÿÿ™™šœ˜šêÿþÿþ 211ÿ›˜›š™™êÿþÿþ šã(43¨Ýà¡CùR¬Ð7(í•)434+êÿ GEAJILIKLKKþLMLLMLýMþLÿMLKKMþLÿJI?: 3FHIFLJJIKLKöLÿM÷LÿK JKKMKHJ<4/ïÿúÿý ù GEAJILIKLKKþLMLLMLýMþLÿMLKKMþLÿJI?: 3FHIFLJJIKLKöLÿM÷LÿK JKKMKHJ<4/ïÿúÿý fgÿffÿÿ š™šð™ š™š› ÿefeeffêÿÿÿý GEAJILIKLKKþLMLLMLýMþLÿMLKKMþLÿJI?: 3FHIFLJJIKLKöLÿM÷LÿK JKKMKHJ<4/ïÿúÿý ÊÈÆÁ¿¾¹¶±¥rÌÿíÿàáþà ÌÊžµ« š¤ìþüÿúôíåÝÓʹäÿþÿ âáâßáÞÞßÜÜßþÛÚÞÚÚÞÚÙÝþÙÿØÿ×ÿÖÿÕÔÓÒÑÐÐýÏ ÎÍÊÆ¿¶¬¡«äúþþýÿúôíåÝÓʹåÿÿÿùõûÿþùõüÿüùùþÿûùùÿéþè ãââáâàßáÞÞáþÝ ÞßáâÞÝÞáßÞÝýÜýÛÿÚþÙØ×ÖÖþÕ"ÔÓÒÐÏÍËÉÆÃÀ½»º¹¸¸¹¹ºº¹¸¶µ³²°¯®¬¬«®WîÿíÿíëëìéçåæèçææåäããâááààþßýÞýÝ ÒÏÍÌÉÇÄÁ¾º¸îÿíÿÿíûìë¯èç¬æåäªãââ©áàà¨ßß§¦ÞÞ¦Þ¦ÞݦÝݦýÝ¥ÜÜ¥ÛÛ¤ÚÚÙ¢Ø×Ö ÖÖרÙÚÛÛÚÚþÙþØÿ× ÖÕÓÑÐÍËÈÅ¿»îÿÿÿ øöÿÿþöùÿÿûóþÿ ùõÿÿïììîííþì¾Úè­æåæ¬ããâ«ãâà©ãÓµµÓã¦Þ¦ÞÞ¦ÞÞ¦ÞþݦÝݳÎÜ¥ÛÛÚ£ÙØØ¡×ØÙÚÜÝÞÞÝÝþÜÛÚÚÙÙØ×ÖÕÓÑÎÌÉÆÂÀîÿþÿ äããäåãáâäãáñàüßþÞþÝÞßáãüäãââáààßÞÞÝÜÛÚÚÙ×ÕÒÐÐîÿíÿýðýïîíìëêêéèççææååääþãýâñáùàûßàâäüåäãââáààßßÞÝÜÛÛÚÙ×ÕÒÓîÿíÿûðþïÿí ìëêêéèèçææþåÿäýãöâóáûàáãäûåäããâááàßÞÞÝÜÜÛÚÙ×ÕÕîÿíÿøðìëÛ’¯èè¼sææå¬€þ䜎ããÕªªÆâÆ©©Ôâ©þâÿ© ·âÔ©áá·pááâäåýæþåäããâááàßßÞÝÝÜÛÚÙרîÿíÿøð-ïî²ììëê¯éèè­ççææ¬ååää«ää«ããªãªããªããªãã¸Õâ©ââá¨þà¨ááâäæýçÿæÿå äããââáàßßÞÞÝÜÛþÚîÿíÿÿòúñ ïî²íììë¯êéé®èþç'¬ææåå¬åå«ää«ä«ää«ää«ääªããªâáâ©ááâ©áââåæçþèÿçÿæåääããâáààßßÞÝÜÛÛÜîÿÿÿ,øöÿÿþùùüÿüùùþÿûùùÿòïîòòðïïððî°îíìë¯êêé¯éèèç­çþæ­æå¬åå¬å¬åå«ää«ää¹Öã«þã äããâááàßÞÝÞîÿþÿ#ùÿÿùÿÿùÿùÿÿùÿùÿþûôôñôôñôôðòñîïïîîìíìþëþêýéúèþçâßþçâßûæÿäþãþäçèéêþëþêäàþèÿçæååäþãâáàßßîÿÿÿ)ùõûÿþùùüÿüùùþÿûùùÿôñïòôóññóòñíîïïîëìíìëëêëüêúéþèãÞþèàØæýçæÕüÓÒÞèéêüëÿêâØèéþèçææþåäãââáàîÿíÿÿõúôóòòñþðïîîíýìúë 粨»ÏÊ®¨ÍêêüëþêÞÓèþéþèýçÿæÿåÿãîÿíÿÿõþöýõ4ô§˜óòãµµÒïв²ÞîÁ²²îîîß²²ÅêÀ‡ íì±æì°°¿ç“q¢ªSÀêêûëÿêœäýéûèÿçæåääîÿíÿ ÑçèèéÕ¾æèàáþéÿêýëêéèëîÿ ÿùÿÿùÿùÿÿùÿÿùþþÿùÿÿóøøôøø÷óööóôòþôòñóïòòïññðîððïíýï îšÑî¼ííìáÌ´ý² ¯nhQTObd޲þ°¯Ãçþè Ѻæèרééêêþëÿìëêêíîÿ ÿûþÿùÿùÿÿùÿÿøþþÿùÿÿô÷øôøø÷ó÷öòòïõôóòóóññòïþñ QÂçé麙âéÏÒþêÿëüìëìïîÿöÿþþûÿÿø šÖﵜïîîÕ†4û3433234û3 J±åé鸙áèÁÆêêþëûìíñîÿöÿÿþ óðóóðòòïòòïþòÿñ™ÎñàÑñØ\ë3 23¢áßÌëꢩþíþîíìîïïîðîÿÿûþÿùþÿ ñûúúù÷õö÷ööýõôôúõþö#Úv25Øÿ¯*í”?D23žÜ'05/+43."!'240?ºëüôþõ ñúûúùöôö÷ööþõóôûõýö#Íj23[è­=Äw1535¥õüÈG|çÆ!†ÜáÜB#/<¨çþôýõÿöõöþõ šã(43¨Ýà¡CùR¬Ð7(í•)45‡Üûöÿ÷ö÷þö ðüûúùø÷öõõôþóþòúñþòýóüôêI2ü4-43'6þ454,455#341!4430544Ÿüöü÷þö 6788654;95£ýöú÷ÿö æåäãâáààßààüßýàþßÞÝÜÛýÚÙØØ××ÖÖÕÔÔÓÑÏÏËÈÿº³®§¢¬ÈŸÕÿíÿÿäÿåþæåãâààßþÞüÝÞßýà%ßÞÞÝÜÜÛÚÛÚÚÙÙØ××ÖÕÕÔÓÒÑÐÎÊÇĽ¸±ª¢œ™ÃÊžÖÿíÿåäþå æääãâáààßÞÞüÝÿÞüßþÞ"ÝÜÜÛÛÚÚÙÙØØ××ÖÕÔÔÓÒÑÏÌÉÅÁº²¬¤›•ªÓÊž×ÿÿÿÿùûÿþöùÿÿûóþÿûùùÿæåþæäæåþâãâàßáãþÞÿáÿÞ*ßâáÞÞßáàÞÝÜÛÛÚÚÙÙØ××ÖÕÔÔÓÒÑÐÍËÇþ¶¬¤”“ÝÓÊžØÿÿûþÿùþÿ ™ËÈ’¼³~›‘–ûþÿúôíåÝÓÊáÿÿÿøöÿÿþöùÿÿüùùþÿûùùÿüç;åæåä¸Õã©àßà¨àÝܨáÜÛ¥àбÚÛ¦ÝÚÙØ¢Ø×¡ÖÖ ÔÔžÒÑÐÏšÍÌÌÍšËÈ“½´’–öýÿúôíåÝÓʹâÿþÿ âáâßáÞÞßÜÜßþÛÚÞÚÚÞÚÙÝÚÙÙØØ××ÖÖÕÕÔÓÒÑÐüÏÎÍÉž¶¬¢œ®âúûýþþÿúôíåÝÓʹåÿÿÿùõûÿþùõüÿüùùþÿûùùÿýè ãââáâàßáÞÞáþÝ ¾½»¸¶µ²±¯±™îÿíÿüìëêééèçæåäããâááàþßþÞýÝ ÒÏÎÌÉÇÄÁ¾º¸îÿíÿïííüìë¯èç¬æåäªãââ©áàà¨ßß§¦ÞÞ¦Þ¦ÞÞ¦ÝݦýݦÜÜ¥ÛÛ¤ÚÚÙ¢Ø×Ö ÖÖרÚþÛþÚþÙ øöÿÿþöùÿÿûóþÿ ùõÿÿïììîííþì6¾Úè­æåæ¬ããâ«ãâà©ãÓµµÓã¦Þ¦ÞÞ¦ÞÞ¦ÞÞÝݦÝݳÎÜ¥ÛÛÚ£ÙØØ¡×ØÙÛÝþÞþÝÿÜÿÛÚÙÙØ×ÖÕÓÑÎÌÉÆÂÀîÿþÿ 棚¯ÈÀŸ˜Äêêûëÿêɤæþéþèýçÿæåäããîÿíÿÿõþöýõ4ô§˜óóãµµÒïв²ßîÁ²²ïîïß²²ªåÀ=íì±6 Ùì°°¿å}\n•›h;´êêûëÿêv Ûééèéûèÿçæåäãîÿíÿ Ù¯êê¯Ü Üèèéé¸äéÎÐýéüêéèçèîÿ ÿûþÿùÿùÿÿùÿÿùþþÿ?ùÿÿôöøóø÷÷óöö¸ˆÄôåµ¶ÒòÒµµàñô²ðï³…Âîß²²;ÇÏW?ÝìÀlnº¼š´+$ F´þº ¹Êçèèé¯lãèÎÐþéÿêýëêéèéîÿ ÿùÿÿùÿùÿÿùÿÿùþþÿùÿÿóøøôøø÷óööóôòþô òñóïòòïññðîþð '¸æéé_ ªïLïîîÎjï ´ð¼1ì óðóóðòòïòòïþòÿñ óðóóðóòïòòïüò ç å ñûúúù÷õö÷ööþõóôùõÿö ÑU ÁE æåäãâáààßßàþßûàþßÞÝÜÛýÚÙØØ××ÖÖÕÔÔÓÑÏÏËÈÿº³®§¢¬ÈŸÕÿíÿÿäþåæåääâáàßýÞÿÝÿÞþßþà%ßÞÞÝÜÜÛÚÛÚÚÙÙØ××ÖÕÕÔÓÒÑÐÎÊÇĽ¸±ª¢œ™ÃÊžÖÿíÿÿä åææååäãâáàßßþÞþÝþÞüßþÞ"ÝÜÜÛÛÚÚÙÙØØ××ÖÕÔÔÓÒÑÏÌÉÅÁº²¬¤›•ªÓÊž×ÿÿÿÿùûÿþöùÿÿûóþÿûùùÿæåþæþå:ãââãâààáãßÞÞáâÞÞßâáÞßßáàÞÜÜÛÛÚÚÙÙØ××ÖÕÔÔÓÒÑÐÍËÇþ¶¬¤”“ÝÓÊžØÿÿûþÿùþÿ ¥ÜÜÛ¤Ú̱ÙÙ£þØ(ס×סÖÕ ÔÓÑÑÐÏšËÊÉË™ËÈ’¼²}™Ž”ýÿÿúôíåÝÓÊàÿíÿ šÌÈ“½´’•÷ýÿúôíåÝÓʹâÿþÿ ÍËÅ¿·¬ ˜¥ìýüÿúôíåÝÓʹäÿþÿ âáâßáÞÞßÜÜßþÛÚÞÚÚÞÚÙÝÚÙÙØØ××ÖÖÕÕÔÓÒÑÐüÏ ÎÍÊÆ¿¸­¡œªàùûÿúôíåÝÓʹåÿÿÿùõûÿþùõüÿüùùþÿûùùÿýè ãââáâàßáÞÞáþÝ ÒÏÎÌÉÇÄÁ¾º¸îÿíÿïííüìë¯èç¬ååäªãââ©áàà¨ßß§¦ÞÞ¦Þ¦ÞݦÝݦýݦÜÜ¥ÛÛ¤ÚÚÙ¢Ø×Ö þÖØÙÚÛÛþÚþÙÿØÿ× ÖÕÔÒÐÍËÈÅ¿»îÿÿÿ øöÿÿþöùÿÿûóþÿùõÿÿïììþíþì9¾Úè­æåæ¬ããâ«ãâà©ãÓµµÓã¦Þ¦ÞÞ¦ÞÞ¦ÞÞÝݦÝݳÎÜ¥ÛÛÚ£ÙØØ¡×רÚÜÝÞÞþÝÿÜÿÛÚÙÙØ×ÖÖÓÒÎÌÉÆÂÀîÿþÿ ßÞßßÞßÞãèéêûë êÝÍèéèèççææþåäãââáßîÿíÿÿõôõüô óòòñððïïîííüìúëýêÞçêâÙþêÓÀçýé èÙÙÐÈÊÕ×àéêûëÿêÚÈèééþèÿçþæåäããââîÿíÿûõýôÿóÿòÿñðïîííìøíÿìÿí ìÖèìßÓììë̵èýê éÑÑĵ¹ÍÏÜêûëþê×Âçééýèýçÿæåäãâîÿíÿÿõþöýõ3ô§˜óòãµµÒïв²ßîÁ²²îîîß²²¾èÀnsíí±rláë°°¿é¿¨š›®«ˆ×êûëÿêé¨láþéüèçèççæåäâîÿíÿ ¹¸Èõ晸ôôÆzþôŶ¶óó§˜óóä¶¶eÄÕ¶´Ëžç™´àððív‚þðþñüòÿñøÿ š™š³ëñð·½ññþòÿóÿôÿóÿòøÿ òûûúùöôö÷ööþõóôûõýö#â´™™{>‘,eš«˜™—D*Šºb,¦ªZŽ¥œœÐñþôüõöõöþõ ðùúúùùø÷öõõþôõóüôýõöõÙ£þ™ ›)<„ˆÂL¡˜™A¬ªGÀŒ>#–¢ P ™™Áêûöÿ÷ö÷ööõôøÿ ðûûúùø÷öõõôþóþòúñþòýóüôð¤ü™˜™™¡®–ý˜–­œ——–¯¤˜˜™¦™™§˜œþ™ P` --- NEW FILE: PythonIcon.psd --- 8BPS         ÿÀ   -¥å‡x I‹7/ cœD@$oO¬Œ'ýUÊ Á– ?¬<ʰò~§t±˜òÖE$Ûu_¯zÿ ŒAÓõ‡ò{„’ISk©$’IOÿÒõT’I%<Öÿ Ø^îñ?¬ýQ™ýiù5£wòJDíàßøn3<¼U~رýîŽu¸Y5cW”öÅWïEÁèùÙì}˜ÌmH“ s9ÿ òhþ‹“î îå/OúƒÕªÎé-©²D1ÓäH1—ˆcçgc>g$Y‰ïÃ8L~þ<ž‰½JI$šå©$’IOÿÔõB1N’œŸ­ÿ ooí^ïkM¡çÈn[=[+¬SÕ1în@.uMЈô–åŸR¾­·ü6Oùìÿ ÷õ–d2ë.Ýú¨ú@¿ù_ÉT¯ËÇÕ꨿®çº¾àºªþ£ýZø|ŸóÙÿ è0+µ±+}½¹>¦ñùR mÐæp™´µ¼) )t’I%?ÿÙ /B, ‡½ ÷ ,•ôÿÿÓm÷ú &¶ÿ¬& &¶ÿ¬& &¶ÿ¬& &¶ÿ¬& &¶ÿ¬& &¶ÿ¬& &¶ÿ¬& &¶ÿ¬& &¶ÿ¬& &¶ÿ¬& %±ù¨% &zÎÅÿ¯Yý 452)!$,45þ3îÿü™ûÿûÿý™üÿü™÷ÿþ3 42/+**-034þ3îÿü™ûÿþ™õÿý™ 0*9]}‹rO0+þ3îÿü™ûÿþ™õÿþ™ÿ˜÷ÿÿ3 ,A–ãÿÿÈv+!233îÿü™ûÿþ™õÿþ™›÷ÿÿ3 ,B™èÿÿÌw+ 233ãÿþ™õÿ™˜™¢©÷ÿÿ3 0(:fޤŸ€V/)233ãÿÿ™ýÿý™íÿü31/..02ü3ãÿþ™þÿý™íÿÿ3 451("+45þ3ãÿþ™þÿý™íÿü3 ),ÿÿ¨¤™˜™ÿÿý™þ™÷ÿ+/Ó3-/øÿý™þ™÷ÿ02Ó3ÿ1øÿý™þ™÷ÿ › ”yaTVi„›Ÿþ™îÿüfûÿþfõÿýf œ¡“rUDH_œ þ™ãÿÿfýÿýfíÿü™›œœ›šü™ãÿþfþÿýfíÿÿ™ ˜—𢍬«¦Ÿ˜—þ™ãÿþfþÿýfíÿü™ ý ÿ ýã ý þæ !#&(*+,ý-,+*(%#  þë "&),03579;ý<;9752/,(%" þ #&*.37:>BEHJLýMKJGEA=962-)%! þ  $).4:?FLRX^djpuzƒ†‰‹ýŒ"Šˆ…}ysnhb\VPJC>82-(# þõ #(.4:@GMT[bhov{‚‡Œ”—šœžž›™–“Š…€zsmf`YRKE>82,'" þô  &,2:AIQYbks{ƒ‹’𠧬±µº½ÀÂÄþÅ&Äÿ¼¹µ°ª¤ž—ˆ€xph_WNF?70*$ þö ÷ û þ !'.5?GQ\gr}‰”Ÿ©´¾ÆÏÕÜâçìðóöøúûüýþþùÿÿþÿý(üûù÷õñïêæàÚÔ̹°¦›„yncXND<3+% þÿ  &,4=FOZdoz†‘œ§±»ÃËÓÚáæëïòõøùûüüýþþùÿÿþÿýÿü'úù÷ôñíéäߨÑÈÀ¸®£—Œvk`VLB91)" ýù #*2:DNXbmx‚Ž˜£®·ÁÉÑÙßåéíñôöøùûüüýýõþÿý*üûúù÷õóðìèãÝÖÏǾµ« •Šti^RH?7/'! þù  %-4=FOZdoz…›¥¯¹ÁÉÐ×Ýâæêíðòóôõö÷÷ñøÿ÷+öõôóñïìéåàÛÕÎÆ¾µ¬¢—Œvk`VLB:1*# ù $+2:BLU_it~ˆ’œ¥®¶½ÄÊÏÔ×ÛÞàâãååææíçÿæ)åäãâßÝÚÖÒÎÈÁ»³«¢™…zpf[RH?7/(" ù $+2:BKU^hq{…Ž—Ÿ§®µ»ÀÅÉÌÏÒÔÕרØÙÙíÚÿÙ)Ø×ÖÕÓÑÎËÈÄ¿¹³¬¤”‹xnd[QH?7/(" ù #)08?GOXajr{ƒ‹“™Ÿ¦ª¯³¶¹»½¿ÀÁÁÂÂíÃÄÃþÂ'À¿¾½º¸µ²­©£—ˆxpg^UME=5.'! ù !&,3:AIPX`hov}„‰”˜œŸ¢¤¦¨©ª««þ¬í­þ¬(«ªª¨§¥£¡ž›—’‡‚{tme^VNF?81*$ ù ù ù ýù  !#$%&''((Þ)þ(ÿ'ÿ&%$#"! þÿ þ HLIJKKJKJKLþKþLMLMþL O;CHMDHMKHHþJHJIIKJþKJMMþL ILKJHH>O7Q+ý DKJLJFGIKMJþKÿJMKLKLLþKLKþLÿKLKLMLèMLKþL LJLKMLLKKLLéKÿLMKýLKLMKMýLKLMMþKJKLNMLMLJCDB5KOþ þ HLIJKKJKJKLþKþLMLMþL O;CHMDHMKHHþJHJIIKJþKJMMþL ILKJHH>O7Q+ý DKJLJFGIKMJþKÿJMKLKLLþKLKþLÿKLKLMLèMLKþL LJLKMLLKKLLéKÿLMKýLKLMKMýLKLMMþKJKLNMLMLJCDB5KOþ þ HLIJKKJKJKLþKþLMLMþL O;CHMDHMKHHþJHJIIKJþKJMMþL ILKJHH>O7Q+ý DKJLJFGIKMJþKÿJMKLKLLþKLKþLÿKLKLMLèMLKþL LJLKMLLKKLLéKÿLMKýLKLMKMýLKLMMþKJKLNMLMLJCDB5KOþ ü Ô û ö î /A, û 1D. û 1D. û 1D. û 1D. û 1D. û 1D. û ;S8 FbB 5gws{›¸¼¼®tuxV#ù  ú QqL [€V f` j”d j”d j”d j”d m™g 5S> ¥Kþ v¥o €´y ‹Ãƒ –ÒŽ !¡á˜! ÌÊÑèüÿÿõßÌËöÍÎͧxM#ü $«ð¢$ ÛÙÞïýÿÿøèÛÚöÜÝܶ‡[-þ $®ô¤$ êèìöþÿÿûòêéöëìëÅ–j<  1E/   K{¤Ö÷üØÿþûðÄ”k9  *Mx¨ÊëÔÿûß¾˜fDü Lz¥ÕìøÔÿþôèÅ“q: 8XBBDþ  =k—ÄòùýÏÿ ü÷鲇Y, ÿÿ&Lz¥ÑüþÍÿ þôÀ–h; •œš›• –—™š– —˜™™— —˜™™— 2.6FPUUM@1.ö32343ú —˜™™— ›˜™™› ™—™š™ —™™š— ž˜™šž ›˜™™› œš™™œ œš™˜œ 𤠗™™¢ –˜œ£ 06.™š˜˜™ 157ª˜˜• 231Ÿ—˜Ÿ 2435+ 2436@ 24323 2433+ 2433- 213443 ÿŸ™ÿªÿ jhedj iefhi heffh šœ–Œƒ€…šœö™š™—Ÿú heffh heffh dgffd hffgh ceffc ceegc š›™˜—”• Ÿöÿñçóà¬nEÿÿ`×ûÿiÖÿíÏáæ¢KýÿVˆÔþâžZÿÿu¼½rly¡Å£Jÿ¡úå™jh}¨Æ¡Vÿÿ hÚúÿfÒÿÿûÿÿÆtúÿ8¯ýÈV ÿ¦üÖ_ÿ ÿ¦üÖ^ÿ ðÿÿØ}ÿ "kÐþÿ­JD²øÈ_þÿ¡öÖgÿÿPŒžqÿ:}·ÐÀ‡Cúÿkš¼ÀeÿH’ÃÏ´xÿÿzŸ…KþÿožŒPþÿDHûÿKOLC÷ÿGMMFüÿDLOJûÿ †óÿíâðؘJÿÿ TÿÿqL39o¨À³üÿ ŒoF Jƒ‚q}ûÿ{< þ H uÿE&wþÿDqÿÿqQÿu, Q…Y%"Züÿ;^þÿX(b‡}L1ÿC&wþÿDqÿÿqJÿÿwQ8%!5Ln†üÿC J ð¯Åðÿÿþûøúáÿíÿ¥¤ÍþÿñÝÙêüÿô´™«à÷ý™D.$=oŠ–•‚^-&2\À÷ý öÙÌÛöÿÿý÷òõáÿíÿ¤¢Ëþÿï×Óèüÿõ¼£²ßööù÷”C.$=k‚Љ{\-&2[»ù÷ö÷úýúÿ øÞÒáøÿÿþõðóáÿíÿ¾½ÜþÿíÒÍäüÿùѾÆàêêùëŽA1+8Tckj_K0+3W³ùëêëòûúÿ øÛÌÝøÿÿýõïóáÿíÿÊÉæþÿêÍÆàüÿüäÖÕÜÞÞù߈A207DOTSJ>403U«ùßÞßëùúÿ ÷ÖÆÙ÷ÿÿýõïóáÿíÿ¸¶Ùþÿß¹´ÑüÿüçÚÓÓÒÒùÓ•]OSRINSQKJTPPn®ùÓÒÓãöúÿ öÔÄ×öÿÿýõïóáÿíÿ¢ ÆþÿÒ¥ ÀüÿýëàÓËÆÆùÇ vjofPQTTOVmoi…±ùÇÆÇÛôúÿ öÔÄ×öÿÿýôîòáÿíÿž›ÂþÿΟ›¼üÿýïæÔúºù»œvkkfQPTTNVljkƒ©ù»º»Ôòúÿ òɹÌòÿÿùàÑÛáÿíÿšÂþÿÍŸ›ºüÿýòëÓ»®®ù¯•ukkePPUUNUkjk ù¯®¯Ìïúÿ ì´¤¸ìÿÿòÀ¤·áÿíÿšÂþÿËžš¹üÿþôìɦ••ù—ƒmgjaLLPOIQgjetŒù—•—·äûýüÿ è©™­èÿÿ𸛮áÿíÿ›ÂþÿËžš¸üÿýòç©qXZù^WMLMIABDCAALMKRYú^]Y\†Éñùüÿ 稙­çÿÿõ͸ÅáÿíÿšÁþÿÊ›¶üÿýîàŽI33ô5 6787754456ø5ÿ3_±çôüÿ æ§™«æÿÿúâÓÞáÿíÿœ›ÁþÿÇœš¶üÿü騆Eñ3211224232ö3Y§Þðüÿ 楙ªæÿÿúâÓÞáÿíÿš¿þÿÆœš³üÿûãÍ~Cö3 楙¨æÿÿúâÓÞáÿíÿ¡ ÆþÿÆšš³üÿúÜÀvAô3 壙§åÿÿ÷ׯÓáÿíÿ¬«ÔþÿÅ›™³üÿùÖµn>ô3 䤙¥äÿÿò­»áÿíÿ±¯ÙþÿÆ›šµþÿþüòÌ¥a;Ý3EyµÚúüþÿ 䣙¤äÿÿï´™ªáÿíÿ¨§ÏþÿÇ››¸þÿüôà lD5Ý38Q~¶ðöþÿÿ䤙¦äÿÿï³™©áÿíÿœ›¿þÿÉš»þÿøëÏs<22Û3JŽåðüÿÿ奙§åÿÿï³™ªáÿíÿÿ› ìÒÏæÿõé¯]72Ø3ÿ2AuÐíù÷ÛËÛöÿÿ챜©áÿíÿš™ºþÿñÞÚíÿñÞ¢PÖ3ÿ27iÄåöùã×äùÿÿë­™¥áÿíÿš™ºþÿ óâàðÿìÔ™M4×3ÿ27e¹ÝôûèÝèúÿÿë­™¥áÿíÿš™ºþÿ õçåóÿçÉ‘J2Õ36`­Ôñûìãìûÿÿì­™¥áÿíÿš™ºþÿøíëõÿ⿇FÔ35Z£Ëîüðéðüÿÿ묙£áÿíÿÿš >„ÛìúÿÿúåÕàáÿûÿÿþõÿßÞïþÿñݯ_2Ë3 <}ÏåùÿÿûéÛåáÿûÿÿþõÿåäóþÿîÔ¤Y22Ì3 ;vÃÞ÷ÿÿüíâéáÿüÿþþõÿêéõþÿêËšT2Ë3 2o·×õÿÿüðèîáÿüÿÿþ 2h«Ïñþÿýôîòáÿüÿÿþ 27L„Ìïøÿüúûáÿýÿÿþÿýõÿÿþÿþðá—M30þ3ƒäù¡3þ3V¡äÿÿÛ†ý3A³ýË^ç313g»æõÿþþáÿýÿÿþÿýòÿþêÕK2.3d¤áÿóš3 <…¿¼ ¥`ý3 /«ýÅN ü3ù3û3/3b±Ýòîÿ 3¦üÖ_3 3¦üÖ^2 ,32& € Úe8lÚÿÿýôîòáÿíÿƒþÿÜ©ŸËüÿãE,³÷ý  éŸ~¤éÿÿûëßçáÿíÿ~þÿל‘ÄüÿæYA·ôôùõ z ³îÿÿûæØááÿíÿ\Y©þÿÒ‚¼üÿïŽ\vÁååùæ r 줩ìÿÿúæ×ááÿíÿzwÁþÿË€q²üÿ÷½˜£ÈÖÖù×k ê™pŸêÿÿúæ×ááÿíÿMI þÿ®QCŒüÿ÷Ä¢¥¾ÇÇùÈ{6#+&!'-,# *($J™ùÈÇÈÜôúÿ é•k›éÿÿúæ×ááÿíÿqþÿŽbüÿùͱ«µ¸¸ù¹‰UFP?&'-,$,JNEfù¹¸¹Òñúÿ é•k›éÿÿúäÔßáÿíÿ gþÿ…Vüÿú×À±­©©ùªƒTGJ@&&-,$+IIFd”ùª©ªÉïúÿ àzO€àÿÿð³¦áÿíÿ gþÿ‚Rüÿûàζ¤ššù›zRGJ?%&-,$+HIF_ˆù›š›¿ëúÿ ÏFNÏÿÿßaJáÿíÿ gþÿ~OüÿüçׯŒ{{ù}eHBI9 !&&'CH?Qoù}{}¦Ýúýüÿ Å* Ä' Â$ À! ¿ ½ º Ý º Fþÿ÷çÃQ Ù jüÿóÌ£H Ï 5n¶ðøýÿÿÝb(Máÿúÿ eÒçùÿÿ󾘲áÿûÿÿþõÿ¯­ÙþÿîÔ›:Ê \ÃÞ÷ÿÿõǧ½áÿûÿÿþõÿ½»àþÿêÉŽ3Ê S´Öõÿÿ÷ѶÈáÿüÿþþõÿÊÉæþÿå¾-É é£ˆ¦éÿÿþøõ÷áÿíÿwuµþÿêËÅàüÿîg€Ò÷þÌ¡œ¤‘mXOO]yž£š®à÷þøÿ òűÈòÿÿüóìðáÿíÿvt²þÿçĽÜüÿð›vÕûúùûÊ¡œ¥‘o^XXb{ž¢š­Ý÷ûýþúÿ õλÒõÿÿýðèíáÿíÿž›Ëþÿä¼´×üÿõ»­ÝõôùõÇ ›Ÿ•€uopw‡›ŸšªÙ÷õøýúÿ óɲÌóÿÿüðçíáÿíÿ¯­Úþÿ೪Ñüÿú×ÁÊäïîùïÄ¡š›˜…‡’››š©Õ÷ïõüúÿ ò©Æòÿÿüðçíáÿíÿ”’ÆþÿÎ—ŽºüÿúÜÇÍáéèùé˯§¬¥“…‚‚‰š««¨¶×÷éñúúÿ ò¿¦Ãòÿÿüðçíáÿíÿÿp ò¿¦Ãòÿÿüïåìáÿíÿlj¤þÿ¶qišüÿüçÙÖÜÝÜùÝͺ¶¹¯”ƒ€‡·¸µÁÔ÷Ýéùúÿ í¯•³íÿÿöÒ»Êáÿíÿki¤þÿ´pi˜üÿüìáÚÙ×Öù×ʺ¶¹¯“ƒ€‡·¸µ¿Ï÷׿÷úÿ âw•âÿÿì w’áÿíÿÿk Ü€fƒÜÿÿé•j†áÿíÿkj¤þÿ¯nh’üÿýôìÏ·¬¬ù¯¬§§©£–ŽŒš¦¨¥¨­ú¯®­­Âäøýüÿ Ü}fƒÜÿÿñµ”©áÿíÿji¤þÿ­miüÿþõíÅ£š˜øšþ›™˜–•––˜ýš Û|fÛÿÿ÷Ô¼Ìáÿíÿkj¢þÿ¬jgŽüÿýôë㚘ù™þš˜™üšó™š™¬Óïøüÿ Ù{fÙÿÿ÷Ô¼Íáÿíÿij þÿªjgŒüÿýñæ¿¢š˜ù™˜™š˜™üšó™š™ªÎê÷üÿ Øxf|Øÿÿ÷Ô¼Íáÿíÿsqªþÿ©jgŠüÿýîà»¡š˜ø™š™™šü™š™™š˜ø™š™¨Éåôüÿ ×ufz×ÿÿóĨ»áÿíÿƒ€¿þÿ©jfŠüÿüëÚ· ™˜ß™¦Åáñüÿ ÕsfxÕÿÿ즃˜áÿíÿ‰†ÈþÿªjgŠýÿýøæÒ±ž™˜ß™£¼Ûîýþþÿ ÕseyÕÿÿæŽg€áÿíÿ}z·þÿ«lgŒþÿþúðѶ¢›™˜ô™ ÖtfyÖÿÿæŽgáÿíÿkj¡þÿ­lgþÿüö纞™™šî™ Ε¶ÿýùçɯŸØ™›¤¸Ôñúýç Š§éÿÿë }”áÿíÿhgšþÿ ã½µÔÿúôÙ±›Ö™š ¾éöüòƲÉóÿÿåŠk}áÿíÿgh™þÿ ëÍÆßÿøïÒ©š×™š™›¶âòúöÔÄ×öÿÿã„fwáÿíÿÿg ôÿþþòßÈ«™˜šÌ™ ³Õçøÿÿüïåìáÿüÿÿþ š›™²ÝòúÿþýþáÿýÿÿþÿýñÿõêÈ¥™™tD T™™qL39o¨À³ü™'ŒoF Jƒ‚q}û™{< þ u™E&wþ™ Dq™Ÿ™š™ »Üíþñÿÿþòÿÿÿÿþþý J ü Ô Û ö î /A, Û 1D. Û 1D. Û 1D. Û %šÇ“% `[ …ëõÿÍUù  ú QqL [€V f` j”d j”d …° 0¹ã±0 :ÕÿÎ: ;ØÿÐ; =ÛÿÓ= ?Þÿ×? @áÿÚ@ BäÿÝB EçÿáE EèÿáE  1E/  *M­óÏÿá‰Dü &`¥ÝûÏÿ õÊ‘I ðš- ò£BEHJLýMKJGEA=962-)%! þ  $).4:?FLRX^djpuzƒ†‰‹ýŒ"Šˆ…}ysnhb\VPJC>82-(# þõ #(.4:@GMT[bhov{‚‡Œ”—šœžž›™–“Š…€zsmf`YRKE>82,'" þå  &,2:AIQYbks{ƒ‹’𠧬±µº½ÀÂÄþÅ&Äÿ¼¹µ°ª¤ž—ˆ€xph_WNF?70*$ þç è ì ï !'.5?GQ\gr}‰”Ÿ©´¾ÆÏÕÜâçìðóöøúûüýþþùÿÿþÿý(üûù÷õñïêæàÚÔ̹°¦›„yncXND<3+% þð  &,4=FOZdoz†‘œ§±»ÃËÓÚáæëïòõøùûüüýþþùÿÿþÿýÿü'úù÷ôñíéäߨÑÈÀ¸®£—Œvk`VLB91)" ýò #*2:DNXbmx‚Ž˜£®·ÁÉÑÙßåéíñôöøùûüüýýõþÿý*üûúù÷õóðìèãÝÖÏǾµ« •Šti^RH?7/'! þò  %-4=FOZdoz…›¥¯¹ÁÉÐ×Ýâæêíðòóôõö÷÷ñøÿ÷+öõôóñïìéåàÛÕÎÆ¾µ¬¢—Œvk`VLB:1*# ò $+2:BLU_it~ˆ’œ¥®¶½ÄÊÏÔ×ÛÞàâãååææíçÿæ)åäãâßÝÚÖÒÎÈÁ»³«¢™…zpf[RH?7/(" ò $+2:BKU^hq{…Ž—Ÿ§®µ»ÀÅÉÌÏÒÔÕרØÙÙíÚÿÙ)Ø×ÖÕÓÑÎËÈÄ¿¹³¬¤”‹xnd[QH?7/(" ò #)08?GOXajr{ƒ‹“™Ÿ¦ª¯³¶¹»½¿ÀÁÁÂÂíÃÄÃþÂ'À¿¾½º¸µ²­©£—ˆxpg^UME=5.'! ò !&,3:AIPX`hov}„‰”˜œŸ¢¤¦¨©ª««þ¬í­þ¬(«ªª¨§¥£¡ž›—’‡‚{tme^VNF?81*$ ò ò ò ýò  !#$%&''((Þ)þ(ÿ'ÿ&%$#"! þð --- NEW FILE: PythonSource.psd --- 8BPS         ÿÀ   ÷Ù³éHßñ†ÿ £T’÷ÝçR{˜ÿ ’äºoÖª…Ÿ¤©ÔµßM îoõöírꪶ»«mµ8>·‰k‚Jf’I$§ÿÑõT’I% Éüßš§è‡ºÁkæ6è5v»wý6ÿ ·ìvx.ˆÖÍa%<ûº`gl}\²Ú­³‰¨´Ø kk>Žßw¨×~ÿ -s\\’Ãò0ÿ žÛ ¶#­5þ” õ¿²­¤’šÕ³(Ø¡‚“P¬&Eƒéìt3ô{QM5n.,ÓÂòH‰$¤^?èÛ÷½ Ñ·î©$¤^?¸ß¸$+¬pÐ>A$”Ž Ù ÜÛÛÚÙÙØØ×ÖÖþÕÓÒÑÍÉüµ¬£›”×ÝÓÊìÿûãÿÇôãýâ –˜——››­ÿÿûêÿÍ÷êìéÿèþçÿæþåäããâáßÝÚÕÑÍÆ¿¹³­©¦¢¢ý¡þ¢ÿ¡ÿ ¡  ¡¡¢£ÿûê ÒÏÎÌÉÇÄÁ¾º¸ÿíðìýë¬Îëë¿üëûêÛœÛÛêýëþìÿëÿê èæåäâáàßÞÝÝÜþÛ ãââáààßÞÝÝÜòóöòüñÿÓüñðññúðüï í²ýýüóü½ÑÕûþúýüóü½ÑÕûüúþùûüõú÷ùøø ÜÛÛÚÙÙØØ×ÖÖþÕÓÒÑÍÉüµ¬£›”×ÝÓÊìÿûãÿÇôãýâ –˜——››­ÿÿûêÿÍ÷êìéÿèþçþæÿåäããâáßÝÚÖÑÍÆ¿º³­©¦£¢ý¡þ¢ÿ¡ÿ ¡  ¡¡¢£ÿûê ÒÏÎÌÉÇÄÁ¾º¸ÿíðìýë¬Îëë¿üëûêÛœÛÛêýëþìÿëÿê èæåäâáàßÞÝÝÜþÛ ãââáààßÞÝÝÜôòüñÿÓýñýð óùûùùúùùúúùõøý÷ í²ýýüóü½ÑÕûþúýüóü½ÑÕûüúþùûüõú÷ùøø ÜÛÛÚÙÙØØ×ÖÖþÕÓÒÑÍÉüµ¬£›”×ÝÓÊìÿûãÿÇôãýâ –˜——››­ÿÿûêÿÍùêéêìéÿèþçþæÿåÿäãâáßÝÚÖÑÍÆ¿¹³­©¦¢¢ý¡þ¢ÿ¡ÿ ¡  ¡¡¢£ÿ ÒÏÎÌÉÇÄÁ¾º¸ÿíðìýë¬Îëë¿üëûêÛœÛÛêýëþìÿëÿê èæåäâáàßÞÝÝÜþÛ ãââáààßÞÝÝÜþòóòóòòóüòýñÿÓ òññòððñððñüðûï í²ýýüóü½ÑÕûþúýüóü½ÑÕûüúþùûüõú÷ùøø Ô6 ÞN ìo máìÿ ü±.mͪ™ê 8íçÿ¡ !)28>CFFEA<5/& å ì í ñ ò ž ž ž ž ž ÷ÿ™çÿÑÿ›ÿÿ•—þÿžœ”ýÿ 2,)ÿÿ˜š˜š™™êÿýÿÿ 23,ÿÿ™™›ž—šêÿþÿþ 210ÿÿ™™šœ˜šêÿþÿþ 211ÿ›˜›š™™êÿþÿþ šã(43¨Ýà¡CùR¬Ð7(í•)434+êÿ GEAJILIKLKKþLMLLMLýMþLÿMLKKMþLÿJI?: 3FHIFLJJIKLKöLÿM÷LÿK JKKMKHJ<4/ïÿúÿý ù GEAJILIKLKKþLMLLMLýMþLÿMLKKMþLÿJI?: 3FHIFLJJIKLKöLÿM÷LÿK JKKMKHJ<4/ïÿúÿý fgÿffÿÿ š™šð™ š™š› ÿefeeffêÿÿÿý GEAJILIKLKKþLMLLMLýMþLÿMLKKMþLÿJI?: 3FHIFLJJIKLKöLÿM÷LÿK JKKMKHJ<4/ïÿúÿý ÜÛÛÚÙÙØØ×ÖÖþÕÓÒÑÍÉüµ¬£›”×ÝÓØÙÿíÿûãÿÇôãýâ ÒÏÎÌÉÇÄÁ¾º¸îÿíÿÿíðìýë¬Îëë¿üëûêÛœÛÛêýëþìÿëÿê èæåäâáàßÞÝÝÜþÛ ãââáààßÞÝÝÜîÿíÿòóöòüñÿÓüñðññúðýï èßðññðñðÞÛÜþÛÚæïýîÿíþìãØéêéèèçææåääãâááàßîÿíÿÿõñôÿÕ÷óûòêðòìæþñáÖðñþò ðÌÅÏÚÖÈÃÛðïýî ™Ôõ·›ôõõä5ù301432ü3 RÊðòò½™èðÓ×ïþîíìëëêþé šÚõ·œõõôÛŠ5û3433234û3 K·îòò»™èïÄÉðïþîíììëêþéîÿöÿÿþ õ¢ãõ¶œõõòËnî3 @žæñò»˜éð¦­ðïïþî 4nÏòÕ©íç½òýñïѯÐîíììîÿ÷ÿÿþÿýûÿ 23†Öíäòñ ©óþòýñÿðïîîîÿøÿÿþýþýûÿ šã(43¨Ýà¡CùR¬Ð7(í•)45‡Üüöùõ ÜÛÛÚÙÙØØ×ÖÖþÕÓÒÑÍÉüµ¬£›”×ÝÓØÙÿíÿûãÿÇôãýâ ÒÏÎÌÉÇÄÁ¾º¸îÿíÿÿíðìýë¬Îëë¿üëûêÛœÛÛêýëþìÿëÿê èæåäâáàßÞÝÝÜþÛ ãââáààßÞÝÝÜîÿíÿôòüñÿÓýñýð ð»ÆÕѽ¸×ððýî Þëþê éèèçææåääããáîÿíÿóõýô£“£º“qÕô¢øó¯åòͨóóôe àóêïïà3, nüðþïîívÞëéèêééèèçææåääããîÿíÿñö÷õÿÖùô ·óÈžôóód Þððïïá ®õNõõôÔnï JÇò‹0åÂAaòýñïѯÐîíììîÿ÷ÿÿþÿýûÿ ç ÁF ÜÛÛÚÙÙØØ×ÖÖþÕÓÒÑÍÉüµ¬£›”×ÝÓØÙÿíÿûãÿÇôãýâ ÒÏÎÌÉÇÄÁ¾º¸îÿíÿÿíðìýë¬Îëë¿üëûêÛœÛÛêýëþìÿëÿê èæåäâáàßÞÝÝÜþÛ ãââáààßÞÝÝÜîÿíÿþòóòóòòóüòýñÿÓ òññòððñððñüðýïîíðïïîíûï ñààØÏÑÜÝçððýî fÁõ˜jÖ´³¤™šð™š™ ÈÓ±œfäÃvˆðáïïßßЮþìëêîÿ÷ÿþþ šµäó²‚êÃ…žòýñðѯÐîíììîÿ÷ÿÿþÿýûÿ š™š³îôó¹¿ôôúóÿòÿñøÿ From jackjansen@users.sourceforge.net Tue Sep 4 22:26:23 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 14:26:23 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/OSXResources/app/Resources - New directory Message-ID: Update of /cvsroot/python/python/dist/src/Mac/OSXResources/app/Resources In directory usw-pr-cvs1:/tmp/cvs-serv1902/Resources Log Message: Directory /cvsroot/python/python/dist/src/Mac/OSXResources/app/Resources added to the repository From jackjansen@users.sourceforge.net Tue Sep 4 22:26:43 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 14:26:43 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/OSXResources/app/Resources/English.lproj - New directory Message-ID: Update of /cvsroot/python/python/dist/src/Mac/OSXResources/app/Resources/English.lproj In directory usw-pr-cvs1:/tmp/cvs-serv1984/English.lproj Log Message: Directory /cvsroot/python/python/dist/src/Mac/OSXResources/app/Resources/English.lproj added to the repository From jackjansen@users.sourceforge.net Tue Sep 4 22:28:05 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 14:28:05 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/OSXResources/app Info.plist,NONE,1.1 PkgInfo,NONE,1.1 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/OSXResources/app In directory usw-pr-cvs1:/tmp/cvs-serv2267 Added Files: Info.plist PkgInfo Log Message: Template for an OSX PythonInterpreter application. --- NEW FILE: Info.plist --- CFBundleDevelopmentRegion English CFBundleDocumentTypes CFBundleTypeExtensions .py CFBundleTypeIconFile PythonSource.icns CFBundleTypeName Python Module CFBundleTypeOSTypes TEXT CFBundleTypeRole Viewer CFBundleTypeExtensions .pyc CFBundleTypeIconFile PythonCompiled.icns CFBundleTypeName Python Compiled Module CFBundleTypeOSTypes PYC CFBundleTypeRole Viewer CFBundleExecutable python CFBundleGetInfoString Python Interpreter version 2.2a3, (c) 2001 Python Software Foundation. CFBundleIconFile PythonInterpreter.icns CFBundleIdentifier org.python.interpreter CFBundleInfoDictionaryVersion 6.0 CFBundleName PythonInterpreter CFBundlePackageType APPL CFBundleShortVersionString Python Interpreter version 2.2a3 CFBundleSignature PytX CFBundleVersion 2.2a3 CSResourcesFileMapped --- NEW FILE: PkgInfo --- APPLPytX From jackjansen@users.sourceforge.net Tue Sep 4 22:28:05 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 14:28:05 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/OSXResources/app/Resources PythonCompiled.icns,NONE,1.1 PythonInterpreter.icns,NONE,1.1 PythonSource.icns,NONE,1.1 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/OSXResources/app/Resources In directory usw-pr-cvs1:/tmp/cvs-serv2267/Resources Added Files: PythonCompiled.icns PythonInterpreter.icns PythonSource.icns Log Message: Template for an OSX PythonInterpreter application. --- NEW FILE: PythonCompiled.icns --- icns "räáßÞÙÔ¿Ô„ sæÞÛÚØÒË™vÄ€ uðÍçååÇâçæáÜ "rãàßÞÙÔ¿Ô„ sæÞÛÚ×ÒÊšvÄ€ uðÍçååÇâçæáÜ "räáßÞÙÔ¿Ô„ sæÞÛÚ×ÒʘuÄ€ uðÍçååÇâçæáÛ âàÞÛØÖÓÐÆ¸§Ž  ÷öæðìßÏËߨäƒ3ßËíìî‡ úøØõôôñÖÕÒ4ƒ3Jâòóó‡ 3íîìèæäãâàà€ßÞÝàãâßÝÙÒ‡  ÷öæðìßÏË߻₠úøØõôôñÖÕɃ 3íîìèæäãâàà€ßÞÝßãâßÝÙÒ‡  ÷öæðìßÏËßÏ郙Ô·íìí‡ ùøØõôôñÖÕÏšƒ™£Ùñóó‡ uèèåâàÞÝÜÛÛ€ÚØ×ÖÔÒÐÏÊ¿¥™‡xuŒ¬ÄZ " ÜÛÚÙ×ÖÔÒÐÍÌ€ÊǾ·²‹ çêêéçæåãáßÞ‹ xøø÷öõôôòòñ€ðÓ©î3342433¹é½Èêëììî‹ " VYb{›¼Ýîöùò‹ Ž’Ÿ±Èáðõùó‹ sèèåâàÞÝÜÛÛ€ÚØ×ÖÔÒÐÏʾ¦š…ywŒ¬ÄZ " ÜÛÚÙØÖÓÒÐÏÌ€ÊǾ·²‹ çêêéåæåãâßÞ‹ " VYb{›¼Ýîöùò‹ Ž’Ÿ±Èáðõùó‹ sèèåâàÞÝÜÛÛ€ÚØ×ÖÔÒÐÏÊ¿¦™ˆyuŒ¬ÄZ " zìêéçäâàßÞÞÝ ÜÛÚÙ×ÕÔÒÐÏÌ€ÊǾ·²‹ çêêéçæåãáßÞ‹ xøø÷öõôóòòñ€ðÃ~˜šš™šÔ颳êëììï‹ " VYb{›¼Ýîöùò‹ Ž’Ÿ±Èáðõùó‹ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ óóô ××ÖÖÕÔÔÓÒÑЀπΠÌÊžµ« š¤ìþ‚ÿúôíåÝÓʹ âáâßáÞÞßÜÜ߀ÛÚÞÚÚÞÚÙÝ€Ù ØØ××ÖÖÕÕÔÓÒÑÐÐÏ ÎÍÊÆ¿¶¬¡«äúþþÿúôíåÝÓʹ› óóô ãââáâàßáÞÞá€Ý ÞßáâÞÝÞáßÞÝÜÛÚÚ€ÙØ×ÖÖ€Õ"ÔÓÒÐÏÍËÉÆÃÀ½»º¹¸¸¹¹ºº¹¸¶µ³²°¯®¬¬«®W¤ ÒÏÍÌÉÇÄÁ¾º¸¤ òñ äããäåãáâäãáà‚߀ހÝÞßáã‚äãââáààßÞÞÝÜÛÚÚÙ×ÕÒÐÐÿ£ 粨»ÏÊ®¨Íêê‚ë€êÞÓè€é€èçææååããÿ£ óóô ÑçèèéÕ¾æèàá€éêêëêéèëÿÿ QÂçé麙âéÏÒ€êëë‚ìëìï¤ šÖﵜïîîÕ†4ƒ3433234ƒ3 J±åé鸙áèÁÆêê€ëƒìíñ¤ óóô óðóóðòòïòòï€ò ññ™ÎñàÑñØ\“3 23¢áßÌëꢩ€í€îíìîïïîð‘ 554332EÍðòó‚ôõôœ ñúûúùöôö÷öö€õ‹ôƒõö#Íj23[è­=Äw1535¥õüÈG|çÆ!†ÜáÜB#/<¨ç€ôõööõö€õ šã(43¨Ýà¡CùR¬Ð7(í•)45‡Üƒö÷÷ö÷€ö æåäãâáààßàà‚ßà€ßÞÝÜÛÚÙØØ××ÖÖÕÔÔÓÑÏÏËÈÿº³®§¢¬ÈŸ½ æääãâáààßÞÞ‚ÝÞނ߀Þ"ÝÜÜÛÛÚÚÙÙØØ××ÖÕÔÔÓÒÑÏÌÉÅÁº²¬¤›•ªÓÊž© óóô ™ËÈ’¼³~›‘–û€ÿúôíåÝÓÊŸ âáâßáÞÞßÜÜ߀ÛÚÞÚÚÞÚÙÝÚÙÙØØ××ÖÖÕÕÔÓÒÑЂÏÎÍÉž¶¬¢œ®âúûýþ€ÿúôíåÝÓʹ› ××ÖÖÕÔÓÓÒÑÐÏÎÍÉÆ¾·­¤Ÿ¨ÌßæíôûûþþúôíåÝÓʹ« óóô ãââáâàßáÞÞá€Ý ÒÏÎÌÉÇÄÁ¾º¸¤ òñ 棚¯ÈÀŸ˜Äêêƒëêêɤæ€é€èçææåäããÿ£ Ûééèéƒèççæåä㤠ٯêê¯Ü óóô Üèèéé¸äéÎÐé‚êéèçèÿ F´€º ¹Êçèèé¯lãèÎЀéêêëêéèéÿÿ òñóïòòïññðî€ð '¸æéé_ ªïLïîîÎj óóô ´ð¼1’ óðóóðòòïòòï€ò ññ óðóóðóòïòòï‚ò — ™ ÁE æåäãâáààßßà€ßƒà€ßÞÝÜÛÚÙØØ××ÖÖÕÔÔÓÑÏÏËÈÿº³®§¢¬ÈŸ½ óóô ¥ÜÜÛ¤Ú̱ÙÙ£€Ø(ס×סÖÕ ÔÓÑÑÐÏšËÊÉË™ËÈ’¼²}™Ž”ýÿÿúôíåÝÓʲ šÌÈ“½´’•÷ÿúôíåÝÓʹŸ ÍËÅ¿·¬ ˜¥ìý‚ÿúôíåÝÓʹ âáâßáÞÞßÜÜ߀ÛÚÞÚÚÞÚÙÝÚÙÙØØ××ÖÖÕÕÔÓÒÑÐ‚Ï ÎÍÊÆ¿¸­¡œªàùƒÿúôíåÝÓʹ› ××ÖÖÕÔÓÓÒÑÐÏÎÌÊÅ¿·­¤ž¨Éáçð÷üüþÿùôíåÝÓʹ« óóô ãââáâàßáÞÞá€Ý òñ ßÞßßÞßÞãèéêƒë êÝÍèéèèççææ€åäãââáߤ óòòñððïïîíí‚ì„ëêÞçêâÙ€êÓÀçé èÙÙÐÈÊÕ×àéêƒëêêÚÈèéé€èçç€æåäããââÿ£ óóô óóô š™š³ëñð·½ññ€òóóôôóóòòœ òûûúùöôö÷öö€õ‹ôƒõö#â´™™{>‘,eš«˜™—D*Šºb,¦ªZŽ¥œœÐñ€ô‚õöõö€õ ðùúúùùø÷öõõ€ô‰ó‚ôõöõÙ£€™ ›)<„ˆÂL¡˜™A¬ªGÀŒ>#–¢ P ™™Áêƒö÷÷ö÷ööõô --- NEW FILE: PythonInterpreter.icns --- icns "     äÿÿÿÿÿÿÿÿÿÿÿÿÿÍB  *Ej‘¶ÒäîòðêÛáyS2  Iœžq”    #4Oi†§¿ÓæñøüþþÿÿÿýüùñçØÀ¨ŒkQ9"   ÜÑÇÔÜ ðÖÍÚð ÖÔÇÕÖ ÚÒÂÑÚ ÜοÑÜ ÜοÑÜ ÞõÆÞ ß° ´ß Û¦™©Û Ü¥™ªÜ ݤ™§Ý Ú¡™§Ú Û¢™¤Û ÜŸ™¥Ü Ú¡™¢Ú Ú ™ Ú á ™£á ÞÌÉÝ ;ÌÔª 8xÌП 8r»ÍÌ 2k¯Ì¿ 2fªÌð 24H€ÃÌŸÿŸÄ̱ 3¦üÖ_3 3¦üÖ^2 ªª?ªŸª¹ÈÔÎÔ€ÓÎÌǼ¸°ª£œ•‘ˆ{vojfb^ZXVUQPONN‚M)NNOOQRTVX[^cgmqv~‡‹‘™Ÿª­µ»ÀÅÌ×ÐÕ××ÐÔ‘ÌÌ£ z y ЗxœÐ t ᪇«á n g Ðg™Ð ÍtKzÍ ¿BJ¿ ¸' ¹$ · ¶ ³ ± ± ± ´ ƒW ¢K=„ `Ìɪ W»ÈŸ NªÇÌ … !w‘¥ ªª?ªŸª¹ÈÔÎÔ€ÓÎÌǼ¸°ª£œ•‘ˆ{vojfb^ZXVUQPONN‚M)NNOOQRTVX[^cgmqv~‡‹‘™Ÿª­µ»ÀÅÌ×ÐÕ××ÐÔ‘ÌÌ£ àØÞ×Óʾ»»ÄÍ€×ÜÖ Ð¿«ÁÐ ðÆ´Éð ÖÁ­ÃÖ Î¾¤¿Î й¡¼Ð й¡¼Ð Õª®Õ Ô‹s‘Ô Ó|fÓ ÏyfÏ Ñyf}Ñ Îxf|Î ÏwfyÏ ÌrfxÌ ËpfwË ËpewË T™™qL39o¨À³‚™'ŒoF Jƒ‚q}ƒ™{< € u™E&w€™ Dq™Ÿ™š™¶ÓÝ¥ J ªª?ªŸª¹ÈÔÎÔ€ÓÎÌǼ¸°ª£œ•‘ˆ{vojfb^ZXVUQPONN‚M)NNOOQRTVX[^cgmqv~‡‹‘™Ÿª­µ»ÀÅÌ×ÐÕ××ÐÔ‘ÌÌ£     /A, 1D. 1D. 1D. …ëÿÿÿÿÿÿÿÿÿÿÿÿÍU   1E/  *M­óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿá‰D &`¥ÝûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõÊ‘I 8XB "&),03579;<<<<;9752/,(%"  #&*.37:>BEHJLMMMMKJGEA=962-)%!   $).4:?FLRX^djpuzƒ†‰‹ŒŒŒŒŠˆ…}ysnhb\VPJC>82-(#  #(.4:@GMT[bhov{‚‡Œ”—šœžž›™–“Š…€zsmf`YRKE>82,'"   &,2:AIQYbks{ƒ‹’𠧬±µº½ÀÂÄÅÅÅÄÿ¼¹µ°ª¤ž—ˆ€xph_WNF?70*$     !'.5?GQ\gr}‰”Ÿ©´¾ÆÏÕÜâçìðóöøúûüýþþþÿÿÿÿÿÿÿÿþþýýüûù÷õñïêæàÚÔ̹°¦›„yncXND<3+%   &,4=FOZdoz†‘œ§±»ÃËÓÚáæëïòõøùûüüýþþþÿÿÿÿÿÿÿÿþþýýüüúù÷ôñíéäߨÑÈÀ¸®£—Œvk`VLB91)"  #*2:DNXbmx‚Ž˜£®·ÁÉÑÙßåéíñôöøùûüüýýþþþþþþþþþþþþýýüûúù÷õóðìèãÝÖÏǾµ« •Šti^RH?7/'!   %-4=FOZdoz…›¥¯¹ÁÉÐ×Ýâæêíðòóôõö÷÷øøøøøøøøøøøøøøøø÷÷öõôóñïìéåàÛÕÎÆ¾µ¬¢—Œvk`VLB:1*#  $+2:BLU_it~ˆ’œ¥®¶½ÄÊÏÔ×ÛÞàâãååææççççççççççççççççççççææåäãâßÝÚÖÒÎÈÁ»³«¢™…zpf[RH?7/("  $+2:BKU^hq{…Ž—Ÿ§®µ»ÀÅÉÌÏÒÔÕרØÙÙÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÙÙØ×ÖÕÓÑÎËÈÄ¿¹³¬¤”‹xnd[QH?7/("  #)08?GOXajr{ƒ‹“™Ÿ¦ª¯³¶¹»½¿ÀÁÁÂÂÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÄÃÂÂÂÀ¿¾½º¸µ²­©£—ˆxpg^UME=5.'!  !&,3:AIPX`hov}„‰”˜œŸ¢¤¦¨©ª««¬¬¬­­­­­­­­­­­­­­­­­­­­¬¬¬«ªª¨§¥£¡ž›—’‡‚{tme^VNF?81*$      !#$%&''(()))))))))))))))))))))))))))))))))))(((''&&%$#"!  --- NEW FILE: PythonSource.icns --- icns àÞÜÚØÖÓÐÆ¸§Ž 45"5#2435 €öõô‹ ¨˜˜¥—¤˜™˜™Í€öõô‹ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ãââáààßÞÝÝܤ èßðññðñðÞÛÜ€ÛÚæïîíí€ìãØéêéèèçææåääãâááàߤ ðÌÅÏÚÖÈÃÛðïî ™Ôõ·›ôõõä5…301432‚3 RÊðòò½™èðÓ×ï€îíìëëê€é šÚõ·œõõôÛŠ5ƒ3433234ƒ3 K·îòò»™èïÄÉðï€îíììëê€é¤ õ¢ãõ¶œõõòËn3 @žæñò»˜éð¦­ðïï€î 4nÏòÕ©íç½òñïѯÐîíìì 23†Öíäòñ ©ó€òñððïîî šã(43¨Ýà¡CùR¬Ð7(í•)45‡Ü‚ö…õ ãââáààßÞÝÝܤ ð»ÆÕѽ¸×ððî Þë€ê éèèçææåääããᤠÞððïïá ®õNõõôÔn JÇò‹0åÂAaòñïѯÐîíìì — ÜÜÝÜÛÛÚØÙÙ×€ÖÕÕÔ€ÒÑÐÐÎÍÉÆÄÀ¾¼¹µ²¯«vÄ ãââáààßÞÝÝܤ ñààØÏÑÜÝçððî fÁõ˜jÖ´³¤™šŽ™š™ ÈÓ±œfäÃvˆðáïïßßЮ€ìëê¤ šµäó²‚êÃ…žòñðѯÐîíìì š™š³îôó¹¿ôô„óòòññœ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ From jackjansen@users.sourceforge.net Tue Sep 4 22:28:05 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 14:28:05 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/OSXResources/app/Resources/English.lproj InfoPlist.strings,NONE,1.1 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/OSXResources/app/Resources/English.lproj In directory usw-pr-cvs1:/tmp/cvs-serv2267/Resources/English.lproj Added Files: InfoPlist.strings Log Message: Template for an OSX PythonInterpreter application. --- NEW FILE: InfoPlist.strings --- þÿ From jackjansen@users.sourceforge.net Tue Sep 4 22:33:14 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 14:33:14 -0700 Subject: [Python-checkins] CVS: python/dist/src setup.py,1.53,1.54 Message-ID: Update of /cvsroot/python/python/dist/src In directory usw-pr-cvs1:/tmp/cvs-serv3846 Modified Files: setup.py Log Message: On MacOSX built the toolbox extension modules iff we're building with --enable-framework. Some modules that are also useful outside a fullblown application are always built. Index: setup.py =================================================================== RCS file: /cvsroot/python/python/dist/src/setup.py,v retrieving revision 1.53 retrieving revision 1.54 diff -C2 -d -r1.53 -r1.54 *** setup.py 2001/09/04 09:05:11 1.53 --- setup.py 2001/09/04 21:33:12 1.54 *************** *** 559,591 **** # already generally useful, some (the GUI ones) really need to # be used from a framework. exts.append( Extension('gestalt', ['gestaltmodule.c']) ) exts.append( Extension('MacOS', ['macosmodule.c']) ) exts.append( Extension('icglue', ['icgluemodule.c']) ) exts.append( Extension('macfs', ['macfsmodule.c', '../Python/getapplbycreator.c']) ) ! ## exts.append( Extension('Nav', ['Nav.c']) ) ! ## exts.append( Extension('AE', ['ae/AEmodule.c']) ) ! ## exts.append( Extension('App', ['app/Appmodule.c']) ) ! ## exts.append( Extension('CF', ['cf/CFmodule.c'], ! ## extra_link_args=['-framework', 'CoreFoundation']) ) ! ## exts.append( Extension('Cm', ['cm/Cmmodule.c']) ) ! ## exts.append( Extension('Ctl', ['ctl/Ctlmodule.c']) ) ! ## exts.append( Extension('Dlg', ['dlg/Dlgmodule.c']) ) ! ## exts.append( Extension('Drag', ['drag/Dragmodule.c']) ) ! ## exts.append( Extension('Evt', ['evt/Evtmodule.c']) ) ! ## exts.append( Extension('Fm', ['fm/Fmmodule.c']) ) ! ## exts.append( Extension('Icn', ['icn/Icnmodule.c']) ) ! ## exts.append( Extension('List', ['list/Listmodule.c']) ) ! ## exts.append( Extension('Menu', ['menu/Menumodule.c']) ) ! ## exts.append( Extension('Mlte', ['mlte/Mltemodule.c']) ) ! ## exts.append( Extension('Qd', ['qd/Qdmodule.c']) ) ! ## exts.append( Extension('Qdoffs', ['qdoffs/Qdoffsmodule.c']) ) ! ## exts.append( Extension('Qt', ['qt/Qtmodule.c'], ! ## extra_link_args=['-framework', 'QuickTime']) ) ! ## exts.append( Extension('Res', ['res/Resmodule.c'] ) ) ! #### exts.append( Extension('Scrap', ['scrap/Scrapmodule.c']) ) ! ## exts.append( Extension('Snd', ['snd/Sndmodule.c']) ) ! ## exts.append( Extension('TE', ['te/TEmodule.c']) ) ! #### exts.append( Extension('waste', ['waste/wastemodule.c']) ) ! ## exts.append( Extension('Win', ['win/Winmodule.c']) ) self.extensions.extend(exts) --- 559,597 ---- # already generally useful, some (the GUI ones) really need to # be used from a framework. + # + # I would like to trigger on WITH_NEXT_FRAMEWORK but that isn't + # available here. This Makefile variable is also what the install + # procedure triggers on. + frameworkdir = sysconfig.get_config_var('PYTHONFRAMEWORKDIR') exts.append( Extension('gestalt', ['gestaltmodule.c']) ) exts.append( Extension('MacOS', ['macosmodule.c']) ) exts.append( Extension('icglue', ['icgluemodule.c']) ) exts.append( Extension('macfs', ['macfsmodule.c', '../Python/getapplbycreator.c']) ) ! exts.append( Extension('_CF', ['cf/_CFmodule.c'], ! extra_link_args=['-framework', 'CoreFoundation']) ) ! exts.append( Extension('_Res', ['res/_Resmodule.c'] ) ) ! exts.append( Extension('_Snd', ['snd/_Sndmodule.c']) ) ! if frameworkdir: ! exts.append( Extension('Nav', ['Nav.c']) ) ! exts.append( Extension('_AE', ['ae/_AEmodule.c']) ) ! exts.append( Extension('_App', ['app/_Appmodule.c']) ) ! exts.append( Extension('_Cm', ['cm/_Cmmodule.c']) ) ! exts.append( Extension('_Ctl', ['ctl/_Ctlmodule.c']) ) ! exts.append( Extension('_Dlg', ['dlg/_Dlgmodule.c']) ) ! exts.append( Extension('_Drag', ['drag/_Dragmodule.c']) ) ! exts.append( Extension('_Evt', ['evt/_Evtmodule.c']) ) ! exts.append( Extension('_Fm', ['fm/_Fmmodule.c']) ) ! exts.append( Extension('_Icn', ['icn/_Icnmodule.c']) ) ! exts.append( Extension('_List', ['list/_Listmodule.c']) ) ! exts.append( Extension('_Menu', ['menu/_Menumodule.c']) ) ! exts.append( Extension('_Mlte', ['mlte/_Mltemodule.c']) ) ! exts.append( Extension('_Qd', ['qd/_Qdmodule.c']) ) ! exts.append( Extension('_Qdoffs', ['qdoffs/_Qdoffsmodule.c']) ) ! exts.append( Extension('_Qt', ['qt/_Qtmodule.c'], ! extra_link_args=['-framework', 'QuickTime']) ) ! ## exts.append( Extension('_Scrap', ['scrap/_Scrapmodule.c']) ) ! exts.append( Extension('_TE', ['te/_TEmodule.c']) ) ! ## exts.append( Extension('waste', ['waste/wastemodule.c']) ) ! exts.append( Extension('_Win', ['win/_Winmodule.c']) ) self.extensions.extend(exts) From tim_one@users.sourceforge.net Tue Sep 4 23:08:58 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Tue, 04 Sep 2001 15:08:58 -0700 Subject: [Python-checkins] CVS: python/dist/src/Doc/api api.tex,1.143,1.144 Message-ID: Update of /cvsroot/python/python/dist/src/Doc/api In directory usw-pr-cvs1:/tmp/cvs-serv11322/python/Doc/api Modified Files: api.tex Log Message: At Guido's suggestion, here's a new C API function, PyObject_Dir(), like __builtin__.dir(). Moved the guts from bltinmodule.c to object.c. Index: api.tex =================================================================== RCS file: /cvsroot/python/python/dist/src/Doc/api/api.tex,v retrieving revision 1.143 retrieving revision 1.144 diff -C2 -d -r1.143 -r1.144 *** api.tex 2001/08/30 15:24:17 1.143 --- api.tex 2001/09/04 22:08:55 1.144 *************** *** 1721,1724 **** --- 1721,1734 ---- \end{cfuncdesc} + \begin{cfuncdesc}{PyObject*}{PyObject_Dir}{PyObject *o} + This is equivalent to the Python expression \samp{dir(\var{o})}, + returning a (possibly empty) list of strings appropriate for the + object argument, or \NULL{} in case of error. + If the argument is \NULL{}, this is like the Python \samp{dir()}, + returning the names of the current locals; in this case, if no + execution frame is active then \NULL{} is returned but + \cfunction{PyErr_Occurred()} will return false. + \end{cfuncdesc} + \section{Number Protocol \label{number}} From tim_one@users.sourceforge.net Tue Sep 4 23:08:58 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Tue, 04 Sep 2001 15:08:58 -0700 Subject: [Python-checkins] CVS: python/dist/src/Misc NEWS,1.227,1.228 Message-ID: Update of /cvsroot/python/python/dist/src/Misc In directory usw-pr-cvs1:/tmp/cvs-serv11322/python/Misc Modified Files: NEWS Log Message: At Guido's suggestion, here's a new C API function, PyObject_Dir(), like __builtin__.dir(). Moved the guts from bltinmodule.c to object.c. Index: NEWS =================================================================== RCS file: /cvsroot/python/python/dist/src/Misc/NEWS,v retrieving revision 1.227 retrieving revision 1.228 diff -C2 -d -r1.227 -r1.228 *** NEWS 2001/09/04 05:14:19 1.227 --- NEWS 2001/09/04 22:08:56 1.228 *************** *** 97,101 **** Build ! API - Note that PyLong_AsDouble can fail! This has always been true, but no --- 97,103 ---- Build ! C API ! ! - New function PyObject_Dir(obj), like Python __builtin__.dir(obj). - Note that PyLong_AsDouble can fail! This has always been true, but no From tim_one@users.sourceforge.net Tue Sep 4 23:08:58 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Tue, 04 Sep 2001 15:08:58 -0700 Subject: [Python-checkins] CVS: python/dist/src/Include object.h,2.88,2.89 Message-ID: Update of /cvsroot/python/python/dist/src/Include In directory usw-pr-cvs1:/tmp/cvs-serv11322/python/Include Modified Files: object.h Log Message: At Guido's suggestion, here's a new C API function, PyObject_Dir(), like __builtin__.dir(). Moved the guts from bltinmodule.c to object.c. Index: object.h =================================================================== RCS file: /cvsroot/python/python/dist/src/Include/object.h,v retrieving revision 2.88 retrieving revision 2.89 diff -C2 -d -r2.88 -r2.89 *** object.h 2001/08/29 23:46:35 2.88 --- object.h 2001/09/04 22:08:56 2.89 *************** *** 347,350 **** --- 347,358 ---- extern DL_IMPORT(void) (*PyObject_ClearWeakRefs)(PyObject *); + /* PyObject_Dir(obj) acts like Python __builtin__.dir(obj), returning a + list of strings. PyObject_Dir(NULL) is like __builtin__.dir(), + returning the names of the current locals. In this case, if there are + no current locals, NULL is returned, and PyErr_Occurred() is false. + */ + extern DL_IMPORT(PyObject *) PyObject_Dir(PyObject *); + + /* Helpers for printing recursive container types */ extern DL_IMPORT(int) Py_ReprEnter(PyObject *); From tim_one@users.sourceforge.net Tue Sep 4 23:08:58 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Tue, 04 Sep 2001 15:08:58 -0700 Subject: [Python-checkins] CVS: python/dist/src/Python bltinmodule.c,2.233,2.234 Message-ID: Update of /cvsroot/python/python/dist/src/Python In directory usw-pr-cvs1:/tmp/cvs-serv11322/python/Python Modified Files: bltinmodule.c Log Message: At Guido's suggestion, here's a new C API function, PyObject_Dir(), like __builtin__.dir(). Moved the guts from bltinmodule.c to object.c. Index: bltinmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Python/bltinmodule.c,v retrieving revision 2.233 retrieving revision 2.234 diff -C2 -d -r2.233 -r2.234 *** bltinmodule.c 2001/09/04 01:20:04 2.233 --- bltinmodule.c 2001/09/04 22:08:56 2.234 *************** *** 427,574 **** in addition to any features explicitly specified."; - /* Merge the __dict__ of aclass into dict, and recursively also all - the __dict__s of aclass's base classes. The order of merging isn't - defined, as it's expected that only the final set of dict keys is - interesting. - Return 0 on success, -1 on error. - */ - - static int - merge_class_dict(PyObject* dict, PyObject* aclass) - { - PyObject *classdict; - PyObject *bases; - - assert(PyDict_Check(dict)); - assert(aclass); - - /* Merge in the type's dict (if any). */ - classdict = PyObject_GetAttrString(aclass, "__dict__"); - if (classdict == NULL) - PyErr_Clear(); - else { - int status = PyDict_Update(dict, classdict); - Py_DECREF(classdict); - if (status < 0) - return -1; - } - - /* Recursively merge in the base types' (if any) dicts. */ - bases = PyObject_GetAttrString(aclass, "__bases__"); - if (bases != NULL) { - int i, n; - assert(PyTuple_Check(bases)); - n = PyTuple_GET_SIZE(bases); - for (i = 0; i < n; i++) { - PyObject *base = PyTuple_GET_ITEM(bases, i); - if (merge_class_dict(dict, base) < 0) { - Py_DECREF(bases); - return -1; - } - } - Py_DECREF(bases); - } - return 0; - } - static PyObject * builtin_dir(PyObject *self, PyObject *args) { PyObject *arg = NULL; - /* Set exactly one of these non-NULL before the end. */ - PyObject *result = NULL; /* result list */ - PyObject *masterdict = NULL; /* result is masterdict.keys() */ if (!PyArg_ParseTuple(args, "|O:dir", &arg)) return NULL; ! ! /* If no arg, return the locals. */ ! if (arg == NULL) { ! PyObject *locals = PyEval_GetLocals(); ! if (locals == NULL) ! goto error; ! result = PyDict_Keys(locals); ! if (result == NULL) ! goto error; ! } ! ! /* Elif this is some form of module, we only want its dict. */ ! else if (PyObject_TypeCheck(arg, &PyModule_Type)) { ! masterdict = PyObject_GetAttrString(arg, "__dict__"); ! if (masterdict == NULL) ! goto error; ! assert(PyDict_Check(masterdict)); ! } ! ! /* Elif some form of type or class, grab its dict and its bases. ! We deliberately don't suck up its __class__, as methods belonging ! to the metaclass would probably be more confusing than helpful. */ ! else if (PyType_Check(arg) || PyClass_Check(arg)) { ! masterdict = PyDict_New(); ! if (masterdict == NULL) ! goto error; ! if (merge_class_dict(masterdict, arg) < 0) ! goto error; ! } ! ! /* Else look at its dict, and the attrs reachable from its class. */ ! else { ! PyObject *itsclass; ! /* Create a dict to start with. CAUTION: Not everything ! responding to __dict__ returns a dict! */ ! masterdict = PyObject_GetAttrString(arg, "__dict__"); ! if (masterdict == NULL) { ! PyErr_Clear(); ! masterdict = PyDict_New(); ! } ! else if (!PyDict_Check(masterdict)) { ! Py_DECREF(masterdict); ! masterdict = PyDict_New(); ! } ! else { ! /* The object may have returned a reference to its ! dict, so copy it to avoid mutating it. */ ! PyObject *temp = PyDict_Copy(masterdict); ! Py_DECREF(masterdict); ! masterdict = temp; ! } ! if (masterdict == NULL) ! goto error; ! ! /* Merge in attrs reachable from its class. ! CAUTION: Not all objects have a __class__ attr. */ ! itsclass = PyObject_GetAttrString(arg, "__class__"); ! if (itsclass == NULL) ! PyErr_Clear(); ! else { ! int status = merge_class_dict(masterdict, itsclass); ! Py_DECREF(itsclass); ! if (status < 0) ! goto error; ! } ! } ! ! assert((result == NULL) ^ (masterdict == NULL)); ! if (masterdict != NULL) { ! /* The result comes from its keys. */ ! assert(result == NULL); ! result = PyDict_Keys(masterdict); ! if (result == NULL) ! goto error; ! } ! ! assert(result); ! if (PyList_Sort(result) != 0) ! goto error; ! else ! goto normal_return; ! ! error: ! Py_XDECREF(result); ! result = NULL; ! /* fall through */ ! normal_return: ! Py_XDECREF(masterdict); ! return result; } --- 427,438 ---- in addition to any features explicitly specified."; static PyObject * builtin_dir(PyObject *self, PyObject *args) { PyObject *arg = NULL; if (!PyArg_ParseTuple(args, "|O:dir", &arg)) return NULL; ! return PyObject_Dir(arg); } From tim_one@users.sourceforge.net Tue Sep 4 23:08:58 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Tue, 04 Sep 2001 15:08:58 -0700 Subject: [Python-checkins] CVS: python/dist/src/Objects object.c,2.143,2.144 Message-ID: Update of /cvsroot/python/python/dist/src/Objects In directory usw-pr-cvs1:/tmp/cvs-serv11322/python/Objects Modified Files: object.c Log Message: At Guido's suggestion, here's a new C API function, PyObject_Dir(), like __builtin__.dir(). Moved the guts from bltinmodule.c to object.c. Index: object.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/object.c,v retrieving revision 2.143 retrieving revision 2.144 diff -C2 -d -r2.143 -r2.144 *** object.c 2001/08/31 17:40:15 2.143 --- object.c 2001/09/04 22:08:56 2.144 *************** *** 1358,1361 **** --- 1358,1506 ---- } + /* Helper for PyObject_Dir. + Merge the __dict__ of aclass into dict, and recursively also all + the __dict__s of aclass's base classes. The order of merging isn't + defined, as it's expected that only the final set of dict keys is + interesting. + Return 0 on success, -1 on error. + */ + + static int + merge_class_dict(PyObject* dict, PyObject* aclass) + { + PyObject *classdict; + PyObject *bases; + + assert(PyDict_Check(dict)); + assert(aclass); + + /* Merge in the type's dict (if any). */ + classdict = PyObject_GetAttrString(aclass, "__dict__"); + if (classdict == NULL) + PyErr_Clear(); + else { + int status = PyDict_Update(dict, classdict); + Py_DECREF(classdict); + if (status < 0) + return -1; + } + + /* Recursively merge in the base types' (if any) dicts. */ + bases = PyObject_GetAttrString(aclass, "__bases__"); + if (bases != NULL) { + int i, n; + assert(PyTuple_Check(bases)); + n = PyTuple_GET_SIZE(bases); + for (i = 0; i < n; i++) { + PyObject *base = PyTuple_GET_ITEM(bases, i); + if (merge_class_dict(dict, base) < 0) { + Py_DECREF(bases); + return -1; + } + } + Py_DECREF(bases); + } + return 0; + } + + /* Like __builtin__.dir(arg). See bltinmodule.c's builtin_dir for the + docstring, which should be kept in synch with this implementation. */ + + PyObject * + PyObject_Dir(PyObject *arg) + { + /* Set exactly one of these non-NULL before the end. */ + PyObject *result = NULL; /* result list */ + PyObject *masterdict = NULL; /* result is masterdict.keys() */ + + /* If NULL arg, return the locals. */ + if (arg == NULL) { + PyObject *locals = PyEval_GetLocals(); + if (locals == NULL) + goto error; + result = PyDict_Keys(locals); + if (result == NULL) + goto error; + } + + /* Elif this is some form of module, we only want its dict. */ + else if (PyObject_TypeCheck(arg, &PyModule_Type)) { + masterdict = PyObject_GetAttrString(arg, "__dict__"); + if (masterdict == NULL) + goto error; + assert(PyDict_Check(masterdict)); + } + + /* Elif some form of type or class, grab its dict and its bases. + We deliberately don't suck up its __class__, as methods belonging + to the metaclass would probably be more confusing than helpful. */ + else if (PyType_Check(arg) || PyClass_Check(arg)) { + masterdict = PyDict_New(); + if (masterdict == NULL) + goto error; + if (merge_class_dict(masterdict, arg) < 0) + goto error; + } + + /* Else look at its dict, and the attrs reachable from its class. */ + else { + PyObject *itsclass; + /* Create a dict to start with. CAUTION: Not everything + responding to __dict__ returns a dict! */ + masterdict = PyObject_GetAttrString(arg, "__dict__"); + if (masterdict == NULL) { + PyErr_Clear(); + masterdict = PyDict_New(); + } + else if (!PyDict_Check(masterdict)) { + Py_DECREF(masterdict); + masterdict = PyDict_New(); + } + else { + /* The object may have returned a reference to its + dict, so copy it to avoid mutating it. */ + PyObject *temp = PyDict_Copy(masterdict); + Py_DECREF(masterdict); + masterdict = temp; + } + if (masterdict == NULL) + goto error; + + /* Merge in attrs reachable from its class. + CAUTION: Not all objects have a __class__ attr. */ + itsclass = PyObject_GetAttrString(arg, "__class__"); + if (itsclass == NULL) + PyErr_Clear(); + else { + int status = merge_class_dict(masterdict, itsclass); + Py_DECREF(itsclass); + if (status < 0) + goto error; + } + } + + assert((result == NULL) ^ (masterdict == NULL)); + if (masterdict != NULL) { + /* The result comes from its keys. */ + assert(result == NULL); + result = PyDict_Keys(masterdict); + if (result == NULL) + goto error; + } + + assert(result); + if (PyList_Sort(result) != 0) + goto error; + else + goto normal_return; + + error: + Py_XDECREF(result); + result = NULL; + /* fall through */ + normal_return: + Py_XDECREF(masterdict); + return result; + } /* From jackjansen@users.sourceforge.net Tue Sep 4 23:15:07 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:15:07 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Distributions dev.include,1.19,1.20 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Distributions In directory usw-pr-cvs1:/tmp/cvs-serv13511/Python/Mac/Distributions Modified Files: dev.include Log Message: Added pythonpath.r to the developer distribution. It's useful to people extending Python. Suggested by Alexandre Parenteau. Index: dev.include =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Distributions/dev.include,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** dev.include 2001/09/01 23:40:19 1.19 --- dev.include 2001/09/04 22:15:05 1.20 *************** *** 282,285 **** --- 282,288 ---- (':Mac:Build:xx.carbon.mcp.exp', '') (':Mac:Build:xx.carbon.mcp.xml', '') + (':Mac:Build:xx.mcp', '') + (':Mac:Build:xx.mcp.exp', '') + (':Mac:Build:xx.mcp.xml', None) (':Mac:Build:xxsubtype.carbon.mcp', None) (':Mac:Build:xxsubtype.carbon.mcp.exp', None) *************** *** 362,366 **** (':Mac:Relnotes', None) (':Mac:Relnotes-source', None) - (':Mac:Resources', None) (':Mac:TODO', None) (':Mac:Tools:BBPy', None) --- 365,368 ---- *************** *** 575,579 **** (':setup.py', None) (':site-packages', None) ! (':Mac:Build:xx.mcp', '') ! (':Mac:Build:xx.mcp.exp', '') ! (':Mac:Build:xx.mcp.xml', None) --- 577,587 ---- (':setup.py', None) (':site-packages', None) ! (':Mac:Resources:pythonpath.r', '') ! (':Mac:Resources:version.r', None) ! (':Mac:Resources:tkpython.rsrc', None) ! (':Mac:Resources:gusiprefs.rsrc', None) ! (':Mac:Resources:errors.rsrc', None) ! (':Mac:Resources:dialogs.rsrc', None) ! (':Mac:Resources:Carbon.r', None) ! (':Mac:Resources:bundle.rsrc', None) ! (':Mac:Resources:balloons.bh', None) From jackjansen@users.sourceforge.net Tue Sep 4 23:16:35 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:16:35 -0700 Subject: [Python-checkins] CVS: python/dist/src/Tools/bgen/bgen bgenObjectDefinition.py,1.12,1.13 Message-ID: Update of /cvsroot/python/python/dist/src/Tools/bgen/bgen In directory usw-pr-cvs1:/tmp/cvs-serv13891/Python/Tools/bgen/bgen Modified Files: bgenObjectDefinition.py Log Message: Don't use a default "int" return type, gcc gives a warning about it. Index: bgenObjectDefinition.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Tools/bgen/bgen/bgenObjectDefinition.py,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** bgenObjectDefinition.py 2001/08/27 14:30:55 1.12 --- bgenObjectDefinition.py 2001/09/04 22:16:33 1.13 *************** *** 99,103 **** def outputConvert(self): ! Output("%s%s_Convert(PyObject *v, %s *p_itself)", self.static, self.prefix, self.itselftype) OutLbrace() --- 99,103 ---- def outputConvert(self): ! Output("%sint %s_Convert(PyObject *v, %s *p_itself)", self.static, self.prefix, self.itselftype) OutLbrace() From jackjansen@users.sourceforge.net Tue Sep 4 23:17:01 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:17:01 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/win _Winmodule.c,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/win In directory usw-pr-cvs1:/tmp/cvs-serv13959/Python/Mac/Modules/win Modified Files: _Winmodule.c Log Message: Regenerated without default int return types. Index: _Winmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/win/_Winmodule.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _Winmodule.c 2001/08/23 13:58:48 1.1 --- _Winmodule.c 2001/09/04 22:16:59 1.2 *************** *** 83,87 **** return (PyObject *)it; } ! WinObj_Convert(PyObject *v, WindowPtr *p_itself) { --- 83,87 ---- return (PyObject *)it; } ! int WinObj_Convert(PyObject *v, WindowPtr *p_itself) { From jackjansen@users.sourceforge.net Tue Sep 4 23:17:05 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:17:05 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/te _TEmodule.c,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/te In directory usw-pr-cvs1:/tmp/cvs-serv14031/Python/Mac/Modules/te Modified Files: _TEmodule.c Log Message: Regenerated without default int return types. Index: _TEmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/te/_TEmodule.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _TEmodule.c 2001/08/23 13:58:53 1.1 --- _TEmodule.c 2001/09/04 22:17:03 1.2 *************** *** 83,87 **** return (PyObject *)it; } ! TEObj_Convert(PyObject *v, TEHandle *p_itself) { if (!TEObj_Check(v)) --- 83,87 ---- return (PyObject *)it; } ! int TEObj_Convert(PyObject *v, TEHandle *p_itself) { if (!TEObj_Check(v)) From jackjansen@users.sourceforge.net Tue Sep 4 23:17:12 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:17:12 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/snd _Sndmodule.c,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/snd In directory usw-pr-cvs1:/tmp/cvs-serv14057/Python/Mac/Modules/snd Modified Files: _Sndmodule.c Log Message: Regenerated without default int return types. Index: _Sndmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/snd/_Sndmodule.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _Sndmodule.c 2001/08/23 13:58:59 1.1 --- _Sndmodule.c 2001/09/04 22:17:10 1.2 *************** *** 81,85 **** return (PyObject *)it; } ! static SndCh_Convert(PyObject *v, SndChannelPtr *p_itself) { if (!SndCh_Check(v)) --- 81,85 ---- return (PyObject *)it; } ! static int SndCh_Convert(PyObject *v, SndChannelPtr *p_itself) { if (!SndCh_Check(v)) From jackjansen@users.sourceforge.net Tue Sep 4 23:17:18 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:17:18 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/res _Resmodule.c,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/res In directory usw-pr-cvs1:/tmp/cvs-serv14076/Python/Mac/Modules/res Modified Files: _Resmodule.c Log Message: Regenerated without default int return types. Index: _Resmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/res/_Resmodule.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _Resmodule.c 2001/08/23 13:59:14 1.1 --- _Resmodule.c 2001/09/04 22:17:16 1.2 *************** *** 66,70 **** return (PyObject *)it; } ! ResObj_Convert(PyObject *v, Handle *p_itself) { if (!ResObj_Check(v)) --- 66,70 ---- return (PyObject *)it; } ! int ResObj_Convert(PyObject *v, Handle *p_itself) { if (!ResObj_Check(v)) From jackjansen@users.sourceforge.net Tue Sep 4 23:17:39 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:17:39 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/qt _Qtmodule.c,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/qt In directory usw-pr-cvs1:/tmp/cvs-serv14104/Python/Mac/Modules/qt Modified Files: _Qtmodule.c Log Message: Regenerated without default int return types. Index: _Qtmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/qt/_Qtmodule.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _Qtmodule.c 2001/08/23 13:59:45 1.1 --- _Qtmodule.c 2001/09/04 22:17:37 1.2 *************** *** 113,117 **** return (PyObject *)it; } ! MovieCtlObj_Convert(PyObject *v, MovieController *p_itself) { if (!MovieCtlObj_Check(v)) --- 113,117 ---- return (PyObject *)it; } ! int MovieCtlObj_Convert(PyObject *v, MovieController *p_itself) { if (!MovieCtlObj_Check(v)) *************** *** 975,979 **** return (PyObject *)it; } ! TimeBaseObj_Convert(PyObject *v, TimeBase *p_itself) { if (!TimeBaseObj_Check(v)) --- 975,979 ---- return (PyObject *)it; } ! int TimeBaseObj_Convert(PyObject *v, TimeBase *p_itself) { if (!TimeBaseObj_Check(v)) *************** *** 1369,1373 **** return (PyObject *)it; } ! UserDataObj_Convert(PyObject *v, UserData *p_itself) { if (!UserDataObj_Check(v)) --- 1369,1373 ---- return (PyObject *)it; } ! int UserDataObj_Convert(PyObject *v, UserData *p_itself) { if (!UserDataObj_Check(v)) *************** *** 1646,1650 **** return (PyObject *)it; } ! MediaObj_Convert(PyObject *v, Media *p_itself) { if (!MediaObj_Check(v)) --- 1646,1650 ---- return (PyObject *)it; } ! int MediaObj_Convert(PyObject *v, Media *p_itself) { if (!MediaObj_Check(v)) *************** *** 2680,2684 **** return (PyObject *)it; } ! TrackObj_Convert(PyObject *v, Track *p_itself) { if (!TrackObj_Check(v)) --- 2680,2684 ---- return (PyObject *)it; } ! int TrackObj_Convert(PyObject *v, Track *p_itself) { if (!TrackObj_Check(v)) *************** *** 3767,3771 **** return (PyObject *)it; } ! MovieObj_Convert(PyObject *v, Movie *p_itself) { if (!MovieObj_Check(v)) --- 3767,3771 ---- return (PyObject *)it; } ! int MovieObj_Convert(PyObject *v, Movie *p_itself) { if (!MovieObj_Check(v)) From jackjansen@users.sourceforge.net Tue Sep 4 23:17:43 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:17:43 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/qdoffs _Qdoffsmodule.c,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/qdoffs In directory usw-pr-cvs1:/tmp/cvs-serv14165/Python/Mac/Modules/qdoffs Modified Files: _Qdoffsmodule.c Log Message: Regenerated without default int return types. Index: _Qdoffsmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/qdoffs/_Qdoffsmodule.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _Qdoffsmodule.c 2001/08/23 13:59:51 1.1 --- _Qdoffsmodule.c 2001/09/04 22:17:41 1.2 *************** *** 56,60 **** return (PyObject *)it; } ! GWorldObj_Convert(PyObject *v, GWorldPtr *p_itself) { if (!GWorldObj_Check(v)) --- 56,60 ---- return (PyObject *)it; } ! int GWorldObj_Convert(PyObject *v, GWorldPtr *p_itself) { if (!GWorldObj_Check(v)) From jackjansen@users.sourceforge.net Tue Sep 4 23:17:58 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:17:58 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/qd _Qdmodule.c,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/qd In directory usw-pr-cvs1:/tmp/cvs-serv14197/Python/Mac/Modules/qd Modified Files: _Qdmodule.c Log Message: Regenerated without default int return types. Index: _Qdmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/qd/_Qdmodule.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _Qdmodule.c 2001/08/23 14:00:12 1.1 --- _Qdmodule.c 2001/09/04 22:17:56 1.2 *************** *** 164,168 **** return (PyObject *)it; } ! GrafObj_Convert(PyObject *v, GrafPtr *p_itself) { #if 1 --- 164,168 ---- return (PyObject *)it; } ! int GrafObj_Convert(PyObject *v, GrafPtr *p_itself) { #if 1 *************** *** 415,419 **** return (PyObject *)it; } ! BMObj_Convert(PyObject *v, BitMapPtr *p_itself) { if (!BMObj_Check(v)) --- 415,419 ---- return (PyObject *)it; } ! int BMObj_Convert(PyObject *v, BitMapPtr *p_itself) { if (!BMObj_Check(v)) From jackjansen@users.sourceforge.net Tue Sep 4 23:18:03 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:18:03 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/mlte _Mltemodule.c,1.2,1.3 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/mlte In directory usw-pr-cvs1:/tmp/cvs-serv14264/Python/Mac/Modules/mlte Modified Files: _Mltemodule.c Log Message: Regenerated without default int return types. Index: _Mltemodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/mlte/_Mltemodule.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** _Mltemodule.c 2001/09/01 23:38:08 1.2 --- _Mltemodule.c 2001/09/04 22:18:01 1.3 *************** *** 108,112 **** return (PyObject *)it; } ! TXNObj_Convert(PyObject *v, TXNObject *p_itself) { if (!TXNObj_Check(v)) --- 108,112 ---- return (PyObject *)it; } ! int TXNObj_Convert(PyObject *v, TXNObject *p_itself) { if (!TXNObj_Check(v)) *************** *** 1095,1099 **** return (PyObject *)it; } ! TXNFontMenuObj_Convert(PyObject *v, TXNFontMenuObject *p_itself) { if (!TXNFontMenuObj_Check(v)) --- 1095,1099 ---- return (PyObject *)it; } ! int TXNFontMenuObj_Convert(PyObject *v, TXNFontMenuObject *p_itself) { if (!TXNFontMenuObj_Check(v)) From jackjansen@users.sourceforge.net Tue Sep 4 23:18:14 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:18:14 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/menu _Menumodule.c,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/menu In directory usw-pr-cvs1:/tmp/cvs-serv14326/Python/Mac/Modules/menu Modified Files: _Menumodule.c Log Message: Regenerated without default int return types. Index: _Menumodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/menu/_Menumodule.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _Menumodule.c 2001/08/23 14:00:27 1.1 --- _Menumodule.c 2001/09/04 22:18:12 1.2 *************** *** 68,72 **** return (PyObject *)it; } ! MenuObj_Convert(PyObject *v, MenuHandle *p_itself) { if (!MenuObj_Check(v)) --- 68,72 ---- return (PyObject *)it; } ! int MenuObj_Convert(PyObject *v, MenuHandle *p_itself) { if (!MenuObj_Check(v)) From jackjansen@users.sourceforge.net Tue Sep 4 23:18:19 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:18:19 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/list _Listmodule.c,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/list In directory usw-pr-cvs1:/tmp/cvs-serv14362/Python/Mac/Modules/list Modified Files: _Listmodule.c Log Message: Regenerated without default int return types. Index: _Listmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/list/_Listmodule.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _Listmodule.c 2001/08/23 14:00:32 1.1 --- _Listmodule.c 2001/09/04 22:18:17 1.2 *************** *** 86,90 **** return (PyObject *)it; } ! ListObj_Convert(PyObject *v, ListHandle *p_itself) { if (!ListObj_Check(v)) --- 86,90 ---- return (PyObject *)it; } ! int ListObj_Convert(PyObject *v, ListHandle *p_itself) { if (!ListObj_Check(v)) From jackjansen@users.sourceforge.net Tue Sep 4 23:18:33 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:18:33 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/drag _Dragmodule.c,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/drag In directory usw-pr-cvs1:/tmp/cvs-serv14401/Python/Mac/Modules/drag Modified Files: _Dragmodule.c Log Message: Regenerated without default int return types. Index: _Dragmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/drag/_Dragmodule.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _Dragmodule.c 2001/08/23 14:01:11 1.1 --- _Dragmodule.c 2001/09/04 22:18:31 1.2 *************** *** 67,71 **** return (PyObject *)it; } ! DragObj_Convert(PyObject *v, DragRef *p_itself) { if (!DragObj_Check(v)) --- 67,71 ---- return (PyObject *)it; } ! int DragObj_Convert(PyObject *v, DragRef *p_itself) { if (!DragObj_Check(v)) From jackjansen@users.sourceforge.net Tue Sep 4 23:18:43 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:18:43 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/dlg _Dlgmodule.c,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/dlg In directory usw-pr-cvs1:/tmp/cvs-serv14452/Python/Mac/Modules/dlg Modified Files: _Dlgmodule.c Log Message: Regenerated without default int return types. Index: _Dlgmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/dlg/_Dlgmodule.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _Dlgmodule.c 2001/08/23 14:01:18 1.1 --- _Dlgmodule.c 2001/09/04 22:18:41 1.2 *************** *** 159,163 **** return (PyObject *)it; } ! DlgObj_Convert(PyObject *v, DialogPtr *p_itself) { if (v == Py_None) { *p_itself = NULL; return 1; } --- 159,163 ---- return (PyObject *)it; } ! int DlgObj_Convert(PyObject *v, DialogPtr *p_itself) { if (v == Py_None) { *p_itself = NULL; return 1; } From jackjansen@users.sourceforge.net Tue Sep 4 23:18:52 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:18:52 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/ctl _Ctlmodule.c,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/ctl In directory usw-pr-cvs1:/tmp/cvs-serv14513/Python/Mac/Modules/ctl Modified Files: _Ctlmodule.c Log Message: Regenerated without default int return types. Index: _Ctlmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/ctl/_Ctlmodule.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _Ctlmodule.c 2001/08/23 14:01:29 1.1 --- _Ctlmodule.c 2001/09/04 22:18:50 1.2 *************** *** 119,123 **** return (PyObject *)it; } ! CtlObj_Convert(PyObject *v, ControlHandle *p_itself) { if (!CtlObj_Check(v)) --- 119,123 ---- return (PyObject *)it; } ! int CtlObj_Convert(PyObject *v, ControlHandle *p_itself) { if (!CtlObj_Check(v)) From jackjansen@users.sourceforge.net Tue Sep 4 23:18:56 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:18:56 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/cm _Cmmodule.c,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/cm In directory usw-pr-cvs1:/tmp/cvs-serv14556/Python/Mac/Modules/cm Modified Files: _Cmmodule.c Log Message: Regenerated without default int return types. Index: _Cmmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/cm/_Cmmodule.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _Cmmodule.c 2001/08/23 14:01:33 1.1 --- _Cmmodule.c 2001/09/04 22:18:54 1.2 *************** *** 85,89 **** return (PyObject *)it; } ! CmpInstObj_Convert(PyObject *v, ComponentInstance *p_itself) { if (!CmpInstObj_Check(v)) --- 85,89 ---- return (PyObject *)it; } ! int CmpInstObj_Convert(PyObject *v, ComponentInstance *p_itself) { if (!CmpInstObj_Check(v)) *************** *** 333,337 **** return (PyObject *)it; } ! CmpObj_Convert(PyObject *v, Component *p_itself) { if ( v == Py_None ) { --- 333,337 ---- return (PyObject *)it; } ! int CmpObj_Convert(PyObject *v, Component *p_itself) { if ( v == Py_None ) { From jackjansen@users.sourceforge.net Tue Sep 4 23:19:07 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:19:07 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/cf _CFmodule.c,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/cf In directory usw-pr-cvs1:/tmp/cvs-serv14582/Python/Mac/Modules/cf Modified Files: _CFmodule.c Log Message: Regenerated without default int return types. Index: _CFmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/cf/_CFmodule.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _CFmodule.c 2001/08/23 14:01:45 1.1 --- _CFmodule.c 2001/09/04 22:19:05 1.2 *************** *** 56,59 **** --- 56,60 ---- } + int CFRange_Convert(PyObject *v, CFRange *p_itself) { *************** *** 103,107 **** return (PyObject *)it; } ! CFTypeRefObj_Convert(PyObject *v, CFTypeRef *p_itself) { --- 104,108 ---- return (PyObject *)it; } ! int CFTypeRefObj_Convert(PyObject *v, CFTypeRef *p_itself) { *************** *** 326,330 **** return (PyObject *)it; } ! CFArrayRefObj_Convert(PyObject *v, CFArrayRef *p_itself) { --- 327,331 ---- return (PyObject *)it; } ! int CFArrayRefObj_Convert(PyObject *v, CFArrayRef *p_itself) { *************** *** 476,480 **** return (PyObject *)it; } ! CFMutableArrayRefObj_Convert(PyObject *v, CFMutableArrayRef *p_itself) { --- 477,481 ---- return (PyObject *)it; } ! int CFMutableArrayRefObj_Convert(PyObject *v, CFMutableArrayRef *p_itself) { *************** *** 629,633 **** return (PyObject *)it; } ! CFDictionaryRefObj_Convert(PyObject *v, CFDictionaryRef *p_itself) { --- 630,634 ---- return (PyObject *)it; } ! int CFDictionaryRefObj_Convert(PyObject *v, CFDictionaryRef *p_itself) { *************** *** 761,765 **** return (PyObject *)it; } ! CFMutableDictionaryRefObj_Convert(PyObject *v, CFMutableDictionaryRef *p_itself) { --- 762,766 ---- return (PyObject *)it; } ! int CFMutableDictionaryRefObj_Convert(PyObject *v, CFMutableDictionaryRef *p_itself) { *************** *** 877,881 **** return (PyObject *)it; } ! CFDataRefObj_Convert(PyObject *v, CFDataRef *p_itself) { --- 878,882 ---- return (PyObject *)it; } ! int CFDataRefObj_Convert(PyObject *v, CFDataRef *p_itself) { *************** *** 1027,1031 **** return (PyObject *)it; } ! CFMutableDataRefObj_Convert(PyObject *v, CFMutableDataRef *p_itself) { --- 1028,1032 ---- return (PyObject *)it; } ! int CFMutableDataRefObj_Convert(PyObject *v, CFMutableDataRef *p_itself) { *************** *** 1225,1229 **** return (PyObject *)it; } ! CFStringRefObj_Convert(PyObject *v, CFStringRef *p_itself) { --- 1226,1230 ---- return (PyObject *)it; } ! int CFStringRefObj_Convert(PyObject *v, CFStringRef *p_itself) { *************** *** 1828,1832 **** return (PyObject *)it; } ! CFMutableStringRefObj_Convert(PyObject *v, CFMutableStringRef *p_itself) { --- 1829,1833 ---- return (PyObject *)it; } ! int CFMutableStringRefObj_Convert(PyObject *v, CFMutableStringRef *p_itself) { *************** *** 2115,2119 **** return (PyObject *)it; } ! CFURLRefObj_Convert(PyObject *v, CFURLRef *p_itself) { --- 2116,2120 ---- return (PyObject *)it; } ! int CFURLRefObj_Convert(PyObject *v, CFURLRef *p_itself) { From jackjansen@users.sourceforge.net Tue Sep 4 23:19:16 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:19:16 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/ae _AEmodule.c,1.2,1.3 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/ae In directory usw-pr-cvs1:/tmp/cvs-serv14660/Python/Mac/Modules/ae Modified Files: _AEmodule.c Log Message: Regenerated without default int return types. Index: _AEmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/ae/_AEmodule.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** _AEmodule.c 2001/09/01 23:38:45 1.2 --- _AEmodule.c 2001/09/04 22:19:14 1.3 *************** *** 72,76 **** return (PyObject *)it; } ! AEDesc_Convert(PyObject *v, AEDesc *p_itself) { if (!AEDesc_Check(v)) --- 72,76 ---- return (PyObject *)it; } ! int AEDesc_Convert(PyObject *v, AEDesc *p_itself) { if (!AEDesc_Check(v)) From jackjansen@users.sourceforge.net Tue Sep 4 23:19:20 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:19:20 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/cf cfsupport.py,1.8,1.9 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/cf In directory usw-pr-cvs1:/tmp/cvs-serv14678/Python/Mac/Modules/cf Modified Files: cfsupport.py Log Message: Regenerated without default int return types. Index: cfsupport.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/cf/cfsupport.py,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** cfsupport.py 2001/08/23 13:47:57 1.8 --- cfsupport.py 2001/09/04 22:19:18 1.9 *************** *** 82,85 **** --- 82,86 ---- } + int CFRange_Convert(PyObject *v, CFRange *p_itself) { From jackjansen@users.sourceforge.net Tue Sep 4 23:20:41 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:20:41 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules Nav.c,1.14,1.15 icgluemodule.c,1.5,1.6 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules In directory usw-pr-cvs1:/tmp/cvs-serv14791 Modified Files: Nav.c icgluemodule.c Log Message: Added prototypes to silence gcc strict-prototype warnings. Fixed a few missing return values. Index: Nav.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/Nav.c,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** Nav.c 2001/09/02 00:08:16 1.14 --- Nav.c 2001/09/04 22:20:39 1.15 *************** *** 89,96 **** Boolean c_rv = false; ! if (!dict) return; if ( (pyfunc = PyDict_GetItemString(dict, "previewProc")) == NULL ) { PyErr_Clear(); ! return; } rv = PyObject_CallFunction(pyfunc, "s#", (void *)callBackParms, sizeof(NavCBRec)); --- 89,96 ---- Boolean c_rv = false; ! if (!dict) return false; if ( (pyfunc = PyDict_GetItemString(dict, "previewProc")) == NULL ) { PyErr_Clear(); ! return false; } rv = PyObject_CallFunction(pyfunc, "s#", (void *)callBackParms, sizeof(NavCBRec)); *************** *** 115,122 **** Boolean c_rv = false; ! if (!dict) return; if ( (pyfunc = PyDict_GetItemString(dict, "filterProc")) == NULL ) { PyErr_Clear(); ! return; } rv = PyObject_CallFunction(pyfunc, "O&s#h", --- 115,122 ---- Boolean c_rv = false; ! if (!dict) return false; if ( (pyfunc = PyDict_GetItemString(dict, "filterProc")) == NULL ) { PyErr_Clear(); ! return false; } rv = PyObject_CallFunction(pyfunc, "O&s#h", *************** *** 245,251 **** static PyObject * ! nav_NavTranslateFile(self, args) ! navrrobject *self; ! PyObject *args; { NavTranslationOptions howToTranslate; --- 245,249 ---- static PyObject * ! nav_NavTranslateFile(navrrobject *self, PyObject *args) { NavTranslationOptions howToTranslate; *************** *** 268,274 **** static PyObject * ! nav_NavCompleteSave(self, args) ! navrrobject *self; ! PyObject *args; { NavTranslationOptions howToTranslate; --- 266,270 ---- static PyObject * ! nav_NavCompleteSave(navrrobject *self, PyObject *args) { NavTranslationOptions howToTranslate; *************** *** 311,316 **** static void ! navrr_dealloc(self) ! navrrobject *self; { NavDisposeReply(&self->itself); --- 307,311 ---- static void ! navrr_dealloc(navrrobject *self) { NavDisposeReply(&self->itself); *************** *** 319,325 **** static PyObject * ! navrr_getattr(self, name) ! navrrobject *self; ! char *name; { FSSpec fss; --- 314,318 ---- static PyObject * ! navrr_getattr(navrrobject *self, char *name) { FSSpec fss; *************** *** 380,387 **** static int ! navrr_setattr(self, name, v) ! navrrobject *self; ! char *name; ! PyObject *v; { /* Set attribute 'name' to value 'v'. v==NULL means delete */ --- 373,377 ---- static int ! navrr_setattr(navrrobject *self, char *name, PyObject *v) { /* Set attribute 'name' to value 'v'. v==NULL means delete */ *************** *** 429,436 **** static PyObject * ! nav_NavGetFile(self, args, kw) ! PyObject *self; /* Not used */ ! PyObject *args; ! PyObject *kw; { PyObject *dict; --- 419,423 ---- static PyObject * ! nav_NavGetFile(PyObject *self, PyObject *args, PyObject *kw) { PyObject *dict; *************** *** 467,474 **** static PyObject * ! nav_NavPutFile(self, args, kw) ! PyObject *self; /* Not used */ ! PyObject *args; ! PyObject *kw; { PyObject *dict; --- 454,458 ---- static PyObject * ! nav_NavPutFile(PyObject *self, PyObject *args, PyObject *kw) { PyObject *dict; *************** *** 505,512 **** static PyObject * ! nav_NavAskSaveChanges(self, args, kw) ! PyObject *self; /* Not used */ ! PyObject *args; ! PyObject *kw; { PyObject *dict; --- 489,493 ---- static PyObject * ! nav_NavAskSaveChanges(PyObject *self, PyObject *args, PyObject *kw) { PyObject *dict; *************** *** 538,545 **** static PyObject * ! nav_NavCustomAskSaveChanges(self, args, kw) ! PyObject *self; /* Not used */ ! PyObject *args; ! PyObject *kw; { PyObject *dict; --- 519,523 ---- static PyObject * ! nav_NavCustomAskSaveChanges(PyObject *self, PyObject *args, PyObject *kw) { PyObject *dict; *************** *** 570,577 **** static PyObject * ! nav_NavAskDiscardChanges(self, args, kw) ! PyObject *self; /* Not used */ ! PyObject *args; ! PyObject *kw; { PyObject *dict; --- 548,552 ---- static PyObject * ! nav_NavAskDiscardChanges(PyObject *self, PyObject *args, PyObject *kw) { PyObject *dict; *************** *** 602,609 **** static PyObject * ! nav_NavChooseFile(self, args, kw) ! PyObject *self; /* Not used */ ! PyObject *args; ! PyObject *kw; { PyObject *dict; --- 577,581 ---- static PyObject * ! nav_NavChooseFile(PyObject *self, PyObject *args, PyObject *kw) { PyObject *dict; *************** *** 640,647 **** static PyObject * ! nav_NavChooseFolder(self, args, kw) ! PyObject *self; /* Not used */ ! PyObject *args; ! PyObject *kw; { PyObject *dict; --- 612,616 ---- static PyObject * ! nav_NavChooseFolder(PyObject *self, PyObject *args, PyObject *kw) { PyObject *dict; *************** *** 676,683 **** static PyObject * ! nav_NavChooseVolume(self, args, kw) ! PyObject *self; /* Not used */ ! PyObject *args; ! PyObject *kw; { PyObject *dict; --- 645,649 ---- static PyObject * ! nav_NavChooseVolume(PyObject *self, PyObject *args, PyObject *kw) { PyObject *dict; *************** *** 712,719 **** static PyObject * ! nav_NavChooseObject(self, args, kw) ! PyObject *self; /* Not used */ ! PyObject *args; ! PyObject *kw; { PyObject *dict; --- 678,682 ---- static PyObject * ! nav_NavChooseObject(PyObject *self, PyObject *args, PyObject *kw) { PyObject *dict; *************** *** 748,755 **** static PyObject * ! nav_NavNewFolder(self, args, kw) ! PyObject *self; /* Not used */ ! PyObject *args; ! PyObject *kw; { PyObject *dict; --- 711,715 ---- static PyObject * ! nav_NavNewFolder(PyObject *self, PyObject *args, PyObject *kw) { PyObject *dict; *************** *** 785,791 **** static PyObject * ! nav_NavCustomControl(self, args) ! PyObject *self; /* Not used */ ! PyObject *args; { --- 745,749 ---- static PyObject * ! nav_NavCustomControl(PyObject *self, PyObject *args) { *************** *** 802,808 **** static PyObject * ! nav_NavServicesCanRun(self, args) ! PyObject *self; /* Not used */ ! PyObject *args; { Boolean rv; --- 760,764 ---- static PyObject * ! nav_NavServicesCanRun(PyObject *self, PyObject *args) { Boolean rv; *************** *** 818,824 **** static PyObject * ! nav_NavServicesAvailable(self, args) ! PyObject *self; /* Not used */ ! PyObject *args; { Boolean rv; --- 774,778 ---- static PyObject * ! nav_NavServicesAvailable(PyObject *self, PyObject *args) { Boolean rv; *************** *** 835,841 **** static PyObject * ! nav_NavLoad(self, args) ! PyObject *self; /* Not used */ ! PyObject *args; { --- 789,793 ---- static PyObject * ! nav_NavLoad(PyObject *self, PyObject *args) { *************** *** 852,858 **** static PyObject * ! nav_NavUnload(self, args) ! PyObject *self; /* Not used */ ! PyObject *args; { --- 804,808 ---- static PyObject * ! nav_NavUnload(PyObject *self, PyObject *args) { *************** *** 869,875 **** static PyObject * ! nav_NavLibraryVersion(self, args) ! PyObject *self; /* Not used */ ! PyObject *args; { UInt32 rv; --- 819,823 ---- static PyObject * ! nav_NavLibraryVersion(PyObject *self, PyObject *args) { UInt32 rv; *************** *** 886,892 **** static PyObject * ! nav_NavGetDefaultDialogOptions(self, args) ! PyObject *self; /* Not used */ ! PyObject *args; { NavDialogOptions dialogOptions; --- 834,838 ---- static PyObject * ! nav_NavGetDefaultDialogOptions(PyObject *self, PyObject *args) { NavDialogOptions dialogOptions; *************** *** 950,954 **** void ! initNav() { PyObject *m, *d; --- 896,900 ---- void ! initNav(void) { PyObject *m, *d; Index: icgluemodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/icgluemodule.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** icgluemodule.c 2001/05/19 12:34:59 1.5 --- icgluemodule.c 2001/09/04 22:20:39 1.6 *************** *** 89,95 **** static PyObject * ! ici_ICFindConfigFile(self, args) ! iciobject *self; ! PyObject *args; { ICError err; --- 89,93 ---- static PyObject * ! ici_ICFindConfigFile(iciobject *self, PyObject *args) { ICError err; *************** *** 109,115 **** static PyObject * ! ici_ICFindUserConfigFile(self, args) ! iciobject *self; ! PyObject *args; { ICError err; --- 107,111 ---- static PyObject * ! ici_ICFindUserConfigFile(iciobject *self, PyObject *args) { ICError err; *************** *** 130,136 **** static PyObject * ! ici_ICChooseConfig(self, args) ! iciobject *self; ! PyObject *args; { ICError err; --- 126,130 ---- static PyObject * ! ici_ICChooseConfig(iciobject *self, PyObject *args) { ICError err; *************** *** 149,155 **** static PyObject * ! ici_ICChooseNewConfig(self, args) ! iciobject *self; ! PyObject *args; { ICError err; --- 143,147 ---- static PyObject * ! ici_ICChooseNewConfig(iciobject *self, PyObject *args) { ICError err; *************** *** 170,176 **** static PyObject * ! ici_ICGetSeed(self, args) ! iciobject *self; ! PyObject *args; { ICError err; --- 162,166 ---- static PyObject * ! ici_ICGetSeed(iciobject *self, PyObject *args) { ICError err; *************** *** 190,196 **** static PyObject * ! ici_ICBegin(self, args) ! iciobject *self; ! PyObject *args; { ICError err; --- 180,184 ---- static PyObject * ! ici_ICBegin(iciobject *self, PyObject *args) { ICError err; *************** *** 211,217 **** static PyObject * ! ici_ICFindPrefHandle(self, args) ! iciobject *self; ! PyObject *args; { ICError err; --- 199,203 ---- static PyObject * ! ici_ICFindPrefHandle(iciobject *self, PyObject *args) { ICError err; *************** *** 233,239 **** static PyObject * ! ici_ICSetPref(self, args) ! iciobject *self; ! PyObject *args; { ICError err; --- 219,223 ---- static PyObject * ! ici_ICSetPref(iciobject *self, PyObject *args) { ICError err; *************** *** 259,265 **** static PyObject * ! ici_ICCountPref(self, args) ! iciobject *self; ! PyObject *args; { ICError err; --- 243,247 ---- static PyObject * ! ici_ICCountPref(iciobject *self, PyObject *args) { ICError err; *************** *** 279,285 **** static PyObject * ! ici_ICGetIndPref(self, args) ! iciobject *self; ! PyObject *args; { ICError err; --- 261,265 ---- static PyObject * ! ici_ICGetIndPref(iciobject *self, PyObject *args) { ICError err; *************** *** 300,306 **** static PyObject * ! ici_ICDeletePref(self, args) ! iciobject *self; ! PyObject *args; { ICError err; --- 280,284 ---- static PyObject * ! ici_ICDeletePref(iciobject *self, PyObject *args) { ICError err; *************** *** 321,327 **** static PyObject * ! ici_ICEnd(self, args) ! iciobject *self; ! PyObject *args; { ICError err; --- 299,303 ---- static PyObject * ! ici_ICEnd(iciobject *self, PyObject *args) { ICError err; *************** *** 341,347 **** static PyObject * ! ici_ICEditPreferences(self, args) ! iciobject *self; ! PyObject *args; { ICError err; --- 317,321 ---- static PyObject * ! ici_ICEditPreferences(iciobject *self, PyObject *args) { ICError err; *************** *** 362,368 **** static PyObject * ! ici_ICParseURL(self, args) ! iciobject *self; ! PyObject *args; { ICError err; --- 336,340 ---- static PyObject * ! ici_ICParseURL(iciobject *self, PyObject *args) { ICError err; *************** *** 388,394 **** static PyObject * ! ici_ICLaunchURL(self, args) ! iciobject *self; ! PyObject *args; { ICError err; --- 360,364 ---- static PyObject * ! ici_ICLaunchURL(iciobject *self, PyObject *args) { ICError err; *************** *** 413,419 **** static PyObject * ! ici_ICMapFilename(self, args) ! iciobject *self; ! PyObject *args; { ICError err; --- 383,387 ---- static PyObject * ! ici_ICMapFilename(iciobject *self, PyObject *args) { ICError err; *************** *** 443,449 **** static PyObject * ! ici_ICMapTypeCreator(self, args) ! iciobject *self; ! PyObject *args; { ICError err; --- 411,415 ---- static PyObject * ! ici_ICMapTypeCreator(iciobject *self, PyObject *args) { ICError err; *************** *** 518,523 **** static void ! ici_dealloc(self) ! iciobject *self; { (void)ICStop(self->inst); --- 484,488 ---- static void ! ici_dealloc(iciobject *self) { (void)ICStop(self->inst); *************** *** 526,532 **** static PyObject * ! ici_getattr(self, name) ! iciobject *self; ! char *name; { return Py_FindMethod(ici_methods, (PyObject *)self, name); --- 491,495 ---- static PyObject * ! ici_getattr(iciobject *self, char *name) { return Py_FindMethod(ici_methods, (PyObject *)self, name); *************** *** 571,577 **** static PyObject * ! ic_ICStart(self, args) ! PyObject *self; /* Not used */ ! PyObject *args; { OSType creator; --- 534,538 ---- static PyObject * ! ic_ICStart(PyObject *self, PyObject *args) { OSType creator; *************** *** 598,602 **** void ! initicglue() { PyObject *m, *d; --- 559,563 ---- void ! initicglue(void) { PyObject *m, *d; From jackjansen@users.sourceforge.net Tue Sep 4 23:25:45 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:25:45 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/cf _CFmodule.c,1.2,1.3 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/cf In directory usw-pr-cvs1:/tmp/cvs-serv16005/Python/Mac/Modules/cf Modified Files: _CFmodule.c Log Message: Shut up a few more gcc warnings. Index: _CFmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/cf/_CFmodule.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** _CFmodule.c 2001/09/04 22:19:05 1.2 --- _CFmodule.c 2001/09/04 22:25:43 1.3 *************** *** 273,277 **** { char buf[100]; ! sprintf(buf, "", CFGetTypeID(self->ob_itself), self, self->ob_itself); return PyString_FromString(buf); } --- 273,277 ---- { char buf[100]; ! sprintf(buf, "", CFGetTypeID(self->ob_itself), (unsigned long)self, (unsigned long)self->ob_itself); return PyString_FromString(buf); } From jackjansen@users.sourceforge.net Tue Sep 4 23:25:49 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:25:49 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/cf cfsupport.py,1.9,1.10 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/cf In directory usw-pr-cvs1:/tmp/cvs-serv16045/Python/Mac/Modules/cf Modified Files: cfsupport.py Log Message: Shut up a few more gcc warnings. Index: cfsupport.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/cf/cfsupport.py,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** cfsupport.py 2001/09/04 22:19:18 1.9 --- cfsupport.py 2001/09/04 22:25:47 1.10 *************** *** 191,195 **** OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", CFGetTypeID(self->ob_itself), self, self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() --- 191,195 ---- OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", CFGetTypeID(self->ob_itself), (unsigned long)self, (unsigned long)self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() From jackjansen@users.sourceforge.net Tue Sep 4 23:29:33 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Tue, 04 Sep 2001 15:29:33 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules gestaltmodule.c,1.7,1.8 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules In directory usw-pr-cvs1:/tmp/cvs-serv16694 Modified Files: gestaltmodule.c Log Message: Added prototypes to shut gcc -Wstrict-prototypes up. Index: gestaltmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/gestaltmodule.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** gestaltmodule.c 2001/05/12 22:46:35 1.7 --- gestaltmodule.c 2001/09/04 22:29:31 1.8 *************** *** 36,42 **** static PyObject * ! gestalt_gestalt(self, args) ! PyObject *self; ! PyObject *args; { OSErr iErr; --- 36,40 ---- static PyObject * ! gestalt_gestalt(PyObject *self, PyObject *args) { OSErr iErr; *************** *** 64,68 **** void ! initgestalt() { Py_InitModule("gestalt", gestalt_methods); --- 62,66 ---- void ! initgestalt(void) { Py_InitModule("gestalt", gestalt_methods); From gvanrossum@users.sourceforge.net Tue Sep 4 23:38:17 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Tue, 04 Sep 2001 15:38:17 -0700 Subject: [Python-checkins] CVS: python/nondist/peps pep-0251.txt,1.4,1.5 Message-ID: Update of /cvsroot/python/python/nondist/peps In directory usw-pr-cvs1:/tmp/cvs-serv18117 Modified Files: pep-0251.txt Log Message: Insert a3 between a2 and a4. Index: pep-0251.txt =================================================================== RCS file: /cvsroot/python/python/nondist/peps/pep-0251.txt,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** pep-0251.txt 2001/08/14 16:59:58 1.4 --- pep-0251.txt 2001/09/04 22:38:15 1.5 *************** *** 31,35 **** 14-Nov-2001: 2.2b2 10-Oct-2001: 2.2b1 ! 19-Sep-2001: 2.2a3 (new! a third alpha) 22-Aug-2001: 2.2a2 18-Jul-2001: 2.2a1 --- 31,36 ---- 14-Nov-2001: 2.2b2 10-Oct-2001: 2.2b1 ! 19-Sep-2001: 2.2a4 ! 7-Sep-1001: 2.2a3 (new! an extra alpha to release more new stuff) 22-Aug-2001: 2.2a2 18-Jul-2001: 2.2a1 From tim_one@users.sourceforge.net Wed Sep 5 00:17:44 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Tue, 04 Sep 2001 16:17:44 -0700 Subject: [Python-checkins] CVS: python/dist/src/Modules mathmodule.c,2.60,2.61 Message-ID: Update of /cvsroot/python/python/dist/src/Modules In directory usw-pr-cvs1:/tmp/cvs-serv26643/python/Modules Modified Files: mathmodule.c Log Message: Mechanical fiddling to make this easier to work with in my editor. Repaired the ldexp docstring (said the name of the func was "ldexp_doc"). Index: mathmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Modules/mathmodule.c,v retrieving revision 2.60 retrieving revision 2.61 diff -C2 -d -r2.60 -r2.61 *** mathmodule.c 2001/08/07 22:10:00 2.60 --- mathmodule.c 2001/09/04 23:17:42 2.61 *************** *** 159,163 **** "tanh(x)\n\nReturn the hyperbolic tangent of x.") - static PyObject * math_frexp(PyObject *self, PyObject *args) --- 159,162 ---- *************** *** 177,186 **** static char math_frexp_doc [] = ! "frexp(x)\n\ ! \n\ ! Return the mantissa and exponent of x, as pair (m, e).\n\ ! m is a float and e is an int, such that x = m * 2.**e.\n\ ! If x is 0, m and e are both 0. Else 0.5 <= abs(m) < 1.0."; ! static PyObject * --- 176,184 ---- static char math_frexp_doc [] = ! "frexp(x)\n" ! "\n" ! "Return the mantissa and exponent of x, as pair (m, e).\n" ! "m is a float and e is an int, such that x = m * 2.**e.\n" ! "If x is 0, m and e are both 0. Else 0.5 <= abs(m) < 1.0."; static PyObject * *************** *** 203,210 **** static char math_ldexp_doc [] = ! "ldexp_doc(x, i)\n\ ! \n\ ! Return x * (2**i)."; ! static PyObject * --- 201,205 ---- static char math_ldexp_doc [] = ! "ldexp(x, i) -> x * (2**i)"; static PyObject * *************** *** 232,240 **** static char math_modf_doc [] = ! "modf(x)\n\ ! \n\ ! Return the fractional and integer parts of x. Both results carry the sign\n\ ! of x. The integer part is returned as a real."; ! static PyMethodDef math_methods[] = { --- 227,234 ---- static char math_modf_doc [] = ! "modf(x)\n" ! "\n" ! "Return the fractional and integer parts of x. Both results carry the sign\n" ! "of x. The integer part is returned as a real."; static PyMethodDef math_methods[] = { *************** *** 267,272 **** static char module_doc [] = ! "This module is always available. It provides access to the\n\ ! mathematical functions defined by the C standard."; DL_EXPORT(void) --- 261,266 ---- static char module_doc [] = ! "This module is always available. It provides access to the\n" ! "mathematical functions defined by the C standard."; DL_EXPORT(void) From tim_one@users.sourceforge.net Wed Sep 5 01:53:47 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Tue, 04 Sep 2001 17:53:47 -0700 Subject: [Python-checkins] CVS: python/dist/src/Misc NEWS,1.228,1.229 Message-ID: Update of /cvsroot/python/python/dist/src/Misc In directory usw-pr-cvs1:/tmp/cvs-serv17117/python/Misc Modified Files: NEWS Log Message: Return reasonable results for math.log(long) and math.log10(long) (we were getting Infs, NaNs, or nonsense in 2.1 and before; in yesterday's CVS we were getting OverflowError; but these functions always make good sense for positive arguments, no matter how large). Index: NEWS =================================================================== RCS file: /cvsroot/python/python/dist/src/Misc/NEWS,v retrieving revision 1.228 retrieving revision 1.229 diff -C2 -d -r1.228 -r1.229 *** NEWS 2001/09/04 22:08:56 1.228 --- NEWS 2001/09/05 00:53:45 1.229 *************** *** 82,85 **** --- 82,88 ---- Library + - math.log and math.log10 now return sensible results for even huge + long arguments. For example, math.log10(10 ** 10000) ~= 10000.0. + - A new function, imp.lock_held(), returns 1 when the import lock is currently held. See the docs for the imp module. From tim_one@users.sourceforge.net Wed Sep 5 01:53:47 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Tue, 04 Sep 2001 17:53:47 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/test test_long.py,1.14,1.15 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/test In directory usw-pr-cvs1:/tmp/cvs-serv17117/python/Lib/test Modified Files: test_long.py Log Message: Return reasonable results for math.log(long) and math.log10(long) (we were getting Infs, NaNs, or nonsense in 2.1 and before; in yesterday's CVS we were getting OverflowError; but these functions always make good sense for positive arguments, no matter how large). Index: test_long.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_long.py,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** test_long.py 2001/09/04 19:48:01 1.14 --- test_long.py 2001/09/05 00:53:44 1.15 *************** *** 1,3 **** ! from test_support import verify, verbose, TestFailed from string import join from random import random, randint --- 1,3 ---- ! from test_support import verify, verbose, TestFailed, fcmp from string import join from random import random, randint *************** *** 354,360 **** "1. ** huge", "huge ** 1.", "1. ** mhuge", "mhuge ** 1.", "math.sin(huge)", "math.sin(mhuge)", - "math.log(huge)", "math.log(mhuge)", # should do better "math.sqrt(huge)", "math.sqrt(mhuge)", # should do better - "math.log10(huge)", "math.log10(mhuge)", # should do better "math.floor(huge)", "math.floor(mhuge)"]: --- 354,358 ---- *************** *** 365,368 **** --- 363,401 ---- else: raise TestFailed("expected OverflowError from %s" % test) + + # ---------------------------------------------- test huge log and log10 + + def test_logs(): + import math + + if verbose: + print "log and log10" + + LOG10E = math.log10(math.e) + + for exp in range(10) + [100, 1000, 10000]: + value = 10 ** exp + log10 = math.log10(value) + verify(fcmp(log10, exp) == 0) + + # log10(value) == exp, so log(value) == log10(value)/log10(e) == + # exp/LOG10E + expected = exp / LOG10E + log = math.log(value) + verify(fcmp(log, expected) == 0) + + for bad in -(1L << 10000), -2L, 0L: + try: + math.log(bad) + raise TestFailed("expected ValueError from log(<= 0)") + except ValueError: + pass + + try: + math.log10(bad) + raise TestFailed("expected ValueError from log10(<= 0)") + except ValueError: + pass + # ---------------------------------------------------------------- do it *************** *** 373,374 **** --- 406,408 ---- test_auto_overflow() test_float_overflow() + test_logs() From tim_one@users.sourceforge.net Wed Sep 5 01:53:47 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Tue, 04 Sep 2001 17:53:47 -0700 Subject: [Python-checkins] CVS: python/dist/src/Modules mathmodule.c,2.61,2.62 Message-ID: Update of /cvsroot/python/python/dist/src/Modules In directory usw-pr-cvs1:/tmp/cvs-serv17117/python/Modules Modified Files: mathmodule.c Log Message: Return reasonable results for math.log(long) and math.log10(long) (we were getting Infs, NaNs, or nonsense in 2.1 and before; in yesterday's CVS we were getting OverflowError; but these functions always make good sense for positive arguments, no matter how large). Index: mathmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Modules/mathmodule.c,v retrieving revision 2.61 retrieving revision 2.62 diff -C2 -d -r2.61 -r2.62 *** mathmodule.c 2001/09/04 23:17:42 2.61 --- mathmodule.c 2001/09/05 00:53:45 2.62 *************** *** 2,5 **** --- 2,6 ---- #include "Python.h" + #include "longintrepr.h" #ifndef _MSC_VER *************** *** 137,144 **** FUNC2(hypot, hypot, "hypot(x,y)\n\nReturn the Euclidean distance, sqrt(x*x + y*y).") - FUNC1(log, log, - "log(x)\n\nReturn the natural logarithm of x.") - FUNC1(log10, log10, - "log10(x)\n\nReturn the base-10 logarithm of x.") #ifdef MPW_3_1 /* This hack is needed for MPW 3.1 but not for 3.2 ... */ FUNC2(pow, power, --- 138,141 ---- *************** *** 231,234 **** --- 228,294 ---- "Return the fractional and integer parts of x. Both results carry the sign\n" "of x. The integer part is returned as a real."; + + /* A decent logarithm is easy to compute even for huge longs, but libm can't + do that by itself -- loghelper can. func is log or log10, and name is + "log" or "log10". Note that overflow isn't possible: a long can contain + no more than INT_MAX * SHIFT bits, so has value certainly less than + 2**(2**64 * 2**16) == 2**2**80, and log2 of that is 2**80, which is + small enough to fit in an IEEE single. log and log10 are even smaller. + */ + + static PyObject* + loghelper(PyObject* args, double (*func)(double), char *name) + { + PyObject *arg; + char format[16]; + + /* See whether this is a long. */ + format[0] = 'O'; + format[1] = ':'; + strcpy(format + 2, name); + if (! PyArg_ParseTuple(args, format, &arg)) + return NULL; + + /* If it is long, do it ourselves. */ + if (PyLong_Check(arg)) { + double x; + int e; + x = _PyLong_AsScaledDouble(arg, &e); + if (x <= 0.0) { + PyErr_SetString(PyExc_ValueError, + "math domain error"); + return NULL; + } + /* Value is ~= x * 2**(e*SHIFT), so the log ~= + log(x) + log(2) * e * SHIFT. + CAUTION: e*SHIFT may overflow using int arithmetic, + so force use of double. */ + x = func(x) + func(2.0) * (double)e * (double)SHIFT; + return PyFloat_FromDouble(x); + } + + /* Else let libm handle it by itself. */ + format[0] = 'd'; + return math_1(args, func, format); + } + + static PyObject * + math_log(PyObject *self, PyObject *args) + { + return loghelper(args, log, "log"); + } + + static char math_log_doc[] = + "log(x) -> the natural logarithm (base e) of x."; + + static PyObject * + math_log10(PyObject *self, PyObject *args) + { + return loghelper(args, log10, "log10"); + } + + static char math_log10_doc[] = + "log10(x) -> the base 10 logarithm of x."; + static PyMethodDef math_methods[] = { From gvanrossum@users.sourceforge.net Wed Sep 5 03:26:28 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Tue, 04 Sep 2001 19:26:28 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/test test_repr.py,1.3,1.4 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/test In directory usw-pr-cvs1:/tmp/cvs-serv3574 Modified Files: test_repr.py Log Message: Add a test for the final branch in repr.Repr.repr1(), which deals with a default repr() that's longer than 20 characters. Index: test_repr.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_repr.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** test_repr.py 2001/08/24 18:37:32 1.3 --- test_repr.py 2001/09/05 02:26:26 1.4 *************** *** 79,82 **** --- 79,87 ---- eq(r(i3), (""%id(i3))) + s = r(ClassWithFailingRepr) + self.failUnless(s.startswith("")) + self.failUnless(s.find("...") == 8) + def test_file(self): fp = open(unittest.__file__) From gvanrossum@users.sourceforge.net Wed Sep 5 03:27:06 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Tue, 04 Sep 2001 19:27:06 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib repr.py,1.12,1.13 Message-ID: Update of /cvsroot/python/python/dist/src/Lib In directory usw-pr-cvs1:/tmp/cvs-serv3714 Modified Files: repr.py Log Message: Another / that should be a // (previously not caught because of incomplete coverage of the test suite). Index: repr.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/repr.py,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** repr.py 2001/09/04 19:14:14 1.12 --- repr.py 2001/09/05 02:27:04 1.13 *************** *** 24,28 **** s = `x` if len(s) > self.maxother: ! i = max(0, (self.maxother-3)/2) j = max(0, self.maxother-3-i) s = s[:i] + '...' + s[len(s)-j:] --- 24,28 ---- s = `x` if len(s) > self.maxother: ! i = max(0, (self.maxother-3)//2) j = max(0, self.maxother-3-i) s = s[:i] + '...' + s[len(s)-j:] From tim_one@users.sourceforge.net Wed Sep 5 05:33:13 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Tue, 04 Sep 2001 21:33:13 -0700 Subject: [Python-checkins] CVS: python/dist/src/Modules mathmodule.c,2.62,2.63 Message-ID: Update of /cvsroot/python/python/dist/src/Modules In directory usw-pr-cvs1:/tmp/cvs-serv28828/python/Modules Modified Files: mathmodule.c Log Message: loghelper(): Try to nudge the compiler into doing mults in an order that minimizes roundoff error. Index: mathmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Modules/mathmodule.c,v retrieving revision 2.62 retrieving revision 2.63 diff -C2 -d -r2.62 -r2.63 *** mathmodule.c 2001/09/05 00:53:45 2.62 --- mathmodule.c 2001/09/05 04:33:11 2.63 *************** *** 264,268 **** CAUTION: e*SHIFT may overflow using int arithmetic, so force use of double. */ ! x = func(x) + func(2.0) * (double)e * (double)SHIFT; return PyFloat_FromDouble(x); } --- 264,268 ---- CAUTION: e*SHIFT may overflow using int arithmetic, so force use of double. */ ! x = func(x) + (e * (double)SHIFT) * func(2.0); return PyFloat_FromDouble(x); } From tim_one@users.sourceforge.net Wed Sep 5 06:38:12 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Tue, 04 Sep 2001 22:38:12 -0700 Subject: [Python-checkins] CVS: python/dist/src/Include pyport.h,2.33,2.34 Message-ID: Update of /cvsroot/python/python/dist/src/Include In directory usw-pr-cvs1:/tmp/cvs-serv7743/python/Include Modified Files: pyport.h Log Message: Try to recover from that glibc's ldexp apparently doesn't set errno on overflow. Needs testing on Linux (test_long.py and test_long_future.py especially). Index: pyport.h =================================================================== RCS file: /cvsroot/python/python/dist/src/Include/pyport.h,v retrieving revision 2.33 retrieving revision 2.34 diff -C2 -d -r2.33 -r2.34 *** pyport.h 2001/08/29 21:37:09 2.33 --- pyport.h 2001/09/05 05:38:10 2.34 *************** *** 231,234 **** --- 231,254 ---- #define Py_IS_INFINITY(X) ((X) && (X)*0.5 == (X)) + /* Py_OVERFLOWED(X) + * Return 1 iff a libm function overflowed. Set errno to 0 before calling + * a libm function, and invoke this macro after, passing the function + * result. + * Caution: + * This isn't reliable. C99 no longer requires libm to set errno under + * any exceptional condition, but does require +- HUGE_VAL return + * values on overflow. A 754 box *probably* maps HUGE_VAL to a + * double infinity, and we're cool if that's so, unless the input + * was an infinity and an infinity is the expected result. A C89 + * system sets errno to ERANGE, so we check for that too. We're + * out of luck if a C99 754 box doesn't map HUGE_VAL to +Inf, or + * if the returned result is a NaN, or if a C89 box returns HUGE_VAL + * in non-overflow cases. + * X is evaluated more than once. + */ + #define Py_OVERFLOWED(X) ((X) != 0.0 && (errno == ERANGE || \ + (X) == HUGE_VAL || \ + (X) == -HUGE_VAL)) + /************************************************************************** Prototypes that are missing from the standard include files on some systems From tim_one@users.sourceforge.net Wed Sep 5 06:38:12 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Tue, 04 Sep 2001 22:38:12 -0700 Subject: [Python-checkins] CVS: python/dist/src/Objects longobject.c,1.100,1.101 Message-ID: Update of /cvsroot/python/python/dist/src/Objects In directory usw-pr-cvs1:/tmp/cvs-serv7743/python/Objects Modified Files: longobject.c Log Message: Try to recover from that glibc's ldexp apparently doesn't set errno on overflow. Needs testing on Linux (test_long.py and test_long_future.py especially). Index: longobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/longobject.c,v retrieving revision 1.100 retrieving revision 1.101 diff -C2 -d -r1.100 -r1.101 *** longobject.c 2001/09/04 06:17:36 1.100 --- longobject.c 2001/09/05 05:38:10 1.101 *************** *** 546,550 **** errno = 0; x = ldexp(x, e * SHIFT); ! if (errno == ERANGE) goto overflow; return x; --- 546,550 ---- errno = 0; x = ldexp(x, e * SHIFT); ! if (Py_OVERFLOWED(x)) goto overflow; return x; *************** *** 1608,1612 **** errno = 0; ad = ldexp(ad, aexp * SHIFT); ! if (ad != 0 && errno == ERANGE) /* ignore underflow to 0.0 */ goto overflow; return PyFloat_FromDouble(ad); --- 1608,1612 ---- errno = 0; ad = ldexp(ad, aexp * SHIFT); ! if (Py_OVERFLOWED(ad)) /* ignore underflow to 0.0 */ goto overflow; return PyFloat_FromDouble(ad); From tim_one@users.sourceforge.net Wed Sep 5 07:24:26 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Tue, 04 Sep 2001 23:24:26 -0700 Subject: [Python-checkins] CVS: python/dist/src/Include pyport.h,2.34,2.35 Message-ID: Update of /cvsroot/python/python/dist/src/Include In directory usw-pr-cvs1:/tmp/cvs-serv17904/python/Include Modified Files: pyport.h Log Message: Repair indentation. Index: pyport.h =================================================================== RCS file: /cvsroot/python/python/dist/src/Include/pyport.h,v retrieving revision 2.34 retrieving revision 2.35 diff -C2 -d -r2.34 -r2.35 *** pyport.h 2001/09/05 05:38:10 2.34 --- pyport.h 2001/09/05 06:24:24 2.35 *************** *** 237,245 **** * Caution: * This isn't reliable. C99 no longer requires libm to set errno under ! * any exceptional condition, but does require +- HUGE_VAL return ! * values on overflow. A 754 box *probably* maps HUGE_VAL to a ! * double infinity, and we're cool if that's so, unless the input ! * was an infinity and an infinity is the expected result. A C89 ! * system sets errno to ERANGE, so we check for that too. We're * out of luck if a C99 754 box doesn't map HUGE_VAL to +Inf, or * if the returned result is a NaN, or if a C89 box returns HUGE_VAL --- 237,245 ---- * Caution: * This isn't reliable. C99 no longer requires libm to set errno under ! * any exceptional condition, but does require +- HUGE_VAL return ! * values on overflow. A 754 box *probably* maps HUGE_VAL to a ! * double infinity, and we're cool if that's so, unless the input ! * was an infinity and an infinity is the expected result. A C89 ! * system sets errno to ERANGE, so we check for that too. We're * out of luck if a C99 754 box doesn't map HUGE_VAL to +Inf, or * if the returned result is a NaN, or if a C89 box returns HUGE_VAL From tim_one@users.sourceforge.net Wed Sep 5 07:25:00 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Tue, 04 Sep 2001 23:25:00 -0700 Subject: [Python-checkins] CVS: python/dist/src/Objects floatobject.c,2.93,2.94 intobject.c,2.71,2.72 longobject.c,1.101,1.102 Message-ID: Update of /cvsroot/python/python/dist/src/Objects In directory usw-pr-cvs1:/tmp/cvs-serv17986/python/Objects Modified Files: floatobject.c intobject.c longobject.c Log Message: Make the error msgs in our pow() implementations consistent. Index: floatobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/floatobject.c,v retrieving revision 2.93 retrieving revision 2.94 diff -C2 -d -r2.93 -r2.94 *** floatobject.c 2001/09/04 05:14:19 2.93 --- floatobject.c 2001/09/05 06:24:58 2.94 *************** *** 496,501 **** if ((PyObject *)z != Py_None) { ! PyErr_SetString(PyExc_TypeError, ! "3rd argument to floating pow() must be None"); return NULL; } --- 496,501 ---- if ((PyObject *)z != Py_None) { ! PyErr_SetString(PyExc_TypeError, "pow() 3rd argument not " ! "allowed unless all other arguments are integers"); return NULL; } Index: intobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/intobject.c,v retrieving revision 2.71 retrieving revision 2.72 diff -C2 -d -r2.71 -r2.72 *** intobject.c 2001/09/04 06:17:36 2.71 --- intobject.c 2001/09/05 06:24:58 2.72 *************** *** 590,595 **** if (iw < 0) { if ((PyObject *)z != Py_None) { ! PyErr_SetString(PyExc_TypeError, "integer pow() arg " ! "3 must not be specified when arg 2 is < 0"); return NULL; } --- 590,595 ---- if (iw < 0) { if ((PyObject *)z != Py_None) { ! PyErr_SetString(PyExc_TypeError, "pow() 2nd argument " ! "cannot be negative when 3rd argument specified"); return NULL; } *************** *** 604,608 **** if (iz == 0) { PyErr_SetString(PyExc_ValueError, ! "pow() arg 3 cannot be 0"); return NULL; } --- 604,608 ---- if (iz == 0) { PyErr_SetString(PyExc_ValueError, ! "pow() 3rd argument cannot be 0"); return NULL; } Index: longobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/longobject.c,v retrieving revision 1.101 retrieving revision 1.102 diff -C2 -d -r1.101 -r1.102 *** longobject.c 2001/09/05 05:38:10 1.101 --- longobject.c 2001/09/05 06:24:58 1.102 *************** *** 1686,1690 **** return Py_NotImplemented; } ! size_b = b->ob_size; if (size_b < 0) { --- 1686,1697 ---- return Py_NotImplemented; } ! ! if (c != Py_None && ((PyLongObject *)c)->ob_size == 0) { ! PyErr_SetString(PyExc_ValueError, ! "pow() 3rd argument cannot be 0"); ! z = NULL; ! goto error; ! } ! size_b = b->ob_size; if (size_b < 0) { *************** *** 1693,1698 **** Py_DECREF(c); if (x != Py_None) { ! PyErr_SetString(PyExc_TypeError, "integer pow() arg " ! "3 must not be specified when arg 2 is < 0"); return NULL; } --- 1700,1705 ---- Py_DECREF(c); if (x != Py_None) { ! PyErr_SetString(PyExc_TypeError, "pow() 2nd argument " ! "cannot be negative when 3rd argument specified"); return NULL; } From loewis@users.sourceforge.net Wed Sep 5 09:22:36 2001 From: loewis@users.sourceforge.net (Martin v. L?wis) Date: Wed, 05 Sep 2001 01:22:36 -0700 Subject: [Python-checkins] CVS: python/dist/src configure.in,1.249,1.250 configure,1.241,1.242 Message-ID: Update of /cvsroot/python/python/dist/src In directory usw-pr-cvs1:/tmp/cvs-serv13709 Modified Files: configure.in configure Log Message: Check for RFC 2553 API. Fixes bug #454493. Index: configure.in =================================================================== RCS file: /cvsroot/python/python/dist/src/configure.in,v retrieving revision 1.249 retrieving revision 1.250 diff -C2 -d -r1.249 -r1.250 *** configure.in 2001/08/29 23:44:38 1.249 --- configure.in 2001/09/05 08:22:34 1.250 *************** *** 969,973 **** # Check for enable-ipv6 ! AC_MSG_CHECKING([whether to enable ipv6]) AC_ARG_ENABLE(ipv6, [ --enable-ipv6 Enable ipv6 (with ipv4) support --- 969,973 ---- # Check for enable-ipv6 ! AC_MSG_CHECKING([if --enable-ipv6 is specified]) AC_ARG_ENABLE(ipv6, [ --enable-ipv6 Enable ipv6 (with ipv4) support *************** *** 984,987 **** --- 984,989 ---- esac ], + [ + dnl the check does not work on cross compilation case... AC_TRY_RUN([ /* AF_INET6 available check */ #include *************** *** 996,1000 **** ], AC_MSG_RESULT(yes) - AC_DEFINE(ENABLE_IPV6) ipv6=yes, AC_MSG_RESULT(no) --- 998,1001 ---- *************** *** 1002,1006 **** AC_MSG_RESULT(no) ipv6=no ! )) ipv6type=unknown --- 1003,1024 ---- AC_MSG_RESULT(no) ipv6=no ! ) ! ! if test "$ipv6" = "yes"; then ! AC_MSG_CHECKING(if RFC2553 API is available) ! AC_TRY_COMPILE([#include ! #include ], ! [struct sockaddr_in6 x; ! x.sin6_scope_id;], ! AC_MSG_RESULT(yes) ! ipv6=yes, ! AC_MSG_RESULT(no, IPv6 disabled) ! ipv6=no) ! fi ! ! if test "$ipv6" = "yes"; then ! AC_DEFINE(ENABLE_IPV6) ! fi ! ]) ipv6type=unknown Index: configure =================================================================== RCS file: /cvsroot/python/python/dist/src/configure,v retrieving revision 1.241 retrieving revision 1.242 diff -C2 -d -r1.241 -r1.242 *** configure 2001/08/29 23:58:47 1.241 --- configure 2001/09/05 08:22:34 1.242 *************** *** 2306,2310 **** #include "confdefs.h" #include - #include main() { --- 2306,2309 ---- *************** *** 2315,2319 **** } EOF [...3633 lines suppressed...] if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < *************** *** 7072,7076 **** SRCDIRS="Parser Grammar Objects Python Modules" echo $ac_n "checking for build directories""... $ac_c" 1>&6 ! echo "configure:7075: checking for build directories" >&5 for dir in $SRCDIRS; do if test ! -d $dir; then --- 7093,7097 ---- SRCDIRS="Parser Grammar Objects Python Modules" echo $ac_n "checking for build directories""... $ac_c" 1>&6 ! echo "configure:7096: checking for build directories" >&5 for dir in $SRCDIRS; do if test ! -d $dir; then From loewis@users.sourceforge.net Wed Sep 5 09:36:54 2001 From: loewis@users.sourceforge.net (Martin v. L?wis) Date: Wed, 05 Sep 2001 01:36:54 -0700 Subject: [Python-checkins] CVS: python/dist/src configure.in,1.250,1.251 configure,1.242,1.243 Message-ID: Update of /cvsroot/python/python/dist/src In directory usw-pr-cvs1:/tmp/cvs-serv17326 Modified Files: configure.in configure Log Message: Use -fPIC instead of -fpic for gcc on HP/UX. Fixes bug #433234. Index: configure.in =================================================================== RCS file: /cvsroot/python/python/dist/src/configure.in,v retrieving revision 1.250 retrieving revision 1.251 diff -C2 -d -r1.250 -r1.251 *** configure.in 2001/09/05 08:22:34 1.250 --- configure.in 2001/09/05 08:36:51 1.251 *************** *** 712,716 **** fi;; hp*|HP*) if test "$GCC" = yes; ! then CCSHARED="-fpic"; else CCSHARED="+z"; fi;; --- 712,716 ---- fi;; hp*|HP*) if test "$GCC" = yes; ! then CCSHARED="-fPIC"; else CCSHARED="+z"; fi;; Index: configure =================================================================== RCS file: /cvsroot/python/python/dist/src/configure,v retrieving revision 1.242 retrieving revision 1.243 diff -C2 -d -r1.242 -r1.243 *** configure 2001/09/05 08:22:34 1.242 --- configure 2001/09/05 08:36:52 1.243 *************** *** 1,5 **** #! /bin/sh ! # From configure.in Revision: 1.249 # Guess values for system-dependent variables and create Makefiles. --- 1,5 ---- #! /bin/sh ! # From configure.in Revision: 1.250 # Guess values for system-dependent variables and create Makefiles. *************** *** 3088,3092 **** fi;; hp*|HP*) if test "$GCC" = yes; ! then CCSHARED="-fpic"; else CCSHARED="+z"; fi;; --- 3088,3092 ---- fi;; hp*|HP*) if test "$GCC" = yes; ! then CCSHARED="-fPIC"; else CCSHARED="+z"; fi;; From jackjansen@users.sourceforge.net Wed Sep 5 11:27:50 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:27:50 -0700 Subject: [Python-checkins] CVS: python/dist/src/Tools/bgen/bgen bgenBuffer.py,1.5,1.6 Message-ID: Update of /cvsroot/python/python/dist/src/Tools/bgen/bgen In directory usw-pr-cvs1:/tmp/cvs-serv10847/python/Tools/bgen/bgen Modified Files: bgenBuffer.py Log Message: Only output the buffer size error label if it is used. Shuts up another couple of gcc warnings. Index: bgenBuffer.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Tools/bgen/bgen/bgenBuffer.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** bgenBuffer.py 1999/09/30 14:15:14 1.5 --- bgenBuffer.py 2001/09/05 10:27:48 1.6 *************** *** 37,40 **** --- 37,41 ---- self.sizetype = sizetype self.sizeformat = sizeformat or type2format[sizetype] + self.label_needed = 0 def declare(self, name): *************** *** 68,71 **** --- 69,73 ---- self.size) Output("goto %s__error__;", name) + self.label_needed = 1 OutRbrace() self.transferSize(name) *************** *** 84,90 **** def cleanup(self, name): ! DedentLevel() ! Output(" %s__error__: ;", name) ! IndentLevel() --- 86,93 ---- def cleanup(self, name): ! if self.label_needed: ! DedentLevel() ! Output(" %s__error__: ;", name) ! IndentLevel() From jackjansen@users.sourceforge.net Wed Sep 5 11:27:55 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:27:55 -0700 Subject: [Python-checkins] CVS: python/dist/src/Tools/bgen/bgen bgenHeapBuffer.py,1.2,1.3 Message-ID: Update of /cvsroot/python/python/dist/src/Tools/bgen/bgen In directory usw-pr-cvs1:/tmp/cvs-serv10865/python/Tools/bgen/bgen Modified Files: bgenHeapBuffer.py Log Message: Only output the buffer size error label if it is used. Shuts up another couple of gcc warnings. Index: bgenHeapBuffer.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Tools/bgen/bgen/bgenHeapBuffer.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** bgenHeapBuffer.py 1995/03/10 14:37:52 1.2 --- bgenHeapBuffer.py 2001/09/05 10:27:53 1.3 *************** *** 25,28 **** --- 25,29 ---- Output('PyErr_NoMemory();') Output("goto %s__error__;", name) + self.label_needed = 1 OutRbrace() Output("%s__len__ = %s__in_len__;", name, name) From jackjansen@users.sourceforge.net Wed Sep 5 11:28:51 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:28:51 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/snd _Sndmodule.c,1.2,1.3 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/snd In directory usw-pr-cvs1:/tmp/cvs-serv11081/python/Mac/Modules/snd Modified Files: _Sndmodule.c Log Message: Shut up many more gcc warnings. Index: _Sndmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/snd/_Sndmodule.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** _Sndmodule.c 2001/09/04 22:17:10 1.2 --- _Sndmodule.c 2001/09/05 10:28:49 1.3 *************** *** 6,11 **** --- 6,15 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif /* Macro to test whether a weak-loaded CFM function exists */ *************** *** 23,28 **** #include #endif - /* Create a SndCommand object (an (int, int, int) tuple) */ static PyObject * --- 27,32 ---- #include #endif + #if !TARGET_API_MAC_CARBON /* Create a SndCommand object (an (int, int, int) tuple) */ static PyObject * *************** *** 31,34 **** --- 35,39 ---- return Py_BuildValue("hhl", pc->cmd, pc->param1, pc->param2); } + #endif /* Convert a SndCommand argument */ *************** *** 81,94 **** return (PyObject *)it; } - static int SndCh_Convert(PyObject *v, SndChannelPtr *p_itself) - { - if (!SndCh_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "SndChannel required"); - return 0; - } - *p_itself = ((SndChannelObject *)v)->ob_itself; - return 1; - } static void SndCh_dealloc(SndChannelObject *self) --- 86,89 ---- *************** *** 234,238 **** _res = Py_BuildValue("s#", (char *)&theStatus__out__, (int)sizeof(SCStatus)); - theStatus__error__: ; return _res; } --- 229,232 ---- *************** *** 373,377 **** return (PyObject *)it; } ! static SPBObj_Convert(PyObject *v, SPBPtr *p_itself) { if (!SPBObj_Check(v)) --- 367,371 ---- return (PyObject *)it; } ! static int SPBObj_Convert(PyObject *v, SPBPtr *p_itself) { if (!SPBObj_Check(v)) *************** *** 475,479 **** { PyObject *_res = NULL; ! return SPBObj_New(); } --- 469,473 ---- { PyObject *_res = NULL; ! _res = SPBObj_New(); return _res; } *************** *** 573,577 **** _res = Py_BuildValue("s#", (char *)&theStatus__out__, (int)sizeof(SMStatus)); - theStatus__error__: ; return _res; } --- 567,570 ---- *************** *** 897,901 **** _res = Py_BuildValue("s#", (char *)&cp__out__, (int)sizeof(CompressionInfo)); - cp__error__: ; return _res; } --- 890,893 ---- From jackjansen@users.sourceforge.net Wed Sep 5 11:28:55 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:28:55 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/snd sndsupport.py,1.17,1.18 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/snd In directory usw-pr-cvs1:/tmp/cvs-serv11111/python/Mac/Modules/snd Modified Files: sndsupport.py Log Message: Shut up many more gcc warnings. Index: sndsupport.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/snd/sndsupport.py,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** sndsupport.py 2001/08/23 13:51:17 1.17 --- sndsupport.py 2001/09/05 10:28:53 1.18 *************** *** 96,100 **** includestuff = includestuff + """ ! /* Create a SndCommand object (an (int, int, int) tuple) */ static PyObject * --- 96,100 ---- includestuff = includestuff + """ ! #if !TARGET_API_MAC_CARBON /* Create a SndCommand object (an (int, int, int) tuple) */ static PyObject * *************** *** 103,106 **** --- 103,107 ---- return Py_BuildValue("hhl", pc->cmd, pc->param1, pc->param2); } + #endif /* Convert a SndCommand argument */ *************** *** 231,234 **** --- 232,238 ---- Output("SndDisposeChannel(%s, 1);", itselfname) + def outputConvert(self): + pass # Not needed + # *************** *** 271,275 **** def outputConvert(self): ! Output("%s%s_Convert(PyObject *v, %s *p_itself)", self.static, self.prefix, self.itselftype) OutLbrace() self.outputCheckConvertArg() --- 275,279 ---- def outputConvert(self): ! Output("%sint %s_Convert(PyObject *v, %s *p_itself)", self.static, self.prefix, self.itselftype) OutLbrace() self.outputCheckConvertArg() *************** *** 334,338 **** sndobject = SndObjectDefinition('SndChannel', 'SndCh', 'SndChannelPtr') spbobject = SpbObjectDefinition('SPB', 'SPBObj', 'SPBPtr') ! spbgenerator = ManualGenerator("SPB", "return SPBObj_New();") module = MacModule('_Snd', 'Snd', includestuff, finalstuff, initstuff) module.addobject(sndobject) --- 338,342 ---- sndobject = SndObjectDefinition('SndChannel', 'SndCh', 'SndChannelPtr') spbobject = SpbObjectDefinition('SPB', 'SPBObj', 'SPBPtr') ! spbgenerator = ManualGenerator("SPB", "_res = SPBObj_New(); return _res;") module = MacModule('_Snd', 'Snd', includestuff, finalstuff, initstuff) module.addobject(sndobject) From jackjansen@users.sourceforge.net Wed Sep 5 11:29:04 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:29:04 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/qd _Qdmodule.c,1.2,1.3 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/qd In directory usw-pr-cvs1:/tmp/cvs-serv11133/python/Mac/Modules/qd Modified Files: _Qdmodule.c Log Message: Shut up many more gcc warnings. Index: _Qdmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/qd/_Qdmodule.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** _Qdmodule.c 2001/09/04 22:17:56 1.2 --- _Qdmodule.c 2001/09/05 10:29:02 1.3 *************** *** 6,11 **** --- 6,15 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif /* Macro to test whether a weak-loaded CFM function exists */ *************** *** 443,447 **** return NULL; cp = _self->ob_itself->baseAddr+from; ! return PyString_FromStringAndSize(cp, length); } --- 447,452 ---- return NULL; cp = _self->ob_itself->baseAddr+from; ! _res = PyString_FromStringAndSize(cp, length); ! return _res; } *************** *** 459,463 **** memcpy(cp, icp, length); Py_INCREF(Py_None); ! return Py_None; } --- 464,469 ---- memcpy(cp, icp, length); Py_INCREF(Py_None); ! _res = Py_None; ! return _res; } *************** *** 913,917 **** _res = Py_BuildValue("s#", (char *)&pnState__out__, (int)sizeof(PenState)); - pnState__error__: ; return _res; } --- 919,922 ---- *************** *** 3471,3475 **** _res = Py_BuildValue("s#", (char *)&thePat__out__, (int)sizeof(Pattern)); - thePat__error__: ; return _res; } --- 3476,3479 ---- *************** *** 4117,4121 **** _res = Py_BuildValue("s#", (char *)&arrow__out__, (int)sizeof(Cursor)); - arrow__error__: ; return _res; } --- 4121,4124 ---- *************** *** 4130,4134 **** _res = Py_BuildValue("s#", (char *)&dkGray__out__, (int)sizeof(Pattern)); - dkGray__error__: ; return _res; } --- 4133,4136 ---- *************** *** 4143,4147 **** _res = Py_BuildValue("s#", (char *)<Gray__out__, (int)sizeof(Pattern)); - ltGray__error__: ; return _res; } --- 4145,4148 ---- *************** *** 4156,4160 **** _res = Py_BuildValue("s#", (char *)&gray__out__, (int)sizeof(Pattern)); - gray__error__: ; return _res; } --- 4157,4160 ---- *************** *** 4169,4173 **** _res = Py_BuildValue("s#", (char *)&black__out__, (int)sizeof(Pattern)); - black__error__: ; return _res; } --- 4169,4172 ---- *************** *** 4182,4186 **** _res = Py_BuildValue("s#", (char *)&white__out__, (int)sizeof(Pattern)); - white__error__: ; return _res; } --- 4181,4184 ---- *************** *** 4449,4453 **** PyObject *_res = NULL; char *textBuf__in__; - int textBuf__len__; int textBuf__in_len__; short firstByte; --- 4447,4450 ---- *************** *** 4458,4461 **** --- 4455,4460 ---- &byteCount)) return NULL; + /* Fool compiler warnings */ + textBuf__in_len__ = textBuf__in_len__; MacDrawText(textBuf__in__, firstByte, *************** *** 4463,4467 **** Py_INCREF(Py_None); _res = Py_None; - textBuf__error__: ; return _res; } --- 4462,4465 ---- *************** *** 4500,4504 **** short _rv; char *textBuf__in__; - int textBuf__len__; int textBuf__in_len__; short firstByte; --- 4498,4501 ---- *************** *** 4509,4512 **** --- 4506,4511 ---- &byteCount)) return NULL; + /* Fool compiler warnings */ + textBuf__in_len__ = textBuf__in_len__; _rv = TextWidth(textBuf__in__, firstByte, *************** *** 4514,4518 **** _res = Py_BuildValue("h", _rv); - textBuf__error__: ; return _res; } --- 4513,4516 ---- *************** *** 4978,4982 **** PyObject *_res = NULL; char *textBuf__in__; - int textBuf__len__; int textBuf__in_len__; short firstByte; --- 4976,4979 ---- *************** *** 4987,4990 **** --- 4984,4989 ---- &byteCount)) return NULL; + /* Fool compiler warnings */ + textBuf__in_len__ = textBuf__in_len__; DrawText(textBuf__in__, firstByte, *************** *** 4992,4996 **** Py_INCREF(Py_None); _res = Py_None; - textBuf__error__: ; return _res; } --- 4991,4994 ---- From jackjansen@users.sourceforge.net Wed Sep 5 11:29:10 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:29:10 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/qd qdsupport.py,1.34,1.35 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/qd In directory usw-pr-cvs1:/tmp/cvs-serv11192/python/Mac/Modules/qd Modified Files: qdsupport.py Log Message: Shut up many more gcc warnings. Index: qdsupport.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/qd/qdsupport.py,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** qdsupport.py 2001/08/23 13:50:22 1.34 --- qdsupport.py 2001/09/05 10:29:07 1.35 *************** *** 25,29 **** class TextThingieClass(FixedInputBufferType): def getargsCheck(self, name): ! pass TextThingie = TextThingieClass(None) --- 25,33 ---- class TextThingieClass(FixedInputBufferType): def getargsCheck(self, name): ! Output("/* Fool compiler warnings */") ! Output("%s__in_len__ = %s__in_len__;", name, name) ! ! def declareSize(self, name): ! Output("int %s__in_len__;", name) TextThingie = TextThingieClass(None) *************** *** 567,571 **** return NULL; cp = _self->ob_itself->baseAddr+from; ! return PyString_FromStringAndSize(cp, length); """ f = ManualGenerator("getdata", getdata_body) --- 571,576 ---- return NULL; cp = _self->ob_itself->baseAddr+from; ! _res = PyString_FromStringAndSize(cp, length); ! return _res; """ f = ManualGenerator("getdata", getdata_body) *************** *** 583,587 **** memcpy(cp, icp, length); Py_INCREF(Py_None); ! return Py_None; """ f = ManualGenerator("putdata", putdata_body) --- 588,593 ---- memcpy(cp, icp, length); Py_INCREF(Py_None); ! _res = Py_None; ! return _res; """ f = ManualGenerator("putdata", putdata_body) From jackjansen@users.sourceforge.net Wed Sep 5 11:29:18 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:29:18 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/win _Winmodule.c,1.2,1.3 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/win In directory usw-pr-cvs1:/tmp/cvs-serv11219/python/Mac/Modules/win Modified Files: _Winmodule.c Log Message: Shut up many more gcc warnings. Index: _Winmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/win/_Winmodule.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** _Winmodule.c 2001/09/04 22:16:59 1.2 --- _Winmodule.c 2001/09/05 10:29:15 1.3 *************** *** 6,11 **** --- 6,15 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif /* Macro to test whether a weak-loaded CFM function exists */ *************** *** 2126,2130 **** { char buf[100]; ! sprintf(buf, "", self, self->ob_itself); return PyString_FromString(buf); } --- 2130,2134 ---- { char buf[100]; ! sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself); return PyString_FromString(buf); } *************** *** 2644,2648 **** if ( !PyArg_ParseTuple(_args, "i", &ptr) ) return NULL; ! return WinObj_WhichWindow((WindowPtr)ptr); } --- 2648,2653 ---- if ( !PyArg_ParseTuple(_args, "i", &ptr) ) return NULL; ! _res = WinObj_WhichWindow((WindowPtr)ptr); ! return _res; } From jackjansen@users.sourceforge.net Wed Sep 5 11:29:23 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:29:23 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/te _TEmodule.c,1.2,1.3 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/te In directory usw-pr-cvs1:/tmp/cvs-serv11247/python/Mac/Modules/te Modified Files: _TEmodule.c Log Message: Shut up many more gcc warnings. Index: _TEmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/te/_TEmodule.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** _TEmodule.c 2001/09/04 22:17:03 1.2 --- _TEmodule.c 2001/09/05 10:29:21 1.3 *************** *** 6,11 **** --- 6,15 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif /* Macro to test whether a weak-loaded CFM function exists */ *************** *** 114,118 **** Py_INCREF(Py_None); _res = Py_None; - text__error__: ; return _res; } --- 118,121 ---- *************** *** 252,256 **** Py_INCREF(Py_None); _res = Py_None; - text__error__: ; return _res; } --- 255,258 ---- *************** *** 532,536 **** Py_INCREF(Py_None); _res = Py_None; - text__error__: ; return _res; } --- 534,537 ---- *************** *** 874,878 **** Py_INCREF(Py_None); _res = Py_None; - text__error__: ; return _res; } --- 875,878 ---- From jackjansen@users.sourceforge.net Wed Sep 5 11:29:29 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:29:29 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/res _Resmodule.c,1.2,1.3 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/res In directory usw-pr-cvs1:/tmp/cvs-serv11277/python/Mac/Modules/res Modified Files: _Resmodule.c Log Message: Shut up many more gcc warnings. Index: _Resmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/res/_Resmodule.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** _Resmodule.c 2001/09/04 22:17:16 1.2 --- _Resmodule.c 2001/09/05 10:29:27 1.3 *************** *** 6,11 **** --- 6,15 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif /* Macro to test whether a weak-loaded CFM function exists */ *************** *** 395,399 **** PyObject *_res = NULL; ! return CtlObj_New((ControlHandle)_self->ob_itself); } --- 399,404 ---- PyObject *_res = NULL; ! _res = CtlObj_New((ControlHandle)_self->ob_itself); ! return _res; } *************** *** 403,407 **** PyObject *_res = NULL; ! return MenuObj_New((MenuHandle)_self->ob_itself); } --- 408,413 ---- PyObject *_res = NULL; ! _res = MenuObj_New((MenuHandle)_self->ob_itself); ! return _res; } *************** *** 1534,1538 **** } ! OptResObj_Convert(PyObject *v, Handle *p_itself) { PyObject *tmp; --- 1540,1544 ---- } ! int OptResObj_Convert(PyObject *v, Handle *p_itself) { PyObject *tmp; From jackjansen@users.sourceforge.net Wed Sep 5 11:29:40 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:29:40 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/qt _Qtmodule.c,1.2,1.3 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/qt In directory usw-pr-cvs1:/tmp/cvs-serv11313/python/Mac/Modules/qt Modified Files: _Qtmodule.c Log Message: Shut up many more gcc warnings. Index: _Qtmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/qt/_Qtmodule.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** _Qtmodule.c 2001/09/04 22:17:37 1.2 --- _Qtmodule.c 2001/09/05 10:29:38 1.3 *************** *** 6,11 **** --- 6,15 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif /* Macro to test whether a weak-loaded CFM function exists */ From jackjansen@users.sourceforge.net Wed Sep 5 11:29:45 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:29:45 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/qdoffs _Qdoffsmodule.c,1.2,1.3 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/qdoffs In directory usw-pr-cvs1:/tmp/cvs-serv11357/python/Mac/Modules/qdoffs Modified Files: _Qdoffsmodule.c Log Message: Shut up many more gcc warnings. Index: _Qdoffsmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/qdoffs/_Qdoffsmodule.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** _Qdoffsmodule.c 2001/09/04 22:17:41 1.2 --- _Qdoffsmodule.c 2001/09/05 10:29:43 1.3 *************** *** 6,11 **** --- 6,15 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif /* Macro to test whether a weak-loaded CFM function exists */ *************** *** 504,508 **** return NULL; cp = GetPixBaseAddr(pm)+from; ! return PyString_FromStringAndSize(cp, length); } --- 508,513 ---- return NULL; cp = GetPixBaseAddr(pm)+from; ! _res = PyString_FromStringAndSize(cp, length); ! return _res; } *************** *** 521,525 **** memcpy(cp, icp, length); Py_INCREF(Py_None); ! return Py_None; } --- 526,531 ---- memcpy(cp, icp, length); Py_INCREF(Py_None); ! _res = Py_None; ! return _res; } From jackjansen@users.sourceforge.net Wed Sep 5 11:29:51 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:29:51 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/mlte _Mltemodule.c,1.3,1.4 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/mlte In directory usw-pr-cvs1:/tmp/cvs-serv11384/python/Mac/Modules/mlte Modified Files: _Mltemodule.c Log Message: Shut up many more gcc warnings. Index: _Mltemodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/mlte/_Mltemodule.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** _Mltemodule.c 2001/09/04 22:18:01 1.3 --- _Mltemodule.c 2001/09/05 10:29:49 1.4 *************** *** 6,11 **** --- 6,15 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif /* Macro to test whether a weak-loaded CFM function exists */ *************** *** 684,688 **** Py_INCREF(Py_None); _res = Py_None; - iDataPtr__error__: ; return _res; } --- 688,691 ---- From jackjansen@users.sourceforge.net Wed Sep 5 11:29:59 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:29:59 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/menu _Menumodule.c,1.2,1.3 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/menu In directory usw-pr-cvs1:/tmp/cvs-serv11414/python/Mac/Modules/menu Modified Files: _Menumodule.c Log Message: Shut up many more gcc warnings. Index: _Menumodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/menu/_Menumodule.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** _Menumodule.c 2001/09/04 22:18:12 1.2 --- _Menumodule.c 2001/09/05 10:29:57 1.3 *************** *** 6,11 **** --- 6,15 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif /* Macro to test whether a weak-loaded CFM function exists */ From jackjansen@users.sourceforge.net Wed Sep 5 11:30:04 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:30:04 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/list _Listmodule.c,1.2,1.3 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/list In directory usw-pr-cvs1:/tmp/cvs-serv11456/python/Mac/Modules/list Modified Files: _Listmodule.c Log Message: Shut up many more gcc warnings. Index: _Listmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/list/_Listmodule.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** _Listmodule.c 2001/09/04 22:18:17 1.2 --- _Listmodule.c 2001/09/05 10:30:02 1.3 *************** *** 6,11 **** --- 6,15 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif /* Macro to test whether a weak-loaded CFM function exists */ *************** *** 362,366 **** Py_INCREF(Py_None); _res = Py_None; - dataPtr__error__: ; return _res; } --- 366,369 ---- *************** *** 440,444 **** Py_INCREF(Py_None); _res = Py_None; - dataPtr__error__: ; return _res; } --- 443,446 ---- *************** *** 930,934 **** l = (ListObject *)ListObj_New(as_List(h)); l->ob_must_be_disposed = 0; ! return Py_BuildValue("O", l); } --- 932,937 ---- l = (ListObject *)ListObj_New(as_List(h)); l->ob_must_be_disposed = 0; ! _res = Py_BuildValue("O", l); ! return _res; } From jackjansen@users.sourceforge.net Wed Sep 5 11:30:11 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:30:11 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/icn _Icnmodule.c,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/icn In directory usw-pr-cvs1:/tmp/cvs-serv11551/python/Mac/Modules/icn Modified Files: _Icnmodule.c Log Message: Shut up many more gcc warnings. Index: _Icnmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/icn/_Icnmodule.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _Icnmodule.c 2001/08/23 14:00:41 1.1 --- _Icnmodule.c 2001/09/05 10:30:09 1.2 *************** *** 6,11 **** --- 6,15 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif /* Macro to test whether a weak-loaded CFM function exists */ From jackjansen@users.sourceforge.net Wed Sep 5 11:30:15 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:30:15 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/help _Helpmodule.c,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/help In directory usw-pr-cvs1:/tmp/cvs-serv11592/python/Mac/Modules/help Modified Files: _Helpmodule.c Log Message: Shut up many more gcc warnings. Index: _Helpmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/help/_Helpmodule.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _Helpmodule.c 2001/08/23 14:00:46 1.1 --- _Helpmodule.c 2001/09/05 10:30:13 1.2 *************** *** 6,11 **** --- 6,15 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif /* Macro to test whether a weak-loaded CFM function exists */ From jackjansen@users.sourceforge.net Wed Sep 5 11:30:22 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:30:22 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/evt _Evtmodule.c,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/evt In directory usw-pr-cvs1:/tmp/cvs-serv11609/python/Mac/Modules/evt Modified Files: _Evtmodule.c Log Message: Shut up many more gcc warnings. Index: _Evtmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/evt/_Evtmodule.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _Evtmodule.c 2001/08/23 14:01:03 1.1 --- _Evtmodule.c 2001/09/05 10:30:20 1.2 *************** *** 6,11 **** --- 6,15 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif /* Macro to test whether a weak-loaded CFM function exists */ *************** *** 107,111 **** _res = Py_BuildValue("s#", (char *)&theKeys__out__, (int)sizeof(KeyMap)); - theKeys__error__: ; return _res; } --- 111,114 ---- From jackjansen@users.sourceforge.net Wed Sep 5 11:30:27 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:30:27 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/fm _Fmmodule.c,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/fm In directory usw-pr-cvs1:/tmp/cvs-serv11668/python/Mac/Modules/fm Modified Files: _Fmmodule.c Log Message: Shut up many more gcc warnings. Index: _Fmmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/fm/_Fmmodule.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _Fmmodule.c 2001/08/23 14:00:56 1.1 --- _Fmmodule.c 2001/09/05 10:30:25 1.2 *************** *** 6,11 **** --- 6,15 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif /* Macro to test whether a weak-loaded CFM function exists */ From jackjansen@users.sourceforge.net Wed Sep 5 11:30:34 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:30:34 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/dlg _Dlgmodule.c,1.2,1.3 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/dlg In directory usw-pr-cvs1:/tmp/cvs-serv11691/python/Mac/Modules/dlg Modified Files: _Dlgmodule.c Log Message: Shut up many more gcc warnings. Index: _Dlgmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/dlg/_Dlgmodule.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** _Dlgmodule.c 2001/09/04 22:18:41 1.2 --- _Dlgmodule.c 2001/09/05 10:30:32 1.3 *************** *** 6,11 **** --- 6,15 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif /* Macro to test whether a weak-loaded CFM function exists */ From jackjansen@users.sourceforge.net Wed Sep 5 11:30:42 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:30:42 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/drag _Dragmodule.c,1.2,1.3 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/drag In directory usw-pr-cvs1:/tmp/cvs-serv11740/python/Mac/Modules/drag Modified Files: _Dragmodule.c Log Message: Shut up many more gcc warnings. Index: _Dragmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/drag/_Dragmodule.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** _Dragmodule.c 2001/09/04 22:18:31 1.2 --- _Dragmodule.c 2001/09/05 10:30:39 1.3 *************** *** 6,11 **** --- 6,15 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif /* Macro to test whether a weak-loaded CFM function exists */ *************** *** 122,126 **** Py_INCREF(Py_None); _res = Py_None; - dataPtr__error__: ; return _res; } --- 126,129 ---- *************** *** 151,155 **** Py_INCREF(Py_None); _res = Py_None; - dataPtr__error__: ; return _res; } --- 154,157 ---- *************** *** 802,806 **** if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); ! return Py_None; } --- 804,809 ---- if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); ! _res = Py_None; ! return _res; } *************** *** 820,824 **** if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); ! return Py_None; } --- 823,828 ---- if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); ! _res = Py_None; ! return _res; } *************** *** 836,840 **** if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); ! return Py_None; } --- 840,845 ---- if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); ! _res = Py_None; ! return _res; } *************** *** 852,856 **** if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); ! return Py_None; } --- 857,862 ---- if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); ! _res = Py_None; ! return _res; } From jackjansen@users.sourceforge.net Wed Sep 5 11:30:50 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:30:50 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/ctl _Ctlmodule.c,1.2,1.3 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/ctl In directory usw-pr-cvs1:/tmp/cvs-serv11785/python/Mac/Modules/ctl Modified Files: _Ctlmodule.c Log Message: Shut up many more gcc warnings. Index: _Ctlmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/ctl/_Ctlmodule.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** _Ctlmodule.c 2001/09/04 22:18:50 1.2 --- _Ctlmodule.c 2001/09/05 10:30:48 1.3 *************** *** 6,11 **** --- 6,15 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif /* Macro to test whether a weak-loaded CFM function exists */ *************** *** 1677,1681 **** return PyMac_Error(_err); } ! return Py_BuildValue("O&", OptResObj_New, hdl); } --- 1681,1686 ---- return PyMac_Error(_err); } ! _res = Py_BuildValue("O&", OptResObj_New, hdl); ! return _res; } *************** *** 2527,2530 **** --- 2532,2536 ---- tracker = obj; Py_INCREF(tracker); + return 1; } *************** *** 2576,2580 **** return -1; /* And store the Python callback */ ! sprintf(keybuf, "%x", which); if (PyDict_SetItemString(self->ob_callbackdict, keybuf, callback) < 0) return -1; --- 2582,2586 ---- return -1; /* And store the Python callback */ ! sprintf(keybuf, "%x", (unsigned)which); if (PyDict_SetItemString(self->ob_callbackdict, keybuf, callback) < 0) return -1; *************** *** 2588,2592 **** PyObject *func, *rv; ! sprintf(keybuf, "%x", which); if ( self->ob_callbackdict == NULL || (func = PyDict_GetItemString(self->ob_callbackdict, keybuf)) == NULL ) { --- 2594,2598 ---- PyObject *func, *rv; ! sprintf(keybuf, "%x", (unsigned)which); if ( self->ob_callbackdict == NULL || (func = PyDict_GetItemString(self->ob_callbackdict, keybuf)) == NULL ) { From jackjansen@users.sourceforge.net Wed Sep 5 11:30:55 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:30:55 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/cm _Cmmodule.c,1.2,1.3 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/cm In directory usw-pr-cvs1:/tmp/cvs-serv11820/python/Mac/Modules/cm Modified Files: _Cmmodule.c Log Message: Shut up many more gcc warnings. Index: _Cmmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/cm/_Cmmodule.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** _Cmmodule.c 2001/09/04 22:18:54 1.2 --- _Cmmodule.c 2001/09/05 10:30:53 1.3 *************** *** 6,11 **** --- 6,15 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif /* Macro to test whether a weak-loaded CFM function exists */ From jackjansen@users.sourceforge.net Wed Sep 5 11:31:03 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:31:03 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/cf _CFmodule.c,1.3,1.4 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/cf In directory usw-pr-cvs1:/tmp/cvs-serv11851/python/Mac/Modules/cf Modified Files: _CFmodule.c Log Message: Shut up many more gcc warnings. Index: _CFmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/cf/_CFmodule.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** _CFmodule.c 2001/09/04 22:25:43 1.3 --- _CFmodule.c 2001/09/05 10:31:01 1.4 *************** *** 6,11 **** --- 6,15 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif /* Macro to test whether a weak-loaded CFM function exists */ *************** *** 273,277 **** { char buf[100]; ! sprintf(buf, "", CFGetTypeID(self->ob_itself), (unsigned long)self, (unsigned long)self->ob_itself); return PyString_FromString(buf); } --- 277,281 ---- { char buf[100]; ! sprintf(buf, "", CFGetTypeID(self->ob_itself), (unsigned)self, (unsigned)self->ob_itself); return PyString_FromString(buf); } *************** *** 423,427 **** { char buf[100]; ! sprintf(buf, "", self, self->ob_itself); return PyString_FromString(buf); } --- 427,431 ---- { char buf[100]; ! sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself); return PyString_FromString(buf); } *************** *** 576,580 **** { char buf[100]; ! sprintf(buf, "", self, self->ob_itself); return PyString_FromString(buf); } --- 580,584 ---- { char buf[100]; ! sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself); return PyString_FromString(buf); } *************** *** 708,712 **** { char buf[100]; ! sprintf(buf, "", self, self->ob_itself); return PyString_FromString(buf); } --- 712,716 ---- { char buf[100]; ! sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself); return PyString_FromString(buf); } *************** *** 824,828 **** { char buf[100]; ! sprintf(buf, "", self, self->ob_itself); return PyString_FromString(buf); } --- 828,832 ---- { char buf[100]; ! sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself); return PyString_FromString(buf); } *************** *** 974,978 **** { char buf[100]; ! sprintf(buf, "", self, self->ob_itself); return PyString_FromString(buf); } --- 978,982 ---- { char buf[100]; ! sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself); return PyString_FromString(buf); } *************** *** 1097,1101 **** Py_INCREF(Py_None); _res = Py_None; - bytes__error__: ; return _res; } --- 1101,1104 ---- *************** *** 1119,1123 **** Py_INCREF(Py_None); _res = Py_None; - newBytes__error__: ; return _res; } --- 1122,1125 ---- *************** *** 1172,1176 **** { char buf[100]; ! sprintf(buf, "", self, self->ob_itself); return PyString_FromString(buf); } --- 1174,1178 ---- { char buf[100]; ! sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself); return PyString_FromString(buf); } *************** *** 1775,1779 **** { char buf[100]; ! sprintf(buf, "", self, self->ob_itself); return PyString_FromString(buf); } --- 1777,1781 ---- { char buf[100]; ! sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself); return PyString_FromString(buf); } *************** *** 2062,2066 **** { char buf[100]; ! sprintf(buf, "", self, self->ob_itself); return PyString_FromString(buf); } --- 2064,2068 ---- { char buf[100]; ! sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself); return PyString_FromString(buf); } *************** *** 2434,2438 **** { char buf[100]; ! sprintf(buf, "", self, self->ob_itself); return PyString_FromString(buf); } --- 2436,2440 ---- { char buf[100]; ! sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself); return PyString_FromString(buf); } *************** *** 2591,2595 **** _res = Py_BuildValue("O&", CFDataRefObj_New, _rv); - bytes__error__: ; return _res; } --- 2593,2596 ---- *************** *** 2612,2616 **** _res = Py_BuildValue("O&", CFDataRefObj_New, _rv); - bytes__error__: ; return _res; } --- 2613,2616 ---- *************** *** 2849,2853 **** _res = Py_BuildValue("O&", CFStringRefObj_New, _rv); - bytes__error__: ; return _res; } --- 2849,2852 ---- *************** *** 3039,3043 **** _res = Py_BuildValue("O&", CFURLRefObj_New, _rv); - URLBytes__error__: ; return _res; } --- 3038,3041 ---- From jackjansen@users.sourceforge.net Wed Sep 5 11:31:09 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:31:09 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/app _Appmodule.c,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/app In directory usw-pr-cvs1:/tmp/cvs-serv11905/python/Mac/Modules/app Modified Files: _Appmodule.c Log Message: Shut up many more gcc warnings. Index: _Appmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/app/_Appmodule.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _Appmodule.c 2001/08/23 14:01:51 1.1 --- _Appmodule.c 2001/09/05 10:31:07 1.2 *************** *** 6,11 **** --- 6,15 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif /* Macro to test whether a weak-loaded CFM function exists */ From jackjansen@users.sourceforge.net Wed Sep 5 11:31:15 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:31:15 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/ae _AEmodule.c,1.3,1.4 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/ae In directory usw-pr-cvs1:/tmp/cvs-serv11929/python/Mac/Modules/ae Modified Files: _AEmodule.c Log Message: Shut up many more gcc warnings. Index: _AEmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/ae/_AEmodule.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** _AEmodule.c 2001/09/04 22:19:14 1.3 --- _AEmodule.c 2001/09/05 10:31:13 1.4 *************** *** 6,11 **** --- 6,15 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif /* Macro to test whether a weak-loaded CFM function exists */ *************** *** 159,163 **** Py_INCREF(Py_None); _res = Py_None; - dataPtr__error__: ; return _res; } --- 163,166 ---- *************** *** 303,307 **** Py_INCREF(Py_None); _res = Py_None; - dataPtr__error__: ; return _res; } --- 306,309 ---- *************** *** 518,522 **** Py_INCREF(Py_None); _res = Py_None; - dataPtr__error__: ; return _res; } --- 520,523 ---- *************** *** 828,832 **** _res = Py_BuildValue("O&", AEDesc_New, &result); - dataPtr__error__: ; return _res; } --- 829,832 ---- *************** *** 852,856 **** _res = Py_BuildValue("O&", AEDesc_New, &result); - dataPtr__error__: ; return _res; } --- 852,855 ---- *************** *** 876,880 **** _res = Py_BuildValue("O&", AEDesc_New, &resultList); - factoringPtr__error__: ; return _res; } --- 875,878 ---- *************** *** 931,935 **** _res = Py_BuildValue("O&", AEDesc_New, &theAEDesc); - dataPtr__error__: ; return _res; } --- 929,932 ---- From jackjansen@users.sourceforge.net Wed Sep 5 11:31:20 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:31:20 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/win winsupport.py,1.26,1.27 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/win In directory usw-pr-cvs1:/tmp/cvs-serv11964/python/Mac/Modules/win Modified Files: winsupport.py Log Message: Shut up many more gcc warnings. Index: winsupport.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/win/winsupport.py,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** winsupport.py 2001/08/23 13:51:46 1.26 --- winsupport.py 2001/09/05 10:31:18 1.27 *************** *** 180,184 **** OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", self, self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() --- 180,184 ---- OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() *************** *** 209,213 **** if ( !PyArg_ParseTuple(_args, "i", &ptr) ) return NULL; ! return WinObj_WhichWindow((WindowPtr)ptr); """ --- 209,214 ---- if ( !PyArg_ParseTuple(_args, "i", &ptr) ) return NULL; ! _res = WinObj_WhichWindow((WindowPtr)ptr); ! return _res; """ From jackjansen@users.sourceforge.net Wed Sep 5 11:31:25 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:31:25 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/qdoffs qdoffssupport.py,1.6,1.7 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/qdoffs In directory usw-pr-cvs1:/tmp/cvs-serv11988/python/Mac/Modules/qdoffs Modified Files: qdoffssupport.py Log Message: Shut up many more gcc warnings. Index: qdoffssupport.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/qdoffs/qdoffssupport.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** qdoffssupport.py 2001/08/23 13:50:16 1.6 --- qdoffssupport.py 2001/09/05 10:31:22 1.7 *************** *** 106,110 **** return NULL; cp = GetPixBaseAddr(pm)+from; ! return PyString_FromStringAndSize(cp, length); """ f = ManualGenerator("GetPixMapBytes", pixmapgetbytes_body) --- 106,111 ---- return NULL; cp = GetPixBaseAddr(pm)+from; ! _res = PyString_FromStringAndSize(cp, length); ! return _res; """ f = ManualGenerator("GetPixMapBytes", pixmapgetbytes_body) *************** *** 123,127 **** memcpy(cp, icp, length); Py_INCREF(Py_None); ! return Py_None; """ f = ManualGenerator("PutPixMapBytes", pixmapputbytes_body) --- 124,129 ---- memcpy(cp, icp, length); Py_INCREF(Py_None); ! _res = Py_None; ! return _res; """ f = ManualGenerator("PutPixMapBytes", pixmapputbytes_body) From jackjansen@users.sourceforge.net Wed Sep 5 11:31:30 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:31:30 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/list listsupport.py,1.10,1.11 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/list In directory usw-pr-cvs1:/tmp/cvs-serv12010/python/Mac/Modules/list Modified Files: listsupport.py Log Message: Shut up many more gcc warnings. Index: listsupport.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/list/listsupport.py,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** listsupport.py 2001/08/23 13:49:41 1.10 --- listsupport.py 2001/09/05 10:31:28 1.11 *************** *** 177,181 **** l = (ListObject *)ListObj_New(as_List(h)); l->ob_must_be_disposed = 0; ! return Py_BuildValue("O", l); """ f = ManualGenerator("as_List", as_List_body) --- 177,182 ---- l = (ListObject *)ListObj_New(as_List(h)); l->ob_must_be_disposed = 0; ! _res = Py_BuildValue("O", l); ! return _res; """ f = ManualGenerator("as_List", as_List_body) From jackjansen@users.sourceforge.net Wed Sep 5 11:31:34 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:31:34 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/drag dragsupport.py,1.7,1.8 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/drag In directory usw-pr-cvs1:/tmp/cvs-serv12040/python/Mac/Modules/drag Modified Files: dragsupport.py Log Message: Shut up many more gcc warnings. Index: dragsupport.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/drag/dragsupport.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** dragsupport.py 2001/08/23 13:48:25 1.7 --- dragsupport.py 2001/09/05 10:31:32 1.8 *************** *** 237,241 **** if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); ! return Py_None; """ installtracking = ManualGenerator("InstallTrackingHandler", installtracking_body) --- 237,242 ---- if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); ! _res = Py_None; ! return _res; """ installtracking = ManualGenerator("InstallTrackingHandler", installtracking_body) *************** *** 253,257 **** if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); ! return Py_None; """ installreceive = ManualGenerator("InstallReceiveHandler", installreceive_body) --- 254,259 ---- if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); ! _res = Py_None; ! return _res; """ installreceive = ManualGenerator("InstallReceiveHandler", installreceive_body) *************** *** 267,271 **** if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); ! return Py_None; """ removetracking = ManualGenerator("RemoveTrackingHandler", removetracking_body) --- 269,274 ---- if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); ! _res = Py_None; ! return _res; """ removetracking = ManualGenerator("RemoveTrackingHandler", removetracking_body) *************** *** 281,285 **** if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); ! return Py_None; """ removereceive = ManualGenerator("RemoveReceiveHandler", removereceive_body) --- 284,289 ---- if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); ! _res = Py_None; ! return _res; """ removereceive = ManualGenerator("RemoveReceiveHandler", removereceive_body) From jackjansen@users.sourceforge.net Wed Sep 5 11:31:39 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:31:39 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/cf cfsupport.py,1.10,1.11 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/cf In directory usw-pr-cvs1:/tmp/cvs-serv12076/python/Mac/Modules/cf Modified Files: cfsupport.py Log Message: Shut up many more gcc warnings. Index: cfsupport.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/cf/cfsupport.py,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** cfsupport.py 2001/09/04 22:25:47 1.10 --- cfsupport.py 2001/09/05 10:31:37 1.11 *************** *** 191,195 **** OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", CFGetTypeID(self->ob_itself), (unsigned long)self, (unsigned long)self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() --- 191,195 ---- OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", CFGetTypeID(self->ob_itself), (unsigned)self, (unsigned)self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() *************** *** 206,210 **** OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", self, self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() --- 206,210 ---- OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() *************** *** 218,222 **** OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", self, self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() --- 218,222 ---- OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() *************** *** 230,234 **** OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", self, self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() --- 230,234 ---- OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() *************** *** 242,246 **** OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", self, self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() --- 242,246 ---- OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() *************** *** 254,258 **** OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", self, self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() --- 254,258 ---- OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() *************** *** 266,270 **** OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", self, self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() --- 266,270 ---- OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() *************** *** 297,301 **** OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", self, self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() --- 297,301 ---- OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() *************** *** 313,317 **** OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", self, self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() --- 313,317 ---- OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() *************** *** 325,329 **** OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", self, self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() --- 325,329 ---- OutLbrace() Output("char buf[100];") ! Output("""sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself);""") Output("return PyString_FromString(buf);") OutRbrace() From jackjansen@users.sourceforge.net Wed Sep 5 11:31:44 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:31:44 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/ctl ctlsupport.py,1.41,1.42 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/ctl In directory usw-pr-cvs1:/tmp/cvs-serv12105/python/Mac/Modules/ctl Modified Files: ctlsupport.py Log Message: Shut up many more gcc warnings. Index: ctlsupport.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/ctl/ctlsupport.py,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -d -r1.41 -r1.42 *** ctlsupport.py 2001/08/23 13:48:09 1.41 --- ctlsupport.py 2001/09/05 10:31:42 1.42 *************** *** 170,173 **** --- 170,174 ---- tracker = obj; Py_INCREF(tracker); + return 1; } *************** *** 219,223 **** return -1; /* And store the Python callback */ ! sprintf(keybuf, "%x", which); if (PyDict_SetItemString(self->ob_callbackdict, keybuf, callback) < 0) return -1; --- 220,224 ---- return -1; /* And store the Python callback */ ! sprintf(keybuf, "%x", (unsigned)which); if (PyDict_SetItemString(self->ob_callbackdict, keybuf, callback) < 0) return -1; *************** *** 231,235 **** PyObject *func, *rv; ! sprintf(keybuf, "%x", which); if ( self->ob_callbackdict == NULL || (func = PyDict_GetItemString(self->ob_callbackdict, keybuf)) == NULL ) { --- 232,236 ---- PyObject *func, *rv; ! sprintf(keybuf, "%x", (unsigned)which); if ( self->ob_callbackdict == NULL || (func = PyDict_GetItemString(self->ob_callbackdict, keybuf)) == NULL ) { *************** *** 555,559 **** return PyMac_Error(_err); } ! return Py_BuildValue("O&", OptResObj_New, hdl); """ --- 556,561 ---- return PyMac_Error(_err); } ! _res = Py_BuildValue("O&", OptResObj_New, hdl); ! return _res; """ From jackjansen@users.sourceforge.net Wed Sep 5 11:31:49 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:31:49 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/res ressupport.py,1.16,1.17 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/res In directory usw-pr-cvs1:/tmp/cvs-serv12128/python/Mac/Modules/res Modified Files: ressupport.py Log Message: Shut up many more gcc warnings. Index: ressupport.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/res/ressupport.py,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** ressupport.py 2001/08/23 13:50:42 1.16 --- ressupport.py 2001/09/05 10:31:47 1.17 *************** *** 62,66 **** } ! OptResObj_Convert(PyObject *v, Handle *p_itself) { PyObject *tmp; --- 62,66 ---- } ! int OptResObj_Convert(PyObject *v, Handle *p_itself) { PyObject *tmp; From jackjansen@users.sourceforge.net Wed Sep 5 11:31:54 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 03:31:54 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/res resedit.py,1.4,1.5 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/res In directory usw-pr-cvs1:/tmp/cvs-serv12151/python/Mac/Modules/res Modified Files: resedit.py Log Message: Shut up many more gcc warnings. Index: resedit.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/res/resedit.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** resedit.py 2000/03/08 16:58:15 1.4 --- resedit.py 2001/09/05 10:31:52 1.5 *************** *** 59,63 **** as_xxx_body = """ ! return %sObj_New((%sHandle)_self->ob_itself); """ --- 59,64 ---- as_xxx_body = """ ! _res = %sObj_New((%sHandle)_self->ob_itself); ! return _res; """ From akuchling@users.sourceforge.net Wed Sep 5 13:03:01 2001 From: akuchling@users.sourceforge.net (A.M. Kuchling) Date: Wed, 05 Sep 2001 05:03:01 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/distutils sysconfig.py,1.42,1.43 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/distutils In directory usw-pr-cvs1:/tmp/cvs-serv32579 Modified Files: sysconfig.py Log Message: [Bug #404274] Restore some special-case code for AIX and BeOS under 1.5.2. This will have to stay until we decide to drop 1.5.2 compatibility completely. Index: sysconfig.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/distutils/sysconfig.py,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** sysconfig.py 2001/09/04 12:01:49 1.42 --- sysconfig.py 2001/09/05 12:02:59 1.43 *************** *** 319,323 **** --- 319,350 ---- if python_build: g['LDSHARED'] = g['BLDSHARED'] + + elif sys.version < '2.1': + # The following two branches are for 1.5.2 compatibility. + if sys.platform == 'aix4': # what about AIX 3.x ? + # Linker script is in the config directory, not in Modules as the + # Makefile says. + python_lib = get_python_lib(standard_lib=1) + ld_so_aix = os.path.join(python_lib, 'config', 'ld_so_aix') + python_exp = os.path.join(python_lib, 'config', 'python.exp') + + g['LDSHARED'] = "%s %s -bI:%s" % (ld_so_aix, g['CC'], python_exp) + elif sys.platform == 'beos': + # Linker script is in the config directory. In the Makefile it is + # relative to the srcdir, which after installation no longer makes + # sense. + python_lib = get_python_lib(standard_lib=1) + linkerscript_name = os.path.basename(string.split(g['LDSHARED'])[0]) + linkerscript = os.path.join(python_lib, 'config', linkerscript_name) + + # XXX this isn't the right place to do this: adding the Python + # library to the link, if needed, should be in the "build_ext" + # command. (It's also needed for non-MS compilers on Windows, and + # it's taken care of for them by the 'build_ext.get_libraries()' + # method.) + g['LDSHARED'] = ("%s -L%s/lib -lpython%s" % + (linkerscript, PREFIX, sys.version[0:3])) + global _config_vars _config_vars = g From theller@users.sourceforge.net Wed Sep 5 13:55:56 2001 From: theller@users.sourceforge.net (Thomas Heller) Date: Wed, 05 Sep 2001 05:55:56 -0700 Subject: [Python-checkins] CVS: distutils/misc archive.h,1.4,1.5 extract.c,1.5,1.6 install.c,1.11,1.12 wininst.exe,1.9,1.10 Message-ID: Update of /cvsroot/python/distutils/misc In directory usw-pr-cvs1:/tmp/cvs-serv13479 Modified Files: archive.h extract.c install.c wininst.exe Log Message: Implement PEP250 for bdist_wininst: Use Lib/site-packages under windows (but only for version 2.2 and up). The scheme has to be determined at runtime. Index: archive.h =================================================================== RCS file: /cvsroot/python/distutils/misc/archive.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** archive.h 2001/02/19 09:19:07 1.4 --- archive.h 2001/09/05 12:55:53 1.5 *************** *** 59,68 **** #pragma pack() typedef int (*NOTIFYPROC)(int code, LPSTR text, ...); extern BOOL extract_file (char *dst, char *src, int method, int comp_size, int uncomp_size, NOTIFYPROC notify); ! extern BOOL unzip_archive (char *dirname, char *data, DWORD size, ! NOTIFYPROC callback); extern char *map_new_file (DWORD flags, char *filename, char *pathname_part, int size, --- 59,75 ---- #pragma pack() + /* installation scheme */ + + typedef struct tagSCHEME { + char *name; + char *prefix; + } SCHEME; + typedef int (*NOTIFYPROC)(int code, LPSTR text, ...); extern BOOL extract_file (char *dst, char *src, int method, int comp_size, int uncomp_size, NOTIFYPROC notify); ! extern BOOL unzip_archive (SCHEME *scheme, char *dirname, char *data, ! DWORD size, NOTIFYPROC notify); extern char *map_new_file (DWORD flags, char *filename, char *pathname_part, int size, *************** *** 79,80 **** --- 86,88 ---- #define NUM_FILES 6 #define FILE_OVERWRITTEN 7 + Index: extract.c =================================================================== RCS file: /cvsroot/python/distutils/misc/extract.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** extract.c 2001/02/19 09:19:07 1.5 --- extract.c 2001/09/05 12:55:53 1.6 *************** *** 10,14 **** /* Convert unix-path to dos-path */ ! static void fixpath (char *path) { while (path && *path) { --- 10,14 ---- /* Convert unix-path to dos-path */ ! static void normpath (char *path) { while (path && *path) { *************** *** 186,190 **** */ BOOL ! unzip_archive (char *dirname, char *data, DWORD size, NOTIFYPROC notify) { int n; --- 186,191 ---- */ BOOL ! unzip_archive (SCHEME *scheme, char *dirname, char *data, DWORD size, ! NOTIFYPROC notify) { int n; *************** *** 208,211 **** --- 209,213 ---- /* Loop through the central directory, reading all entries */ for (n = 0; n < pe->nTotalCDir; ++n) { + int i; char *fname; char *pcomp; *************** *** 230,238 **** + pfhdr->extra_length]; strcpy (pathname, dirname); ! strcat (pathname, "\\"); new_part = &pathname[lstrlen (pathname)]; strncat (pathname, fname, pfhdr->fname_length); ! fixpath (pathname); if (pathname[strlen(pathname)-1] != '\\') { /* --- 232,276 ---- + pfhdr->extra_length]; + /* dirname is the Python home directory (prefix) */ strcpy (pathname, dirname); ! if (pathname[strlen(pathname)-1] != '\\') ! strcat (pathname, "\\"); new_part = &pathname[lstrlen (pathname)]; + /* we must now match the first part of the pathname + * in the archive to a component in the installation + * scheme (PURELIB, PLATLIB, HEADERS, SCRIPTS, or DATA) + * and replace this part by the one in the scheme to use + */ + for (i = 0; *scheme[i].name; ++i) { + if (0 == strnicmp(scheme[i].name, fname, strlen(scheme[i].name))) { + char *rest; + int len; + int namelen = strlen(scheme[i].name); /* length of the replaced part */ + + strcat(pathname, scheme[i].prefix); + + rest = fname + namelen; + len = pfhdr->fname_length - namelen; + + if ((pathname[strlen(pathname)-1] != '\\') + && (pathname[strlen(pathname)-1] != '/')) + strcat(pathname, "\\"); + /* Now that pathname ends with a separator, + * we must make sure rest does not start with + * an additional one. + */ + if ((rest[0] == '\\') || (rest[0] == '/')) { + ++rest; + --len; + } + + strncat(pathname, rest, len); + goto Done; + } + } + /* no prefix to replace found, go unchanged */ strncat (pathname, fname, pfhdr->fname_length); ! Done: ! normpath (pathname); if (pathname[strlen(pathname)-1] != '\\') { /* Index: install.c =================================================================== RCS file: /cvsroot/python/distutils/misc/install.c,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** install.c 2001/04/09 18:03:11 1.11 --- install.c 2001/09/05 12:55:53 1.12 *************** *** 865,868 **** --- 865,887 ---- } + /* Note: If scheme.prefix is nonempty, it must end with a '\'! */ + SCHEME old_scheme[] = { + { "PURELIB", "" }, + { "PLATLIB", "" }, + { "HEADERS", "" }, /* 'Include/dist_name' part already in archive */ + { "SCRIPTS", "Scripts\\" }, + { "DATA", "" }, + { NULL, NULL }, + }; + + SCHEME new_scheme[] = { + { "PURELIB", "Lib\\site-packages\\" }, + { "PLATLIB", "Lib\\site-packages\\" }, + { "HEADERS", "" }, /* 'Include/dist_name' part already in archive */ + { "SCRIPTS", "Scripts\\" }, + { "DATA", "" }, + { NULL, NULL }, + }; + BOOL CALLBACK InstallFilesDlgProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) *************** *** 870,873 **** --- 889,893 ---- LPNMHDR lpnm; char Buffer[4096]; + SCHEME *scheme; switch (msg) { *************** *** 922,930 **** OpenLogfile(install_dir); /* Extract all files from the archive */ SetDlgItemText (hwnd, IDC_TITLE, "Installing files..."); ! success = unzip_archive (install_dir, arc_data, ! arc_size, notify); /* Compile the py-files */ if (pyc_compile) { --- 942,975 ---- OpenLogfile(install_dir); + /* + * The scheme we have to use depends on the Python version... + if sys.version < "2.2": + WINDOWS_SCHEME = { + 'purelib': '$base', + 'platlib': '$base', + 'headers': '$base/Include/$dist_name', + 'scripts': '$base/Scripts', + 'data' : '$base', + } + else: + WINDOWS_SCHEME = { + 'purelib': '$base/Lib/site-packages', + 'platlib': '$base/Lib/site-packages', + 'headers': '$base/Include/$dist_name', + 'scripts': '$base/Scripts', + 'data' : '$base', + } + */ + scheme = old_scheme; + if (py_major > 2) + scheme = new_scheme; + else if((py_major == 2) && (py_minor >= 2)) + scheme = new_scheme; /* Extract all files from the archive */ SetDlgItemText (hwnd, IDC_TITLE, "Installing files..."); ! success = unzip_archive (scheme, ! install_dir, arc_data, ! arc_size, notify); /* Compile the py-files */ if (pyc_compile) { Index: wininst.exe =================================================================== RCS file: /cvsroot/python/distutils/misc/wininst.exe,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 Binary files /tmp/cvsPhHaDh and /tmp/cvs07uEOo differ From theller@users.sourceforge.net Wed Sep 5 14:00:43 2001 From: theller@users.sourceforge.net (Thomas Heller) Date: Wed, 05 Sep 2001 06:00:43 -0700 Subject: [Python-checkins] CVS: distutils/distutils/command bdist_wininst.py,1.22,1.23 Message-ID: Update of /cvsroot/python/distutils/distutils/command In directory usw-pr-cvs1:/tmp/cvs-serv14593 Modified Files: bdist_wininst.py Log Message: Implement PEP250: Use Lib/site-packages under windows. bdist_wininst doesn't use the NT SCHEME any more, instead a custom SCHEME is used, which is exchanged at installation time, depending on the python version used. Avoid a bogus warning frpom install_lib about installing into a directory not on sys.path. Index: bdist_wininst.py =================================================================== RCS file: /cvsroot/python/distutils/distutils/command/bdist_wininst.py,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** bdist_wininst.py 2001/07/04 16:52:02 1.22 --- bdist_wininst.py 2001/09/05 13:00:40 1.23 *************** *** 84,93 **** install = self.reinitialize_command('install') install.root = self.bdist_dir - if os.name != 'nt': - # Must force install to use the 'nt' scheme; we set the - # prefix too just because it looks silly to put stuff - # in (eg.) ".../usr/Scripts", "usr/Include", etc. - install.prefix = "Python" - install.select_scheme('nt') install_lib = self.reinitialize_command('install_lib') --- 84,87 ---- *************** *** 96,105 **** install_lib.optimize = 0 ! install_lib.ensure_finalized() self.announce("installing to %s" % self.bdist_dir) install.ensure_finalized() install.run() # And make an archive relative to the root of the # pseudo-installation tree. --- 90,114 ---- install_lib.optimize = 0 ! # Use a custom scheme for the zip-file, because we have to decide ! # at installation time which scheme to use. ! for key in ('purelib', 'platlib', 'headers', 'scripts', 'data'): ! value = string.upper(key) ! if key == 'headers': ! value = value + '/Include/$dist_name' ! setattr(install, ! 'install_' + key, ! value) self.announce("installing to %s" % self.bdist_dir) install.ensure_finalized() + + # avoid warning of 'install_lib' about installing + # into a directory not in sys.path + sys.path.insert(0, os.path.join(self.bdist_dir, 'PURELIB')) + install.run() + del sys.path[0] + # And make an archive relative to the root of the # pseudo-installation tree. *************** *** 108,127 **** "%s.win32" % fullname) - # Our archive MUST be relative to sys.prefix, which is the - # same as install_purelib in the 'nt' scheme. - root_dir = os.path.normpath(install.install_purelib) - - # Sanity check: Make sure everything is included - for key in ('purelib', 'platlib', 'headers', 'scripts', 'data'): - attrname = 'install_' + key - install_x = getattr(install, attrname) - # (Use normpath so that we can string.find to look for - # subdirectories) - install_x = os.path.normpath(install_x) - if string.find(install_x, root_dir) != 0: - raise DistutilsInternalError \ - ("'%s' not included in install_lib" % key) arcname = self.make_archive(archive_basename, "zip", ! root_dir=root_dir) self.create_exe(arcname, fullname, self.bitmap) --- 117,122 ---- "%s.win32" % fullname) arcname = self.make_archive(archive_basename, "zip", ! root_dir=self.bdist_dir) self.create_exe(arcname, fullname, self.bitmap) *************** *** 234,247 **** EXEDATA = """\ TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ! AAAA4AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v ! ZGUuDQ0KJAAAAAAAAABwv7aMNN7Y3zTe2N803tjfT8LU3zXe2N+3wtbfNt7Y39zB3N823tjfVsHL ! 3zze2N803tnfSN7Y3zTe2N853tjf3MHS3zne2N+M2N7fNd7Y31JpY2g03tjfAAAAAAAAAABQRQAA ! TAEDABAF0joAAAAAAAAAAOAADwELAQYAAEAAAAAQAAAAoAAA8OwAAACwAAAA8AAAAABAAAAQAAAA ! AgAABAAAAAAAAAAEAAAAAAAAAAAAAQAABAAAAAAAAAIAAAAAABAAABAAAAAAEAAAEAAAAAAAABAA ! AAAAAAAAAAAAADDxAABsAQAAAPAAADABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ! AAAAAAAAAAAAAAAAAAAAAFVQWDAAAAAAAKAAAAAQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAIAAAOBV ! UFgxAAAAAABAAAAAsAAAAEAAAAAEAAAAAAAAAAAAAAAAAABAAADgLnJzcmMAAAAAEAAAAPAAAAAE ! AAAARAAAAAAAAAAAAAAAAAAAQAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA --- 229,242 ---- EXEDATA = """\ TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ! AAAA8AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v ! ZGUuDQ0KJAAAAAAAAAA/SHa+eykY7XspGO17KRjtADUU7XkpGO0UNhLtcCkY7fg1Fu15KRjtFDYc ! 7XkpGO0ZNgvtcykY7XspGe0GKRjteykY7XYpGO19ChLteSkY7bwvHu16KRjtUmljaHspGO0AAAAA ! AAAAAAAAAAAAAAAAUEUAAEwBAwCMCZY7AAAAAAAAAADgAA8BCwEGAABAAAAAEAAAAKAAAADuAAAA ! sAAAAPAAAAAAQAAAEAAAAAIAAAQAAAAAAAAABAAAAAAAAAAAAAEAAAQAAAAAAAACAAAAAAAQAAAQ ! AAAAABAAABAAAAAAAAAQAAAAAAAAAAAAAAAw8QAAbAEAAADwAAAwAQAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ! AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVUFgwAAAAAACgAAAAEAAAAAAAAAAEAAAA ! AAAAAAAAAAAAAACAAADgVVBYMQAAAAAAQAAAALAAAABAAAAABAAAAAAAAAAAAAAAAAAAQAAA4C5y ! c3JjAAAAABAAAADwAAAABAAAAEQAAAAAAAAAAAAAAAAAAEAAAMAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA *************** *** 250,254 **** IHBhY2tlZCB3aXRoIHRoZSBVUFggZXhlY3V0YWJsZSBwYWNrZXIgaHR0cDovL3VweC50c3gub3Jn ICQKACRJZDogVVBYIDEuMDEgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAgdGhlIFVQWCBUZWFtLiBB ! bGwgUmlnaHRzIFJlc2VydmVkLiAkCgBVUFghDAkCCtCN63fHS7mJS8gAAOo8AAAAsAAAJgEAbP/b //9TVVaLdCQUhfZXdH2LbCQci3wMgD4AdHBqXFb/5vZv/xU0YUAAi/BZHVl0X4AmAFcRvGD9v/n+ 2IP7/3Unag+4hcB1E4XtdA9XaBBw/d/+vw1qBf/Vg8QM6wdXagEJWVn2wxB1HGi3ABOyna0ALbQp --- 245,249 ---- IHBhY2tlZCB3aXRoIHRoZSBVUFggZXhlY3V0YWJsZSBwYWNrZXIgaHR0cDovL3VweC50c3gub3Jn ICQKACRJZDogVVBYIDEuMDEgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAgdGhlIFVQWCBUZWFtLiBB ! bGwgUmlnaHRzIFJlc2VydmVkLiAkCgBVUFghDAkCCmxXYH6y1WEpVsgAAP49AAAAsAAAJgEAJv/b //9TVVaLdCQUhfZXdH2LbCQci3wMgD4AdHBqXFb/5vZv/xU0YUAAi/BZHVl0X4AmAFcRvGD9v/n+ 2IP7/3Unag+4hcB1E4XtdA9XaBBw/d/+vw1qBf/Vg8QM6wdXagEJWVn2wxB1HGi3ABOyna0ALbQp *************** *** 256,539 **** bxFWVlMFDP/Xg/j/iUX8D4WIY26+vZnUEQN1GyEg/3UQ6Bf/b7s31wBopw+EA0HrsR9QdAmPbduz UI/rL1wgGOpTDGoCrM2W7f9VIPDALmcQZronYy91JS67aFTH6Xbf891TAes7B1kO8yR0Cq3QHvkT ! A41F9G4GAgx7n4UYQqh9/BIDvO7NNEjMNBR1CQvIlgbTfTN/DlZqBFYQxBD7GlyEyHyJfg9hOIKz 3drmPOsmpSsCUyqs+b5tW1OnCCWLBDvGdRcnEMKGNuEoco4KM8BsC+3/5FvJOIN9EAhTi10IaUOS ! druwffI4k8jdUOjISeJFsnzb3AwvUMgIFEBqAcz+c7ftGF4G2CVoqFEq8VCJXdS/sLDtLSCM1xw7 ! dGn/dChQaO72+b6QmBlLBCGsjnQTGnOd+5YNfIsEyYr2IR8byFn3IDw6Lh9kQ+2w0VoDxUUSPsgP ! 3ea+U5fcGY1e8NAUxtHd8GHOgewY4YtNENAM/3/D30RUC/qNRAvquCtIDCvKg+kWA9GBOFBLBeP/ ! 3fYGiU307mUsg2UMAGaDeAoAD45OHdv//+0GPfSLVRCLRBoqjTQajTwIA/uBPjEBY7lttgIuNoE/ ! CwMEKou23Zq/D79OIIPCLokwA9ME8BHNW7f7Vh4DygUcAxHRCE8cicG/3LYvVxoD0BP0jRoe7I2F ! 6P7dsxEalGL0C2iw81BmC7Z82+4QH96Uzb1t742EBQ02+EZHGlAbJexkZvcDtXXwHkRhSwRoV9y9 ! 1AboRsq8BecPXHRG4WDdd0xmi0YMUAQOQfd2TlB2hZIJ6S0AjbtrOPe6Hie0Pht2FFENbTTbb+xL ! AfodGDkqFO5Nd2wbGBNAUItyv0AKUEJf69zGagZVFLQS/xoVOcbh5HYGjLR51ppw/3934ev3USQE ! RBGKCITJdAuA+S91A8YAXLlbOeNAde+HQDR0F4AjNRkmtlUWYV8F19gbrVkRJsBXUBTUlt9sBcfY ! jOIM0GoKmVn39222/PkzyWjocFEAHmi8AgAN0SyZhkVAPzBQbramtjLXGiEUFUi+oI5oS0fYBFYv ! WVBCDwFwct3dOR04GP/TaDbk+9qBNQdgIwoBFdOpM2e61xhfPJ+edm+tmcD08fbCEADauACare7b ! BgA9/OFOO5SBu8P92AkQQIWsDKd9CFchbdjVvgYzoTiiPH90FJdoctO5B94iaAEEAGmgVQbodHz4 ! X1Aqf8cEJECg/QDwPfSZ3GfhGuQ12AUg3f5dmhpN6ANB1mgAjxZo/W8jm4MMwKEABF+sXusnutbu ! TeGBeAg49XUZS35wNfO95x3RdFzgKWwbrvDVg0unCkIIOKBr0Pp1Oa1GKaQ3/vbGMaEdQItQCo1I ! DvZRUveehUvLUVZGRKMwLA0nNEsM/F78EN7wW4TYILDD1yjWui61C6yL+AWQ/IuC9CrdNt4RK9Ar ! ZlIP+CttBVrHX1dSmSvC0fiM8BX0jcgIs8cNhax5vHUHHXUI5YPoTt6E3QHwofCg4uJOLcJ3joXN ! fIlIhQopKBy+/i8XWg0dZqeX+AHB6BBJQ+TySHR56QkRlhDmGrgP04stqEnPHjz40EA3aEmAs9Wk ! CRr+kblnhRsuFjPtVVVoi+CgdGcV0zvFFl/BzRYuOUhVroYUWnfhBaHBQYk8gw+CNd0SAIgllpQV ! Nmi5OEMoKD1G2PC+WI1xaO/yFRXkFsuxDKAzdgognxJYzBS75WvYb7AbqxhomW29PlBVNUy2bIPW ! VVopiukstIIhyVgzBxnbRPJUVUaJaJCx7DYwkaIEcHFVe785sxvchs0CdR//NR4FZsTMWB9gqdzL ! 3l3nIy1QCesQaN7F4jAabo/rRcQgxDjSwwj/2TP/V1craJ1WR2y7sGEzdQQv6wLwV+8mFwljVuOI ! vRuGxkm8gZrRnPgt93bhUzPbmhkADFNo3JJ7oY1xrPwaGGAXBzBBmd9EuwpyUwDYU1CNRZjHiiyb ! qzlwJ/gcTbzGWe/13crRuMxutJphRe3RO8Mv+PGlDV44GP2NTZhRKkoylzqzvYw2nFNQ7Uj/7UV6 ! NrRx1uMQZLZ10hasAazX2ugprbSkefj+iCNisjabnezHIKrGtvY2WzXs8P1OABbwzd6YWQwIEB8b ! bNhdswzoWTfoaJp097gH1gUY/PKEG6CEgxcrUhJGEvDFEpirF2ToTT/JNBm4lF4t8QKbPeUF1zWO ! Y2pl7gIEANtAhNnrA3LIgmjsEAxuZw7YThBzYYynrMOVYR3PATXr2ckSckjOFiCByQGBaFhEclIG ! vmQrdGwxPSz0uPuLQAg9Mex0KT2ATdMYCyHwA0k1U2HwpxH7vlWJPSSiZnuxUfeAuJ8RXIUNFhTs ! DNY47t8coBTP0f19ELVZu4pZaDCmU1GPfJ8WCo4UHUAAnwWENxU6GOECyUc+OTVsEd67TTajNGx0 ! EmgUN8Ih725/Igw3WR6UoBkTaPhxTOxmhU8aBRMozjeY1AwDqQBUjUL7kzZXdQEM4Gg4cw+UMUmH ! dzXQIsFwtenfPof4hVUFg8j/62ZTCZhgjt4H7gkzlBQH4mRn6GwJCLYK9HK0B5Nm9OQQmHFrsWvy ! eYkweyTTVrcGhs9epOOjfxL0V6XyyEYZnF5bX8UrOHjLUAGhqgsGQ+ioxVYaEC+QBnEo/F+0BEHr ! 9g+3wcHgED79zMZ4LOK7LhJTxHXJfjQdvX1WVRBBFMDNxq+9UYX2uZGLhCTIwIX/5vfYG8CD4BjA ! Y5fYytVdRTb/BY2WK3PBvXXJSQ8oCpQkdC+SzbZch4kEJgd0KqGNCbs0aEwsLKcD01s2gaYNGGeI ! LNzbR4Jti3YElHWEi1I7qbcBVIHE/R4A1AvN0sLQW+wQADr/1eG9VxsVbTHZmUuuNpF3hAEG6QBu ! y/YZm3R7Al4hD4X+T4CTbqEkoOGZDbhzl6EVPg7VTl7b3kkvHIZW4s5jkp26s6bWLlfQEEPdbNeo ! OQ83k4vUrGbHyo73D2UZajAb00knlBEatEq80GdfI9hzitCGnCBkgBvrSbJqLuFgDXcSeD/YR2iY ! H1x1Nh+NX7A/aDzrln0N+VmH64RM2OsbV4SLw8YYZrCRDQjmkz7GEXh4G4kGaVmJRgSlJYzRAyJe ! fCYLv1KpVh3xCnQ1gk1UFprjCFBRvAWDEekO4SwjjJgIbXBsB4w1PZAYBogd1c5MQiiUnSvwziK7 ! zyYSVjTgYCNq4Sy8BTnQuWkgMcK1htyFGqF+bC7BK2xydEmrFTd0Q6bpF9oEAddqI2iUdJj8pQLb ! YDfWGAYwNN6//28GBw+VwUmD4QJBi8GjQuvHxwUH2rUDBrHd7F3Danoy01sM4DxoQOgGXqeJE3od ! QPMcB9zZqISrMyalAOTMda6h1mwfCsTIGwlA42TmxCLr2yoHGign6xxBv66zgeFsS4gn+eS2M1jk ! xHUNwEmElkxwaKPTdixoAbPvfR2AaA/TBencYK66LTgFYylUPcPsEPoXTUZhrhGrLIUaMBEam4uF ! eEgvRD9EiJGBh6i0wBXGO2yyLBkVcDXIi9ksBvlh/+aJtzQkZLnBFNpZYRNg/FBeXFAA2dkTw4xc ! AF0bE6SsVYLARF9g32pIhInwAXUcPaCRsLOMNMIzmBCaGRggjySwkwFLVmgYQIlm+Y7RhRh1avwU ! S569YWQUafh0QNhAsFdizuh0sDCbS/LkdFR8HJFtBiU4zs14DrORpewfdEA1/vsAtvUDiXSlHEC+ ! qBfZkQ3YqlamVqIyWWBYeV4MOzmMhoNWPDX8bJKRjdgFPNj0irWMFxE2RN/pQvdcuyS0XnTqylmA ! kgNiZyiUiVAWzyR1Za6DuUscYDSEswh2uwhgSggQj9khcYRcBF3VLvF203RUagtZEY19xCzzq6Gl ! G90G9IkFq6sAaMDE2zb2DKsakBOMG78ACIXW3MgXWcAwiS8vu5WgESwLHNyL661t7UDEG4gVBwYz ! wfbBzGsn1h/wKysZuzOdEmwg4hZAGfQlJ08ubXka+DNs58lulCOfiY5cbQ66c4w0fJjBBZR+u2Uz ! LAWsjH+QIJt1tHzFbdkCvKgPpAQqKItlFKHZiR0tXfCGPzUsoi5svVKvbuIZgBRVu2wYdhvu4b6A ! YngEOtcYEGo78DuVhCo+FjxzE1vW1JlBVZVwKA6bDTtBgCcjPdhkO0GIKGR7sRaROi1UKDIVId2h ! k9WjtxREtgd8KK1qCmRFNPme3UBbQKAssiBx4MmaGarBUKOUKYZUNmAUDVVMqw0Xr6E7Nm9b1gzG ! M0DEE4AH5BaPF+srUwAQLfHW1LxWGld0b+UQ//8hDJXdZoP/AnZhgPlcdU6KSAGXl7e3QAgwfEoE ! M34ebnQMcnUa32L/O0DGBg1G6zMGAwpGT0+n0sESJg1PUfR8M/w1ejwKKB9PiAbUBhXaoH/rBYgO ! RkBPcJmhJIzV22uAJqhLKMGNj8Kh3ryoVith6fjI2APchhRAAOTgA74WwLEAf7EmiT/wEy4Dj52d ! XL6t4TFMTIXYu8AwUCJ1zVaA+Okl9GZ3F4GEeXAfTZRPkF0dg3bY7y+IdqDTZjhWjYzQZbkSjVig ! ESyNBLG11qwLLUauK+zOdIUONOEK+AYxOGHFAGLUYALoNsA8W1WkBI1T5nZGtrh4pH6g/TLYicgM ! dwsRCCr2jXWErWTt/NnMwHt2Wzu/8BA3EXuzt5E51OAQRR2O9QwEaAepakTAfMUXJaheVlOz4nXN ! jVSdXdSeThxQcJvtXry3U1NEKlNmYzsDt03YPqlDj6TnXq474PFi1moPzS/F2U7UCnkNZHPfNrLg ! YOwsyAjWLBOLQ3hnXDUjU0xoq9enNGpb2B/YZel+WezbSkNqXVMN+P8xclX6PIAnAEcsaQk4ZInW ! A4AXqQhTl3gQkKVEMgRgKKSbPAhpXeQoOWQ9LQioU2ykLTolv7vQS4R1AlahjA5GgzgBfhC3wHzw ! D74GajaU+xGLVq3u3A2QCRWLCYrTggI7accIr9BWwF5PkjxFBnx0FAsbGzSOsgjAV9744HKjbAL0 ! CV388ArUjm6bywlT75x4Jj2LSapV10SYCf+ffhgrPGMehB72GwjpbtHPrFk7w1nIdRYfaPhIMKlT ! adwdkWoo3fvtjF/4KPt1C2hYIhkcml5npEuL7KKLLOxHX02ps6IoWx9EKJzFF1kMBAPBvTwDFYQ1 ! 6xoIsYTZkBYaDQnxvr9ATuvEgKQ1SwBSHVuDXziLTQcEj0E7TYQJfGOyfcMbgwqDwyhTV7MwJHEg ! M5uNxq2FVUmuYDCxM1wkdK1DXaD0mi0bmGsqUnRMmBFrSP4ztYSWGCasPwxKuGKx7jm68Sy5XU+O ! Hw9z3AJG3HUtSvjxXx7/MFNpRrBjT4TrADOLGNC2753DNfRD3Go7x3VFLsND6cMZ5rsb//Nz/X4U ! kgCO2K+gymwtAsIvUpgW2czmWgiPMfxeAzsgB+B0GnjlGTmQyBCWoudADuz060MptAhyIAf2GMLr ! IEugB4VCoT0sWYPqS6VrO2uMyPP+flifBWQkDGjvFBGzkM0MbGzs/NcgCl9AYKkfiHX0bnf6S76Z ! exTrGxYfHCjBNwgPsUD0FBZqalLtgkVdF56bCaUrGC2ZBQyeH8Tq0lnDV75tAFZCbBx4NP83n9/Q ! ASc+Hm1Zo8bTDqc+M20IeUu063toPdjxixEPwh7lYKMs2OBdkNMQFQLrYaYg+7ZIjzsHOSQMMA4P ! oOlYfRo2Bz8TXPuHBEcfQHQcagaLZ6UKQzq1bFkANTAKT80FkRJE4oweCF9RonPRmgBeM9EI8RER ! qoA6H4MaAFNLQitNF4DA1V5V2/sM2qgDBAoEXBuqUpCu/wTRSGxU6v4MhAgIRhvlfhg3i1UIGk5M ! qrei/QLqVytBEAJ7IoE5vqE27hONNBAIw54+elY0ElJzk9kLtziMrwBO8l30f4vZDYvWK1YEK9GJ ! FeMrrY1t1UYIa7tX/gyAsTPM+okBK34EmCOxdHfujO4sUfybiFZS6idszUrSFtpEP4Q110BnGzZ5 ! dsgirUCQqvKXCEiCYNXuDHQuF1dQ/NtqhPjT0K/riiRFbDAWhqJGzAC//X8sVTPSO8JWdDOLSFjK ! dCyJUIX+X7YUAggYi3EM994b9lKD5uUPYHf7iTGLQBwgFFFMJgwwZ4ClCrw0uKkICy5g2JAAPRb2 ! NQtd9XQ6i0Y+MyQkLMuuRbc9FA0K3j80LAjptnhzHhooUFHxJA3H+AhgbgAAVO9WsDVfLRA294oB ! Df1rYQdmOsGM50Z8JBg4Yu/gsArcj80793UKP7embzFbZCCJfhjcCmAgsLk1vqFFyX4oOX4kkQ4k ! 0AlwjZ2BahhuhAOapGubJ4mGPvxMd3/hl6SJeBSLVhfPiXoMfQy099nHX/f270AMAXj5CHxZBA9/ ! VB+4EdP/F7b24IlKEFLXUTfaG9JQ99KB4oBEE+A+bWVSiyaMGTjZA/hfQU9WOXoUdQ/jbs26w24O ! H+ylC1YbWDLCk8lfuPppEDeqPE9xU1UQzAQE2+52KHYK+QOhPgAI8OhNFDaLVCOP+gS/+4f27zuF ! lcNLvQXB4/uJXBmJh3fAtwjIDQ+HxCckjdA1GbbRbIUEtj2ISR6JDRvf2o7sQYsvBYsOihEcBKPU ! b3w1FhAEg+EPQr4u84JzfxZ0FccADVXdbBiceeP23SV/66Iii1AQwekowQhdBiYHdnYYJIj9N8/X ! 2iHuFwW9BBFIM8mavu0KjmYIQHaLXhyJWAbeYnvcib0fAxOJg0MEwffe/yVzA8H39YXSdCHHA1aU ! 0XzydDHdX3Bo9sEghp3NbSWBYykHJvrRcsQc2H7aJzzse6vgbKRv/XUYowJVKJihEPNaLLPb1jas ! ApIiAU9pAnPSVl1qoDONSNJSHq1jcy4SRFQM+QvYmZd8sww54wgtAq25F8xj5O3hSty29lzjweEY ! SAvkSTQJDc1VS4Qzg0grFMbaQokGOhwUkIHJgP2tSDfiEAPKiUg5CgzJRXK+CAtzsyWXhDY/OcIy ! hxtINBI260AwmyHlM1npbSAE5FikaGwH/ZACdQmLx5vCCKfawTm3Z3JqY6TszmQWFlBHbscBAznc ! EsIDFkhPN4oKs0JgOJ1TfD4kB8iRVgIEDtghhMnSIIkos4SQEkYhH+w124V4TjDzBrj4O2EalpFp ! LEjLZrOCcAAlapbk2woA/QxDASn9Ym7J/QY4CwcybZplt0x+A3Q0ru0oNWmWy84PA/UyYjOX0eBl ! mq4LG6y4W+3FA0l/01f/egtAgcM8iUN0mASN1mJrDwQFWb7rbx3Y4EcoUrNXynUGdQ07soFdPldR ! 6j3MKMfyBLbtxgFGNAIwDjjuAXy2FlEIIHQOtlvrwsG/0B9gRzDAw4KvQLLf/G1qRYnOtWpkYyDL ! Czko8Vb25c4UT9cCR6EoxkklGoKhwAFf2Zd6GINZ6VcojJD3ww7bIvdyQOlQKCi50zloH58rUR4N ! EtbALqI2AhbeulUyA9geiV4svDjFYkjMyARKug+97KoAg+yiOFNvONgaaC1i+ylDsmsK0bbWEkgu ! S//379oW3xAwVjvIvVQKFURzBSsv4NrywUjrBSwHHowDg/gHNzqXCRkME0NA2FrAa/0Yg/0Dc5w9 ! rbZvuJ6WDcbkSIoPxxRMrvv7/5SL0YvN0+KDxQhjC/JHMYk4b9Xeu4kvcs7rBDevpgeLyN03tcDR ! 6LUBf4lLGHeRYxT2LHAHpIPtAxkBzRwONr3/B8HuA9PuK+k/syd+QUYV6qhIh1Ikp+ETu9uNDTBR ! DjhSzkTcJHYdva5cITT451EPLFJaHSjxEN4QXznzFegUia6171zAYmbsWHEGYRR1hzfkA/j9WBRw ! bl28ziBzLKn6+qAGPZct0D9MLE/2fEDiQpvBJwDy1JeLzhZ4V2qC4Qdy6hAz0a+iurW3/zjti8E7 ! xfoEiWxcSyYBW2LYQYuJA+lM0heHTXRuvCrHHAWFnRarG75rfBpEO9Z1I7+LeyiYFL5rvBmL1zux ! FXMHK8JIV9cd2y5kK/JziTV1Z7RMQchwo0JIBARTNAe6L7bmfwdHMGrWo0zRNrzNOjErykn/SywH ! GfluzwQ+VXUgYvfWtsnNB/JOi87Ci8ikXhqGCXewCwWG7g0WyXadwjvBBcE+X6LQmhREMCSBAvOl ! i8PjF7rKLRzfAyvQ86TaXBtte7slRANSDUtdFfAYOtO1KwwWiXgcKbFqcy0BaF1kGMkgjzGEByqW ! DnM4MsZVcjIOktJic3QfJf8/JcggmB9joW/Zhx0G1tA84Aiagpu7gfqgBRPyBX4FM9E32H0fRo2E ! CAJHd2ycpZsDSCj5UGEMnHjj+Y0FDkgOx0NuNPY2TfAE6wiucVMuNLrRkggRCoNiLXNoqeR3nlky ! vjQGjkgLkwMsCE6xH5tiiYv8EJ9LDMUEV2gNtpFhCAgDhmr7YfcwZ3KYMLgTochzITzhvTbZNMcx ! aTWgaTvdXDcgct9wGiRvGRosfUMQjVNRUjRXAM6mzfHjUFE97LJtZtdG8IUh+wjmBfjwFRZPZdA0 ! 4h+Jt7NgNzUCXQ+De9L78ejbWTvoczPjSjsF67n32tr6+UqY9vRjzQ2h+Qf6LvnN3sHfpYvJ+Iy5 ! FCPG5lTBAY22GjTX5jR2tFUQrrXd7pc0cxvJK+rRDEWE7XANCxKKcUCkNy1Ajy/0uyMSuc10AzPy ! g+gSzZfcJR5ZKyT4Cx/AC7dAHvY76XM7meAEHx6NHFgwnenJ7Ea/O9d8d1WLDI2pI84m91qtvQ4U ! YtSQG5cRTo3XFRzhjAp6t346HgPQOyqHqXVRYin30yo5EOlczF2omfCCkxUN2reXCt8divzrAgCo ! DEFImY/8BxLaw3X1d4leeoKF0G0vE5gVQCQmUdiMmT5QQI3fCSwkUfw1XOsSUjw2Oz9RQgWyUcAE ! eWvPFMM8ayBlCQdABg80Pc6yQ0wkHxVM7KPJnSQKGQglNM/3NODadz2fPCAr7hgC2xx5UKROhFcE ! sC1keQQGKUjWwgIPD3Neazwwl93qYovYBNArnTgDag5efFZM6M5NBnDq2e5LNgQ7JZp5tntAdFZd ! uHhxdrZUAB0nGSQKD00+DSMYmjgUnLEpzCEYmK+VQInSAIO5JBssAKGdz27rtY2LJmialtrplaA1 ! 99pMUXeF2hewux1ySZChMwYww+DTxqENUVxh/cvnZo03MxgYej9VUfIG++G35Ndq/SvRwwPqUE5L ! 2Z7sSkyNMYtpOVEibK5h0CsBZpLqL7MEst0VUlE6Q4XLTn1rMmrHQRj4PUvM/VhrRkBISFGJeQRG ! RDhwhCEYEUsg6BFco02zrPKEp2BvEGaEFVLIxoCL90hUysShE5/PAM45QQSTimdwb0He9wPug1FP ! YEoguNFYuAgLhpZFE5/PnhRCIHxq/FCUebzDSDaQ1HmMz4EUSCgrjhhRNnsjnf11Blulgy2yh09R ! qDrXRoRkHSJolBR8VcYIW567HLisa5FS3VAGLyHNIDXPuNqskElw/oH9dC4EQ18kTCQcsIUQ7BhS ! hLBHKAs+CTsrJW+kXEhQUqbwer1nBwxApmZZTuju50FQVlN0S1OENvce0XQ3oXvoIDdLlb99LolW ! BH9QK9WLbgjjbkC+lWx9PmYIvkfGOBgxQy6Lx0xWtgatFlXFY0NLVtJLIU2ZO50hIB1CmKCXJDCE ! MA0YkX01IchTT7D+U9hrrEVDSCpD/3K5bdWUNxM4AwA5KzpcLpfN2sE7ED63Qh5D2DVds2L4JxZ4 ! A/k+wCXFDBvvDA6wEDSiDDtXGIUrRQFHWGka5QI83YtYRigY4ADn9w0YCFdjVGOBHelPtwy4EYO7 ! 7911Cux7Fwv0wgzNXPnbD4bvEYvfO75VgfuwFZnDcgW4CCvYgkUr/rgPjKGt6MHt2++iEL9hEIoW ! g8YbrFbxA/lyyCFnCPLz9Mghhxz19vchhxxy+Pn6hxxyyPv8/f422M4h/wNNvGTrTFEJnxkVFhLu ! VuptRhNIdfSxDbnx8tp238b38Uy/CIs19/frixKxdbf1hxMxXRdbPx+T4PBfC8EIn5UIC6FsglBu ! S5ZQlwZyQO10SgTDJdXoeA8fHKE3d4Uau4Uiik+jRYhQEPRG4B1aDIhIEXUAAMNhwB0PSBjD3xR/ ! GFp4xSB2zgNGEjQWTJLwVsjaLWwu2m4MwQw0wX59miZcxbwQwkYsgAJ9sAeJM006aONX3N/+Bmyo ! TU89OwItdBwanc4QCgo/GDlrkmwoRnosicBWrpZ+O4wpK6lttbQie635hYkGZd0a0VLcVX+UVlJj ! wIYdIk0RT1UQd0aVzO6pPOrIo34cuALXma5InSgNQK6jgYy1pqMwcrpB/F+ldBNJ99kbydODwfrc ! L7bvTWE2XWZjECuWaiXFErZFsjysvhRUO/hzREBcBLt4Lla6DrXtMAC5F+AVso7P0+DQ2s+5LwDH ! CAvINnngLEE/952N7goscryuhfgjIEIwtlQIVshJGDJrhEe/FNPouG7BReItuPQr+ECKAcUWi0nH ! TLNFj5UIBq+oEK1Ed6F0g+AProuvBdsm6WIiHwJAr0XD5qANqqi/4ycfIZ0bcgeC2kLA3vvMGq9I ! 3HnQPpJvWOfYCL6LBNr7Zk5MuU0EA8jOrTPTtdaRsNRyA9fQXINq0071RZJDgsHMZV6WA0lYwihE ! ZDAckIYMRASF8FIIQbhZZQyNDMGIQWQIkAfYAgzAQA45DAUNOBSgb34Da6l3A44V1XUDwis3QNGe ! MzXWH+0jH9XwCpaxWgHahe1TJZ6XLC2OdSE+Sg1KmzA7wRFULQjbg5MpDPsI6w+0EaeOf2eGFFIj ! I02ihXJiPAxuIBkybWJdDrnBTmNhIl6PEeKWyGKe2wGQc3+fhELzCYhK/xFBSDtQCMdzH5H2B04M ! Zg0GNkdJYc8oN7AAFSiwIeP2Phkf4E0KiApCSES9BFwRBvbPFBjdMvCLKwrix0MfWTNQ4CvNExcR ! qkx3kgj0FMNKCQEEXN0wGODYYgb5EXhQZWr9K81TVrLNFeZQScjrtJhWHmShiokDPuDv/VCD/wd2 ! FT88g+8I6AzvlZFMiUw3UFYdCku2i7LqGzvmgmKzTiA6K20GfynTbjz5Uyv9i2tk0Qgr9O+JC1v+ ! i2Qi4RJBAXyRTGQ7/pB0RmWz3C50MUcDDEiQTkkTS0ObxOJKu0wvV0G+GmHtS+IE+QzioUcWIFFT ! bCASnY6NBBN2EGc6Vt0M2Nt1CaFbWR0APz51HLJWVRmNFnADdbpT6yBSVbCJflG6AROFPpyiS7TV ! ltP+NxpbUylO5PpSx0cYLLxXNI3it3ddXkwe+3QGg32lYi5qugwfCL7CMPeExcIpz4Hs8KJB7Cr3 ! jCT0Bvy0JGm6Bfr97VfPRANITKZpmqZQVFhcYJqmaZpkaGxwdHgNcgFvfImsJHwyvf1CiQHvflyE ! RI1EA0NKiVd3gS667TkIdR9xGIERov/KlG7AiSmJKkq+GFt4jxqcF7kRjS9soKeYO0M5KD1Bg8C0 ! QTeABCZ283b57Lvx+M1zBppiug8rtHgubvR/OS51CEqD7gQ71QU7+qUb/zbbLHYlVPq+UYk70+av ! cwa7t/8SjVyMRCszeCVTwwTREXLyb+FmiNCVo4UcDESNo16gWwMr8bpAeRAR4OtONqIDzuWILAvd ! 3N/a9kqHM9sDTBxISeWMHMVYhPsXde/dSotbIwN9tM3/HBWM1gVsh4QcPSh/jA2h8Hg7iVx4QokR ! Ensc7Y74pghDO9lyxVeL3/dCp9nI2IwUNZSJIV3vmYYCA3EkHmGdzpmixxUAEsSh8RG/HTwPj4EC ! MzRlhwUeikQNuQo729wC70mF0uwrPiD9O00iB9t7D44HYBQ41r9gyc0sLfhsujgDRM9E/98r00UD ! zzvX8CYS0FG3GtccIEnLuIlm+n+NfQE7x3Yng8//9xotYQG3YcduGEEErn2+0e5uYcVt4B8HK8cS ! cu3Zji1L1yS/O+eLsXxjI0d9A/iB/4jY7yZ7P304ICsswi+NlITYNrpxoAeJOIu5P3Q4RYRdn0OI ! TKC0hCyXaGL71suIBTG9xteLSr7Vwq/874v108FDK/CJFPd0NxY7dJ/rCUoYKOChKza88AaP/1qM ! bum2NxyK0AkcKtOIPTGLCI0NvPEMkX9yB8YOwOufj74rujcpDJPxcxSB/sld2V34G9KD4qD2YIhx ! 6yAgFIDcd1Tz5gKKFDEMbfFu7XmAwks0MSGxBLLwRcv2DockR7rCJrY24ry0OxVzHrf8Fk3VxVgw ! d4k5jTzV6HaGY6RxBIYdcubVFAVXJkZ6jcIxgWsRbv+FwnQIM9DR6Ad1+FhKDm2EhkMoYIwcjQWu ! 0D4YMSRPI/rLOl/BfpT7GIPoBE+IJivfORgnjnUzCCN13HUVGurwxMhKICvSwvr4eJgcUpBA68HT ! 23h1mh5OkRtCS3f1Ddc79XQXkSwBdE37C1hrIQEMCggMi4AkD1+xPNBKo2E4aGcAaeASZBgLA4cT ! eF9mNFVkb/U4SRg0UtPYaBBjHeQuEOGQYgQVVWJRL4FScIX2YIPFIv47gzgATUwoO9HOZEg4exZM ! sDe6cwhkUVYeqFJRS/ze+j11JCeDOhYIgf1qdxO3BMAAPx2rkGY5geRPUdjAIR8WHvt1H7x88MiG ! 4yP8dAKYg5HFhi8jSzCBnQF0QlRJMEtgRSMPIA5fIN8NAHtAGdwF4N0NoQQKnIkCEA/b7qaUxwEI ! EccCOEDIUYCN0wHtDGNr1FYD2Nd7wHb9N9r248F3dgMVLBF77zsdroCu6Fjo9zIg4o80bPcI6iBW ! FCvFA9USLNRW5jBWljhwcKNC/A6LSzxVBTZDPJPqcRMSzYv3pKaVS/URWcqmA8VV2zn+F0ssA/2i ! CnV+QXSLzm1EKA2RdR9zNFfYwu7qmivunxCEV8iBLCdHV1ZsocY6RzB8zV74hIK911p7guSMioLh ! 1IthWihUlvCV6olRcjUYXnHoxQsfzFlauHC7+YtpnFEgO3EwNzj+4diNHTvuUUEcOXMJK/VOLdVl ! qDTOSTHNbkK5V4E2tA5c4kuaHCwgg/g8IoutjjrRSUERi6XtvkSJyBphCAvWRx1y4r/BW+xYolcw ! I8rIihzOjTSdq9qIziyENTJOg8AV4AHT6gRnh36wAK05BL4jawydDuz2AWBeBDYDyzhVF+wfQHTH ! g+MPK8M0MbK1r0BODavLI6QPSTPJRA8gNCFHpmycMQUBwJspG5TPO8NzK0BzYQ9ZGIP55+Kr9nPV ! h9dBJpdyRm05Wwc8WU76z3AVZXO0we7H9ReCUMBI15S8SSj9O/gGETv3cheL90WKDkaITf8a0eCD ! BoPrAusB61qBb8cncSwfO992E4sdsLNv1By0Rk919hgoEG3JdmZLnusZvwYEokDPzxlwRUmBYbv6 ! ETsScjoOcjP5Rpihts5RtZwQSQQT3ub4VXQr8z6s8LLORXyhrTvzD4IHLRdobvJJl4t02cVlwesv ! 0GNvHtlzAt44K/kzjRTNjLExVprCxBz6FvAO4hJTRgjqz4k+K2aVXKFnVg1W6QXYC6dzYiB0VlfC ! ZrMiz1rb77UD5OByPxBmrFSTkf71iGgNurXtAytBWECLMUHTwXuJOXdfiUFnmv1rFDe9Zp//JTiK ! BWZkZGQ8QEhM2IpX9MzMUT3gC3Li2O9bh+kLLQSFARdz7G4qceuYxAyL4WDPUMPMS4UZ2T1QXFJq ! 6rv84P9ogFPQW2ShoVBLwdZbdCUHGGjLiUW3oMZl6L4KagKruAkqaBeDDTyJRSk6mwZAV0QGgB3B ! DWjI+jvyNW9hDWSh/BoAo0QFuR8rpUu9OR1AGPozN7dBvmxOAGEYqGgM6n22ibEIcCeioWA/5pao ! DgCUbVwMCVoqmu2cUAOQoGkIwJCvKQIEMgDfoL4LTqEMezDSgD4idci3/d06RgiKBjrDdAQ8DfIS ! BF2zbQ8gdvLU0E6ksKb29la1xUXQMxH01OsOK4oW/fMgdtjr9WoKWJVQTyqW+GiXHap6w69rnjMc ! a0XsVAmJTYhecHEEy5xZCi7/dYiMjdCIF2MoBRTtjRWNEKUDBCykYsN8L9Ksw+B97rktL/hg7AUP ! AABJQIAAvkoMAIwFENN0r+kDERIMAwgHTdM0TQkGCgULBHRN0zQMAw0CPw79P0jTAQ8gaW5mbGF0 ! ZSAxLu++/b8BMyBDb3B5cmlnaHQPOTk1LQQ4IE1h3nuz/3JrIEFkbGVyIEtXY2977733e4N/e3dr ! X03TdN+nE7MXGx8jNE3TNCszO0NT0zRN02Nzg6PD2UVYT+MB+wEDDMmQDAIDBNMMyZAFAHDCLNmy ! X0cvf9N031v38xk/ITG60zRNQWGBwUCBNE3T7AMBAgMEBgjTNE3TDBAYIDAjW2FNQGDn1xKWcGTH ! Bqer8i1hQq+zAwuCIIMMDA1g0BrqHnrPjgOEirIBAAb/y3+qQ3JlYXRlRGljdG9yeSAoJXPB/v+J ! KZRNYXBWaWV3T2ZGaWxlFSl792YrEB1waW5nF28/A2YQAkVuZCAZdHVyJSyY+25zICVkUxcUAwb2 ! gxNJbml0Mhg+b98swM9cb2Z0d2EcXE1prf1t92Nyb3MNXFc3ZG93c1xDLxft//L/bnRWZXJzaW9u ! XFVuc3RhbGwAVGltZUjWtnb7Um9tYW4LaGkKMXpCkNZasNt3pWwgJGcWNPbb7fYgeW9EIGMpcHWH ! ci4gQ2xltuYK/2sgTmV4dCARF10udXtvrdC0HBlLY2VsFRwG67ZuaR1oFVOxcFsuW2vtAdt5FjLA ! AS4LNrK1ZGEPUCCg2dgsYK8u9dMgBtuzmztDbxGVXEmgUGEUABnabWVDtShms12yha2hmDJn3HS4 ! KVMemjMko9/6s2awdvsap3PELqtvLgAbLZtFjmOJHBy6C+EUIWKBbgxw7bUhVrSli6ivUDhcTUlm ! X3Y6LLZ9cHSudlVMY2gSZzMLi/C2BHkqg0Ada7uFc1p0dnMsKm9CYQwgDKEEnYl30ba3JYP3X09w ! O20RbRe6rZRMZw9SLV9TEHBrY66wwFMrVCNGCGy/0fBcIwvHUFpncmFtTt/7mG0CZUOTaSEPTBth ! wuFvYWQE3xoA30e3uXclY29Y0HQaX0U0G7CGJTsLLgeF+GHbGnInMCenMTAwBCYwNLVkEnY6JS+H ! OLkNcAAyF0U1zLXGYBhF31sfG1mjbZxPdgZ3w6ogsmHNudnpFiceewiFQxlNtz8AGwut/QpzPwoK ! /Ab4WRC2/cNFU1NBTFdBWQlvLsr+O/YsCnAtTk8sTkVWRVIrguHYn0NBTkNFTFxTS+dLDWzDjQdk ! det5LpdJMsSh9/q3ycPdNAiwIhVSZW1nVQrbK79leGUiIC0UAi361n4LxywubMAi53diAy66tcJD ! ADA0PxCVREJsW8NWR1V1PVsZXQI9EW60J34ARLUdYXn9NsOkSTerZDsybTrsSUtleTkKN3Vs2hFY ! uCBub/pjASBrHbJJBfdLkr/pI3SctdzbqCFT7GNhlNogvyoAI/Z/37UtCnJKd1kvJW0vgEg6JcoO ! 8dxNICen+/XYbspcE0dmHnNoSJLhwlIrYas70q9tbf4WZBVmAG4K2axbdwCRZxZfdn8PGMOCNG9j ! D+ipgeUt82J1aV/ZbxuBr/CeBUPeGgAwQHgYFgdcACMHTG3WzWfN3zvMGk35YTwrxTen2AkM/UMc ! f7aNx4xmdQ8XZ0dvz9UZGq5wkehkJhZ9OpJ98zoVIwAuYhNMAaMOa2E011wztiEbZMCgCQxjdINE ! ZCFpEnJYZLUkB2AjChZWINmEH2PzP1AMIeNLk2SmIqz3HssTfhEnDtmylq0XQlMRaCesbgBBb5T4 ! JQTec3UInYcKdOWFBp4vcG5h1iBmcrSxFhIiS1BjM91OLH1lHt5ybcMZxlP3QMdtQXIEY/dYMToW ! pGYby/RcR4HGMSBkH4Srfa/HTwVXajcj5l67bG1iZEwkvyvKXRM4cJ88dmFsIoJrEVAOoje92lt2 ! 4yJZlV6rBeMkT2J5VFIY17aUNJsnY0QXdqClpNcC4R9cao21QsR+uRtlZTaHOz3wYz8Y5/Fy2xyc ! Ht4gPd0Ka5dhDW3ZFxGDchk4DcawxehzRwci3BbKa3R3bmg1XNZlcFpQi2QvYgyt0BzugiYVrTvR ! Pj3NW29vJ0gYzYSbMWr3I1jgmOyFeU1vbHM/c38OwVrhDZCFL2NCtGPLXxh0eVqaLaArIKy8r9N1 ! HRBRsAegA5S5N3tNgHAXG+e1X8lydE5ifCkLZnDfDLpm9WWeZ3MRh2EYWjdptS0xljW0YSGfcm0v ! W8KRHXAbbg/oC1ihLX5dxwOGzTZHqQkv4h06aBmDowVgvAHXNGdHUAAHEFRzH2yQk01SHwBwMEBk ! kKYbwB9QCmAFoQYZIKBIMsgggz+AQODIIIMNBh9YGMggTTeQf1M7eEjTDDI40FERIIMMMmgosIMM ! MsgIiEjwDDbIIARUBxQMMljTVeN/K3QyyCCDNMgNyCCDDGQkqCCDDDIEhEQZbLLJ6J9cHxwZpGkG ! mFRTfBuEQQY82J8X/2SQQQZsLLiQQQYZDIxMQQYZZPgDUgYZZJASoyNyGWSQQTLEC2SQQQZiIqSQ ! QQYZAoJCQQYZZOQHWgYZZJAalEN6GWSQQTrUE2SQQQZqKrSQQQYZCopKQQYZZPQFVkEGaZoWwAAz ! BhlkkHY2zA8ZZJBBZiasZJBBBgaGRpBBBhnsCV5BBhlkHpxjBhlkkH4+3BsbZJDBH24uvA9kkMEG ! Dh+OTgZhSBr8/1H/EUGGpEGD/3FBhmSQMcJhBhlkkCGiAYGGZJBBQeJZhmSQQRmSeYZkkEE50mkZ ! ZJBBKbIJZJBBBolJ8ja9QYZVFRf/AgEGGeRCdTXKBhlkSGUlqhlkkEEFhUUZZEgG6l0dGWRIBpp9 ! PRlkSAbabS1kkEEGug2NZEgGGU36U2RIBhkTw3NkSAYZM8ZjkEEGGSOmA0gGGWSDQ+ZIBhlkWxuW ! SAYZZHs71kEGGWRrK7YGGWSQC4tL9ggZZEhXF0gGGWR3N85BBhlkZyeuBhlkkAeHR+4GGWRIXx+e ! BhlkSH8/3gYZbEhvHy++Geyw4w+fjx9PZKgkBv7/wUqGkqGh4aFkKBmR0YZKhpKx8clkKBlKqelK ! hpKhmdmoZCgZufmGkqFkxaXlZCgZSpXVSoaSobX1KBlKhs2thpKhZO2d3WQoGUq9/ZKhZKjDoygZ ! Sobjk4aSoWTTs/MZSoZKy6uSoWQo65soGUqG27uhZKhk+8cZSoaSp+eXkqFkKNe3SoZKhvfPoWQo ! Ga/vGUqGkp/fv++kbyj/fwWfVwe5p+ke7w8RWxDf0yxP0w8FWQRVQfd0Z09dQD8DD1gCr3TuaToP ! IVwgnw8J0zTL01oIVoHADDLI2WB/AoEZySEnhxgHBhxycshhYAQDISeHnDEwDR1iyckMwa8C3QhD ! D91keehu1DLiaWNaAnJl7H8TldXUc3Vic2NyaWJlZCdIiGUrS3YENrJYHkcjS0JcimF0ec0UYIQr ! xRseo9lbtmyzKD1j03wpSx8DAQNN0zRNBw8fP3//NE3TPAEDBw8fClxE0z9/t6MqSsaxAVlFEGED ! aQ4qKChuyd+noCz7BAAAoAkA5XK5TP8A5wDeANZcLpfLAL0AhABCADkAMcrlcrkAKQAYABAACAuy ! k98/3v8ApWPuAKxwBGU3714GpuzA3AAF/xf/5mZdwjcP/gYIBcneygIXDzdlKXuT7wYAF+12vrI3 ! /7a/BqamCLuwmXMMDgsXpgbdfx/YN/tSW0r6UkFCWgVZL7a9n1JBQlsXJ+8LEYjnA3sGN/YgJqUC ! dG63sBWvBRQQiOy9kd3GF/7uJgUGN2u3mw/6QEr7UTFRMVoFAB0bsK9aC1oXWgUQSmvNtYVvYLp1 ! BVQ1979uFW4UBWV1hqYQFjcXuSEbiwsdFm8R2dZt7u1dA0dARgEFEc1Yb93ITjb6C/lAb7oVuDeY ! e115AQAS6A8wNzNGCx1vQTGaO3mQWEhSWBAFhf6UfeYNC0r6Ud8UZWQQJRBzv5FPFqamZHUVlRcL ! HQZYNwoAb0MN2WaHdUgLFzHgiEb2BTFvMhDMYJ6zFabPCwzZN6xZFwUU3/szd854CiNaAwsSdsMc ! OhcFQldPumGcEXr+kwi/smW4wwu2BZ9vS7LUEfD8cv4NHWZv2AMGBMkLlqSFbxEHBfZestkDdwv3 ! N71hM0L5BwUXUrKF5w/v7iF8s2FJBwX2V97C3iwP+ze5JYSz99kHBfrHxQjZmw8hb/kwzmavagcF ! AxVD2ABbxptvVZYxuyxvRwWbTKdTym+B8gGY+5LNa2l1FudvsKYYFxET7FpvCPls0gVvR1ExSZot ! awBbb3WMEfZ6bwNv88O0sm1ZAltvF5vY9xbY381yJt98gb0CDW9J/Pk5WcImPQNvWvoeL0Iitwn7 ! KZBN9mmH9t/rlPHaBlLXEb8vzpi0sjfxhxUro/WgMFWfnTFpZTfx81okAkjOCwwPb3tJOq1m6wsM ! K/sWUvcL/jdG2EsG4gkLgAaiLIcBjDZRwwHHwEgJUhQh+nsBsi0DIFFL0XQncPi9jrruAU0TIANh ! PXMJhdFS1CFyqWY2lKit6FB9Rfd5lqhfQF//gotobnPd5yUxVwd6PzVkDXOf65p3bAEgB1F0GQ9z ! mxs7JS1vFQV5B4Wf65pucgljbY91KXkudV3XdRNDL2kZawtOFXjPnZnNGyl0L24LXbqx77l1G1FH ! Q8FjEWx7g33JKzlpO2gr/0/YkC23LuwECLCXjdx07x+DAP2BHALRZrhsAw5QBj9To2GtHQ5zDwN9 ! AJsZTHcCQ6NnIxREIFPCnwX3ui/JHydsA2P/T00Jh0N5AzuZYV03YdIZaTd/czk6bVA/YWCACIFQ ! v/G1spGwQa3vE+/CvpN5ngBCdoNJZ/YQrJtECXKdv3ltbpoXQoMDAaEpZAD+ISVCRoMHyFjCQfZn ! q7Ck6ZhigWduSO4jhXv3SW0busveaUmLTXI/ds9NxmYFd/VjVSUlI32xZ1sJeWNmew+JhO/ndA9D ! ucti3Q0sU9FCLQVII+kJlW0wDyukYUuAfbim2U/26219DWzdSNfQB1+XcvNncwEzxZB9VNNQFTHc ! dEdWGwJTiQgA7BzZIsODYzpESBNlXwPHwiUsIXVXRq9ON0YzaWhlddV0tZIhsPl3ldAMkNspgmcH ! Xklg4Y3jG4RujGR3dRdjeWYNoCxqnzV5jQIERRaoAMUSXE7EAFRQOEdbg2JX8Wl23gZv2u0NFGVJ ! bnRBFkRlCfh3kYDLDFJlc3VtZVRobWRboHZkMVNvAkAvQsV0eXpD+2C7SYBDY2USTW9kdURVrOx8 ! SGFuZGjcAOQi0RlTTGliFpAzUVgNRXgBGyxIQUmMJ4pnqpeQud9sWECtJR9TbPtMFD8MVCFwMGcC ! GrYRSA3CNRdFRhRVX137WIs2gGNhbEZMOmz2b7a1c5U1bjKEQWRkctEwsGAvH6XxYQizgBUKG0Nv ! F5C7b3NEyoJUb4wGQlB7CRZSirsoxkpTm3VwSYDasaUjQUlMYYYPsAkRyQ7qQXSEJF9oqTR1dGVz ! rr6REBSfE2yXxYLQjIthjlVALEvZbm2Qf2YPjXhkGXNnWBmxNyp8RXhBECWPioG5EA6wsFhrZxBR ! CLIPMWEu9t6HMAyHHAasUDFPfl1FZps1KgIOht4vtGScJB4rM3lTaJewCYZlpsUTMrthO03rMGZs ! PE9iagV4C2iCqLJDb2yYLeN3XgpPdfEleAinSUNvDINJQtZxzFDWK0JCa5RlGjTbvx1TTGlkQnJ1 ! c2h29dxvhUbjNFXRB19zbkfAvo5w6XQKdgtp7+Z2DdZNX2Nlu2xmC6GiYWsVW1+1X3rUxt7cDwlf ! Zm1qX6qGO8K2EnAdaMVyMxFtVgLa2mpzEWZGO4XCYwsOZdsCvRUG62Y9XW0/XybtThXNv31PPGNt ! O7c1t0duCBHXdDYKWGNmGHOPcBoNb2kJBRewbmxKXzljC3Sc6womOEcTZltUCrebGQ0P3GNoRJ6L ! bYXaUnkHnRfZrI2dXgduOxAHMX6nLyhmhg1mdJ5ZrBSwbVDAB1mwNxvCZkgnUCCA3OPsbkljawdZ ! WoodFxhBbO1smD3H2TRmMYxKu1upfDBtYtgGYXgNcGO0BzsIhWlzCXFzb0SFyA1Xb1qgUYttWtb2 ! RGxnSV9tTkBEQ5DLNJsGGvOuxlksBq0XClJpmxXaKc6Rt0xFSqeDLQlCbw0KF5AztFe5LqCtywoF ! LwEoVJJHMAPRbnM8Esp7VqzZZmHAYnlzo1NQ1xUzY2pCrOmUbDBRU6cMSKBw2cKBa15QRJsFYUAq ! dytVQZoN6UACBXMMBg5EvdIgLQxOQJPKzS3ozdpX4GglKxtK9sMDQC9VcGREXqDtBK1FA0wlEAXS ! lPsPgz3gAA8BCwEGHLOiTlI9PFrBRe/FoGAuCwNosiWLlAcX0GxgZxOLDBAHBjSAOZYDjGT/sLZb ! AbISpwgCHmCf4RUudIjrS5DQ5sK+6xBFIC5yljA7QqKcDlMDZveaywJALiY8SDLapuydcAcnwE9z ! su+9V1sM6/MnkE+g/bq2KRpnDaXGAwAAAAAAAJAA/wAAAAAAAGC+ALBAAI2+AGD//1eDzf/rEJCQ ! kJCQkIoGRogHRwHbdQeLHoPu/BHbcu24AQAAAAHbdQeLHoPu/BHbEcAB23PvdQmLHoPu/BHbc+Qx ! yYPoA3INweAIigZGg/D/dHSJxQHbdQeLHoPu/BHbEckB23UHix6D7vwR2xHJdSBBAdt1B4seg+78 ! EdsRyQHbc+91CYseg+78Edtz5IPBAoH9APP//4PRAY0UL4P9/HYPigJCiAdHSXX36WP///+QiwKD ! wgSJB4PHBIPpBHfxAc/pTP///16J97mtAAAAigdHLOg8AXf3gD8BdfKLB4pfBGbB6AjBwBCGxCn4 ! gOvoAfCJB4PHBYnY4tmNvgDAAACLBwnAdDyLXwSNhDAw4QAAAfNQg8cI/5a84QAAlYoHRwjAdNyJ ! +VdI8q5V/5bA4QAACcB0B4kDg8ME6+H/lsThAABh6fhr//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA ! AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ! AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ! AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ! AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ! AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA --- 251,534 ---- bxFWVlMFDP/Xg/j/iUX8D4WIY26+vZnUEQN1GyEg/3UQ6Bf/b7s31wBopw+EA0HrsR9QdAmPbduz UI/rL1wgGOpTDGoCrM2W7f9VIPDALmcQZronYy91JS67aFTH6Xbf891TAes7B1kO8yR0Cq3QHvkT ! A41F9G4GAgx7n4UYQtB9/BIDvO7NNEioNBR1CQvIlgbTfTN/DlZqBFYQxBD7GlyEyHyJfg9hOIKz 3drmPOsmpSsCUyqs+b5tW1OnCCWLBDvGdRcnEMKGNuEoco4KM8BsC+3/5FvJOIN9EAhTi10IaUOS ! druwffI4k8jdUOjISxJFsnzb3AwvUMgIFEBqAcz+c7ftGF4G2CVoqFEq8VCJXdS/sLDtLSG81xw7 ! dGn/dChQaO72+b6QmBlLBCLcjnQTGnOd+5YNfIsEyYr2IR8byFn3IWw6Lh9kQ+2w0VoDxUUSPsge ! uu29U5eUjV7wzBTGxp3hw86B7Cjhq4tVEESN/9v/i0wC+o1cAupXn+ArQwwrwYPoFosb/5fb/8+B ! O1BLBQaJfejwbwKDZRQAZoN7CgAP/jf33Y5kDusJi03sP8zoi0QRKo00EQNts13eM/qBPgECMD6B ! Pwt/6z7bAwQ8MsEulIkxA8oPv1Ye2x67bQj0Bk4gDBwDVRXRCNv2pXlPHInBVxoD0JsQFuhGaPzt ! jUQCKkXcjYXY/ptpJEL3bsALHt2AvAXXD1wyjjHDsxhosBMdGE/bu9lmK/2UjYQFDcX429IbtgBS ! 5PaLCIA5wkAM8PuNvWwP/PD/MFRQCnX0DfBZMls27BEQzADt79z/L/z/RfiDwAgvNYsAgDgAdcav ! 5+rc7EcaUGk2bEAOmcMG8jK0BXyxsO4bbp50Sqpmi0YMUAQOQ2uuseF2veRQWCyzR/4a3EcpIicf ! CBt2FFEwz/bbDdxKAfqbGNLu7WPbnRjLFX1QKUMKUEPt9tzGagbFGL4PtxQ5Al/6uu4PjElh6ZF0 ! /02qNMiNHC5g7rHIlv9zBNaocQuz39xfGvIm9APIK9gZt/yATXIIehAq3kKXQDgvWZFPinYQ7G/b ! +TMFBC91AkBLU/baGZaCN1/gOqEEMLjxeF186wPusmAkBNL/fWsHETuEyXQLOgPGAFxAde+bNdn6 ! ckAMD3QXyhTU2JnN9U7YSAZt4Nv0jb06wFdQFNRj2KBdDAyz5f9m0GoKmVn3+TPJaJhxUQCVzzlu ! Hmi8sgmVYK621GxTMFBG1xo1HdtuthQVSL5AjwRW9FlQcHerbVYPAR4dOBj/02gH1sHLx/gbYCMK ! ugPvawEV06ksXzytmTNnn57M8Pnu23Zv8sIQANq4AAYAPSzh5NiahU7plIEJEBq+uwO3VqwMAH0I ! VyEHR6HYot7taNg8WSUUPGhyImgBBABf07kPfaRVBuxQKpPM5kL7xwQk4KAMnwDwpHG9YXwWGug1 ! 5Lwag+3+bmHoA0HWaKDqaP0MYB1vI5uiAARfrF7rJ3eBXFfg6XgIOAEZX35wHb9mvvfRdFzgKdWD ! PfWzbbjQPqtCCNh1OVbtjUS3yyQpqEWhHUALt279i1AKjUgOBlFS31FWRkRolu49ozAsDPxesUEa ! TvwQ3vCww2sVtgjXKNasxQVbA41WosKW9BErf+vbxtArflIP+CtV8GdSmSvC0fhhttVO7RW4xw2F ! TIwRGax1CPkT5cIFDU5Xet0B9myGD4XiTi3CfIlIaLhzLIUKKSgcvv4dZuVfLhS7l/gBwegQSHR5 ! 6R+ShsgKJZYQ04sttLoxV3JJHh48aEmAPcOHDsfVpAouhRs784/MLhYz7VVVaIsV0ztwAxOlxRZz ! TUhVJQ5utq6GFFp3VekOLwiJPIMSAEQ7EayIJaq5hqessExDKCi+AI5x2u0xwmjv8hUVDEChBVeQ ! WwSDCsCfB25IYDHla6sYaJktX7/Bbb0+UFUIJFVWkMmWWimKwmxDn4XJWOhZBlRVRtndHGSJaDBo ! yKIEIHL9NllgVaXczQJ1H/81ETNj7R4FHxCpe3edm9wjLVAJ6xBo3sXDaLgtj+tFxCDEDyP8oTjt ! M/9XVytonVbtwoZJRzN1BC/rAvAMJYyxV+9W45wYGieZvbyBmtHc24VvnPhTM9uaGQAMU2iMkjbG ! sbZ7/BoYYBcHMH4X7YZBC4ZTAOxTUI1FmMeybK5mOXAn+BzxGmcp7/XdyrvRanbluGFF7dE7wy+v ! 9dIHdBg4GP2NTZi31akz26FioDacU1DtXqRnc0j/ZHLW4xBbJy3UZMABrNfa6EpLmmcp+P44I2uz ! 2dli7McgqsZrb7MlNezw/U4AFuyNmWXwDAgQHxthd01DI3BZN+homnQeWBew9xj88oQbDl6s4KBS ! EkYOQ0tgFr8XeP0k08DoGbiUXi3xAhdc1zSbPbRjamXuAgQizBqUAE9yyDtz2AaCaOwQ5E4RrazD ! bXBhjA1tHc8BNRJySKfr2c4WyQGBySBoWPRyvmQrgVJ0bGvocfeHh0AIPTHsdCk9gBZC4Nlh+QNJ ! NeBPIzBT+75ViT3EoqMW7sNmgLg/EV0fwYKMRHhWHE1Pj52gFBHvoSRZNlkVKOy2x4DwK38LKZV7 ! HXQ/QAJ8BxMgGLuu1L3wHF3JU3SysWgmHzOc+D5joJ8FJAQuUrpFa7QCyYHoaDUci/DebVyj1F10 ! EmjEOuh1SHJ3+w1xWR40oRkTaKjAxG5WdRoFFGLw4bZZzSnjkAhN0BaetPF1Jw4aQHMPTNLhnbo1 ! 9kjncGz6t0+t+IVVBYPI/+tmUy+YYK7eyB262HNAxAccSefibAm48Qqkag8mzfSUNpjdtlHXYHmJ ! B1Uk0+L43RoYNg4dyaUS9FeXyiNLU5xeW1/rUAGt4OAtoaoxBkOhqRZbQBBVygbaxaPwfwRB6/YP ! t8HB4BBBIzAb47EIu1Q4U8TWJfvRHb2jVlUQQRS9g89Gv1GF9n+RhCQMkYEL//fYG8CD4BjAY73J ! uKu7EDb/BY28aAR0b8fIvXUPKAqUJHQvwXQE9jbbciYtdCo0aPxzLGZHGwcszQNSDyIEt2wCjYgs ! bQe4t4+LdgSUdYSLUo6Fd1ZvgcT9WADU0MUDm61bEhAA/E4MXKPDiy1tMXmRM7Izl52EAQbpAJvd ! 3JbtdHsCXiEPhf6hxKB0ngFnB5lHaHQDhlZo0k5e2wRJL0yGVgj0iZKdurOm1i5X9hCHutnXqDlx ! k4vU0syOlU0dEJ8ZajAb6aQTWt9HwHC89rOvEexzitCGTCDM9uqkZNhq2Q1gk8D7CRJHaEgfgnWf ! gv25Nh9oduuWfX8zWQmZsBuH6xtXNExiI9eLw+wzCAyMI/Awk3hBiQZpSxijfVmJRgQDIl58fq1S ! SyZW6hcKdDUsNMcXgk0IUFG8BYMRvNlZqEmMhhXgpCJLPuQzkGYSYptSBogdKJR0XwF2nSvwQRJW ! NODwFjibI2pfgLkbcoezacAxhUChBLzCrhdEYXRJqxV+oe0WcXRDBAH9aiNoRHWwDeaamKw4N9YY ! Bvv/VipWNAYHD5XBSYPhAkGLwaNCe2Dg/evHxwUH1wPsM72lXV3DagyQPGhAOKOnJ+gGXh1AGRxE ! K3GaLdzJNa6h2ajLJuTWbB8KZObMdcTIGwnEIignQePr2yolHOFsBxpnv9RLiCdY5LOEH+R0dg1w ! aLYzcElso9PvfZZcsCyEHYBoDwZzC7PTBYtALTgFZodI52MpVPoXjVjtGU1GLIUaXCwMczAReEhV ! DDxU2kQ/r864umGTRYw7UhkVJjQw3iA1yB+8pQnNYSUkFLkKmzBP5xSG/FBenhjWzlxQAIyCAK0W ! zM5dGxP6RKshMbJ1X6qvYM+CffABdRw9jOR1wjQzQGMzPiAESzghtdR1Vo7RsIfnGECJq8h1vWFm ! +Wr8FGQUINiAnGmoV2IleSBszph1sJR1BguYzVR8vPns0ZGlkW3NeOyNdKz1DrNANf4DiaUbsPcD ! HEC+WBeqVqbCsLIjVqJ5GA1lEpgMg1Y8G7F3cjX8bAU8iBkvJCP0ETaF7hVrRFy7JLQHxL7TXnTq ! yllnTiyeASWUSnVl1D3AEqGD1KoTmBZCrrt6No8cIRcC/wRdvN10SNV0VGoLWRGNfcTpRrdLLPOr ! BvSJK6urALaNfWho5gyrGpATjBtNtzDxvwAIF47AMP2JCUpRaC8vZjG3AwtbHNwcJMQb2HUhPri1 ! FgcGzGsn1psznTNBUSsSbCBPLhm79hdAGfRtjRvnySUn+G7OJLpzM2yfiY5cjDR8mGUzbQ7BBZQs ! Baxt2X67jH+QIJt1tAK8qA8UoTzQpARkKNnwhotlrx0/NcyibuItXVRsvRmAFFW72vBSr5I+vjB3 ! Yih3dyrtHlXXGBBqhCo+qTN34Bd2cxNBVbsFZLusIChVJ6BkO0GbIz2uKBQWkTrYey1UTjLdoZOx ! FdWjtxT0eTM0kHatRQposPr8lhzkdlvgoNx2B57s6WvQ16r7UKOUYkhlE2AVR1XacPG6hqE7Nm9b ! YDwDtPzqE4Bu8TjEBxErUwAQEm9NTeJWGld0b+XxP8LQEJUDZoP/AnZheXv7G0h1TopIAUAIMHxK ! BDN+Hi32f3ludAxydTtAxgYNRuszBgMsYaLxCkZPT6cNT1FfoydNYnw8CigfTyX6N8OIBtQG6wWI ! DkZAT6pYvV2hmaFrgCaocSgcSsIowd68jo/c+KhWK9gD3JoVQAA4ShmW5OADSbHg0dcCTIk/8J3D ! bMJlnVy+TGCFNWBr+Ni7cHtQIvgPH1tdsyX0ZncXH2QARGMwkDBPdtgMB7Kr71U4d1aNERt02ozQ ! ZdoRmjVXolKNBAstGaKB1kauuGJaoJ3pCuEKBAb4YbZicMIOYALoVaRsbYB5BLNTuHgmze2MpH6g ! /bzWyWAnCxG4bK3Zqdg3ZO2s2Vs7RjID77+gEDcRORDszd6E4BBFHV841jNoB6lqRCWoXlZTBjiI ! RGExZaprbqRd1J5OHFCF22z34rdTU0QqU2ZNH9sZuNg+qUOPpOfx7bXdAYjWag8YoC8KW5ztRbMN ! ZOBgNvdtI+wsyAjWLBNcujiEdzUjU0w0hbZ6fWpb2B/Y27J0X6DbwkNqXVMN+P8YuSr9PIAnAEcs ! aQkcskTrA4AXqQhTSzwISKVEMgQU0k2eYAhpXXKUHDI9LQjUKTZSLTpL313oZb51AlahmA5GgzgB ! fsJ88FJlvgZqNpSt7twXIRGLDZAJFYsJitM7acdWggiv0FbAXk88RQYCfHQUGhs0ko6yCMBulG2L ! ovgC9Ald/NFtE1zwCvEJU+9MebXqmtomPYtESAn/n+xnLEl+HjQeaDAboFE/YwisWTvDWQKCSU3X ! Oh8YU2lvZ8THAh7LaiiF+Cj7dQs6I+3eaAgiGR2Fi+z6atL0ootoqbPhLGY/oihbHxdZDO7lIUIE ! AxWENesazIYcCAgWGvf9jSUNQE7rxICkNUsAUr9ESYhDvIkEj0E7eMNbg02ECXwbgwqDwyhTszlm ! DpWzJI3GBhMHMq2FVbEzDZrkClwkdBpF13rU1C5VmEyMYdOmIjdr+HjYtHgmj9pMJaw/sUVLbheD ! +LpPjh8Pc9x3XUs8Akr48V8e/zBT7NiTEY+E6wAzixjQ3o2NEbakWNZqO8d1RTyUPvwuGyC7G//z ! jTchCeA4ftivoMzWIkDCL1KYkc1srloIjzH8sANyYF6QdBp4PJ8DOXgQGtCiHMiBvfTrQylkCA7k ! wP4Z/OsgS1AHUCi0R2ZZg+pLpWeNEblr8/5+WJ8FhAHtfWQUEbOQmYGNjez81yAKX1CqUa6dW27f ! zH0g+hTrGxYfHNgbhIclsUD0xBardsHgakVdGNjV0hUMNVOZBQxidemEnlnDV75tLQ68DwBWNP9V ! 4MTHiJ9HH6dZo8bPTg060w4IS7Tre/ELRmwNohLCIB/gXZDYYKPM0xAWPOthtkiP2KYoPgc5LKDp ! WPsMMA59G3AHP/iHBCdNRx9AdBxqBsKQDtdzZ7UwWYzCU6kAzQWREjijRw0qX1G0ZgCRopgzI8bo ! XNEIgOLAHwCmluKDaCtNag+gdFGAFfvUAQbgDEQECNIBbIobOQSjkosliNeWhAj3w0BiCEY3i1UI ! GnsB2Ch0TFErQRACNwBvRaEigTlLjTQQbN9QGwjDxD56VjQSC7dFqbnJOIyvAE7y1Yb6v9kNi9Yr ! VgQr0YkVCStG/dbGLqYQu1f+DICJASt+BJbYGWaYI7F0d1H8JXdGd5uIVlLq0rMTtmYW2vQ/hBvV ! mmugNp92yCLy91YgWGIISAx0LhdfEAxgV1A208zDbY0Qr+sz1EWijzcYC0bMAEvL9rf/M9I7wlZ0 ! M4tITsp0LIlQFAIIGG6/0P+LcQz33hv2UoPm24kxi0AcIBRRVOEE7EInPGCyDPsMsCq4nwiQAKt+ ! wRBtDPZ0OotG/+i2ZqEzGiQsPRQNCm9u2bXUPzVcCB4aKFBRzC3dFuckDccAAFSrBR8B5VYGLGwC ! tub3igENljrBHLZ/LYLnPHwkGDgK3IUtRuwdwzv3dQo/UWQ39Nb0IIl+GNIKYCDgRr9+KDnYlbfG ! fiSHDiQAR4FqGLa5ANdkhDMniYZ+qUm6PvxMmol4FItW/373FxfPiXoMfQy099nHQAwBePkIfFlr ! /3VvBA9/VB+4EdPgiUoQUtfT9n9hUTfaG9JQ99KB4rBFZVKB/3UB7ie8GWhBT1Y5ehR1+Ja9gA8T ! bg4ceLJZd5sLVhvJX7j65wlLRmkQcVNVDuVGlRDoBAR2wmbb3Qr5A6E+AAjwi1QjfQe9iYX6BL/7 ! oZXDS70F+PbQ/sHj+4lcGYkIyA0Ph8St8PAOHSSNADcZBLY929E2mohJHokN4kGLL41v41sFiw6K ! ERwENRYQ7m+U+gSD4Q9CtC4WdBXHAA1Vu2RecN1sGEx6deuiIsBu3L6LUBDB6SjBCF12GCRa28Dk ! OPMjHhcFXeHm+b0EEUgzyY5mCI9b07dAdoteHIlOBom9HwO/xFtsE4l5QwTBaQPB9/WFLube+9J0 ! IccDVpTR3V+5jU+eIGj2wSAlgWOO2LCzKQcmHNgVXD9adNoobGKkFIJ9b2X9dRijAlXza10EM1os ! RAKSIi612W0BT2kCc6AzjUg5F2mr7lIeEkS+2daxVAz5C9gMOeMIC+bMSy0CY+TtrvHW3OFK3MHh ! GEgLqiVbe+RJNAli7YbmoDODSEKJBjr+1hU2MdKQgUg34hADyolIIrlkwDkKvpJLhuQIC4TDjbnZ ! Nj85SDQSzRBhmTbr5TMCciCYWekIfsg2EKRoAnUJi8ecW7aDkcIIp2dyMgvt4GpjpBZQ4QF2Z0du ! xwEDORZIT1kabgk3igobUOEBcuRs0T5WAgQIYTLJDtIgpIQRdokosyHNdiEhH3hOMPMGuIZlJHv4 ! O2kszQqGgfiwcABvKyybJWoA/QxDuSVbkgEp/QaW3faLOAs3M0yuA6Q13pZNs2wdNlikJTSSls2y ! accBNTvcNugDSeBlW3/TgcPtxVf1ejyJQ3RiawtAtAQPBAXY4I3WT77rRyhSqVeBXW8dynUGdQ0+ ! V1Hq7cY7sj78KMfyAUY0ArYWBLYwDjjuUQgg68IBfHQO3bXQH0CytltgRzDAw9/OFYiv/G1qmmRj ! KPFFiSDBTPbbR4sLOcQKTyjkScAB1wIbGl9Z6YKh2Zd6VyiMkCL3GIPtw3JAOWgO299QKCgfn9bA ! udMrUR4uoja6VQ0SAk4D2EjMFt4eiV4svDjIBL3sxWJAqgCD7Ggtug+YOFNvOFj7ttbYGilDsmsS ! SC5LFt8K0f/tEDBWO8iz2vLv2lQKFURzBSvBSOsFLAc+ly/gHowDg/gJGQyFHK/1DQ5AfhiD/QNz ! WD3hemoByZYNxu//277kSIoPxxRMlIvRi83T4oPFCGN777ruC/JHMYk4iS9yzusEN6/UAr9VnAeL ! yNHotQEL3HTfdYlLGHeRY0SD7QMZAU3vvz3NHAfB7gPT7ivpP7MohTqqg65BSH1SGsTutlGdjQ0w ! UQ44Ukeva/jORgwkXCE0+N0HSrxdUQ8sUhDeEGe+At03DBSJrrXvXFjMjD1YcQZhFO7whhwD+P1Y ! zq2LtxTOIHMsqfr6oAbnsgUaP0wsT/Z8XGgzuEAnAPLUjYvOAu9KTYLhB3LqEDPRr7f29t+iOO2L ! wTvF+gSJbFxLJgFLDDtIi4kD6UzSsInObRe8KsccBYWddcN37RZ8GkQ71nUjv4t7KMJ3jXeOGYvX ! O7EVcwcrwkhXumPbhWQr8nOJNXVntEwcLlToQUgE+lM0KN0XWyu/B0cwatajTGgb3mY6MSvKSf9L ! LAeMfLfnBD5VdSBi99bb5OaD8k6LzsKLyKReDcOEO7ALBUP3BgvJdp3CO8EFwT4vUWhNFEQwJIEC ! 86Xh8Qvdi8otHN8DK9DzpNpcjba93SVEA1INS10VDJ3p2vArDBaJeBwpWLW5FgFoXWQYv5DHGMIH ! KpYOczgZ4yo5Mg6S0rE5ug8l/z8lyCCYH7HQt2yHHQbW0DzgTcHN3QiB+qAFE/IFmgWZ6BtsfR9G ! jYQIAj02ztLNdwNIKPlQYQxOvPF8jQUOSA7HQ24ae5sm8ATrCK5xUxca3WiSCBEKg2Itc2hU8jtP ! WTK+NAZHpIXJAywITrGlTLFEi/wYp31oDbYfxQSRYQgIA2H3MFeGamdymDC4E6G9Ntn7yHMhPDTH ! MWk73VzhNaA3IHLfcBoaLH1pJG9DEI1TUVI0zqbNGVfx41BRPxxtZtcAPPCFIfsI8BUWsuYFT2XQ ! t7Ng+DTiHzc1Al0Pg/Ho24l70lk76HMz4/fa2vtKOwXr+vlKmPbNDaG59PkH+i7B36Vj+c2LyaiN ! uRQjxho0197mVMEBjeY0drS13e62VRCXNHMbySvq0QxwDQuuRYQSinFApC/0u+03LnAjErnNdAMz ! 8oPo3CUejxLNWSsk+AtAHvaXH8ALO+lzO5ngBI0cWLcfMJ3pyb871x7sfHdViwyNqSPOWq29RiYO ! FGLUEU6N95Ab1xUct346l+GMCh4D0Dsqh6liKfd6ddMqORDMXahR6ZnwgpMVDZcK31zaHYr86wIA ! qAxBEtrDt0iZj/x19XeJXnptLxMHgoWYFUAkjJk+0CZRUECN3wksNVzr2CRRElI8NjtRwAT8P1FC ! BW9rPGsgss8UZQkHQAY9zrLDD0R8JB+jyZ00FUwkChkIJTTg2uw0z3c9nzwYAtv3ICsceVCkLWR5 ! 7k6EVwQEBsICD7ApSA9zXms86mKL1jCX2ATQKw5efN2dOANWTOjO6mvQak3u51FMmWdrdEmxe0B0 ! F2dXolZdtlQAHaLwgIsnTT4NQ8GZQSMYsSnMWgmkiSEYiUuygfnSACwAoV7bOJidz4smaJqWc6/t ! ttrplUxRd4XaFyGXBFqwkKEzHNqw2wYww+BRXHt0M21h/cszGMi5VQ+/OTc58uTXav0r0cMDZFcy ! 2OpQTktMjXMNy/Yxi2k5UdArAWaSkO0WYeovFVJROkPsW5slhTJqx0EYqIN+rLW3S0ZASEhRiXkE ! OMIQ5kZEGBFLIK7RJhzos6zyhDcIswinhBVSyMV7JLDGVMqJz2fAxADOOUEEk7i3oNCK1PcD7oMl ! ENwzUU/RWAVDSzC4RROfIRA+hM+eavxQlENKGgp5kISMFEgovM8rjjZ7I4EYnf11BlulLbKHUU9R ! qIRkHYM61yJolBTGCFtGfJ67uKxrVZFS3VAhzSAcBjXPaJBJcC/a/oH9LgRDrF8kTBywhXQQ7BhS ! RygLJIQ+CSVvpLA7XEhQUnq9ZyumBwxApk7o7vBm50FQVlN0Szb3HllT0XQ3oXvoIJW/fYQ3LolW ! BH9QK9WLbgi+lWxL4259PmYIR8Y4QBgxQy6LBq0WvsdMVlXFY0NLIU22S1aZOyAdQtKdmKAwhDAh ! lw0YNSHIJJFTT9hrrH2w/kVDSCpDbhvAU//EOMU5AzA6y2a5XFs7CjzxQD/nZtksl0NORJIoOUak ! mAGbqClAG+8Wgga4DKIMMVelKMABGEdYXICncGndi1hGKOD8XqMYDRgIVyywAxxj6U83YpBqt7vv ! 3XUKYoGeAezCDMNce8d37/nbD4bvEVWB+7AVmcNyBbgIxR938SvYgg+Moa3owe0U4rdo22EQihaD ! xhs55OxdrFbxA/kI8vPkkEMO9PX2kEMOOff4+UMOOeT6+/zbOeSQ/f7/A00rKsEGvGSfSUq9bZ0V ! FhJGE0h19LHu29jdDbnx8vfxTL8IizW27lbb9/fri/WHEzFdF1sSHF4iNV8LwQiflE3wY5UIUG5M ! xkAmaCFQCRod79J0SwTDDx8coUZHtKQ3pYpPeMddoaNFiFAQWgyISBFwB70RdQAAD0gYw17xcBjf ! FH8gdgUThhbOA0aS8Iu2BI1WyNpuDMEJVwubDDTBfsW8H2yfphDCRiwHiTNNFTegQDrf/gYLHdr4 ! bNhOTz0cGp3O2o5AzhAKCpJsKKvlD0ZGeiyJfjuMLS2wlSkrInut+bRUaluFiQZl3FU27Oi2CkWU ! VlIiTRFPVRB2Tx0Dd0ds6sijfhzOdK1kuEidKA1krBW4QK6cozDi/xoNcqV0E0n32RvJfrHVDcmD ! we9NYTeNVCvR52ZjELsS9dZYsbZFskVY+HNEc7HiYUBcBLoOtQCv2MXtMACyzn3JvY7P0+DQAMcI ! C8g2eWx0137gLEE/CixyvK6FsaW67/gjIAhWyEk8+hWCGCgU0+i4waVfI27BRSv4QIoBmi0Sb8UW ! i0mPlQgGuhs9Zq+oEHS74A+ui0kXayWvBSIfAi1R3TZAr0XDqO/j3JAzBycfB4LeZw7p2kIar0jc ! fMMC9nnQ59gIN3Pykb6LBEy5TQSutdbeA8jOrZGw1HJKVJuZA9fTfhIMhub1RcxlXhJGkRyWA0SA ! NEzCZAxEBMLNguGF8FJlDI0MwYiAPEAIQdgCcsghQwwMBaEABQZvfgMbcGzAaxXVdQPCnKlJvSs3 ! QNYfhleI9u0jlrFaKvH8qAHQhZcsLVDabJ+OdSE+MDvBER6cVGpULSkM+zh1RNgI6w9/Z4ZpEqWN ! FFKFcmLJkBkZPAxtYg12cgNdY2Eit0R2yF6PYp7bAfskjBCQQvMJiEr/EXuKnPtBSDtQCBIHTrA5 ! Op4MZklhzyiBDWkwN7AA48n4qEDgTQqKMLD3iApCSES99paBJ+DPFIsrCuKBAsfox0MfK80TF5NE ! yJoRqvQUEPhmusNKCTAYkHtAYuRH4A1QZWr9K81TNleYG1ZQSXjrtHmQhcqYiokDv/dDWT6D/wd2 ! FT88g+8zvFeCCJFMiUw3dSgsoVC2i7LsmAta6mKzTiA6/KVMbyttbjz5Uyv9i2sjrNAbZO+JC1v+ ! komERxJBAUUykS07/llut+qQpL5hSAM8ScAut82yfkr0EkwH501fTq8MgFkd3/nokUWQDCBRU6dj ! oXhsIPoTdhBVN4NEZ9jbdQnAj4+OoVtZdRyyVlXcQF0TSY26U+sgUlVflK4FpgEThT9ttWWizKLT ! /jcaJ2r/EltTUsdHGNyMilfx27sUNF1eTB77dAaDfRc13UabDB+4vsLCYmExMCnPdpX7e4Hs8KKM ! JPQG/LQk3QL9IPPtV89EA0g0TdM0TFBUWFzTNE3TYGRobHC5gDdNdHh8iawkcn6hxAYyAe9+XIRE ! jUS7QJfeA0NKibrtOQh1H3HRf+WrGIGUbsCJKYkqjC28CECPGpwXuTbQU18RjZg7QzkooBvAFz1B ! g8AEJnbz3Xh82nb5zXMGmmK6Dzf6P/YrtHg5LnUISoPuBDvVBTv6f5ttF6UsdiVU+r5RiTvT3dv/ ! jeavcxKNXIxEKzN4JVPDBNERcjNEaIPyb5WjhRwv0K1wDESNAyvxukB5EHUnm1ERogPO5Yjub23w ! LAv2Socz2wNMHEhJLML9buWMHBd1791AkYG+You0zf8CtsOtHBWMhBw9KHi8Het1jA2JXHhCiRES ! R3zTUHscCEM72XLFV2xk7HaL3/dCjBQ1lIkhTEOB010DcSTnTNH3HmHHCwAS+IjfTsQdPA+PgQIz ! NA9FotBlhw25Cm6B9wI7SYXS7Cs+IIPtvW39O00PjgdgFDjWsORmkSwt+Gxnov9fujgD3yvTRQPP ! O9fwJuioW6Ia1xwgScsz/T8JuI19ATvHdieDz//3GoDbsEQtx24YQQR3t7Cwrn2+xW3gHwcrxxLH ! lqVocu3NJL8754uRo75ssXwD+IH/iJ8+nLHY7yYgKyzCL42UONCDvYTYNok4i7nCrk/dP3Q4Q4hM ! oLSELDSx/SLWy4gFMb3GauHXS9eLSvzvi/XTwbobC99DK/CJFDt0n+sJShgVG957KODwBo//2xuO ! 0FqMborQCRwq04g9MQbe+HSLCAyRf3IHxg7fFd3GwOufNykMk/FzFIH+7C78R8kb0oPioPZgiHHr ! IO6bqq4gFA/mAooUMQx4t3ZAb4DCSzQxIfii5baxBPYOhyQTWxtZR7rivLQ7FYumamFzHrfFdDB3 ! O8Mxfok5jTzVpHEEhh1y5isTI3TVFHqNwjEIt/+CgYXCdAgz0NHoB3X4WELDobVKDihgjBxoH4w2 ! jQUxJE8j+ss/yn1XOl8Yg+gET4gmK98Tx7pgOTMII3XcdXV4YowVyEogK3w8TA3SwhxSkEBtvDp9 ! 68GaHk6Ru/qG6RtC1zv1dBeRLAGstZCldE37AQyGRcAFCiQPHmglBF+jYTiANPBYaBJkGMMJvDML ! X2Y0VXqcpIFkGDRS03IXiLfYaBhj15hiBKCWwA4VVVJwxAVm3GyF00U+OACZbLBYQ0woSDh3bifa ! exZMEGRRvwf2RlYeqFJRS3UkJ4M6GIDfWxYIgf1qdxM/J/CWAB2r5E+HLdksUYiNHvtZEHjIdR9s ! jeMjxYZ0H/x0DB5IL70Bg5EjSyRmYFAqgUJ+RSBJMBsjDwbRXlzfDbD83gPlLgDvobQKnIkCEMDD ! dzeUxwG4EccCuItAyFE2YON07Qxja9d7OLXVAMB2/cHrjbb9d3YDFSwRe+876Fhbh4Og6CcyIPcI ! lfgjDeogVhQrxQPV5r8EC7UwVpY4cA6LSzxVBNyoEAU2QzzEpHrcEs2L96Smf+VSfVnKpgPFF0ss ! A1vVdo79ogp1fkFEKDvdonMNkXUfczTqmskVtrAr7p8QhFcOciDLR1dWRzAWW6ixfM1e+IR7omDv ! tYLkjIq6YDj1YVooVIlRgiV8pXI1GF5uHHrxH8xZ+YtpoxYu3JxRIDtxMDc4Hap/OHY77lFBHDlz ! CSv1TlVLdRkqzkkxzaabUO6BNrQOHDSX+JIsIIP4PCKLSWKro05BEYulyNu9FFAa1wvWRx1y4lh/ ! g7fYolcwI8rIihzOjTTOeOe4ESyEjsIyTgHT6msicAUEZ7c5BIAfLEC+I2sMnZADu31gXgQ2A8s4 ! VdAF+wd0x4PjDyvDNDFOkWztKw2ryyOkD1vSTDIPIDScRsiRKTEFAQPwZsqUzzvDcytZHNBc2BiD ! +efVlviq/YfXQSaXcgc8rVFbzllO+s9wwXBF2Rzux/VIwYUgFNeUvEkoYP8OvhE793IXi/dFig5G ! iE3/BrFGNPiD6wLrAesnt1bg23EsHzvfdhOLHRwARc4MdvZGT3X2GCgQS575uS3Z6xm/BgQZcEVJ ! YkcU6IFhEnI6OWpXPw5yM/lHyLW/KtTWnBBJBBN0K/Mv1NscPqzwsq078w9N3rmIggctSseLdOzt ! As3ZxWXB6x7ZcwLexuoFejgr+TONFM2awlyCMTbEHPoWU0YIKxTeQerPiT4rZ1YN4dSsklbpc2JW ! pAB7IHRWV8+AXNhsWtuQMvK9dnI/EGb+9badlWqIaAMrQVgvsUG3QIsxQTl3X4lBpnc6eGea/Waf ! jGyN4v8lOIAFPESK3oyMSEzMzFE9fQtb8dYLcofpCy1uXRz7BIUBF3PsmMQMi+Ej200lYM9Qw8w9 ! UFwffKkwSGr/aIhTAHpLfZddZKGhUHQlB9R4KdgYaMuJZei+gI3oFgBqAslg2VzFDsQN3H8G4AB2 ! FNsU/LcNGDvy3Bq+CA0AYRShBAyXGiv6AKPkm0yYHfCt3YIcujfuXAZObaL+zAhhGNhoDKcIcKqB ! ep8n0qEQP/aUZru5JWMMDAmcUAOQ64iWiqBfEPgEMu8CMOQATqEUbn/3N6gwyIA+InU6RgiKBjrD ! dAQ82wPybQ3yEgQgdvLU0G1x12xOpLDB9kXQMxH/vL1V6tTrDisgdtjr9WoKWIqlokWV7mjrGtST ! jR7klDMYaxyB3vBF7FQJiU2Iy8xZEbYXXAou/3WIHyBjsaKRsSQFHAybNsyuvQMELC9NAqzDPbeE ! FZIAL/Rg8AUCsM8FDwAAeV5QlRX//xCabpCmERIIAwcJaZqmaQYKBQsEpmuapgwDDQI/Du3/QZoB ! DyBpbmZsYXRlIDEuAX/37f8zIENvcHlyaWdodA85OTUtBDggTWFyayD33pv9QWRsZXIgS1djb3ve ! e++9g397d2tfaZqm+6cTsxcbHyOmaZqmKzM7Q1OapmmaY3ODo8PjyC5CeAElAQNkSIZkAgMEnWZI ! hgUAcBJmyZZfRy9/mqb73vfzGT8hMUHXnaZpYYHBQIEDpmmaZgECAwQGCJqmaZoMEBggMEAb2Qpr ! YOfXx5KwhCMGp6uQbwkTr7MDCwcEGWQMDfYqg9ZFqqe+A4BUUTaqBvF/+U9DcmVhdGVEaWN0b3J5 ! ICglcyks2P8/kE1hcFZpZXdPZkZpbGUVKyxl794QHXBpbmcXEP/tJ8D6RW5kIBl0dXJucyAlZLCE ! BXNTFxQTeMDAfkluaXQyGDa//UG6HVxTb2Z0d2EgXE1pY3K39rfdb3MNXFc7ZG93c1xDMxdudDr2 ! y/9WZXJzaW9uXFVuc3RhbGw3kHE22Fa4X+KIB4AP3mTZDHhscWQqq+TJyS9QcVBxrf239kxpYlx2 ! wC1wYWNrYWdljrN37y3yREFUQalpcHQRC0NSSbz82/9QVFMASEVBREVSB1BMQVRMSUJVUkVrt7/9 ! VGltOyBSb21hbgtoaQrdwbYLbXruQHdpyCDQ7fbWChcW4CB5b/AgYykKf/vbcHV2ci4gQ2xpeSBO ! ZXh0IMEKha3gFwkudWTM67b31hlLY2VsFRxpHWgVDxisYVNhcFsug4dbobV5FjJwAS5kMpobhLFQ ! DyBMIBYCHWyWEH8gBkNvsu3ZzRGVXEmgUGEUAEPQHO22tShmsw2YEtnG1uJn3HRoKVMdH805U9/6 ! Y2ZXc0dYu33ELqtvLgAbY/CWzSKJHBQQDt2FIWKBbgxWLrj22rSli6hNSWa6VygcX3Y6LK52W9s+ ! mAVMY2gSZzMEecKFRXgqg0BzWnCMtd10dnMsKm9CEAkDCEOdiXeDao3GbfdfTycAEbYL3VZETGcP ! Ui1fUxBwtTFX2MBTK1QjRghfaniubCMLx1AGZ3JhbZg9zbZOAmVDQ2khESYc7pdvYWQE3xp0m3u3 ! AN8lY29Y0HQaX7MBa3hFJTsLLgeIH7ZNynInMCenMTAwAkNXW6xkEiY6JYiT22DXcAAyF/VcKw12 ! 3RhFi1sfmenGyRtPdgZ3ciEgsmHNudnpFiceewiFQxlNtz8AGwut/QpzPwoK/Ab4WRC2/cNFU1NB ! TFdBWQlvLlb6O/YsCnAtTk8sTkVWfys4VvpUQ0FOQ5dcU0vbcKNg50sHZHXreS6XHHFoA/f6XzcN ! QrJ1sCIVUmVt9srvcGdVZXhlIiAtFALfwrHCLfosLmzAIud3rfCQtWIDLgAwND8Q1rCVbpVEQkdV ! dT1bGWitCdtdAj1+Y7VJkyLcHWF5/Ter2JNshmQ7MktleTmwcNt0Cjd1bCBub/pjCu61I7Egax1L ! kr8KuGWT6SPbVG0QOs4hU+xjvyoA2pYwSiP2CnJKeO6/73dZLyVtL4BIOiVNICenZS5lj6P1E0dh ! KWw3Zh5zaEgrtjbJcGGrO/4WZK076dcVZgBuCgCRZxZBmmzWX3Z/D29j8haMYQ/o82J1aXjP1MFf ! iW8bBUMMi8BX3hoAMAc2ayA8XAAjzWeNpgemzYv5YTwMhh1mK8U3qWPGU+xDHH9mdQ8MDdvGF2dH ! b65wkcm+5+roZCYW8zoVgNE+HSMALmIOaxnbCaZhNCEbZMBBomuuoAkMZNEDsDG6aRJyWGQjbMJa ! kgoWH2Pz8SUrkD9Qk2SPZYaQpiITfstW1nsRJw4XE9ZsWUJTbgAC7wi0QW+Uc3UInSRO/BKHCnQv ! fwuJrRa9V20iJxbaWEtQY31lHnugmW7ecm3DGcdtQR0L46lyBGP3pGajQKwYG8vGMb5Xeq4gZB/H ! TwVXr13C1Wo3bG1iZEwJnBFzJL8rcJ+1COWuPHZhbFAOLTsRwaI34yJxkl7tWZVeT2J5SprVglRS ! GJtS0mtbJ2NEF9fGWjvQAuEfQsR+nR4utbkbZWXwYz9OD5vDGOfxct4gPbbsbQ7dCmuXFxFj2LCG ! g3IZxehuC5wGc0fKa3R3bjK4AxFoNVpQaA4u64tkL2Lugp8ehlYmFa3NW29vzZidaCdIGGr2wmbC ! 9yNYeU1vbHM/rXBwTHN/DZCFsWWHYC9jXxhXwITadHlajyym605obHujYAdQA0S5N2uaMCAIG+e1 ! X8lydE5ifCkLZnDfDLpm9WWeZ3MRh2E4WjdpYS0xljW0YSGfcm0vW8KRHXAbbg/oC1ihLX5dxwOG ! zTZHqQkv4h2aaBmJSwVgZAHXNGdHUAAHEFRzH2yQk01SHwBwMEBkkKYbwB9QCmAFoQYZIKDwMsgg ! gz+AQODIIIMNBh9YGMggTTeQf1M7eEjTDDI40FERIIMMMmgosIMMMsgIiEjwDDbIIARUBxQMMljT ! VeN/K3QyyCCDNMgNyCCDDGQkqCCDDDIEhEQZbLLJ6J9cHxwZpGkGmFRTfBuEQQY82J8X/2SQQQZs ! LLiQQQYZDIxMQQYZZPgDUgYZZJASoyNyGWSQQTLEC2SQQQZiIqSQQQYZAoJCQQYZZOQHWgYZZJAa ! lEN6GWSQQTrUE2SQQQZqKrSQQQYZCopKQQYZZPQFVkEGaZoWwAAzBhlkkHY2zA8ZZJBBZiasZJBB ! BgaGRpBBBhnsCV5BBhlkHpxjBhlkkH4+3BsbZJDBH24uvA9kkMEGDh+OTgZhSBr8/1H/EUGGpEGD ! /3FBhmSQMcJhBhlkkCGiAYGGZJBBQeJZhmSQQRmSeYZkkEE50mkZZJBBKbIJZJBBBolJ8ja9QYZV ! FRf/AgEGGeRCdTXKBhlkSGUlqhlkkEEFhUUZZEgG6l0dGWRIBpp9PRlkSAbabS1kkEEGug2NZEgG ! GU36U2RIBhkTw3NkSAYZM8ZjkEEGGSOmA0gGGWSDQ+ZIBhlkWxuWSAYZZHs71kEGGWRrK7YGGWSQ ! C4tL9ggZZEhXF0gGGWR3N85BBhlkZyeuBhlkkAeHR+4GGWRIXx+eBhlkSH8/3gYZZEhvL77IYJNN ! n48fTyVDJTH+/8GSg8QMoeEoGUqGkdGhkqFksfEZSoaSyanpkqFkKJnZKhlKhrn5oWQoGcWlGUqG ! kuWV1ZKhZCi19UqGkqHNraFkKBntnRlKhpLdvf1kKBkqw6NKhpKh45OhZCgZ07OGkqGS88urZCgZ ! SuubSoaSodu7KBkqGfvHhpKhZKfnl2QoGUrXt5KhkqH3zygZSoav74aSoWSf37876RtK/38Fn1cH ! 7mm6x+8PEVsQ3zTL03QPBVkEVUE93dnTXUA/Aw9YAp17ms6vDyFcIJ8PCTTN8jRaCFaBwIMMcvZg ! fwKBGXLIySEYBwaHnBxyYWAEA8jJIScxMA2HWHJyDMGvQDfCUA/dZHkbtYy46GljWgJyqd5EpWXV ! 1HN1YnN2YtkKe2JlZCdLjSwWEnYeRxCXIoEjYXR54Urxks0UGx6WLRsYo7MoX8pS9j1jHwMBNE3T ! NAMHDx8/0zRP03//AQMHU9E0TQ8fP3/VKkoeiF0BRBBhgwMOCCJZKIinoGluLEsEclvJJ0WgCQAA ! 5y6Xy+UA3gDWAL0AhABC5XK5XAA5ADEAKQAYJ7+VywAQAAg/3v8ApWPuCMoWZAA3gblZ4e9eBgAF ! uoRN2f8X/zcP/pUFzM0GCAUX9iaTvQ837wYAfGXLUhc3/7a/M+fa7QampggMDgs+sHdhF6YGN/tS ! W72xu/9K+lJBQloFWVJaC1sXA3svtifvCxEGN263iOf2ICalABWvBRQQkd1WcdjGF/7umw/svSYF ! Bjf6QEr7UbCva7cxUTFaBQBaC1oXtYUdG1oFEEpvYL9ua826dQVUFW4UBWV1G4s194amEBY3Fwsd ! Fm/u7bkhEdldA0dARgFONtZtBRHNWG/6C/lAmHvdyG+6FV15ATczuDcAEuhGCx15kA8wb0ExWEhS ! WH3mmjsQBYUNC0r6UZFP/pTfFGVkECUQFqamWDdzv2R1FZUXCwoAb2aHHQZDdUgLRvYN2RcxBTFv ! YJ5giIKzFaY3rBDMzwtZFwXOeAzZFN/7CiNawxwzdwMLOhecERJ2BUJXT3r+uMO6YZMIvwu2BdQR ! smWfb/D8b9hLsnL+DQMGpIUdZgTJbxGy2QuWBwUDdzNC9l4L9zf5soW9YQcF5w+zYRdS7+5JB94s ! IXwF9lcP+7P33sI3udkHBdmbJYT6xw8hb2avxQj5agcFW8YwzgMVQ5tvuyzYAFVvRwVTypYxm2+B ! ks1Mp/IBa2kYF5j7dRbnbxETbNKwpuxabwVvLWsI+UdRMQBb9npJmm91bwNvsm2MEfNZAltvFtjD ! tBeb370C2PfNcibfDcImfIFvSfz5PQNCIjlZb1r6t032Hi8J+2mH9toGKZDf61LXEbSylPG/Lzd1 ! oM6Y8YcVgGllK6NVnzfxSM6dMfNaCwwPOq0kAm9mFlJ7SesLDPdLBiv7C/434gmiLEbYC4dRQ4AG ! AVEL+ow2F8BICXsBsn0b0UYUU3R3cLruIFFIAU0TIANhRtS9jj1zCSFy+aXohdFmNlB9lU9ANKj3 ! yUv/3ec2qILbaCUxVwd665pucz81ZA13bAEgBxs7c59RdBkPJS1vFZpuc5sFeQeFcgljbdd1n+uP ! dSl5LhNDL2kZmc11XWsLThV4Gyl077nPnS9uC111G1FHfcm6sUPBYxFsKzlpkC17gztoK/+33HRP ! 2C7sBAiw7x+DAP24bJeNgRwCAw5QBh1e0GY/U6PDD0x3Ya0DfQACQ6NTwpsZZyMUnwUvyUQgHyeH ! Q/e6bANj/095Azth0k0JmWEZaTc/YV03f3M5OmCACIFQv7BAbVBBtf3vk3mykRPvngBCdqybwr6D ! SWdECXKdF0L2EL95bYMDAUJGbpqhKWQA/oPCQSElB/Zn6ZjIWKtigWcjhbCkbnv33mlI7kltG0mL ! xma6y01yP3YFd/V9sc9NY1UlZ1sJeYmEJSNjZu9i3XsP53QPQw0sUyPpucvRQi0JlSukBUhtYabZ ! MA9LgE/269fQfbhtfQ1sB1+XcvN9VN1IZ3MBMyNQR1bFkBUxEwIiw9x0U4kIAOyDE2Uc2WM6XwMs ! IURIx3VGM8IlV0avaWhlIbBON3XVdPkMkLWSd9spSWCV0IJn4W6MB16N42R3dRdqnxuEY3lmDTV5 ! jRYgiCRaAFxOUFHEAFRQYlfFEjhHQWl2XRFbgy4Gb7VJkYDa7W50QRZEZQnL24r4dwxSZXN1bWVU ! aMZkMRbFbWRTbwJ0ecq7SUAvQ3xDY2XsfPtgEk1vZHVESGFuZGjhIlWsIRlFCchVoz9iATkHqA1F ! ihewwUhBSYx0oniO55AJ8c2GBa0lH1PLts9BjwxUIXAwdA6gYRGYDUYoXDNRZFVf27WPlYaAY2Fs ! Rkw6bHOVYv9mWzVuMoRBZGRy0QgDC/YfpfEV9oYwCwobEpMDIcg8VGltSC2K1mJA/0og2rGNiklp ! QSxMYXywCRGADwTgJF9oD0F0nyp1dGVzkRAUhKSV2N2EvxNsb3OBclVubYNlP7ddRBxEMp9Ub6lx ! gBjYR4m0VMweGhlzZ2JzM2IvzEV4QRAlEA7OHhUDABBRvWGx1gi8DzGRYsJc7DAM8xxPVAxYi85d ! RTjNNitSDobeJAxfaMkeKz15U2hlppouYRPFEzLrMAR3w3ZmbEZPYmoFqO/wFtACQ29saAqTMFvG ! T3XxJU1vofAQTgyNSULWQjus45hCQmuUZRpTTMZptn9pZEJydXNodvXcNB3fCo1V2wdfc25w6XSX ! 7e5wClxuY3D8X3YUXzfXNX4VaWOdCmNwxmxmR/hSewuZAXB0X2i+cjMUDVtzESl4X9xfL/bmXucP ! CV9mbYcL1jaCdT1tDYZqjCtbsAbQZq83DmWaKxQe9BvWEXnNFZ7bynQQHDzVELbmHhW1OYhubrTO ! BdQIoA5YrjC9mHt3K5ETK8wNVqhscl82C9zvzQ525M0IY2g3c+8VKi70B4ggO80mB2F0B3MPGL/T ! Nyhmig1mdJHOhr3ZbXERWFlmUXLuEENmxL1Jx641wUFRMShmY24Ue1W4B2o4Z7OztE5s8GxbBXOE ! X+NhSHFzFfdwY2OpbJgdaXMJYW1i9MOstVsGYXgNoZPn9oXIDWWkUadEbGdJZzJtWtZtWUtEQ/wW ! iwDkrfwSCrPZi3FSaCE1QkF6sGU7CUJveP6CCchtbnXj8TSiW5e1/ihUk25zUutmBj0Sq0VHFF2x ! Z7nQZ3lzkzhjMXMEdT9C9x2F02vW82aL6UJ3gEDhsmtXUDskCN0p2VOoMxB3NAIH2iydUQ3MNMlg ! YBpGxPz14AQXJ7BVcGQcgN7Mch2MRZpNOiBGGP5OoFkrxAgOuEVi9gXaA0wwjAmWOxEU5b6jjw8B ! CwEGHOisqJNAbFvEYGLRezE5CwOfBJpsyQcX0JY6YNnZDBAHshCQpflLlGQAAIywEq+w3QqnDAIe ! LnT2BfsMbItNkOsQRbGANhcgLnL9XLaE2bQOUwMCQO80u9cuJjzoMnAH2OM2ZSfAT3Ny3esqVva9 ! 8yeQTwDKCLtULGcYxgAAAAAAAAAJ/wAAYL4AsEAAjb4AYP//V4PN/+sQkJCQkJCQigZGiAdHAdt1 ! B4seg+78Edty7bgBAAAAAdt1B4seg+78EdsRwAHbc+91CYseg+78Edtz5DHJg+gDcg3B4AiKBkaD ! 8P90dInFAdt1B4seg+78EdsRyQHbdQeLHoPu/BHbEcl1IEEB23UHix6D7vwR2xHJAdtz73UJix6D ! 7vwR23Pkg8ECgf0A8///g9EBjRQvg/38dg+KAkKIB0dJdffpY////5CLAoPCBIkHg8cEg+kEd/EB ! z+lM////Xon3ubQAAACKB0cs6DwBd/eAPwF18osHil8EZsHoCMHAEIbEKfiA6+gB8IkHg8cFidji ! 2Y2+AMAAAIsHCcB0PItfBI2EMDDhAAAB81CDxwj/lrzhAACVigdHCMB03In5V0jyrlX/lsDhAAAJ ! wHQHiQODwwTr4f+WxOEAAGHpGGz//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA From gvanrossum@users.sourceforge.net Wed Sep 5 14:37:50 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Wed, 05 Sep 2001 06:37:50 -0700 Subject: [Python-checkins] CVS: python/dist/src/Python bltinmodule.c,2.234,2.235 Message-ID: Update of /cvsroot/python/python/dist/src/Python In directory usw-pr-cvs1:/tmp/cvs-serv26905 Modified Files: bltinmodule.c Log Message: builtin_execfile(): initialize another local that the GCC on leroy found it necessary to warn about. Index: bltinmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Python/bltinmodule.c,v retrieving revision 2.234 retrieving revision 2.235 diff -C2 -d -r2.234 -r2.235 *** bltinmodule.c 2001/09/04 22:08:56 2.234 --- bltinmodule.c 2001/09/05 13:37:47 2.235 *************** *** 534,538 **** PyObject *globals = Py_None, *locals = Py_None; PyObject *res; ! FILE* fp; PyCompilerFlags cf; int exists; --- 534,538 ---- PyObject *globals = Py_None, *locals = Py_None; PyObject *res; ! FILE* fp = NULL; PyCompilerFlags cf; int exists; From loewis@users.sourceforge.net Wed Sep 5 14:44:56 2001 From: loewis@users.sourceforge.net (Martin v. L?wis) Date: Wed, 05 Sep 2001 06:44:56 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib threading.py,1.17,1.18 Message-ID: Update of /cvsroot/python/python/dist/src/Lib In directory usw-pr-cvs1:/tmp/cvs-serv28325/Lib Modified Files: threading.py Log Message: Patch #428326: New class threading.Timer. Index: threading.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/threading.py,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** threading.py 2001/08/20 20:27:58 1.17 --- threading.py 2001/09/05 13:44:54 1.18 *************** *** 332,336 **** self.__cond.release() - # Helper to generate new thread names _counter = 0 --- 332,335 ---- *************** *** 484,487 **** --- 483,516 ---- self.__daemonic = daemonic + # The timer class was contributed by Itamar Shtull-Trauring + + def Timer(*args, **kwargs): + return _Timer(*args, **kwargs) + + class _Timer(Thread): + """Call a function after a specified number of seconds: + + t = Timer(30.0, f, args=[], kwargs={}) + t.start() + t.cancel() # stop the timer's action if it's still waiting + """ + + def __init__(self, interval, function, args=[], kwargs={}): + Thread.__init__(self) + self.interval = interval + self.function = function + self.args = args + self.kwargs = kwargs + self.finished = Event() + + def cancel(self): + """Stop the timer if it hasn't finished yet""" + self.finished.set() + + def run(self): + self.finished.wait(self.interval) + if not self.finished.isSet(): + self.function(*self.args, **self.kwargs) + self.finished.set() # Special thread class to represent the main thread From loewis@users.sourceforge.net Wed Sep 5 14:44:56 2001 From: loewis@users.sourceforge.net (Martin v. L?wis) Date: Wed, 05 Sep 2001 06:44:56 -0700 Subject: [Python-checkins] CVS: python/dist/src/Misc NEWS,1.229,1.230 Message-ID: Update of /cvsroot/python/python/dist/src/Misc In directory usw-pr-cvs1:/tmp/cvs-serv28325/Misc Modified Files: NEWS Log Message: Patch #428326: New class threading.Timer. Index: NEWS =================================================================== RCS file: /cvsroot/python/python/dist/src/Misc/NEWS,v retrieving revision 1.229 retrieving revision 1.230 diff -C2 -d -r1.229 -r1.230 *** NEWS 2001/09/05 00:53:45 1.229 --- NEWS 2001/09/05 13:44:54 1.230 *************** *** 82,85 **** --- 82,88 ---- Library + - Asynchronous timeout actions are available through the new class + threading.Timer. + - math.log and math.log10 now return sensible results for even huge long arguments. For example, math.log10(10 ** 10000) ~= 10000.0. From loewis@users.sourceforge.net Wed Sep 5 14:44:56 2001 From: loewis@users.sourceforge.net (Martin v. L?wis) Date: Wed, 05 Sep 2001 06:44:56 -0700 Subject: [Python-checkins] CVS: python/dist/src/Doc/lib libthreading.tex,1.10,1.11 Message-ID: Update of /cvsroot/python/python/dist/src/Doc/lib In directory usw-pr-cvs1:/tmp/cvs-serv28325/Doc/lib Modified Files: libthreading.tex Log Message: Patch #428326: New class threading.Timer. Index: libthreading.tex =================================================================== RCS file: /cvsroot/python/python/dist/src/Doc/lib/libthreading.tex,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** libthreading.tex 2001/08/20 18:49:00 1.10 --- libthreading.tex 2001/09/05 13:44:54 1.11 *************** *** 83,86 **** --- 83,90 ---- \end{classdesc*} + \begin{classdesc*}{Timer}{} + A thread that executes a function after a specified interval has passed. + \end{classdesc*} + Detailed interfaces for the objects are documented below. *************** *** 595,597 **** --- 599,633 ---- The entire Python program exits when no active non-daemon threads are left. + \end{methoddesc} + + + \subsection{Timer Objects \label{timer-objects}} + + This class represents an action that should be run only after a certain amount + of time has passed --- a timer. \class{Timer} is a subclass of \class{Thread} and + as such also functions as an example of creating custom threads. + + Timers are started, as with threads, by calling their \method{start()} method. The + timer can be stopped (before its action has begun) by calling the + \method{cancel()} method. The interval the timer will wait before executing + its action may not be exactly the same as the interval specified by the + user. + + For example: + \begin{verbatim} + def hello(): + print "hello, world" + + t = Timer(30.0, hello) + t.start() # after 30 seconds, "hello, world" will be printed + \end{verbatim} + + \begin{classdesc}{Timer}{interval, function, args=[], kwargs=\{\}} + Create a timer that will run \var{function} with arguments \var{args} and + keyword arguments \var{kwargs}, after \var{interval} seconds have passed. + \end{classdesc} + + \begin{methoddesc}{cancel}{} + Stop the timer, and cancel the execution of the timer's action. This will only + work if the timer is still in its waiting stage. \end{methoddesc} From loewis@users.sourceforge.net Wed Sep 5 15:24:46 2001 From: loewis@users.sourceforge.net (Martin v. L?wis) Date: Wed, 05 Sep 2001 07:24:46 -0700 Subject: [Python-checkins] CVS: python/dist/src/Python dynload_shlib.c,2.9,2.10 Message-ID: Update of /cvsroot/python/python/dist/src/Python In directory usw-pr-cvs1:/tmp/cvs-serv7073/Python Modified Files: dynload_shlib.c Log Message: Patch #455231: Support ELF properly on OpenBSD. Index: dynload_shlib.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Python/dynload_shlib.c,v retrieving revision 2.9 retrieving revision 2.10 diff -C2 -d -r2.9 -r2.10 *** dynload_shlib.c 2001/07/18 16:17:16 2.9 --- dynload_shlib.c 2001/09/05 14:24:43 2.10 *************** *** 17,21 **** #endif ! #ifdef __OpenBSD__ #define LEAD_UNDERSCORE "_" #else --- 17,21 ---- #endif ! #if defined(__OpenBSD__) && !defined(__ELF__) #define LEAD_UNDERSCORE "_" #else From loewis@users.sourceforge.net Wed Sep 5 15:24:46 2001 From: loewis@users.sourceforge.net (Martin v. L?wis) Date: Wed, 05 Sep 2001 07:24:46 -0700 Subject: [Python-checkins] CVS: python/dist/src configure,1.243,1.244 configure.in,1.251,1.252 Message-ID: Update of /cvsroot/python/python/dist/src In directory usw-pr-cvs1:/tmp/cvs-serv7073 Modified Files: configure configure.in Log Message: Patch #455231: Support ELF properly on OpenBSD. Index: configure =================================================================== RCS file: /cvsroot/python/python/dist/src/configure,v retrieving revision 1.243 retrieving revision 1.244 diff -C2 -d -r1.243 -r1.244 *** configure 2001/09/05 08:36:52 1.243 --- configure 2001/09/05 14:24:42 1.244 *************** *** 1,5 **** #! /bin/sh ! # From configure.in Revision: 1.250 # Guess values for system-dependent variables and create Makefiles. --- 1,5 ---- #! /bin/sh ! # From configure.in Revision: 1.251 [...2948 lines suppressed...] if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < *************** *** 7093,7097 **** SRCDIRS="Parser Grammar Objects Python Modules" echo $ac_n "checking for build directories""... $ac_c" 1>&6 ! echo "configure:7096: checking for build directories" >&5 for dir in $SRCDIRS; do if test ! -d $dir; then --- 7084,7088 ---- SRCDIRS="Parser Grammar Objects Python Modules" echo $ac_n "checking for build directories""... $ac_c" 1>&6 ! echo "configure:7087: checking for build directories" >&5 for dir in $SRCDIRS; do if test ! -d $dir; then Index: configure.in =================================================================== RCS file: /cvsroot/python/python/dist/src/configure.in,v retrieving revision 1.251 retrieving revision 1.252 diff -C2 -d -r1.251 -r1.252 *** configure.in 2001/09/05 08:36:51 1.251 --- configure.in 2001/09/05 14:24:43 1.252 *************** *** 674,686 **** dgux*) LDSHARED="ld -G";; BSD/OS*/4*) LDSHARED="gcc -shared";; ! OpenBSD*) LDSHARED="ld -Bshareable";; ! NetBSD*) ! if [[ "`$CC -dM -E - Update of /cvsroot/python/python/dist/src/Lib/test In directory usw-pr-cvs1:/tmp/cvs-serv10946 Modified Files: regrtest.py Log Message: Patch #453627: Adds a list of tests that are expected to be skipped for UnixWare 7.x systems. Index: regrtest.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/regrtest.py,v retrieving revision 1.45 retrieving revision 1.46 diff -C2 -d -r1.45 -r1.46 *** regrtest.py 2001/09/02 03:58:41 1.45 --- regrtest.py 2001/09/05 14:38:48 1.46 *************** *** 549,552 **** --- 549,576 ---- test_winsound """, + 'unixware5': + """ + test_al + test_bsddb + test_cd + test_cl + test_dl + test_gl + test_imgfile + test_largefile + test_linuxaudiodev + test_minidom + test_nis + test_ntpath + test_openpty + test_pyexpat + test_sax + test_socketserver + test_sunaudiodev + test_sundry + test_unicode_file + test_winreg + test_winsound + """, } From loewis@users.sourceforge.net Wed Sep 5 15:45:56 2001 From: loewis@users.sourceforge.net (Martin v. L?wis) Date: Wed, 05 Sep 2001 07:45:56 -0700 Subject: [Python-checkins] CVS: python/dist/src pyconfig.h.in,1.5,1.6 Message-ID: Update of /cvsroot/python/python/dist/src In directory usw-pr-cvs1:/tmp/cvs-serv12367 Modified Files: pyconfig.h.in Log Message: Patch #453627: Define the following macros when compiling on a UnixWare 7.x system: SCO_ATAN2_BUG, SCO_ACCEPT_BUG, and STRICT_SYSV_CURSES. Work aroudn a bug in the SCO UnixWare atan2() implementation. Index: pyconfig.h.in =================================================================== RCS file: /cvsroot/python/python/dist/src/pyconfig.h.in,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** pyconfig.h.in 2001/08/15 17:14:33 1.5 --- pyconfig.h.in 2001/09/05 14:45:54 1.6 *************** *** 717,718 **** --- 717,725 ---- #endif #endif + + /* Define the macros needed if on a UnixWare 7.x system. */ + #if defined(__USLC__) && defined(__SCO_VERSION__) + #define SCO_ACCEPT_BUG /* Use workaround for UnixWare accept() bug */ + #define SCO_ATAN2_BUG /* Use workaround for UnixWare atan2() bug */ + #define STRICT_SYSV_CURSES /* Don't use ncurses extensions */ + #endif From loewis@users.sourceforge.net Wed Sep 5 15:45:56 2001 From: loewis@users.sourceforge.net (Martin v. L?wis) Date: Wed, 05 Sep 2001 07:45:56 -0700 Subject: [Python-checkins] CVS: python/dist/src/Modules cmathmodule.c,2.24,2.25 mathmodule.c,2.63,2.64 Message-ID: Update of /cvsroot/python/python/dist/src/Modules In directory usw-pr-cvs1:/tmp/cvs-serv12367/Modules Modified Files: cmathmodule.c mathmodule.c Log Message: Patch #453627: Define the following macros when compiling on a UnixWare 7.x system: SCO_ATAN2_BUG, SCO_ACCEPT_BUG, and STRICT_SYSV_CURSES. Work aroudn a bug in the SCO UnixWare atan2() implementation. Index: cmathmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Modules/cmathmodule.c,v retrieving revision 2.24 retrieving revision 2.25 diff -C2 -d -r2.24 -r2.25 *** cmathmodule.c 2001/02/22 19:51:56 2.24 --- cmathmodule.c 2001/09/05 14:45:54 2.25 *************** *** 22,25 **** --- 22,41 ---- #endif + #ifdef SCO_ATAN2_BUG + /* + * UnixWare 7+ is known to have a bug in atan2 that will return PI instead + * of ZERO (0) if the first argument is ZERO(0). + */ + static double atan2_sco(double x, double y) + { + if (x == 0.0) + return (double)0.0; + return atan2(x, y); + } + #define ATAN2 atan2_sco + #else + #define ATAN2 atan2 + #endif + /* First, the C functions that do the real work */ *************** *** 173,177 **** Py_complex r; double l = hypot(x.real,x.imag); ! r.imag = atan2(x.imag, x.real); r.real = log(l); return r; --- 189,193 ---- Py_complex r; double l = hypot(x.real,x.imag); ! r.imag = ATAN2(x.imag, x.real); r.real = log(l); return r; *************** *** 189,193 **** Py_complex r; double l = hypot(x.real,x.imag); ! r.imag = atan2(x.imag, x.real)/log(10.); r.real = log10(l); return r; --- 205,209 ---- Py_complex r; double l = hypot(x.real,x.imag); ! r.imag = ATAN2(x.imag, x.real)/log(10.); r.real = log10(l); return r; Index: mathmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Modules/mathmodule.c,v retrieving revision 2.63 retrieving revision 2.64 diff -C2 -d -r2.63 -r2.64 *** mathmodule.c 2001/09/05 04:33:11 2.63 --- mathmodule.c 2001/09/05 14:45:54 2.64 *************** *** 32,35 **** --- 32,51 ---- #endif + #ifdef SCO_ATAN2_BUG + /* + * UnixWare 7+ is known to have a bug in atan2 that will return PI instead + * of ZERO (0) if the first argument is ZERO(0). + */ + static double atan2_sco(double x, double y) + { + if (x == 0.0) + return (double)0.0; + return atan2(x, y); + } + #define ATAN2 atan2_sco + #else + #define ATAN2 atan2 + #endif + /* Call is_error when errno != 0, and where x is the result libm * returned. is_error will usually set up an exception and return *************** *** 116,120 **** FUNC1(atan, atan, "atan(x)\n\nReturn the arc tangent (measured in radians) of x.") ! FUNC2(atan2, atan2, "atan2(y, x)\n\nReturn the arc tangent (measured in radians) of y/x.\n" "Unlike atan(y/x), the signs of both x and y are considered.") --- 132,136 ---- FUNC1(atan, atan, "atan(x)\n\nReturn the arc tangent (measured in radians) of x.") ! FUNC2(atan2, ATAN2, "atan2(y, x)\n\nReturn the arc tangent (measured in radians) of y/x.\n" "Unlike atan(y/x), the signs of both x and y are considered.") From loewis@users.sourceforge.net Wed Sep 5 15:45:56 2001 From: loewis@users.sourceforge.net (Martin v. L?wis) Date: Wed, 05 Sep 2001 07:45:56 -0700 Subject: [Python-checkins] CVS: python/dist/src/Objects complexobject.c,2.42,2.43 Message-ID: Update of /cvsroot/python/python/dist/src/Objects In directory usw-pr-cvs1:/tmp/cvs-serv12367/Objects Modified Files: complexobject.c Log Message: Patch #453627: Define the following macros when compiling on a UnixWare 7.x system: SCO_ATAN2_BUG, SCO_ACCEPT_BUG, and STRICT_SYSV_CURSES. Work aroudn a bug in the SCO UnixWare atan2() implementation. Index: complexobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/complexobject.c,v retrieving revision 2.42 retrieving revision 2.43 diff -C2 -d -r2.42 -r2.43 *** complexobject.c 2001/09/04 05:14:19 2.42 --- complexobject.c 2001/09/05 14:45:54 2.43 *************** *** 27,30 **** --- 27,46 ---- #define PREC_STR 12 + #ifdef SCO_ATAN2_BUG + /* + * UnixWare 7+ is known to have a bug in atan2 that will return PI instead + * of ZERO (0) if the first argument is ZERO(0). + */ + static double atan2_sco(double x, double y) + { + if (x == 0.0) + return (double)0.0; + return atan2(x, y); + } + #define ATAN2 atan2_sco + #else + #define ATAN2 atan2 + #endif + /* elementary operations on complex numbers */ *************** *** 139,143 **** vabs = hypot(a.real,a.imag); len = pow(vabs,b.real); ! at = atan2(a.imag, a.real); phase = at*b.real; if (b.imag != 0.0) { --- 155,159 ---- vabs = hypot(a.real,a.imag); len = pow(vabs,b.real); ! at = ATAN2(a.imag, a.real); phase = at*b.real; if (b.imag != 0.0) { From gvanrossum@users.sourceforge.net Wed Sep 5 15:58:13 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Wed, 05 Sep 2001 07:58:13 -0700 Subject: [Python-checkins] CVS: python/dist/src/Objects fileobject.c,2.119,2.120 Message-ID: Update of /cvsroot/python/python/dist/src/Objects In directory usw-pr-cvs1:/tmp/cvs-serv15594/Objects Modified Files: fileobject.c Log Message: Changes to automatically enable large file support on some systems. I believe this works on Linux (tested both on a system with large file support and one without it), and it may work on Solaris 2.7. The changes are twofold: (1) The configure script now boldly tries to set the two symbols that are recommended (for Solaris and Linux), and then tries a test script that does some simple seeking without writing. (2) The _portable_{fseek,ftell} functions are a little more systematic in how they try the different large file support options: first try fseeko/ftello, but only if off_t is large; then try fseek64/ftell64; then try hacking with fgetpos/fsetpos. I'm keeping my fingers crossed. The meaning of the HAVE_LARGEFILE_SUPPORT macro is not at all clear. I'll see if I can get it to work on Windows as well. Index: fileobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/fileobject.c,v retrieving revision 2.119 retrieving revision 2.120 diff -C2 -d -r2.119 -r2.120 *** fileobject.c 2001/08/24 18:34:26 2.119 --- fileobject.c 2001/09/05 14:58:11 2.120 *************** *** 209,217 **** ! /* An 8-byte off_t-like type */ ! #if defined(HAVE_LARGEFILE_SUPPORT) && SIZEOF_OFF_T < 8 && SIZEOF_FPOS_T >= 8 typedef fpos_t Py_off_t; #else ! typedef off_t Py_off_t; #endif --- 209,221 ---- ! /* Our very own off_t-like type, 64-bit if possible */ ! #if !defined(HAVE_LARGEFILE_SUPPORT) ! typedef off_t Py_off_t; ! #elif SIZEOF_OFF_T >= 8 ! typedef off_t Py_off_t; ! #elif SIZEOF_FPOS_T >= 8 typedef fpos_t Py_off_t; #else ! #error "Large file support, but neither off_t nor fpos_t is large enough." #endif *************** *** 222,226 **** _portable_fseek(FILE *fp, Py_off_t offset, int whence) { ! #if defined(HAVE_FSEEKO) return fseeko(fp, offset, whence); #elif defined(HAVE_FSEEK64) --- 226,232 ---- _portable_fseek(FILE *fp, Py_off_t offset, int whence) { ! #if !defined(HAVE_LARGEFILE_SUPPORT) ! return fseek(fp, offset, whence); ! #elif defined(HAVE_FSEEKO) && SIZEOF_OFF_T >= 8 return fseeko(fp, offset, whence); #elif defined(HAVE_FSEEK64) *************** *** 228,232 **** #elif defined(__BEOS__) return _fseek(fp, offset, whence); ! #elif defined(HAVE_LARGEFILE_SUPPORT) && SIZEOF_FPOS_T >= 8 /* lacking a 64-bit capable fseek(), use a 64-bit capable fsetpos() and fgetpos() to implement fseek()*/ --- 234,238 ---- #elif defined(__BEOS__) return _fseek(fp, offset, whence); ! #elif SIZEOF_FPOS_T >= 8 /* lacking a 64-bit capable fseek(), use a 64-bit capable fsetpos() and fgetpos() to implement fseek()*/ *************** *** 246,250 **** return fsetpos(fp, &offset); #else ! return fseek(fp, offset, whence); #endif } --- 252,256 ---- return fsetpos(fp, &offset); #else ! #error "Large file support, but no way to fseek." #endif } *************** *** 257,271 **** _portable_ftell(FILE* fp) { ! #if SIZEOF_FPOS_T >= 8 && defined(HAVE_LARGEFILE_SUPPORT) fpos_t pos; if (fgetpos(fp, &pos) != 0) return -1; return pos; - #elif defined(HAVE_FTELLO) && defined(HAVE_LARGEFILE_SUPPORT) - return ftello(fp); - #elif defined(HAVE_FTELL64) && defined(HAVE_LARGEFILE_SUPPORT) - return ftell64(fp); #else ! return ftell(fp); #endif } --- 263,279 ---- _portable_ftell(FILE* fp) { ! #if !defined(HAVE_LARGEFILE_SUPPORT) ! return ftell(fp); ! #elif defined(HAVE_FTELLO) && SIZEOF_OFF_T >= 8 ! return ftello(fp); ! #elif defined(HAVE_FTELL64) ! return ftell64(fp); ! #elif SIZEOF_FPOS_T >= 8 fpos_t pos; if (fgetpos(fp, &pos) != 0) return -1; return pos; #else ! #error "Large file support, but no way to ftell." #endif } From gvanrossum@users.sourceforge.net Wed Sep 5 15:58:13 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Wed, 05 Sep 2001 07:58:13 -0700 Subject: [Python-checkins] CVS: python/dist/src acconfig.h,1.51,1.52 configure,1.244,1.245 configure.in,1.252,1.253 pyconfig.h.in,1.6,1.7 Message-ID: Update of /cvsroot/python/python/dist/src In directory usw-pr-cvs1:/tmp/cvs-serv15594 Modified Files: acconfig.h configure configure.in pyconfig.h.in Log Message: Changes to automatically enable large file support on some systems. I believe this works on Linux (tested both on a system with large file support and one without it), and it may work on Solaris 2.7. The changes are twofold: (1) The configure script now boldly tries to set the two symbols that are recommended (for Solaris and Linux), and then tries a test script that does some simple seeking without writing. (2) The _portable_{fseek,ftell} functions are a little more systematic in how they try the different large file support options: first try fseeko/ftello, but only if off_t is large; then try fseek64/ftell64; then try hacking with fgetpos/fsetpos. I'm keeping my fingers crossed. The meaning of the HAVE_LARGEFILE_SUPPORT macro is not at all clear. I'll see if I can get it to work on Windows as well. Index: acconfig.h =================================================================== RCS file: /cvsroot/python/python/dist/src/acconfig.h,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -d -r1.51 -r1.52 *** acconfig.h 2001/07/11 22:35:31 1.51 --- acconfig.h 2001/09/05 14:58:11 1.52 *************** *** 26,29 **** --- 26,32 ---- #undef __EXTENSIONS__ + /* This must be set to 64 on some systems to enable large file support */ + #undef _FILE_OFFSET_BITS + /* Define if getpgrp() must be called as getpgrp(0). */ #undef GETPGRP_HAVE_ARG *************** *** 107,110 **** --- 110,116 ---- /* Define if the compiler provides a wchar.h header file. */ #undef HAVE_WCHAR_H + + /* This must be defined on some systems to enable large file support */ + #undef _LARGEFILE_SOURCE /* Define if you want to have a Unicode type. */ Index: configure =================================================================== RCS file: /cvsroot/python/python/dist/src/configure,v retrieving revision 1.244 retrieving revision 1.245 diff -C2 -d -r1.244 -r1.245 *** configure 2001/09/05 14:24:42 1.244 --- configure 2001/09/05 14:58:11 1.245 *************** *** 1,5 **** #! /bin/sh ! # From configure.in Revision: 1.251 # Guess values for system-dependent variables and create Makefiles. --- 1,5 ---- #! /bin/sh ! # From configure.in Revision: 1.253 [...4238 lines suppressed...] if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < *************** *** 7084,7088 **** SRCDIRS="Parser Grammar Objects Python Modules" echo $ac_n "checking for build directories""... $ac_c" 1>&6 ! echo "configure:7087: checking for build directories" >&5 for dir in $SRCDIRS; do if test ! -d $dir; then --- 7150,7154 ---- SRCDIRS="Parser Grammar Objects Python Modules" echo $ac_n "checking for build directories""... $ac_c" 1>&6 ! echo "configure:7153: checking for build directories" >&5 for dir in $SRCDIRS; do if test ! -d $dir; then Index: configure.in =================================================================== RCS file: /cvsroot/python/python/dist/src/configure.in,v retrieving revision 1.252 retrieving revision 1.253 diff -C2 -d -r1.252 -r1.253 *** configure.in 2001/09/05 14:24:43 1.252 --- configure.in 2001/09/05 14:58:11 1.253 *************** *** 274,282 **** esac ! # MacOSX framework builds need more magic. LDLIBRARY is the dynamic library that ! # we build, but we do not want to link against it (we will find it with a -framework ! # option). For this reason there is an extra variable BLDLIBRARY against which Python ! # and the extension modules are linked, BLDLIBRARY. This is normally the same ! # as LDLIBRARY, but empty for MacOSX framework builds. if test "$enable_framework" then --- 274,283 ---- esac ! # MacOSX framework builds need more magic. LDLIBRARY is the dynamic ! # library that we build, but we do not want to link against it (we ! # will find it with a -framework option). For this reason there is an ! # extra variable BLDLIBRARY against which Python and the extension ! # modules are linked, BLDLIBRARY. This is normally the same as ! # LDLIBRARY, but empty for MacOSX framework builds. if test "$enable_framework" then *************** *** 1019,1023 **** if test "$ipv6" = "yes"; then AC_MSG_CHECKING([ipv6 stack type]) ! for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta; do case $i in inria) --- 1020,1025 ---- if test "$ipv6" = "yes"; then AC_MSG_CHECKING([ipv6 stack type]) ! for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta; ! do case $i in inria) *************** *** 1256,1259 **** --- 1258,1302 ---- AC_CHECK_FUNCS(openpty,, AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY)] [LIBS="$LIBS -lutil"])) AC_CHECK_FUNCS(forkpty,, AC_CHECK_LIB(util,forkpty, [AC_DEFINE(HAVE_FORKPTY)] [LIBS="$LIBS -lutil"])) + + # Try defining symbols to enable large file support. + # The particular combination of symbols used here is known to work + # on Linux and Solaris [2.]7. + AC_MSG_CHECKING(for CFLAGS to enable large files) + OLD_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" + AC_TRY_RUN([ + #include + #include + main() { + FILE *fp; + off_t seek = 0x80000000ul; + off_t tell = 0; + fp = fopen("conftestval", "wb"); + if (fp == NULL) { + perror("conftestval"); + exit(1); + } + if (fseeko(fp, seek, 0) < 0) + perror("fseeko"); + else + tell = ftello(fp); + fclose(fp); + unlink("conftestval"); + if (tell == seek) { + fprintf(stderr, "seek to 2**31 worked\n"); + exit(0); + } + else { + exit(1); + fprintf(stderr, "seek to 2**31 didn't work\n"); + } + } + ], + AC_MSG_RESULT(yes) + AC_DEFINE(_LARGEFILE_SOURCE) + AC_DEFINE(_FILE_OFFSET_BITS,64), + AC_MSG_RESULT(no), + AC_MSG_RESULT(no (cross-compiling))) + CFLAGS="$OLD_CFLAGS" # check for long file support functions Index: pyconfig.h.in =================================================================== RCS file: /cvsroot/python/python/dist/src/pyconfig.h.in,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** pyconfig.h.in 2001/09/05 14:45:54 1.6 --- pyconfig.h.in 2001/09/05 14:58:11 1.7 *************** *** 91,94 **** --- 91,97 ---- #undef __EXTENSIONS__ + /* This must be set to 64 on some systems to enable large file support */ + #undef _FILE_OFFSET_BITS + /* Define if getpgrp() must be called as getpgrp(0). */ #undef GETPGRP_HAVE_ARG *************** *** 167,170 **** --- 170,176 ---- #undef HAVE_WCHAR_H + /* This must be defined on some systems to enable large file support */ + #undef _LARGEFILE_SOURCE + /* Define if you want to have a Unicode type. */ #undef Py_USING_UNICODE *************** *** 716,725 **** #define DL_EXPORT(RTYPE) __declspec(dllexport) RTYPE #endif - #endif - - /* Define the macros needed if on a UnixWare 7.x system. */ - #if defined(__USLC__) && defined(__SCO_VERSION__) - #define SCO_ACCEPT_BUG /* Use workaround for UnixWare accept() bug */ - #define SCO_ATAN2_BUG /* Use workaround for UnixWare atan2() bug */ - #define STRICT_SYSV_CURSES /* Don't use ncurses extensions */ #endif --- 722,724 ---- From loewis@users.sourceforge.net Wed Sep 5 16:18:02 2001 From: loewis@users.sourceforge.net (Martin v. L?wis) Date: Wed, 05 Sep 2001 08:18:02 -0700 Subject: [Python-checkins] CVS: python/dist/src acconfig.h,1.52,1.53 pyconfig.h.in,1.7,1.8 Message-ID: Update of /cvsroot/python/python/dist/src In directory usw-pr-cvs1:/tmp/cvs-serv23090 Modified Files: acconfig.h pyconfig.h.in Log Message: Move UnixWare 7 defines to acconfig.h, regenerate pyconfig.h.in. Index: acconfig.h =================================================================== RCS file: /cvsroot/python/python/dist/src/acconfig.h,v retrieving revision 1.52 retrieving revision 1.53 diff -C2 -d -r1.52 -r1.53 *** acconfig.h 2001/09/05 14:58:11 1.52 --- acconfig.h 2001/09/05 15:18:00 1.53 *************** *** 243,244 **** --- 243,252 ---- #endif #endif + + /* Define the macros needed if on a UnixWare 7.x system. */ + #if defined(__USLC__) && defined(__SCO_VERSION__) + #define SCO_ACCEPT_BUG /* Use workaround for UnixWare accept() bug */ + #define SCO_ATAN2_BUG /* Use workaround for UnixWare atan2() bug */ + #define STRICT_SYSV_CURSES /* Don't use ncurses extensions */ + #endif + Index: pyconfig.h.in =================================================================== RCS file: /cvsroot/python/python/dist/src/pyconfig.h.in,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** pyconfig.h.in 2001/09/05 14:58:11 1.7 --- pyconfig.h.in 2001/09/05 15:18:00 1.8 *************** *** 723,724 **** --- 723,732 ---- #endif #endif + + /* Define the macros needed if on a UnixWare 7.x system. */ + #if defined(__USLC__) && defined(__SCO_VERSION__) + #define SCO_ACCEPT_BUG /* Use workaround for UnixWare accept() bug */ + #define SCO_ATAN2_BUG /* Use workaround for UnixWare atan2() bug */ + #define STRICT_SYSV_CURSES /* Don't use ncurses extensions */ + #endif + From jackjansen@users.sourceforge.net Wed Sep 5 16:42:55 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 08:42:55 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/waste wastemodule.c,1.17,1.18 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/waste In directory usw-pr-cvs1:/tmp/cvs-serv31037/python/Mac/Modules/waste Modified Files: wastemodule.c Log Message: A few more gcc warnings bite the dust. Index: wastemodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/waste/wastemodule.c,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** wastemodule.c 2001/06/20 21:21:02 1.17 --- wastemodule.c 2001/09/05 15:42:53 1.18 *************** *** 6,12 **** --- 6,24 ---- + #ifdef _WIN32 + #include "pywintoolbox.h" + #else #include "macglue.h" #include "pymactoolbox.h" + #endif + /* Macro to test whether a weak-loaded CFM function exists */ + #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ + PyErr_SetString(PyExc_NotImplementedError, \ + "Not available in this shared library/OS version"); \ + return NULL; \ + }} while(0) + + #include #include *************** *** 214,218 **** return (PyObject *)it; } ! WEOObj_Convert(PyObject *v, WEObjectReference *p_itself) { if (!WEOObj_Check(v)) --- 226,230 ---- return (PyObject *)it; } ! int WEOObj_Convert(PyObject *v, WEObjectReference *p_itself) { if (!WEOObj_Check(v)) *************** *** 382,386 **** return (PyObject *)it; } ! wasteObj_Convert(PyObject *v, WEReference *p_itself) { if (!wasteObj_Check(v)) --- 394,398 ---- return (PyObject *)it; } ! int wasteObj_Convert(PyObject *v, WEReference *p_itself) { if (!wasteObj_Check(v)) *************** *** 1062,1066 **** Py_INCREF(Py_None); _res = Py_None; - pText__error__: ; return _res; } --- 1074,1077 ---- From jackjansen@users.sourceforge.net Wed Sep 5 16:43:13 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 08:43:13 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/res _Resmodule.c,1.3,1.4 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/res In directory usw-pr-cvs1:/tmp/cvs-serv31134/python/Mac/Modules/res Modified Files: _Resmodule.c Log Message: A few more gcc warnings bite the dust. Index: _Resmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/res/_Resmodule.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** _Resmodule.c 2001/09/05 10:29:27 1.3 --- _Resmodule.c 2001/09/05 15:43:11 1.4 *************** *** 441,445 **** else _self->ob_freeit = NULL; ! return Py_BuildValue("i", old); } --- 441,446 ---- else _self->ob_freeit = NULL; ! _res = Py_BuildValue("i", old); ! return _res; } *************** *** 1379,1383 **** memcpy(*h, buf, len); HUnlock(h); ! return ResObj_New(h); } --- 1380,1385 ---- memcpy(*h, buf, len); HUnlock(h); ! _res = ResObj_New(h); ! return _res; } *************** *** 1404,1408 **** rv = (ResourceObject *)ResObj_New(h); rv->ob_freeit = PyMac_AutoDisposeHandle; ! return (PyObject *)rv; } --- 1406,1411 ---- rv = (ResourceObject *)ResObj_New(h); rv->ob_freeit = PyMac_AutoDisposeHandle; ! _res = (PyObject *)rv; ! return _res; } From jackjansen@users.sourceforge.net Wed Sep 5 16:43:36 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 08:43:36 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/qd _Qdmodule.c,1.3,1.4 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/qd In directory usw-pr-cvs1:/tmp/cvs-serv31239/python/Mac/Modules/qd Modified Files: _Qdmodule.c Log Message: A few more gcc warnings bite the dust. Index: _Qdmodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/qd/_Qdmodule.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** _Qdmodule.c 2001/09/05 10:29:02 1.3 --- _Qdmodule.c 2001/09/05 15:43:33 1.4 *************** *** 123,127 **** } ! QdRGB_Convert(PyObject *v, RGBColorPtr p_itself) { long red, green, blue; --- 123,127 ---- } ! int QdRGB_Convert(PyObject *v, RGBColorPtr p_itself) { long red, green, blue; From jackjansen@users.sourceforge.net Wed Sep 5 16:44:35 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 08:44:35 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/qd qdsupport.py,1.35,1.36 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/qd In directory usw-pr-cvs1:/tmp/cvs-serv31583/python/Mac/Modules/qd Modified Files: qdsupport.py Log Message: A few more gcc warnings bite the dust. Index: qdsupport.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/qd/qdsupport.py,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** qdsupport.py 2001/09/05 10:29:07 1.35 --- qdsupport.py 2001/09/05 15:44:33 1.36 *************** *** 168,172 **** } ! QdRGB_Convert(PyObject *v, RGBColorPtr p_itself) { long red, green, blue; --- 168,172 ---- } ! int QdRGB_Convert(PyObject *v, RGBColorPtr p_itself) { long red, green, blue; From jackjansen@users.sourceforge.net Wed Sep 5 16:44:40 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 08:44:40 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Modules/res resedit.py,1.5,1.6 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Modules/res In directory usw-pr-cvs1:/tmp/cvs-serv31614/python/Mac/Modules/res Modified Files: resedit.py Log Message: A few more gcc warnings bite the dust. Index: resedit.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Modules/res/resedit.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** resedit.py 2001/09/05 10:31:52 1.5 --- resedit.py 2001/09/05 15:44:37 1.6 *************** *** 14,18 **** memcpy(*h, buf, len); HUnlock(h); ! return ResObj_New(h); """ --- 14,19 ---- memcpy(*h, buf, len); HUnlock(h); ! _res = ResObj_New(h); ! return _res; """ *************** *** 44,48 **** rv = (ResourceObject *)ResObj_New(h); rv->ob_freeit = PyMac_AutoDisposeHandle; ! return (PyObject *)rv; """ --- 45,50 ---- rv = (ResourceObject *)ResObj_New(h); rv->ob_freeit = PyMac_AutoDisposeHandle; ! _res = (PyObject *)rv; ! return _res; """ *************** *** 93,97 **** else _self->ob_freeit = NULL; ! return Py_BuildValue("i", old); """ f = ManualGenerator("AutoDispose", AutoDispose_body) --- 95,100 ---- else _self->ob_freeit = NULL; ! _res = Py_BuildValue("i", old); ! return _res; """ f = ManualGenerator("AutoDispose", AutoDispose_body) From loewis@users.sourceforge.net Wed Sep 5 18:09:50 2001 From: loewis@users.sourceforge.net (Martin v. L?wis) Date: Wed, 05 Sep 2001 10:09:50 -0700 Subject: [Python-checkins] CVS: python/dist/src/Doc/api api.tex,1.144,1.145 Message-ID: Update of /cvsroot/python/python/dist/src/Doc/api In directory usw-pr-cvs1:/tmp/cvs-serv20171/Doc/api Modified Files: api.tex Log Message: Patch #449815: Set filesystemencoding based on CODESET. Index: api.tex =================================================================== RCS file: /cvsroot/python/python/dist/src/Doc/api/api.tex,v retrieving revision 1.144 retrieving revision 1.145 diff -C2 -d -r1.144 -r1.145 *** api.tex 2001/09/04 22:08:55 1.144 --- api.tex 2001/09/05 17:09:48 1.145 *************** *** 3021,3025 **** Setting encoding to NULL causes the default encoding to be used which ! is UTF-8. Error handling is set by errors which may also be set to NULL meaning --- 3021,3029 ---- Setting encoding to NULL causes the default encoding to be used which ! is \ASCII{}. The file system calls should use ! \var{Py_FileSystemDefaultEncoding} as the encoding for file ! names. This variable should be treated as read-only: On some systems, ! it will be a pointer to a static string, on others, it will change at ! run-time, e.g. when the application invokes setlocale. Error handling is set by errors which may also be set to NULL meaning From loewis@users.sourceforge.net Wed Sep 5 18:09:50 2001 From: loewis@users.sourceforge.net (Martin v. L?wis) Date: Wed, 05 Sep 2001 10:09:50 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/test test_unicode_file.py,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/test In directory usw-pr-cvs1:/tmp/cvs-serv20171/Lib/test Modified Files: test_unicode_file.py Log Message: Patch #449815: Set filesystemencoding based on CODESET. Index: test_unicode_file.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_unicode_file.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** test_unicode_file.py 2001/05/13 08:04:26 1.1 --- test_unicode_file.py 2001/09/05 17:09:48 1.2 *************** *** 7,12 **** try: from test_support import TESTFN_ENCODING except ImportError: ! raise TestSkipped("No Unicode filesystem semantics on this platform.") TESTFN_ENCODED = TESTFN_UNICODE.encode(TESTFN_ENCODING) --- 7,24 ---- try: from test_support import TESTFN_ENCODING + oldlocale = None except ImportError: ! import locale ! # try to run the test in an UTF-8 locale. If this locale is not ! # available, avoid running the test since the locale's encoding ! # might not support TESTFN_UNICODE. Likewise, if the system does ! # not support locale.CODESET, Unicode file semantics is not ! # available, either. ! oldlocale = locale.setlocale(locale.LC_CTYPE) ! try: ! locale.setlocale(locale.LC_CTYPE,"en_US.UTF-8") ! TESTFN_ENCODING = locale.nl_langinfo(locale.CODESET) ! except (locale.Error, AttributeError): ! raise TestSkipped("No Unicode filesystem semantics on this platform.") TESTFN_ENCODED = TESTFN_UNICODE.encode(TESTFN_ENCODING) *************** *** 80,81 **** --- 92,95 ---- os.rmdir(abs_encoded) print "All the Unicode tests appeared to work" + if oldlocale: + locale.setlocale(locale.LC_CTYPE, oldlocale) From loewis@users.sourceforge.net Wed Sep 5 18:09:50 2001 From: loewis@users.sourceforge.net (Martin v. L?wis) Date: Wed, 05 Sep 2001 10:09:50 -0700 Subject: [Python-checkins] CVS: python/dist/src/Modules _localemodule.c,2.22,2.23 Message-ID: Update of /cvsroot/python/python/dist/src/Modules In directory usw-pr-cvs1:/tmp/cvs-serv20171/Modules Modified Files: _localemodule.c Log Message: Patch #449815: Set filesystemencoding based on CODESET. Index: _localemodule.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Modules/_localemodule.c,v retrieving revision 2.22 retrieving revision 2.23 diff -C2 -d -r2.22 -r2.23 *** _localemodule.c 2001/08/15 17:14:33 2.22 --- _localemodule.c 2001/09/05 17:09:48 2.23 *************** *** 154,158 **** Py_DECREF(ulo); } ! static PyObject* --- 154,161 ---- Py_DECREF(ulo); } ! ! #if defined(HAVE_LANGINFO_H) && defined(CODESET) ! static int fileencoding_uses_locale = 0; ! #endif static PyObject* *************** *** 204,207 **** --- 207,226 ---- /* things that got wrong up to here are ignored */ PyErr_Clear(); + #if defined(HAVE_LANGINFO_H) && defined(CODESET) + if (Py_FileSystemDefaultEncoding == NULL) + fileencoding_uses_locale = 1; + if (fileencoding_uses_locale) { + char *codeset = nl_langinfo(CODESET); + PyObject *enc = NULL; + if (*codeset && (enc = PyCodec_Encoder(codeset))) { + /* Release previous file encoding */ + if (Py_FileSystemDefaultEncoding) + free (Py_FileSystemDefaultEncoding); + Py_FileSystemDefaultEncoding = strdup(codeset); + Py_DECREF(enc); + } else + PyErr_Clear(); + } + #endif } else { /* get locale */ From gvanrossum@users.sourceforge.net Wed Sep 5 18:52:33 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Wed, 05 Sep 2001 10:52:33 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/test test_largefile.py,1.5,1.6 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/test In directory usw-pr-cvs1:/tmp/cvs-serv32268 Modified Files: test_largefile.py Log Message: Remove a debug print left in the code by Fred. Index: test_largefile.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_largefile.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** test_largefile.py 2001/08/20 22:37:34 1.5 --- test_largefile.py 2001/09/05 17:52:31 1.6 *************** *** 131,133 **** os.unlink(name) - print >>sys.stderr, name, "exists:", os.path.exists(name) --- 131,132 ---- From bckfnn@users.sourceforge.net Wed Sep 5 19:40:35 2001 From: bckfnn@users.sourceforge.net (Finn Bock) Date: Wed, 05 Sep 2001 11:40:35 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib zipfile.py,1.15,1.16 Message-ID: Update of /cvsroot/python/python/dist/src/Lib In directory usw-pr-cvs1:/tmp/cvs-serv10317 Modified Files: zipfile.py Log Message: [ #458701 ] Patch to zipfile.py for Java Patch by Jim Ahlstrom which lets java's zipfile classes read zipfiles create by zipfile.py. Index: zipfile.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/zipfile.py,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** zipfile.py 2001/07/19 19:44:25 1.15 --- zipfile.py 2001/09/05 18:40:33 1.16 *************** *** 384,394 **** self._writecheck(zinfo) fp = open(filename, "rb") ! zinfo.flag_bits = 0x08 zinfo.header_offset = self.fp.tell() # Start of header bytes self.fp.write(zinfo.FileHeader()) zinfo.file_offset = self.fp.tell() # Start of file bytes - CRC = 0 - compress_size = 0 - file_size = 0 if zinfo.compress_type == ZIP_DEFLATED: cmpr = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION, --- 384,395 ---- self._writecheck(zinfo) fp = open(filename, "rb") ! zinfo.flag_bits = 0x00 zinfo.header_offset = self.fp.tell() # Start of header bytes + # Must overwrite CRC and sizes with correct data later + zinfo.CRC = CRC = 0 + zinfo.compress_size = compress_size = 0 + zinfo.file_size = file_size = 0 self.fp.write(zinfo.FileHeader()) zinfo.file_offset = self.fp.tell() # Start of file bytes if zinfo.compress_type == ZIP_DEFLATED: cmpr = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION, *************** *** 416,422 **** zinfo.CRC = CRC zinfo.file_size = file_size ! # Write CRC and file sizes after the file data self.fp.write(struct.pack(" Update of /cvsroot/python/python/dist/src/Misc In directory usw-pr-cvs1:/tmp/cvs-serv11436 Modified Files: NEWS Log Message: Describe -E (which was added to 2.2a2). Index: NEWS =================================================================== RCS file: /cvsroot/python/python/dist/src/Misc/NEWS,v retrieving revision 1.230 retrieving revision 1.231 diff -C2 -d -r1.230 -r1.231 *** NEWS 2001/09/05 13:44:54 1.230 --- NEWS 2001/09/05 18:43:35 1.231 *************** *** 222,225 **** --- 222,232 ---- have been assigned now returns an empty dictionary instead of None. + - A new command line option, -E, was added which disables the use of + all environment variables, or at least those that are specifically + significant to Python. Usually those have a name starting with + "PYTHON". This was used to fix a problem where the tests fail if + the user happens to have PYTHONHOME or PYTHONPATH pointing to an + older distribution. + Library From gvanrossum@users.sourceforge.net Wed Sep 5 19:55:36 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Wed, 05 Sep 2001 11:55:36 -0700 Subject: [Python-checkins] CVS: python/dist/src/Misc python.man,1.20,1.21 Message-ID: Update of /cvsroot/python/python/dist/src/Misc In directory usw-pr-cvs1:/tmp/cvs-serv15052 Modified Files: python.man Log Message: Document -Q. Move arguments around to be in strict alphabetical order. Add breaks in SYNOPSIS. Index: python.man =================================================================== RCS file: /cvsroot/python/python/dist/src/Misc/python.man,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** python.man 2001/07/26 21:25:58 1.20 --- python.man 2001/09/05 18:55:34 1.21 *************** *** 8,11 **** --- 8,17 ---- ] [ + .B \-E + ] + [ + .B \-h + ] + [ .B \-i ] *************** *** 13,21 **** .B \-O ] ! [ ! .B \-S ] [ ! .B \-E ] [ --- 19,29 ---- .B \-O ] ! .br ! [ ! .B -Q ! .I argument ] [ ! .B \-S ] [ *************** *** 25,36 **** .B \-u ] - [ - .B \-v - ] [ ! .B \-x ] ! [ ! .B \-h ] [ --- 33,42 ---- .B \-u ] [ ! .B \-U ] ! .br ! [ ! .B \-v ] [ *************** *** 41,44 **** --- 47,53 ---- .I argument ] + [ + .B \-x + ] .br [ *************** *** 79,86 **** --- 88,107 ---- .SH COMMAND LINE OPTIONS .TP + .BI "\-c " command + Specify the command to execute (see next section). + This terminates the option list (following options are passed as + arguments to the command). + .TP .B \-d Turn on parser debugging output (for wizards only, depending on compilation options). .TP + .B \-E + Ignore environment variables like PYTHONPATH and PYTHONHOME that modify + the behavior of the interpreter. + .TP + .B \-h + Prints the usage for the interpreter executable and exits. + .TP .B \-i When a script is passed as first argument or the \fB\-c\fP option is *************** *** 96,99 **** --- 117,129 ---- to \fI.pyo\fP. Given twice, causes docstrings to be discarded. .TP + .BI "\-Q " argument + Division control; see PEP 238. The argument must be one of "old" (the + default, int/int and long/long return an int or long), "new" (new + division semantics, i.e. int/int and long/long returns a float), + "warn" (old division semantics with a warning for int/int and + long/long), or "warnall" (old division semantics with a warning for + all use of the division operator). For a use of "warnall", see the + Tools/scripts/fixdiv.py script. + .TP .B \-S Disable the import of the module *************** *** 103,110 **** that it entails. .TP - .B \-E - Ignore environment variables like PYTHONPATH and PYTHONHOME that modify - the behavior of the interpreter. - .TP .B \-t Issue a warning when a source file mixes tabs and spaces for --- 133,136 ---- *************** *** 122,133 **** at exit. .TP - .B \-x - Skip the first line of the source. This is intended for a DOS - specific hack only. Warning: the line numbers in error messages will - be off by one! - .TP - .B \-h - Prints the usage for the interpreter executable and exits. - .TP .B \-V Prints the Python version number of the executable and exits. --- 148,151 ---- *************** *** 198,205 **** is thus equivalent to an omitted line number. .TP ! .BI "\-c " command ! Specify the command to execute (see next section). ! This terminates the option list (following options are passed as ! arguments to the command). .SH INTERPRETER INTERFACE The interpreter interface resembles that of the UNIX shell: when --- 216,223 ---- is thus equivalent to an omitted line number. .TP ! .B \-x ! Skip the first line of the source. This is intended for a DOS ! specific hack only. Warning: the line numbers in error messages will ! be off by one! .SH INTERPRETER INTERFACE The interpreter interface resembles that of the UNIX shell: when From gvanrossum@users.sourceforge.net Wed Sep 5 19:57:53 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Wed, 05 Sep 2001 11:57:53 -0700 Subject: [Python-checkins] CVS: python/dist/src/Misc python.man,1.21,1.22 Message-ID: Update of /cvsroot/python/python/dist/src/Misc In directory usw-pr-cvs1:/tmp/cvs-serv15594 Modified Files: python.man Log Message: Change the date field to use $Date$ so it won't be outrageously out of date. Index: python.man =================================================================== RCS file: /cvsroot/python/python/dist/src/Misc/python.man,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** python.man 2001/09/05 18:55:34 1.21 --- python.man 2001/09/05 18:57:51 1.22 *************** *** 1,3 **** ! .TH PYTHON "1" "5 September, 2000" .SH NAME python \- an interpreted, interactive, object-oriented programming language --- 1,3 ---- ! .TH PYTHON "1" "$Date$" .SH NAME python \- an interpreted, interactive, object-oriented programming language From gvanrossum@users.sourceforge.net Wed Sep 5 20:11:51 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Wed, 05 Sep 2001 12:11:51 -0700 Subject: [Python-checkins] CVS: python/dist/src configure.in,1.253,1.254 Message-ID: Update of /cvsroot/python/python/dist/src In directory usw-pr-cvs1:/tmp/cvs-serv19236 Modified Files: configure.in Log Message: SF bug #427073: DLINCLDIR defined incorrectly (Skip Montanaro). I don't know what difference it makes, but '/' indeed makes less sense as an include dir than '.', so I'm changing the default. Just so I can close the bug. ;-) Index: configure.in =================================================================== RCS file: /cvsroot/python/python/dist/src/configure.in,v retrieving revision 1.253 retrieving revision 1.254 diff -C2 -d -r1.253 -r1.254 *** configure.in 2001/09/05 14:58:11 1.253 --- configure.in 2001/09/05 19:11:49 1.254 *************** *** 1168,1172 **** # -I${DLINCLDIR} is added to the compile rule for importdl.o AC_SUBST(DLINCLDIR) ! DLINCLDIR=/ AC_MSG_CHECKING(for --with-sgi-dl) --- 1168,1172 ---- # -I${DLINCLDIR} is added to the compile rule for importdl.o AC_SUBST(DLINCLDIR) ! DLINCLDIR=. AC_MSG_CHECKING(for --with-sgi-dl) From gvanrossum@users.sourceforge.net Wed Sep 5 20:13:19 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Wed, 05 Sep 2001 12:13:19 -0700 Subject: [Python-checkins] CVS: python/dist/src configure,1.245,1.246 Message-ID: Update of /cvsroot/python/python/dist/src In directory usw-pr-cvs1:/tmp/cvs-serv19552 Modified Files: configure Log Message: SF bug #427073: DLINCLDIR defined incorrectly (Skip Montanaro). I don't know what difference it makes, but '/' indeed makes less sense as an include dir than '.', so I'm changing the default. Just so I can close the bug. ;-) Index: configure =================================================================== RCS file: /cvsroot/python/python/dist/src/configure,v retrieving revision 1.245 retrieving revision 1.246 diff -C2 -d -r1.245 -r1.246 *** configure 2001/09/05 14:58:11 1.245 --- configure 2001/09/05 19:13:16 1.246 *************** *** 1,5 **** #! /bin/sh ! # From configure.in Revision: 1.253 # Guess values for system-dependent variables and create Makefiles. --- 1,5 ---- #! /bin/sh ! # From configure.in Revision: 1.254 # Guess values for system-dependent variables and create Makefiles. *************** *** 4436,4440 **** # -I${DLINCLDIR} is added to the compile rule for importdl.o ! DLINCLDIR=/ echo $ac_n "checking for --with-sgi-dl""... $ac_c" 1>&6 --- 4436,4440 ---- # -I${DLINCLDIR} is added to the compile rule for importdl.o ! DLINCLDIR=. echo $ac_n "checking for --with-sgi-dl""... $ac_c" 1>&6 From montanaro@users.sourceforge.net Wed Sep 5 20:27:15 2001 From: montanaro@users.sourceforge.net (Skip Montanaro) Date: Wed, 05 Sep 2001 12:27:15 -0700 Subject: [Python-checkins] CVS: python/dist/src/Doc/lib libmailbox.tex,1.21,1.22 Message-ID: Update of /cvsroot/python/python/dist/src/Doc/lib In directory usw-pr-cvs1:/tmp/cvs-serv22869 Modified Files: libmailbox.tex Log Message: typo... Index: libmailbox.tex =================================================================== RCS file: /cvsroot/python/python/dist/src/Doc/lib/libmailbox.tex,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** libmailbox.tex 2001/08/03 18:39:36 1.21 --- libmailbox.tex 2001/09/05 19:27:13 1.22 *************** *** 108,112 **** Return the next message in the mailbox, created with the optional \var{factory} argument passed into the mailbox object's constructor. ! By defaul this is an \class{rfc822.Message} object (see the \refmodule{rfc822} module). Depending on the mailbox implementation the \var{fp} attribute of this object may be a true --- 108,112 ---- Return the next message in the mailbox, created with the optional \var{factory} argument passed into the mailbox object's constructor. ! By default this is an \class{rfc822.Message} object (see the \refmodule{rfc822} module). Depending on the mailbox implementation the \var{fp} attribute of this object may be a true From gvanrossum@users.sourceforge.net Wed Sep 5 20:29:58 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Wed, 05 Sep 2001 12:29:58 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/lib-tk Tkinter.py,1.156,1.157 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/lib-tk In directory usw-pr-cvs1:/tmp/cvs-serv23520 Modified Files: Tkinter.py Log Message: class Listbox: add itemcget, to satisfy SF patch #457713. Fix up docstring for itemconfigure. Index: Tkinter.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/lib-tk/Tkinter.py,v retrieving revision 1.156 retrieving revision 1.157 diff -C2 -d -r1.156 -r1.157 *** Tkinter.py 2001/09/01 18:29:55 1.156 --- Tkinter.py 2001/09/05 19:29:56 1.157 *************** *** 2364,2369 **** """Shift the y-view according to NUMBER which is measured in "units" or "pages" (WHAT).""" self.tk.call(self._w, 'yview', 'scroll', number, what) def itemconfigure(self, index, cnf=None, **kw): ! """Configure resources of an item. The values for resources are specified as keyword arguments. --- 2364,2373 ---- """Shift the y-view according to NUMBER which is measured in "units" or "pages" (WHAT).""" self.tk.call(self._w, 'yview', 'scroll', number, what) + def itemcget(self, index, option): + """Return the resource value for an ITEM and an OPTION.""" + return self.tk.call( + (self._w, 'itemcget') + (index, '-'+option)) def itemconfigure(self, index, cnf=None, **kw): ! """Configure resources of an ITEM. The values for resources are specified as keyword arguments. From gvanrossum@users.sourceforge.net Wed Sep 5 20:45:36 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Wed, 05 Sep 2001 12:45:36 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib cgi.py,1.66,1.67 Message-ID: Update of /cvsroot/python/python/dist/src/Lib In directory usw-pr-cvs1:/tmp/cvs-serv26272 Modified Files: cgi.py Log Message: Class FieldStorage: add two new methods, getfirst() and getlist(), that provide a somewhat more uniform interface to getting values. This is from SF patch #453691. Index: cgi.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/cgi.py,v retrieving revision 1.66 retrieving revision 1.67 diff -C2 -d -r1.66 -r1.67 *** cgi.py 2001/08/09 21:40:30 1.66 --- cgi.py 2001/09/05 19:45:34 1.67 *************** *** 565,568 **** --- 565,590 ---- return default + def getfirst(self, key, default=None): + """ Return the first value received.""" + if self.has_key(key): + value = self[key] + if type(value) is type([]): + return value[0].value + else: + return value.value + else: + return default + + def getlist(self, key): + """ Return list of received values.""" + if self.has_key(key): + value = self[key] + if type(value) is type([]): + return map(lambda v: v.value, value) + else: + return [value.value] + else: + return [] + def keys(self): """Dictionary style keys() method.""" From gvanrossum@users.sourceforge.net Wed Sep 5 20:51:10 2001 From: gvanrossum@users.sourceforge.net (Guido van Rossum) Date: Wed, 05 Sep 2001 12:51:10 -0700 Subject: [Python-checkins] CVS: python/dist/src/Demo/pysvr Makefile,1.5,1.6 Message-ID: Update of /cvsroot/python/python/dist/src/Demo/pysvr In directory usw-pr-cvs1:/tmp/cvs-serv27492 Modified Files: Makefile Log Message: Use the build directory by default, and update the version. Index: Makefile =================================================================== RCS file: /cvsroot/python/python/dist/src/Demo/pysvr/Makefile,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Makefile 2001/06/02 06:16:02 1.5 --- Makefile 2001/09/05 19:51:08 1.6 *************** *** 12,28 **** OPT=-g ! # Where Python is installed, and which version ! INST=/usr/local ! VER=2.0 ! # Expressions using the above definitions -- no need to change PYVER=python$(VER) # Use these defs when compiling against installed Python ! PYC=$(INST)/lib/$(PYVER)/config ! PYINCL=-I$(INST)/include/$(PYVER) -I$(PYC) ! PYLIBS=$(PYC)/lib$(PYVER).a # Use these defs when compiling against built Python ! ##PYINCL=-I../../Include -I../../sparc ! ##PYLIBS=../../sparc/lib$(PYVER).a # Libraries to link with -- very installation dependent --- 12,31 ---- OPT=-g ! # Which Python version we're using ! VER=2.2 ! # Expressions using the above definitions PYVER=python$(VER) + # Use these defs when compiling against installed Python ! ##INST=/usr/local ! ##PYC=$(INST)/lib/$(PYVER)/config ! ##PYINCL=-I$(INST)/include/$(PYVER) -I$(PYC) ! ##PYLIBS=$(PYC)/lib$(PYVER).a ! # Use these defs when compiling against built Python ! PLAT=linux ! PYINCL=-I../../Include -I../../$(PLAT) ! PYLIBS=../../$(PLAT)/lib$(PYVER).a # Libraries to link with -- very installation dependent From jackjansen@users.sourceforge.net Wed Sep 5 21:08:10 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 13:08:10 -0700 Subject: [Python-checkins] CVS: python/dist/src/Lib/test test_repr.py,1.4,1.5 Message-ID: Update of /cvsroot/python/python/dist/src/Lib/test In directory usw-pr-cvs1:/tmp/cvs-serv31600/Python/Lib/test Modified Files: test_repr.py Log Message: LongReprTest fails on the Mac because it uses filenames with more than 32 characters per component. This makes mkdir() calls and such fail with EINVAL. For now I am disabling the test on the Mac, and I'll open a bugreport. Index: test_repr.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/test_repr.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** test_repr.py 2001/09/05 02:26:26 1.4 --- test_repr.py 2001/09/05 20:08:07 1.5 *************** *** 267,269 **** run_unittest(ReprTests) ! run_unittest(LongReprTest) --- 267,270 ---- run_unittest(ReprTests) ! if os.name != 'mac': ! run_unittest(LongReprTest) From tim_one@users.sourceforge.net Wed Sep 5 21:18:51 2001 From: tim_one@users.sourceforge.net (Tim Peters) Date: Wed, 05 Sep 2001 13:18:51 -0700 Subject: [Python-checkins] CVS: python/nondist/peps pep-0042.txt,1.54,1.55 Message-ID: Update of /cvsroot/python/python/nondist/peps In directory usw-pr-cvs1:/tmp/cvs-serv1947 Modified Files: pep-0042.txt Log Message: Added section for IEEE-754 support requests. Index: pep-0042.txt =================================================================== RCS file: /cvsroot/python/python/nondist/peps/pep-0042.txt,v retrieving revision 1.54 retrieving revision 1.55 diff -C2 -d -r1.54 -r1.55 *** pep-0042.txt 2001/08/09 16:53:49 1.54 --- pep-0042.txt 2001/09/05 20:18:49 1.55 *************** *** 64,67 **** --- 64,73 ---- http://sf.net/bugs/?func=detailbug&bug_id=116405&group_id=5470 + - Non-accidental IEEE-754 support (Infs, NaNs, settable traps, etc). + Big project. + + pickle lacks float('inf') + http://sf.net/tracker/index.php?func=detail&aid=445484&group_id=5470&atid=355470 + Standard Library *************** *** 229,240 **** http://sf.net/tracker/?func=detail&aid=426539&group_id=5470&atid=105470 ! - Jim Fulton suggested the following: I wonder if it would be a good idea to have a new kind of temporary file that stored data in memory unless: ! - The data exceeds some size, or ! - Somebody asks for a fileno. Then the cgi module (and other apps) could use this thing in a --- 235,246 ---- http://sf.net/tracker/?func=detail&aid=426539&group_id=5470&atid=105470 ! - Jim Fulton suggested the following: I wonder if it would be a good idea to have a new kind of temporary file that stored data in memory unless: ! - The data exceeds some size, or ! - Somebody asks for a fileno. Then the cgi module (and other apps) could use this thing in a *************** *** 249,255 **** append a newline, or to append something else than a newline. ! Proposal: ! - get rid of the input size check - add an optional argument giving the delimiter string to be --- 255,261 ---- append a newline, or to append something else than a newline. ! Proposal: ! - get rid of the input size check - add an optional argument giving the delimiter string to be From jackjansen@users.sourceforge.net Wed Sep 5 23:04:27 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 15:04:27 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/OSXResources/app Info.plist,1.1,1.2 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/OSXResources/app In directory usw-pr-cvs1:/tmp/cvs-serv24985/OSXResources/app Modified Files: Info.plist Log Message: Python is a Shell, not a Viewer. Index: Info.plist =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/OSXResources/app/Info.plist,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Info.plist 2001/09/04 21:28:03 1.1 --- Info.plist 2001/09/05 22:04:25 1.2 *************** *** 21,25 **** CFBundleTypeRole ! Viewer --- 21,25 ---- CFBundleTypeRole ! Shell From jackjansen@users.sourceforge.net Wed Sep 5 23:07:54 2001 From: jackjansen@users.sourceforge.net (Jack Jansen) Date: Wed, 05 Sep 2001 15:07:54 -0700 Subject: [Python-checkins] CVS: python/dist/src/Mac/Python macgetargv.c,1.24,1.25 macmain.c,1.67,1.68 Message-ID: Update of /cvsroot/python/python/dist/src/Mac/Python In directory usw-pr-cvs1:/tmp/cvs-serv25188/Python Modified Files: macgetargv.c macmain.c Log Message: Changes to make these work under OSX as the main program for a fullblown drag and drop application. To my surprise it is starting to work already: Python actually executes a script dropped on it. To be done: - Make sure this still works in MacPython - Don't lose argv[0] in the process - Applet support Index: macgetargv.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Python/macgetargv.c,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** macgetargv.c 2001/06/20 20:50:19 1.24 --- macgetargv.c 2001/09/05 22:07:52 1.25 *************** *** 28,31 **** --- 28,32 ---- #include + #ifdef WITHOUT_FRAMEWORKS #include #include *************** *** 41,44 **** --- 42,48 ---- #include #include + #else + #include + #endif /* WITHOUT_FRAMEWORKS */ #if UNIVERSAL_INTERFACES_VERSION >= 0x0340 *************** *** 55,59 **** FSSpec PyMac_ApplicationFSSpec; char PyMac_ApplicationPath[256]; - static int applocation_inited; /* Duplicate a string to the heap. We also export this since it isn't standard --- 59,62 ---- *************** *** 71,82 **** #endif /* Initialize FSSpec and full name of current application */ OSErr ! PyMac_init_process_location() { ProcessSerialNumber currentPSN; ProcessInfoRec info; OSErr err; if ( applocation_inited ) return 0; --- 74,104 ---- #endif + #if TARGET_API_MAC_OSX + OSErr + PyMac_GetFullPath(FSSpec *fss, char *path) + { + FSRef fsr; + OSErr err; + + *path = '\0'; + err = FSpMakeFSRef(fss, &fsr); + if ( err ) return err; + err = (OSErr)FSRefMakePath(&fsr, path, 1024); + if ( err ) return err; + return 0; + } + #endif /* TARGET_API_MAC_OSX */ + + + #if !TARGET_API_MAC_OSX /* Initialize FSSpec and full name of current application */ OSErr ! PyMac_init_process_location(void) { ProcessSerialNumber currentPSN; ProcessInfoRec info; OSErr err; + static int applocation_inited; if ( applocation_inited ) return 0; *************** *** 93,96 **** --- 115,119 ---- return 0; } + #endif /* !TARGET_API_MAC_OSX */ /* Check that there aren't any args remaining in the event */ *************** *** 148,160 **** long i, ndocs, size; FSSpec fss; ! char path[256]; got_one = 1; ! if (err = AEGetParamDesc(theAppleEvent, ! keyDirectObject, typeAEList, &doclist)) return err; ! if (err = get_missing_params(theAppleEvent)) return err; ! if (err = AECountItems(&doclist, &ndocs)) return err; for(i = 1; i <= ndocs; i++) { --- 171,183 ---- long i, ndocs, size; FSSpec fss; ! char path[1024]; got_one = 1; ! if ((err = AEGetParamDesc(theAppleEvent, ! keyDirectObject, typeAEList, &doclist))) return err; ! if ((err = get_missing_params(theAppleEvent))) return err; ! if ((err = AECountItems(&doclist, &ndocs))) return err; for(i = 1; i <= ndocs; i++) { *************** *** 175,179 **** static void ! set_ae_handlers() { open_doc_upp = NewAEEventHandlerUPP(&handle_open_doc); --- 198,202 ---- static void ! set_ae_handlers(void) { open_doc_upp = NewAEEventHandlerUPP(&handle_open_doc); *************** *** 194,198 **** static void ! reset_ae_handlers() { AERemoveEventHandler(kCoreEventClass, kAEOpenApplication, --- 217,221 ---- static void ! reset_ae_handlers(void) { AERemoveEventHandler(kCoreEventClass, kAEOpenApplication, *************** *** 209,213 **** static void ! event_loop() { EventRecord event; --- 232,236 ---- static void ! event_loop(void) { EventRecord event; *************** *** 230,241 **** int ! PyMac_GetArgv(pargv, noevents) ! char ***pargv; ! int noevents; { - arg_count = 0; (void)PyMac_init_process_location(); arg_vector[arg_count++] = strdup(PyMac_ApplicationPath); if( !noevents ) { --- 253,266 ---- int ! PyMac_GetArgv(char ***pargv, int noevents) { arg_count = 0; + #if TARGET_API_MAC_OSX + /* In an OSX bundle argv[0] is okay */ + arg_count++; + #else (void)PyMac_init_process_location(); arg_vector[arg_count++] = strdup(PyMac_ApplicationPath); + #endif /* TARGET_API_MAC_OSX */ if( !noevents ) { Index: macmain.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Mac/Python/macmain.c,v retrieving revision 1.67 retrieving revision 1.68 diff -C2 -d -r1.67 -r1.68 *** macmain.c 2001/09/01 22:37:48 1.67 --- macmain.c 2001/09/05 22:07:52 1.68 *************** *** 31,34 **** --- 31,35 ---- #include "macglue.h" + #ifdef WITHOUT_FRAMEWORKS #include #include *************** *** 42,45 **** --- 43,50 ---- #include #endif /* USE_APPEARANCE */ + #else + #include + #endif /* WITHOUT_FRAMEWORKS */ + #ifdef __MWERKS__ #include *************** *** 48,60 **** #if __profile__ == 1 #include ! #endif ! #endif #include #ifdef USE_MAC_SHARED_LIBRARY extern PyMac_AddLibResources(void); #endif - //#ifdef USE_GUSI - //#include "GUSISIOUX.h" - //#endif #define STARTUP "PythonStartup" --- 53,63 ---- #if __profile__ == 1 #include ! #endif /* __profile__ */ ! #endif /* __MWERKS__ */ ! #include #ifdef USE_MAC_SHARED_LIBRARY extern PyMac_AddLibResources(void); #endif #define STARTUP "PythonStartup" *************** *** 82,86 **** void PyMac_Exit(int); /* Forward */ ! static void init_appearance() { #ifdef USE_APPEARANCE --- 85,89 ---- void PyMac_Exit(int); /* Forward */ ! static void init_appearance(void) { #ifdef USE_APPEARANCE *************** *** 100,104 **** static void ! init_mac_world() { #if !TARGET_API_MAC_CARBON --- 103,107 ---- static void ! init_mac_world(void) { #if !TARGET_API_MAC_CARBON *************** *** 128,133 **** DialogPtr dialog; Rect rect; - int old_argc = *argcp; - int i; /* --- 131,134 ---- *************** *** 192,196 **** --- 193,200 ---- } #endif + #if !TARGET_API_MAC_OSX if ( item == OPT_CMDLINE ) { + int old_argc = *argcp; + int i; int new_argc, newer_argc; char **new_argv, **newer_argv; *************** *** 210,213 **** --- 214,218 ---- /* XXXX Is it not safe to use free() here, apparently */ } + #endif /* !TARGET_API_MAC_OSX */ #define OPT_ITEM(num, var) \ if ( item == (num) ) { \ *************** *** 284,288 **** #ifdef USE_SIOUX /* Set various SIOUX flags. Some are changed later based on options */ ! /* SIOUXSettings.standalone = 0; /* XXXX Attempting to keep sioux from eating events */ SIOUXSettings.asktosaveonclose = 0; SIOUXSettings.showstatusline = 0; --- 289,295 ---- #ifdef USE_SIOUX /* Set various SIOUX flags. Some are changed later based on options */ ! #if 0 ! SIOUXSettings.standalone = 0; /* XXXX Attempting to keep sioux from eating events */ ! #endif SIOUXSettings.asktosaveonclose = 0; SIOUXSettings.showstatusline = 0; *************** *** 292,297 **** /* Get options from preference file (or from applet resource fork) */ PyMac_options.keep_console = POPT_KEEPCONSOLE_OUTPUT; /* default-default */ PyMac_PreferenceOptions(&PyMac_options); ! if ( embedded ) { static char *emb_argv[] = {"embedded-python", 0}; --- 299,307 ---- /* Get options from preference file (or from applet resource fork) */ PyMac_options.keep_console = POPT_KEEPCONSOLE_OUTPUT; /* default-default */ + PyMac_options.unixnewlines = 1; + #if !TARGET_API_MAC_OSX PyMac_PreferenceOptions(&PyMac_options); ! #endif ! if ( embedded ) { static char *emb_argv[] = {"embedded-python", 0}; *************** *** 302,305 **** --- 312,316 ---- /* Create argc/argv. Do it before we go into the options event loop. */ *argcp = PyMac_GetArgv(argvp, PyMac_options.noargs); + #if !TARGET_API_MAC_OSX #ifndef NO_ARGV0_CHDIR if (*argcp >= 1 && (*argvp)[0] && (*argvp)[0][0]) { *************** *** 315,318 **** --- 326,330 ---- } #endif + #endif /* Do interactive option setting, if allowed and