diff options
34 files changed, 69 insertions, 76 deletions
diff --git a/Lib/StringIO.py b/Lib/StringIO.py index 6422f76..4739d13 100644 --- a/Lib/StringIO.py +++ b/Lib/StringIO.py @@ -142,7 +142,7 @@ class StringIO: return lines def truncate(self, size=None): - _complain_ifclosed(self.closed) + _complain_ifclosed(self.closed) if size is None: size = self.pos elif size < 0: diff --git a/Lib/_strptime.py b/Lib/_strptime.py index df04674..e93d146 100644 --- a/Lib/_strptime.py +++ b/Lib/_strptime.py @@ -365,7 +365,7 @@ def strptime(data_string, format="%a %b %d %H:%M:%S %Y"): # be able to tell what timezone has daylight savings if time.tzname[0] == time.tzname[1] and \ time.daylight: - break + break else: tz = value break diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py index 0c37768..7fff422 100644 --- a/Lib/distutils/command/build_ext.py +++ b/Lib/distutils/command/build_ext.py @@ -171,7 +171,8 @@ class build_ext (Command): # Append the source distribution include and library directories, # this allows distutils on windows to work in the source tree self.include_dirs.append(os.path.join(sys.exec_prefix, 'PC')) - self.library_dirs.append(os.path.join(sys.exec_prefix, 'PCBuild')) + self.library_dirs.append(os.path.join(sys.exec_prefix, 'PC', 'VC6')) + #self.library_dirs.append(os.path.join(sys.exec_prefix, 'PCBuild')) # OS/2 (EMX) doesn't support Debug vs Release builds, but has the # import libraries in its "Config" subdirectory diff --git a/Lib/httplib.py b/Lib/httplib.py index 0dfea33..a23caf5 100644 --- a/Lib/httplib.py +++ b/Lib/httplib.py @@ -610,7 +610,7 @@ class HTTPConnection: if self.__response and self.__response.isclosed(): self.__response = None - + # in certain cases, we cannot issue another request on this connection. # this occurs when: # 1) we are in the process of sending a request. (_CS_REQ_STARTED) @@ -731,7 +731,7 @@ class HTTPConnection: # If headers already contains a host header, then define the # optional skip_host argument to putrequest(). The check is # harder because field names are case insensitive. - if 'host' in [k.lower() for k in headers]: + if 'host' in [k.lower() for k in headers]: self.putrequest(method, url, skip_host=1) else: self.putrequest(method, url) diff --git a/Lib/random.py b/Lib/random.py index 1f279bb..a2415ae 100644 --- a/Lib/random.py +++ b/Lib/random.py @@ -177,7 +177,7 @@ class Random(_random.Random): # compatibility). if width >= maxwidth: - return int(istart + self._randbelow(width)) + return int(istart + self._randbelow(width)) return int(istart + int(self.random()*width)) if step == 1: raise ValueError, "empty range for randrange() (%d,%d, %d)" % (istart, istop, width) diff --git a/Lib/sre_parse.py b/Lib/sre_parse.py index fe5d143..9482bf8 100644 --- a/Lib/sre_parse.py +++ b/Lib/sre_parse.py @@ -365,9 +365,9 @@ def _parse_sub(source, state, nested=1): return subpattern def _parse_sub_cond(source, state, condgroup): - item_yes = _parse(source, state) + item_yes = _parse(source, state) if source.match("|"): - item_no = _parse(source, state) + item_no = _parse(source, state) if source.match("|"): raise error, "conditional backref with more than two branches" else: diff --git a/Lib/test/pystone.py b/Lib/test/pystone.py index 168c399..0a25981 100755 --- a/Lib/test/pystone.py +++ b/Lib/test/pystone.py @@ -264,4 +264,3 @@ if __name__ == '__main__': else: loops = LOOPS main(loops) - diff --git a/Lib/test/test_applesingle.py b/Lib/test/test_applesingle.py index eeb01c5..2a2d60a 100644 --- a/Lib/test/test_applesingle.py +++ b/Lib/test/test_applesingle.py @@ -55,7 +55,7 @@ class TestApplesingle(unittest.TestCase): applesingle.decode(test_support.TESTFN, TESTFN2) self.compareData(False, dataforkdata) self.compareData(True, resourceforkdata) - + def test_applesingle_resonly(self): try: os.unlink(TESTFN2) diff --git a/Lib/test/test_codeccallbacks.py b/Lib/test/test_codeccallbacks.py index 289e838..ac561cc 100644 --- a/Lib/test/test_codeccallbacks.py +++ b/Lib/test/test_codeccallbacks.py @@ -697,7 +697,7 @@ class CodecCallbackTest(unittest.TestCase): ord(">"): u">", ord('"'): u""", } - + for n in (1, 10, 100, 1000): text = u'abc<def>ghi'*n text.translate(charmap) diff --git a/Lib/test/test_codecencodings_cn.py b/Lib/test/test_codecencodings_cn.py index 3960c9c..269e00a 100644 --- a/Lib/test/test_codecencodings_cn.py +++ b/Lib/test/test_codecencodings_cn.py @@ -27,8 +27,8 @@ class Test_GBK(test_multibytecodec_support.TestBase, unittest.TestCase): tstring = test_multibytecodec_support.load_teststring('gbk') codectests = ( # invalid bytes - ("abc\x80\x80\xc1\xc4", "strict", None), - ("abc\xc8", "strict", None), + ("abc\x80\x80\xc1\xc4", "strict", None), + ("abc\xc8", "strict", None), ("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\u804a"), ("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\u804a\ufffd"), ("abc\x80\x80\xc1\xc4", "ignore", u"abc\u804a"), @@ -58,4 +58,3 @@ def test_main(): if __name__ == "__main__": test_main() - diff --git a/Lib/test/test_codecencodings_jp.py b/Lib/test/test_codecencodings_jp.py index 264b6b9..f574511 100644 --- a/Lib/test/test_codecencodings_jp.py +++ b/Lib/test/test_codecencodings_jp.py @@ -131,4 +131,3 @@ def test_main(): if __name__ == "__main__": test_main() - diff --git a/Lib/test/test_codecencodings_kr.py b/Lib/test/test_codecencodings_kr.py index 17615ba..449237d 100644 --- a/Lib/test/test_codecencodings_kr.py +++ b/Lib/test/test_codecencodings_kr.py @@ -54,4 +54,3 @@ def test_main(): if __name__ == "__main__": test_main() - diff --git a/Lib/test/test_codecencodings_tw.py b/Lib/test/test_codecencodings_tw.py index 3e2fa8b..897f060 100644 --- a/Lib/test/test_codecencodings_tw.py +++ b/Lib/test/test_codecencodings_tw.py @@ -28,4 +28,3 @@ def test_main(): if __name__ == "__main__": test_main() - diff --git a/Lib/test/test_codecmaps_cn.py b/Lib/test/test_codecmaps_cn.py index 919c81b..337ac91 100644 --- a/Lib/test/test_codecmaps_cn.py +++ b/Lib/test/test_codecmaps_cn.py @@ -31,4 +31,3 @@ def test_main(): test_multibytecodec_support.register_skip_expected(TestGB2312Map, TestGBKMap) if __name__ == "__main__": test_main() - diff --git a/Lib/test/test_codecmaps_jp.py b/Lib/test/test_codecmaps_jp.py index ef49178..9519da2 100644 --- a/Lib/test/test_codecmaps_jp.py +++ b/Lib/test/test_codecmaps_jp.py @@ -87,4 +87,3 @@ test_multibytecodec_support.register_skip_expected(TestCP932Map, TestSJISX0213Map) if __name__ == "__main__": test_main() - diff --git a/Lib/test/test_codecmaps_kr.py b/Lib/test/test_codecmaps_kr.py index 910396e..9a71939 100644 --- a/Lib/test/test_codecmaps_kr.py +++ b/Lib/test/test_codecmaps_kr.py @@ -48,4 +48,3 @@ test_multibytecodec_support.register_skip_expected(TestCP949Map, TestEUCKRMap, TestJOHABMap) if __name__ == "__main__": test_main() - diff --git a/Lib/test/test_codecmaps_tw.py b/Lib/test/test_codecmaps_tw.py index 9b28fef..2f41660 100644 --- a/Lib/test/test_codecmaps_tw.py +++ b/Lib/test/test_codecmaps_tw.py @@ -36,4 +36,3 @@ def test_main(): test_multibytecodec_support.register_skip_expected(TestBIG5Map, TestCP950Map) if __name__ == "__main__": test_main() - diff --git a/Lib/test/test_curses.py b/Lib/test/test_curses.py index 10ebe09..2065ef2 100644 --- a/Lib/test/test_curses.py +++ b/Lib/test/test_curses.py @@ -204,7 +204,7 @@ def unit_tests(): ]: if ascii.unctrl(ch) != expected: print 'curses.unctrl fails on character', repr(ch) - + def main(stdscr): @@ -215,7 +215,7 @@ def main(stdscr): finally: curses.resetty() - + if __name__ == '__main__': curses.wrapper(main) unit_tests() diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py index e001562..d0500e6 100644 --- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -3966,7 +3966,7 @@ def vicious_descriptor_nonsense(): # this makes a crash more likely: import gc; gc.collect() vereq(hasattr(c, 'attr'), False) - + def test_main(): weakref_segfault() # Must be first, somehow diff --git a/Lib/test/test_difflib.py b/Lib/test/test_difflib.py index 3879967..1703754 100644 --- a/Lib/test/test_difflib.py +++ b/Lib/test/test_difflib.py @@ -15,4 +15,3 @@ class TestSFbugs(unittest.TestCase): Doctests = doctest.DocTestSuite(difflib) test_support.run_unittest(TestSFbugs, Doctests) - diff --git a/Lib/test/test_marshal.py b/Lib/test/test_marshal.py index ad45c29..f971d11 100644 --- a/Lib/test/test_marshal.py +++ b/Lib/test/test_marshal.py @@ -55,7 +55,7 @@ class IntTestCase(unittest.TestCase): new = marshal.load(file(test_support.TESTFN, "rb")) self.assertEqual(b, new) self.assertEqual(type(b), type(new)) - + class FloatTestCase(unittest.TestCase): def test_floats(self): # Test a few floats @@ -122,7 +122,7 @@ class StringTestCase(unittest.TestCase): marshal.load(file(test_support.TESTFN, "rb")) self.assertEqual(s, new) os.unlink(test_support.TESTFN) - + class ExceptionTestCase(unittest.TestCase): def test_exceptions(self): new = marshal.loads(marshal.dumps(StopIteration)) @@ -151,7 +151,7 @@ class ContainerTestCase(unittest.TestCase): marshal.load(file(test_support.TESTFN, "rb")) self.assertEqual(self.d, new) os.unlink(test_support.TESTFN) - + def test_list(self): lst = self.d.items() new = marshal.loads(marshal.dumps(lst)) @@ -169,7 +169,7 @@ class ContainerTestCase(unittest.TestCase): marshal.load(file(test_support.TESTFN, "rb")) self.assertEqual(t, new) os.unlink(test_support.TESTFN) - + class BugsTestCase(unittest.TestCase): def test_bug_5888452(self): # Simple-minded check for SF 588452: Debug build crashes diff --git a/Lib/test/test_md5.py b/Lib/test/test_md5.py index bd0fb2e..1f08568 100644 --- a/Lib/test/test_md5.py +++ b/Lib/test/test_md5.py @@ -26,9 +26,9 @@ class MD5_Test(unittest.TestCase): eq('abc', '900150983cd24fb0d6963f7d28e17f72') eq('message digest', 'f96b697d7cb7938d525a2f31aaf161d0') eq('abcdefghijklmnopqrstuvwxyz', 'c3fcd3d76192e4007dfb496cca67e13b') - eq('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', + eq('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 'd174ab98d277d9f5a5611c2c9f419d9f') - eq('12345678901234567890123456789012345678901234567890123456789012345678901234567890', + eq('12345678901234567890123456789012345678901234567890123456789012345678901234567890', '57edf4a22be3c955ac49da2e2107b67a') def test_hexdigest(self): diff --git a/Lib/test/test_multibytecodec.py b/Lib/test/test_multibytecodec.py index f686b70..c77898b 100644 --- a/Lib/test/test_multibytecodec.py +++ b/Lib/test/test_multibytecodec.py @@ -76,4 +76,3 @@ def test_main(): if __name__ == "__main__": test_main() - diff --git a/Lib/test/test_multibytecodec_support.py b/Lib/test/test_multibytecodec_support.py index 6185243..77033cd 100644 --- a/Lib/test/test_multibytecodec_support.py +++ b/Lib/test/test_multibytecodec_support.py @@ -230,4 +230,3 @@ def register_skip_expected(*cases): break else: sys.modules[case.__module__].skip_expected = False - diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py index 221571a..db8d99e 100644 --- a/Lib/test/test_os.py +++ b/Lib/test/test_os.py @@ -319,10 +319,10 @@ class MakedirTests (unittest.TestCase): path = os.path.join(base, 'dir1', os.curdir, 'dir2', 'dir3', 'dir4', 'dir5', 'dir6') os.makedirs(path) - - - + + + def tearDown(self): path = os.path.join(test_support.TESTFN, 'dir1', 'dir2', 'dir3', 'dir4', 'dir5', 'dir6') diff --git a/Lib/test/test_re.py b/Lib/test/test_re.py index d2e2753..6ceab6d 100644 --- a/Lib/test/test_re.py +++ b/Lib/test/test_re.py @@ -405,7 +405,7 @@ class ReTests(unittest.TestCase): 20003) self.assertEqual(re.match('.*?cd', 20000*'abc'+'de').end(0), 60001) # non-simple '*?' still used to hit the recursion limit, before the - # non-recursive scheme was implemented. + # non-recursive scheme was implemented. self.assertEqual(re.search('(a|b)*?c', 10000*'ab'+'cd').end(0), 20001) def test_bug_612074(self): diff --git a/Lib/test/test_set.py b/Lib/test/test_set.py index 2104ee9..3b108a1 100644 --- a/Lib/test/test_set.py +++ b/Lib/test/test_set.py @@ -179,7 +179,7 @@ class TestJointOps(unittest.TestCase): def __init__(self, value): self.value = value def __hash__(self): - return self.value + return self.value def __deepcopy__(self, memo=None): return Tracer(self.value + 1) t = Tracer(10) diff --git a/Lib/test/test_sort.py b/Lib/test/test_sort.py index dedc41c..5d670a8 100644 --- a/Lib/test/test_sort.py +++ b/Lib/test/test_sort.py @@ -270,5 +270,3 @@ def test_main(verbose=None): if __name__ == "__main__": test_main(verbose=True) - - diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py index 6a0b0d8..485e9e0 100644 --- a/Lib/test/test_support.py +++ b/Lib/test/test_support.py @@ -141,7 +141,7 @@ else: # which have special Unicode support in posixmodule. if (not hasattr(sys, "getwindowsversion") or sys.getwindowsversion()[3] < 2): # 0=win32s or 1=9x/ME - TESTFN_UNICODE_UNENCODEABLE = None + TESTFN_UNICODE_UNENCODEABLE = None else: # Japanese characters (I think - from bug 846133) TESTFN_UNICODE_UNENCODEABLE = u"@test-\u5171\u6709\u3055\u308c\u308b" diff --git a/Lib/test/test_unicode_file.py b/Lib/test/test_unicode_file.py index fbca88b..46a99f2 100644 --- a/Lib/test/test_unicode_file.py +++ b/Lib/test/test_unicode_file.py @@ -20,7 +20,7 @@ def remove_if_exists(filename): class TestUnicodeFiles(unittest.TestCase): # The 'do_' functions are the actual tests. They generally assume the # file already exists etc. - + # Do all the tests we can given only a single filename. The file should # exist. def _do_single(self, filename): @@ -39,7 +39,7 @@ class TestUnicodeFiles(unittest.TestCase): # basename should appear in listdir. path, base = os.path.split(os.path.abspath(filename)) self.failUnless(base in os.listdir(path)) - + # Do as many "equivalancy' tests as we can - ie, check that although we # have different types for the filename, they refer to the same file. def _do_equivilent(self, filename1, filename2): @@ -124,7 +124,7 @@ class TestUnicodeFiles(unittest.TestCase): self._do_single(filename) finally: os.unlink(filename) - + def _test_equivalent(self, filename1, filename2): remove_if_exists(filename1) self.failUnless(not os.path.exists(filename2)) diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py index 6438b4e..87de229 100644 --- a/Lib/test/test_urllib2.py +++ b/Lib/test/test_urllib2.py @@ -269,6 +269,14 @@ class OpenerDirectorTests(unittest.TestCase): isinstance(args[1], MockResponse)) +def sanepathname2url(path): + import urllib + urlpath = urllib.pathname2url(path) + if os.name == "nt" and urlpath.startswith("///"): + urlpath = urlpath[2:] + # XXX don't ask me about the mac... + return urlpath + class HandlerTests(unittest.TestCase): def test_ftp(self): @@ -323,19 +331,17 @@ class HandlerTests(unittest.TestCase): h = urllib2.FileHandler() o = h.parent = MockOpener() - #from test_support import TESTFN - TESTFN = "test.txt" + TESTFN = test_support.TESTFN + urlpath = sanepathname2url(os.path.abspath(TESTFN)) towrite = "hello, world\n" for url in [ - "file://localhost%s/%s" % (os.getcwd(), TESTFN), - "file://%s/%s" % (os.getcwd(), TESTFN), - "file://%s%s/%s" % (socket.gethostbyname('localhost'), - os.getcwd(), TESTFN), - "file://%s%s/%s" % (socket.gethostbyname(socket.gethostname()), - os.getcwd(), TESTFN), - # XXX Windows / Mac format(s), ... ? + "file://localhost%s" % urlpath, + "file://%s" % urlpath, + "file://%s%s" % (socket.gethostbyname('localhost'), urlpath), + "file://%s%s" % (socket.gethostbyname(socket.gethostname()), + urlpath), ]: - f = open(TESTFN, "w") + f = open(TESTFN, "wb") try: try: f.write(towrite) @@ -345,25 +351,21 @@ class HandlerTests(unittest.TestCase): r = h.file_open(Request(url)) try: data = r.read() - read_time = time.time() headers = r.info() newurl = r.geturl() finally: r.close() + stats = os.stat(TESTFN) + modified = rfc822.formatdate(stats.st_mtime) finally: os.remove(TESTFN) self.assertEqual(data, towrite) self.assertEqual(headers["Content-type"], "text/plain") self.assertEqual(headers["Content-length"], "13") - # Fudge Last-modified string comparison by one second to - # prevent spurious failure on crossing a second boundary while - # executing this test. - unfudged = rfc822.formatdate(read_time) - fudged = rfc822.formatdate(read_time-1) - self.assert_(headers["Last-modified"] in [unfudged, fudged]) + self.assertEqual(headers["Last-modified"], modified) for url in [ - "file://localhost:80%s/%s" % (os.getcwd(), TESTFN), + "file://localhost:80%s" % urlpath, # XXXX bug: these fail with socket.gaierror, should be URLError ## "file://%s:80%s/%s" % (socket.gethostbyname('localhost'), ## os.getcwd(), TESTFN), @@ -371,7 +373,7 @@ class HandlerTests(unittest.TestCase): ## (os.getcwd(), TESTFN), ]: try: - f = open(TESTFN, "w") + f = open(TESTFN, "wb") try: f.write(towrite) finally: diff --git a/Lib/traceback.py b/Lib/traceback.py index d99009b..cf78648 100644 --- a/Lib/traceback.py +++ b/Lib/traceback.py @@ -219,7 +219,7 @@ def format_exc(limit=None): return ''.join(format_exception(etype, value, tb, limit)) finally: etype = value = tb = None - + def print_last(limit=None, file=None): """This is a shorthand for 'print_exception(sys.last_type, diff --git a/Lib/urllib2.py b/Lib/urllib2.py index 923b4e4..43e9c7d 100644 --- a/Lib/urllib2.py +++ b/Lib/urllib2.py @@ -426,11 +426,11 @@ class BaseHandler: def add_parent(self, parent): self.parent = parent - + def close(self): # Only exists for backwards compatibility pass - + def __lt__(self, other): if not hasattr(other, "handler_order"): # Try to preserve the old behavior of having custom classes @@ -770,7 +770,7 @@ class AbstractDigestAuthHandler: # prompting for the information. Crap. This isn't great # but it's better than the current 'repeat until recursion # depth exceeded' approach <wink> - raise HTTPError(req.get_full_url(), 401, "digest auth failed", + raise HTTPError(req.get_full_url(), 401, "digest auth failed", headers, None) else: self.retried += 1 @@ -845,7 +845,7 @@ class AbstractDigestAuthHandler: else: # XXX handle auth-int. pass - + # XXX should the partial digests be encoded too? base = 'username="%s", realm="%s", nonce="%s", uri="%s", ' \ @@ -887,7 +887,7 @@ class HTTPDigestAuthHandler(BaseHandler, AbstractDigestAuthHandler): def http_error_401(self, req, fp, code, msg, headers): host = urlparse.urlparse(req.get_full_url())[1] - retry = self.http_error_auth_reqed('www-authenticate', + retry = self.http_error_auth_reqed('www-authenticate', host, req, headers) self.reset_retry_count() return retry @@ -899,7 +899,7 @@ class ProxyDigestAuthHandler(BaseHandler, AbstractDigestAuthHandler): def http_error_407(self, req, fp, code, msg, headers): host = req.get_host() - retry = self.http_error_auth_reqed('proxy-authenticate', + retry = self.http_error_auth_reqed('proxy-authenticate', host, req, headers) self.reset_retry_count() return retry @@ -964,7 +964,7 @@ class AbstractHTTPHandler(BaseHandler): raise URLError(err) # Pick apart the HTTPResponse object to get the various pieces - # of the + # of the resp = addinfourl(r.fp, r.msg, req.get_full_url()) resp.code = r.status resp.msg = r.reason diff --git a/Objects/listobject.c b/Objects/listobject.c index 3397fbb..a18f3d7 100644 --- a/Objects/listobject.c +++ b/Objects/listobject.c @@ -57,13 +57,15 @@ PyList_New(int size) { PyListObject *op; size_t nbytes; + int allocated_size = roundupsize(size); + if (size < 0) { PyErr_BadInternalCall(); return NULL; } - nbytes = size * sizeof(PyObject *); + nbytes = allocated_size * sizeof(PyObject *); /* Check for overflow */ - if (nbytes / sizeof(PyObject *) != (size_t)size) { + if (nbytes / sizeof(PyObject *) != (size_t)allocated_size) { return PyErr_NoMemory(); } op = PyObject_GC_New(PyListObject, &PyList_Type); @@ -78,7 +80,7 @@ PyList_New(int size) if (op->ob_item == NULL) { return PyErr_NoMemory(); } - memset(op->ob_item, 0, sizeof(*op->ob_item) * size); + memset(op->ob_item, 0, sizeof(*op->ob_item) * allocated_size); } op->ob_size = size; _PyObject_GC_TRACK(op); @@ -154,7 +156,8 @@ ins1(PyListObject *self, int where, PyObject *v) return -1; } items = self->ob_item; - NRESIZE(items, PyObject *, self->ob_size+1); + if (roundupsize(self->ob_size) - 1 == self->ob_size || items == NULL) + NRESIZE(items, PyObject *, self->ob_size+1); if (items == NULL) { PyErr_NoMemory(); return -1; @@ -1878,7 +1881,8 @@ listsort(PyListObject *self, PyObject *args, PyObject *kwds) saved_ob_size = self->ob_size; saved_ob_item = self->ob_item; self->ob_size = 0; - self->ob_item = empty_ob_item = PyMem_NEW(PyObject *, 0); +/* self->ob_item = empty_ob_item = PyMem_NEW(PyObject *, 0); */ + self->ob_item = empty_ob_item = PyMem_NEW(PyObject *, roundupsize(0)); if (keyfunc != NULL) { for (i=0 ; i < saved_ob_size ; i++) { |